From 66a6d550a6e05c8f369c2c546e04f1eca4c4bbf2 Mon Sep 17 00:00:00 2001 From: Mahesh K Date: Mon, 12 Oct 2020 18:56:41 +0200 Subject: [PATCH] benetel: driver for Benetel's 4G and 5G RRUs This commit contains work done by Eurecom and by Benetel. --- CONTRIBUTING.md | 9 +- ci-scripts/.gitignore | 1 + ci-scripts/Jenkinsfile-gitlab | 22 +- ci-scripts/args_parse.py | 229 + ci-scripts/checkAddedWarnings.sh | 2 +- ci-scripts/cls_cots_ue.py | 88 + ci-scripts/cls_physim.py | 191 + .../enb.band17.tm1.25PRB.usrpb210.conf | 1 + .../enb.band17.tm1.mbms.25PRB.usrpb210.conf | 15 +- .../enb.band7.tm1.fr1.25PRB.usrpb210.conf | 284 + .../gnb.band78.tm1.106PRB.usrpn300.conf | 24 +- .../gnb.band78.tm1.fr1.106PRB.usrpb210.conf | 291 + .../conf_files/lte-fdd-fembms-basic-sim.conf | 426 + .../conf_files/lte-fdd-mbms-basic-sim.conf | 14 +- ci-scripts/constants.py | 1 + ci-scripts/cppcheck_suppressions.list | 5 + ci-scripts/doc/vm_based_simulator_env.md | 1 - ci-scripts/epc.py | 32 - ci-scripts/html.py | 65 +- ci-scripts/main.py | 974 +- ci-scripts/oai-ci-vm-tool | 4 +- ci-scripts/py_params.yaml | 53 + ci-scripts/py_params_template.yaml | 97 + ci-scripts/ran.py | 347 +- ci-scripts/reportBuildLocally.sh | 4 +- ci-scripts/reportTestLocally.sh | 99 +- ci-scripts/rrc-files/rbconfig.raw | Bin 8 -> 0 bytes ci-scripts/rrc-files/reconfig.raw | Bin 479 -> 0 bytes ci-scripts/runTestOnVM.sh | 145 +- ci-scripts/sshconnection.py | 12 + ci-scripts/xml_class_list.yml | 35 + .../enb_ocp_usrp210_band7_test_05mhz_tm1.xml | 147 + .../xml_files/enb_ocp_usrp210_build.xml | 38 + .../enb_ue_usrp210_band7_epc_start.xml | 13 - ...p210_band7_test_05mhz_tm1_fembms_no_s1.xml | 82 + ...st_05mhz_tm1_rrc_inactivity_no_flexran.xml | 1 + ci-scripts/xml_files/fr1_multi_node_build.xml | 66 + .../xml_files/fr1_multi_node_terminate.xml | 50 + ci-scripts/xml_files/fr1_multi_node_test.xml | 77 + ci-scripts/xml_files/fr1_toggle_cots_ue.xml | 39 + ci-scripts/xml_files/gnb_nr_ue_usrp_run.xml | 2 +- .../gnb_nr_ue_usrp_run_multi_thread.xml | 71 + ci-scripts/xml_files/gnb_usrp_build.xml | 3 +- .../if4p5_usrp210_band40_test_10mhz.xml | 1 + ci-scripts/xml_files/ldpc_gpu_test.xml | 161 + .../xml_files/multi_rru_band38_build.xml | 12 +- .../multi_rru_band38_test_10mhz_tm1.xml | 2 +- ci-scripts/xml_files/nr_ue_usrp_build.xml | 3 +- cmake_targets/CMakeLists.txt | 384 +- cmake_targets/autotests/README.txt | 12 +- cmake_targets/autotests/test_case_list.xml | 81 +- cmake_targets/build_oai | 28 +- cmake_targets/tools/build_helper | 31 +- common/config/libconfig/config_libconfig.c | 4 +- common/utils/LOG/vcd_signal_dumper.c | 24 +- common/utils/LOG/vcd_signal_dumper.h | 23 + common/utils/T/T_defs.h | 2 +- common/utils/T/T_messages.txt | 103 + common/utils/nr/nr_common.c | 10 +- common/utils/ocp_itti/intertask_interface.cpp | 14 +- common/utils/ocp_itti/intertask_interface.h | 3 +- common/utils/telnetsrv/telnetsrv.c | 39 +- common/utils/telnetsrv/telnetsrv.h | 18 +- common/utils/threadPool/thread-pool.c | 5 +- common/utils/utils.c | 6 + common/utils/utils.h | 3 + doc/BUILD.md | 3 +- doc/FEATURE_SET.md | 175 +- doc/RUNMODEM.md | 47 + doc/TESTING_GNB_W_COTS_UE.md | 389 + .../attach_signaling_scheme.jpg | Bin 0 -> 48290 bytes doc/testing_gnb_w_cots_ue_resources/enb.conf | 281 + doc/testing_gnb_w_cots_ue_resources/gnb.conf | 293 + .../oai_enb.log | 1912 + .../oai_fr1_lab.jpg | Bin 0 -> 93188 bytes .../oai_fr1_setup.jpg | Bin 0 -> 252726 bytes .../oai_fr1_setup.vsdx | Bin 0 -> 1291764 bytes .../oai_gnb.log | 38680 ++++++++++++++++ executables/main-fs6.c | 4 +- executables/main-ocp.c | 8 +- executables/nr-gnb.c | 18 +- executables/nr-ru.c | 192 +- executables/nr-softmodem-common.h | 6 + executables/nr-softmodem.c | 80 +- executables/nr-softmodem.h | 10 +- executables/nr-ue.c | 267 +- executables/nr-uesoftmodem.c | 151 +- executables/nr-uesoftmodem.h | 9 - executables/softmodem-common.h | 4 + executables/split_headers.h | 4 +- .../nfapi/public_inc/fapi_nr_ue_constants.h | 2 + .../nfapi/public_inc/fapi_nr_ue_interface.h | 41 +- .../nfapi/public_inc/nfapi_nr_interface_scf.h | 87 +- nfapi/open-nFAPI/nfapi/src/nfapi.c | 2 +- openair1/PHY/CODING/TESTBENCH/ldpctest.c | 47 +- openair1/PHY/CODING/TESTBENCH/polartest.c | 17 +- openair1/PHY/CODING/coding_defs.h | 13 + openair1/PHY/CODING/crc_byte.c | 41 + .../PHY/CODING/nrLDPC_decoder_LYC/bgs/BG1_I0 | 48 + .../PHY/CODING/nrLDPC_decoder_LYC/bgs/BG1_I1 | 48 + .../PHY/CODING/nrLDPC_decoder_LYC/bgs/BG1_I2 | 48 + .../PHY/CODING/nrLDPC_decoder_LYC/bgs/BG1_I3 | 48 + .../PHY/CODING/nrLDPC_decoder_LYC/bgs/BG1_I4 | 48 + .../PHY/CODING/nrLDPC_decoder_LYC/bgs/BG1_I5 | 48 + .../PHY/CODING/nrLDPC_decoder_LYC/bgs/BG1_I6 | 48 + .../PHY/CODING/nrLDPC_decoder_LYC/bgs/BG1_I7 | 48 + .../nrLDPC_decoder_LYC/bgs/BG1_compact_in_C.h | 478 + .../PHY/CODING/nrLDPC_decoder_LYC/bgs/BG2_I0 | 44 + .../PHY/CODING/nrLDPC_decoder_LYC/bgs/BG2_I1 | 44 + .../PHY/CODING/nrLDPC_decoder_LYC/bgs/BG2_I2 | 44 + .../PHY/CODING/nrLDPC_decoder_LYC/bgs/BG2_I3 | 44 + .../PHY/CODING/nrLDPC_decoder_LYC/bgs/BG2_I4 | 44 + .../PHY/CODING/nrLDPC_decoder_LYC/bgs/BG2_I5 | 44 + .../PHY/CODING/nrLDPC_decoder_LYC/bgs/BG2_I6 | 44 + .../PHY/CODING/nrLDPC_decoder_LYC/bgs/BG2_I7 | 44 + .../nrLDPC_decoder_LYC/nrLDPC_decoder_LYC.cu | 552 + .../nrLDPC_decoder_LYC/nrLDPC_decoder_LYC.h | 34 + .../nrLDPC_decoder_LYC_debug.cu | 396 + .../CODING/nrPolar_tools/nr_polar_decoder.c | 10 +- .../nrPolar_tools/nr_polar_decoding_tools.c | 6 +- .../PHY/CODING/nrPolar_tools/nr_polar_defs.h | 2 +- .../CODING/nrPolar_tools/nr_polar_encoder.c | 27 +- .../CODING/nrPolar_tools/nr_polar_uci_defs.h | 4 +- openair1/PHY/CODING/nr_polar_init.c | 48 +- openair1/PHY/CODING/nr_rate_matching.c | 84 +- openair1/PHY/INIT/lte_init.c | 1 + openair1/PHY/INIT/lte_init_ru.c | 1 - openair1/PHY/INIT/lte_init_ue.c | 6 +- openair1/PHY/INIT/lte_parms.c | 15 + openair1/PHY/INIT/nr_init.c | 42 +- openair1/PHY/INIT/nr_init_ru.c | 16 +- openair1/PHY/INIT/nr_init_ue.c | 70 +- openair1/PHY/INIT/nr_parms.c | 4 +- .../PHY/LTE_ESTIMATION/lte_adjust_sync_eNB.c | 12 +- .../lte_dl_mbsfn_channel_estimation.c | 40 +- openair1/PHY/LTE_ESTIMATION/lte_estimation.h | 9 +- .../lte_ul_channel_estimation.c | 26 +- openair1/PHY/LTE_REFSIG/lte_refsig.h | 10 + openair1/PHY/LTE_TRANSPORT/dci_tools.c | 5 - openair1/PHY/LTE_TRANSPORT/dlsch_coding.c | 111 +- openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c | 263 +- openair1/PHY/LTE_TRANSPORT/pbch.c | 285 +- openair1/PHY/LTE_TRANSPORT/pilots_mbsfn.c | 34 +- openair1/PHY/LTE_TRANSPORT/pmch.c | 50 + openair1/PHY/LTE_TRANSPORT/pmch_common.c | 99 +- openair1/PHY/LTE_TRANSPORT/transport_common.h | 1 + .../LTE_TRANSPORT/transport_common_proto.h | 3 + openair1/PHY/LTE_TRANSPORT/transport_proto.h | 73 + .../PHY/LTE_TRANSPORT/ulsch_demodulation.c | 6 +- .../PHY/LTE_UE_TRANSPORT/dlsch_demodulation.c | 7 +- openair1/PHY/LTE_UE_TRANSPORT/prach_ue.c | 2 +- openair1/PHY/MODULATION/beamforming.c | 2 +- openair1/PHY/MODULATION/nr_modulation.c | 172 +- openair1/PHY/MODULATION/nr_modulation.h | 9 + openair1/PHY/MODULATION/ofdm_mod.c | 91 +- openair1/PHY/MODULATION/slot_fep_nr.c | 95 +- ...djust_sync_gNB.c => nr_measurements_gNB.c} | 36 +- .../NR_ESTIMATION/nr_ul_channel_estimation.c | 173 +- openair1/PHY/NR_ESTIMATION/nr_ul_estimation.h | 3 + openair1/PHY/NR_REFSIG/dmrs_nr.c | 27 +- openair1/PHY/NR_REFSIG/dmrs_nr.h | 5 + openair1/PHY/NR_REFSIG/nr_dmrs_rx.c | 34 +- openair1/PHY/NR_REFSIG/nr_gen_mod_table.c | 87 + openair1/PHY/NR_REFSIG/nr_gen_mod_table.m | 59 +- openair1/PHY/NR_REFSIG/nr_gold.c | 1 + openair1/PHY/NR_REFSIG/nr_mod_table.h | 13 +- openair1/PHY/NR_REFSIG/nr_refsig.h | 4 + openair1/PHY/NR_REFSIG/scrambling_luts.c | 19 +- openair1/PHY/NR_TRANSPORT/nr_dci.c | 62 +- openair1/PHY/NR_TRANSPORT/nr_dci.h | 19 +- openair1/PHY/NR_TRANSPORT/nr_dci_tools.c | 88 +- openair1/PHY/NR_TRANSPORT/nr_dlsch.c | 429 +- openair1/PHY/NR_TRANSPORT/nr_dlsch.h | 35 +- openair1/PHY/NR_TRANSPORT/nr_dlsch_coding.c | 55 +- openair1/PHY/NR_TRANSPORT/nr_dlsch_tools.c | 80 +- openair1/PHY/NR_TRANSPORT/nr_pbch.c | 18 +- openair1/PHY/NR_TRANSPORT/nr_prach.c | 766 +- openair1/PHY/NR_TRANSPORT/nr_prach.h | 796 - openair1/PHY/NR_TRANSPORT/nr_prach_common.c | 229 +- openair1/PHY/NR_TRANSPORT/nr_pss.c | 2 +- openair1/PHY/NR_TRANSPORT/nr_sch_dmrs.h | 2 +- openair1/PHY/NR_TRANSPORT/nr_sss.c | 2 +- openair1/PHY/NR_TRANSPORT/nr_tbs_tools.c | 2 +- openair1/PHY/NR_TRANSPORT/nr_transport.h | 154 - .../NR_TRANSPORT/nr_transport_common_proto.h | 26 +- .../PHY/NR_TRANSPORT/nr_transport_proto.h | 195 +- .../NR_TRANSPORT/nr_transport_proto_common.h | 1691 - openair1/PHY/NR_TRANSPORT/nr_ulsch.c | 118 +- openair1/PHY/NR_TRANSPORT/nr_ulsch.h | 10 + openair1/PHY/NR_TRANSPORT/nr_ulsch_decoding.c | 119 +- .../PHY/NR_TRANSPORT/nr_ulsch_demodulation.c | 477 +- .../NR_TRANSPORT/nr_ulsch_llr_computation.c | 217 +- openair1/PHY/NR_TRANSPORT/pucch_rx.c | 1000 +- .../PHY/NR_UE_ESTIMATION/nr_adjust_synch_ue.c | 19 +- openair1/PHY/NR_UE_ESTIMATION/nr_estimation.h | 4 +- .../PHY/NR_UE_ESTIMATION/nr_ue_measurements.c | 8 +- openair1/PHY/NR_UE_TRANSPORT/dci_nr.c | 56 +- .../PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c | 75 +- .../NR_UE_TRANSPORT/nr_dlsch_demodulation.c | 277 +- .../nr_dlsch_llr_computation.c | 20 +- .../PHY/NR_UE_TRANSPORT/nr_initial_sync.c | 7 +- openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c | 2 +- openair1/PHY/NR_UE_TRANSPORT/nr_prach.c | 1253 +- .../NR_UE_TRANSPORT/nr_transport_proto_ue.h | 49 +- .../PHY/NR_UE_TRANSPORT/nr_transport_ue.h | 7 +- .../PHY/NR_UE_TRANSPORT/nr_ulsch_coding.c | 52 +- openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c | 159 +- openair1/PHY/NR_UE_TRANSPORT/pss_nr.c | 6 +- openair1/PHY/NR_UE_TRANSPORT/pucch_nr.c | 92 +- openair1/PHY/NR_UE_TRANSPORT/pucch_nr.h | 3 +- openair1/PHY/TOOLS/Makefile | 20 +- openair1/PHY/TOOLS/nr_phy_scope.c | 1651 +- openair1/PHY/TOOLS/nr_phy_scope.h | 55 +- openair1/PHY/TOOLS/oai_dfts.c | 982 +- openair1/PHY/TOOLS/phy_scope_interface.c | 4 +- openair1/PHY/TOOLS/phy_scope_interface.h | 2 +- openair1/PHY/TOOLS/readme.md | 12 + openair1/PHY/TOOLS/tools_defs.h | 4 - openair1/PHY/defs_RU.h | 19 +- openair1/PHY/defs_UE.h | 50 - openair1/PHY/defs_common.h | 1 - openair1/PHY/defs_gNB.h | 81 +- openair1/PHY/defs_nr_UE.h | 74 +- openair1/PHY/defs_nr_common.h | 60 +- openair1/PHY/impl_defs_nr.h | 10 +- openair1/PHY/impl_defs_top.h | 2 +- openair1/PHY/phy_vars.h | 8 +- openair1/PHY/phy_vars_nr_ue.h | 2 +- openair1/SCHED/phy_procedures_lte_eNb.c | 144 +- openair1/SCHED/ru_procedures.c | 33 +- openair1/SCHED_NR/fapi_nr_l1.c | 41 +- openair1/SCHED_NR/nr_prach_procedures.c | 7 +- openair1/SCHED_NR/nr_ru_procedures.c | 48 +- openair1/SCHED_NR/phy_frame_config_nr.c | 6 +- openair1/SCHED_NR/phy_frame_config_nr.h | 4 +- openair1/SCHED_NR/phy_procedures_nr_gNB.c | 336 +- openair1/SCHED_NR/sched_nr.h | 3 +- openair1/SCHED_NR_UE/defs.h | 14 +- openair1/SCHED_NR_UE/fapi_nr_ue_l1.c | 286 +- openair1/SCHED_NR_UE/phy_frame_config_nr.h | 11 +- openair1/SCHED_NR_UE/phy_frame_config_nr_ue.c | 99 + openair1/SCHED_NR_UE/phy_procedures_nr_ue.c | 1325 +- .../SCHED_NR_UE/pucch_power_control_ue_nr.c | 2 +- openair1/SCHED_NR_UE/pucch_uci_ue_nr.c | 317 +- openair1/SCHED_NR_UE/pucch_uci_ue_nr.h | 16 +- openair1/SCHED_UE/phy_procedures_lte_ue.c | 49 +- openair1/SIMULATION/LTE_PHY/dlsim.c | 6 +- openair1/SIMULATION/LTE_PHY/dummy_functions.c | 5 + openair1/SIMULATION/LTE_PHY/mbmssim.c | 2596 +- openair1/SIMULATION/LTE_PHY/ulsim.c | 3 +- openair1/SIMULATION/NR_PHY/dlschsim.c | 21 +- openair1/SIMULATION/NR_PHY/dlsim.c | 378 +- .../SIMULATION/NR_PHY/nr_dummy_functions.c | 2 +- .../NR_PHY/nr_dummy_functions_prach.c | 348 + openair1/SIMULATION/NR_PHY/nr_unitary_defs.h | 18 + openair1/SIMULATION/NR_PHY/pbchsim.c | 42 +- openair1/SIMULATION/NR_PHY/prachsim.c | 601 +- openair1/SIMULATION/NR_PHY/pucchsim.c | 112 +- openair1/SIMULATION/NR_PHY/ulschsim.c | 21 +- openair1/SIMULATION/NR_PHY/ulsim.c | 925 +- .../unit_tests/src/dummy_functions.c | 5 + openair1/SIMULATION/TOOLS/channel_sim.c | 4 +- openair1/SIMULATION/TOOLS/multipath_channel.c | 21 +- .../SIMULATION/TOOLS/multipath_tv_channel.c | 18 +- openair1/SIMULATION/TOOLS/random_channel.c | 561 +- openair1/SIMULATION/TOOLS/sim.h | 89 +- openair1/SIMULATION/TOOLS/taus.c | 3 +- openair2/COMMON/m2ap_messages_def.h | 1 + openair2/COMMON/m2ap_messages_types.h | 11 +- openair2/COMMON/platform_constants.h | 4 +- openair2/COMMON/rrc_messages_types.h | 6 +- openair2/COMMON/s1ap_messages_def.h | 1 + openair2/COMMON/s1ap_messages_types.h | 38 +- openair2/COMMON/x2ap_messages_types.h | 5 +- .../CONTROL_MODULES/MAC/flexran_agent_mac.c | 425 +- .../CONTROL_MODULES/MAC/flexran_agent_mac.h | 13 +- .../MAC/flexran_agent_mac_internal.c | 858 +- .../MAC/flexran_agent_mac_internal.h | 40 +- .../flexran_agent_mac_slice_verification.c | 343 - .../flexran_agent_mac_slice_verification.h | 6 - .../CONTROL_MODULES/RRC/flexran_agent_rrc.c | 5 +- .../CONTROL_MODULES/S1AP/flexran_agent_s1ap.c | 57 + .../CONTROL_MODULES/S1AP/flexran_agent_s1ap.h | 11 + openair2/ENB_APP/MACRLC_paramdef.h | 3 + .../ENB_APP/MESSAGES/V2/config_common.proto | 88 +- .../ENB_APP/MESSAGES/V2/config_messages.proto | 10 +- openair2/ENB_APP/enb_app.c | 26 +- openair2/ENB_APP/enb_config.c | 18 +- openair2/ENB_APP/flexran_agent_common.c | 81 +- openair2/ENB_APP/flexran_agent_extern.h | 7 +- openair2/ENB_APP/flexran_agent_ran_api.c | 829 +- openair2/ENB_APP/flexran_agent_ran_api.h | 185 +- openair2/F1AP/f1ap_cu_ue_context_management.c | 2 +- openair2/F1AP/f1ap_du_rrc_message_transfer.c | 6 +- openair2/GNB_APP/RRC_nr_paramsvalues.h | 34 +- openair2/GNB_APP/gnb_app.c | 24 +- openair2/GNB_APP/gnb_config.c | 57 +- openair2/GNB_APP/gnb_paramdef.h | 14 + openair2/LAYER2/MAC/config.c | 23 +- openair2/LAYER2/MAC/config_ue.c | 1 + openair2/LAYER2/MAC/eNB_scheduler.c | 40 +- openair2/LAYER2/MAC/eNB_scheduler_bch.c | 59 + openair2/LAYER2/MAC/eNB_scheduler_dlsch.c | 28 +- openair2/LAYER2/MAC/eNB_scheduler_fairRR.c | 2 +- openair2/LAYER2/MAC/eNB_scheduler_mch.c | 1249 +- .../LAYER2/MAC/eNB_scheduler_primitives.c | 55 +- openair2/LAYER2/MAC/eNB_scheduler_ulsch.c | 4 +- openair2/LAYER2/MAC/mac.h | 195 +- openair2/LAYER2/MAC/mac_proto.h | 27 +- openair2/LAYER2/MAC/main.c | 48 +- openair2/LAYER2/MAC/pre_processor.c | 641 +- openair2/LAYER2/MAC/slicing/slicing.c | 601 + openair2/LAYER2/MAC/slicing/slicing.h | 74 + .../LAYER2/MAC/slicing/slicing_internal.h | 46 + openair2/LAYER2/MAC/ue_procedures.c | 606 +- openair2/LAYER2/NR_MAC_COMMON/nr_mac.h | 246 +- openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c | 1642 +- .../nr_mac_common.h | 64 +- openair2/LAYER2/NR_MAC_COMMON/nr_mac_extern.h | 23 +- openair2/LAYER2/NR_MAC_UE/config_ue.c | 173 +- openair2/LAYER2/NR_MAC_UE/mac_defs.h | 108 +- openair2/LAYER2/NR_MAC_UE/mac_extern.h | 4 +- openair2/LAYER2/NR_MAC_UE/mac_proto.h | 135 +- openair2/LAYER2/NR_MAC_UE/main_ue_nr.c | 7 +- openair2/LAYER2/NR_MAC_UE/nr_l1_helpers.c | 153 + openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c | 643 + .../NR_MAC_UE/nr_ue_dci_configuration.c | 379 +- openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c | 1464 +- openair2/LAYER2/NR_MAC_UE/rar_tools_nrUE.c | 212 + openair2/LAYER2/NR_MAC_gNB/config.c | 101 +- openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c | 274 +- openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c | 818 +- .../LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c | 6 +- .../LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c | 304 +- .../LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c | 812 +- .../NR_MAC_gNB/gNB_scheduler_primitives.c | 806 +- .../LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c | 158 +- openair2/LAYER2/NR_MAC_gNB/mac_proto.h | 157 +- openair2/LAYER2/NR_MAC_gNB/main.c | 15 +- .../LAYER2/NR_MAC_gNB/nr_compute_tbs_common.c | 3 +- openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h | 296 +- openair2/LAYER2/PDCP_v10.1.0/pdcp.c | 146 +- openair2/LAYER2/PDCP_v10.1.0/pdcp.h | 6 +- openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c | 82 +- openair2/LAYER2/RLC/rlc.c | 2 +- openair2/LAYER2/RLC/rlc_rrc.c | 3 +- openair2/LAYER2/nr_pdcp/nr_pdcp_entity.c | 74 + openair2/LAYER2/nr_pdcp/nr_pdcp_entity.h | 65 + .../LAYER2/nr_pdcp/nr_pdcp_entity_drb_am.c | 71 + .../LAYER2/nr_pdcp/nr_pdcp_entity_drb_am.h | 38 + openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.c | 946 + openair2/LAYER2/nr_pdcp/nr_pdcp_ue_manager.c | 198 + openair2/LAYER2/nr_pdcp/nr_pdcp_ue_manager.h | 65 + openair2/LAYER2/nr_rlc/asn1_utils.c | 53 +- openair2/LAYER2/nr_rlc/asn1_utils.h | 11 +- openair2/LAYER2/nr_rlc/nr_rlc_entity_am.c | 5 +- openair2/LAYER2/nr_rlc/nr_rlc_entity_um.c | 3 +- openair2/LAYER2/nr_rlc/nr_rlc_oai_api.c | 131 +- openair2/LAYER2/nr_rlc/nr_rlc_ue_manager.h | 2 +- openair2/LAYER2/rlc_v2/asn1_utils.h | 6 +- openair2/M2AP/m2ap_MCE_interface_management.c | 143 +- openair2/M2AP/m2ap_MCE_interface_management.h | 10 +- openair2/M2AP/m2ap_eNB.c | 18 + openair2/M2AP/m2ap_eNB_interface_management.c | 200 +- openair2/MCE_APP/mce_app.c | 5 +- openair2/NR_PHY_INTERFACE/NR_IF_Module.c | 109 +- openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c | 246 +- openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.h | 15 +- openair2/PHY_INTERFACE/phy_stub_UE.c | 32 +- openair2/RRC/LTE/L2_interface.c | 59 +- openair2/RRC/LTE/L2_interface_ue.c | 13 +- openair2/RRC/LTE/MESSAGES/asn1_msg.c | 90 +- openair2/RRC/LTE/MESSAGES/asn1_msg.h | 6 +- openair2/RRC/LTE/rrc_UE.c | 208 +- openair2/RRC/LTE/rrc_defs.h | 25 + openair2/RRC/LTE/rrc_eNB.c | 766 +- openair2/RRC/LTE/rrc_eNB_GTPV1U.c | 1 + openair2/RRC/LTE/rrc_eNB_GTPV1U.h | 7 + openair2/RRC/LTE/rrc_eNB_M2AP.c | 463 +- openair2/RRC/LTE/rrc_eNB_S1AP.c | 98 +- openair2/RRC/LTE/rrc_eNB_S1AP.h | 2 + openair2/RRC/NR/L2_nr_interface.c | 36 +- openair2/RRC/NR/nr_rrc_defs.h | 9 +- openair2/RRC/NR/nr_rrc_proto.h | 6 +- openair2/RRC/NR/rrc_gNB.c | 155 +- openair2/RRC/NR/rrc_gNB_GTPV1U.c | 94 + openair2/RRC/NR/rrc_gNB_GTPV1U.h | 39 + openair2/RRC/NR/rrc_gNB_internode.c | 82 +- openair2/RRC/NR/rrc_gNB_nsa.c | 249 +- openair2/RRC/NR/rrc_gNB_reconfig.c | 267 +- openair2/RRC/NR_UE/L2_interface_ue.c | 11 + openair2/RRC/NR_UE/rrc_UE.c | 4 +- openair2/RRC/NR_UE/rrc_defs.h | 4 +- openair2/RRC/NR_UE/rrc_proto.h | 12 + openair2/X2AP/x2ap_eNB.c | 70 +- openair2/X2AP/x2ap_eNB_decoder.c | 4 +- openair2/X2AP/x2ap_eNB_generate_messages.c | 115 +- openair2/X2AP/x2ap_eNB_generate_messages.h | 2 +- openair2/X2AP/x2ap_eNB_handler.c | 47 +- openair3/GTPV1-U/gtpv1u_eNB.c | 11 + openair3/GTPV1-U/gtpv1u_gNB.c | 311 + openair3/GTPV1-U/gtpv1u_gNB_task.h | 37 + openair3/M3AP/m3ap_MCE.c | 14 + openair3/S1AP/s1ap_eNB.c | 26 +- openair3/S1AP/s1ap_eNB_decoder.c | 6 + openair3/S1AP/s1ap_eNB_encoder.c | 5 + openair3/S1AP/s1ap_eNB_handlers.c | 18 + openair3/S1AP/s1ap_eNB_nas_procedures.c | 316 + openair3/S1AP/s1ap_eNB_nas_procedures.h | 4 + .../ARCH/BLADERF/USERSPACE/LIB/bladerf_lib.c | 6 +- targets/ARCH/COMMON/common_lib.h | 9 +- .../ETHERNET/USERSPACE/LIB/ethernet_lib.c | 13 +- targets/ARCH/ETHERNET/benetel/4g/benetel.c | 386 + .../ARCH/ETHERNET/benetel/4g/dpdk_driver.c | 787 + targets/ARCH/ETHERNET/benetel/4g/low.c | 95 + targets/ARCH/ETHERNET/benetel/4g/low.h | 49 + targets/ARCH/ETHERNET/benetel/4g/low_dpdk.c | 118 + .../ARCH/ETHERNET/benetel/4g/shared_buffers.c | 114 + .../ARCH/ETHERNET/benetel/4g/shared_buffers.h | 60 + targets/ARCH/ETHERNET/benetel/5g/benetel.c | 388 + .../ARCH/ETHERNET/benetel/5g/dpdk_driver.c | 856 + targets/ARCH/ETHERNET/benetel/5g/low.c | 97 + targets/ARCH/ETHERNET/benetel/5g/low.h | 48 + targets/ARCH/ETHERNET/benetel/5g/low_dpdk.c | 118 + .../ARCH/ETHERNET/benetel/5g/shared_buffers.c | 118 + .../ARCH/ETHERNET/benetel/5g/shared_buffers.h | 60 + targets/ARCH/IRIS/USERSPACE/LIB/iris_lib.cpp | 6 + targets/ARCH/LMSSDR/USERSPACE/LIB/lms_lib.cpp | 5 + targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp | 98 +- targets/ARCH/rfsimulator/README.md | 14 +- targets/ARCH/rfsimulator/apply_channelmod.c | 8 +- targets/ARCH/rfsimulator/new_channel_sim.c | 108 + targets/ARCH/rfsimulator/rfsimulator.h | 37 + targets/ARCH/rfsimulator/simulator.c | 131 +- targets/ARCH/tcp_bridge/tcp_bridge.c | 6 + targets/COMMON/create_nr_tasks.c | 20 +- .../GENERIC-LTE-EPC/CONF/benetel-4g.conf | 281 + .../GENERIC-LTE-EPC/CONF/benetel-5g.conf | 307 + .../CONF/gnb.band257.tm1.32PRB.usrpx300.conf | 10 +- .../CONF/gnb.band257.tm1.66PRB.usrpn300.conf | 10 +- .../CONF/gnb.band261.tm1.32PRB.usrpn300.conf | 2 +- .../CONF/gnb.band78.106PRB.slave.conf | 295 + .../CONF/gnb.band78.tm1.106PRB.usrpb210.conf | 339 +- .../CONF/gnb.band78.tm1.106PRB.usrpn300.conf | 33 +- .../CONF/gnb.band78.tm1.106PRB.usrpx300.conf | 26 +- .../CONF/gnb.band78.tm1.217PRB.usrpn300.conf | 17 +- .../CONF/gnb.band78.tm1.217PRB.usrpx300.conf | 15 +- .../CONF/gnb.band78.tm1.273PRB.usrpn300.conf | 17 +- .../GENERIC-LTE-EPC/CONF/testing_enb.conf | 281 + .../GENERIC-LTE-EPC/CONF/testing_gnb.conf | 295 + .../CONF/testing_gnb_n310.conf | 295 + targets/RT/USER/gNB_usrp.gtkw | 59 +- targets/RT/USER/lte-ru.c | 42 +- targets/RT/USER/lte-softmodem.c | 14 +- targets/RT/USER/lte-softmodem.h | 4 + targets/RT/USER/lte-uesoftmodem.c | 4 +- targets/RT/USER/rfsim.c | 3 + 457 files changed, 84034 insertions(+), 16805 deletions(-) create mode 100644 ci-scripts/args_parse.py create mode 100644 ci-scripts/cls_cots_ue.py create mode 100644 ci-scripts/cls_physim.py create mode 100755 ci-scripts/conf_files/enb.band7.tm1.fr1.25PRB.usrpb210.conf create mode 100755 ci-scripts/conf_files/gnb.band78.tm1.fr1.106PRB.usrpb210.conf create mode 100644 ci-scripts/conf_files/lte-fdd-fembms-basic-sim.conf create mode 100644 ci-scripts/py_params.yaml create mode 100644 ci-scripts/py_params_template.yaml delete mode 100644 ci-scripts/rrc-files/rbconfig.raw delete mode 100644 ci-scripts/rrc-files/reconfig.raw create mode 100755 ci-scripts/xml_class_list.yml create mode 100644 ci-scripts/xml_files/enb_ocp_usrp210_band7_test_05mhz_tm1.xml create mode 100644 ci-scripts/xml_files/enb_ocp_usrp210_build.xml create mode 100644 ci-scripts/xml_files/enb_ue_usrp210_band7_test_05mhz_tm1_fembms_no_s1.xml create mode 100644 ci-scripts/xml_files/fr1_multi_node_build.xml create mode 100644 ci-scripts/xml_files/fr1_multi_node_terminate.xml create mode 100644 ci-scripts/xml_files/fr1_multi_node_test.xml create mode 100644 ci-scripts/xml_files/fr1_toggle_cots_ue.xml create mode 100644 ci-scripts/xml_files/gnb_nr_ue_usrp_run_multi_thread.xml create mode 100644 ci-scripts/xml_files/ldpc_gpu_test.xml create mode 100644 doc/TESTING_GNB_W_COTS_UE.md create mode 100755 doc/testing_gnb_w_cots_ue_resources/attach_signaling_scheme.jpg create mode 100755 doc/testing_gnb_w_cots_ue_resources/enb.conf create mode 100755 doc/testing_gnb_w_cots_ue_resources/gnb.conf create mode 100755 doc/testing_gnb_w_cots_ue_resources/oai_enb.log create mode 100755 doc/testing_gnb_w_cots_ue_resources/oai_fr1_lab.jpg create mode 100755 doc/testing_gnb_w_cots_ue_resources/oai_fr1_setup.jpg create mode 100755 doc/testing_gnb_w_cots_ue_resources/oai_fr1_setup.vsdx create mode 100755 doc/testing_gnb_w_cots_ue_resources/oai_gnb.log create mode 100644 openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG1_I0 create mode 100644 openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG1_I1 create mode 100644 openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG1_I2 create mode 100644 openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG1_I3 create mode 100644 openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG1_I4 create mode 100644 openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG1_I5 create mode 100644 openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG1_I6 create mode 100644 openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG1_I7 create mode 100644 openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG1_compact_in_C.h create mode 100644 openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG2_I0 create mode 100644 openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG2_I1 create mode 100644 openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG2_I2 create mode 100644 openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG2_I3 create mode 100644 openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG2_I4 create mode 100644 openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG2_I5 create mode 100644 openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG2_I6 create mode 100644 openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG2_I7 create mode 100644 openair1/PHY/CODING/nrLDPC_decoder_LYC/nrLDPC_decoder_LYC.cu create mode 100644 openair1/PHY/CODING/nrLDPC_decoder_LYC/nrLDPC_decoder_LYC.h create mode 100644 openair1/PHY/CODING/nrLDPC_decoder_LYC/nrLDPC_decoder_LYC_debug.cu rename openair1/PHY/NR_ESTIMATION/{nr_adjust_sync_gNB.c => nr_measurements_gNB.c} (63%) create mode 100644 openair1/PHY/NR_REFSIG/nr_gen_mod_table.c delete mode 100644 openair1/PHY/NR_TRANSPORT/nr_transport.h delete mode 100644 openair1/PHY/NR_TRANSPORT/nr_transport_proto_common.h create mode 100644 openair1/PHY/TOOLS/readme.md create mode 100644 openair1/SCHED_NR_UE/phy_frame_config_nr_ue.c create mode 100644 openair1/SIMULATION/NR_PHY/nr_dummy_functions_prach.c create mode 100644 openair2/LAYER2/MAC/slicing/slicing.c create mode 100644 openair2/LAYER2/MAC/slicing/slicing.h create mode 100644 openair2/LAYER2/MAC/slicing/slicing_internal.h rename openair2/LAYER2/{NR_MAC_gNB => NR_MAC_COMMON}/nr_mac_common.h (50%) create mode 100644 openair2/LAYER2/NR_MAC_UE/nr_l1_helpers.c create mode 100644 openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c create mode 100644 openair2/LAYER2/NR_MAC_UE/rar_tools_nrUE.c create mode 100644 openair2/LAYER2/nr_pdcp/nr_pdcp_entity.c create mode 100644 openair2/LAYER2/nr_pdcp/nr_pdcp_entity.h create mode 100644 openair2/LAYER2/nr_pdcp/nr_pdcp_entity_drb_am.c create mode 100644 openair2/LAYER2/nr_pdcp/nr_pdcp_entity_drb_am.h create mode 100644 openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.c create mode 100644 openair2/LAYER2/nr_pdcp/nr_pdcp_ue_manager.c create mode 100644 openair2/LAYER2/nr_pdcp/nr_pdcp_ue_manager.h create mode 100644 openair2/RRC/NR/rrc_gNB_GTPV1U.c create mode 100644 openair2/RRC/NR/rrc_gNB_GTPV1U.h create mode 100644 openair3/GTPV1-U/gtpv1u_gNB.c create mode 100644 openair3/GTPV1-U/gtpv1u_gNB_task.h create mode 100644 targets/ARCH/ETHERNET/benetel/4g/benetel.c create mode 100644 targets/ARCH/ETHERNET/benetel/4g/dpdk_driver.c create mode 100644 targets/ARCH/ETHERNET/benetel/4g/low.c create mode 100644 targets/ARCH/ETHERNET/benetel/4g/low.h create mode 100644 targets/ARCH/ETHERNET/benetel/4g/low_dpdk.c create mode 100644 targets/ARCH/ETHERNET/benetel/4g/shared_buffers.c create mode 100644 targets/ARCH/ETHERNET/benetel/4g/shared_buffers.h create mode 100644 targets/ARCH/ETHERNET/benetel/5g/benetel.c create mode 100644 targets/ARCH/ETHERNET/benetel/5g/dpdk_driver.c create mode 100644 targets/ARCH/ETHERNET/benetel/5g/low.c create mode 100644 targets/ARCH/ETHERNET/benetel/5g/low.h create mode 100644 targets/ARCH/ETHERNET/benetel/5g/low_dpdk.c create mode 100644 targets/ARCH/ETHERNET/benetel/5g/shared_buffers.c create mode 100644 targets/ARCH/ETHERNET/benetel/5g/shared_buffers.h create mode 100644 targets/ARCH/rfsimulator/new_channel_sim.c create mode 100644 targets/ARCH/rfsimulator/rfsimulator.h create mode 100644 targets/PROJECTS/GENERIC-LTE-EPC/CONF/benetel-4g.conf create mode 100644 targets/PROJECTS/GENERIC-LTE-EPC/CONF/benetel-5g.conf create mode 100644 targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.106PRB.slave.conf create mode 100644 targets/PROJECTS/GENERIC-LTE-EPC/CONF/testing_enb.conf create mode 100644 targets/PROJECTS/GENERIC-LTE-EPC/CONF/testing_gnb.conf create mode 100644 targets/PROJECTS/GENERIC-LTE-EPC/CONF/testing_gnb_n310.conf diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 61e44bdd55..7a8634f468 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,13 +2,12 @@ We want to make contributing to this project as easy and transparent as possible. -Please refer to the steps described on our website: [How to contribute to OAI](https://www.openairinterface.org/?page_id=112) - 1. Sign and return a Contributor License Agreement to OAI team. -2. Create an account on [Eurecom GitLab Server](https://gitlab.eurecom.fr). -3. Provide the identifiant of this account to the OAI team (mailto:contact@openairinterface.org) so you have developer rights on this repository. +2. We recommend that you provide us with a professional or student email address +2. Register on [Eurecom GitLab Server](https://gitlab.eurecom.fr/users/sign_in) +3. Provide the OAI team with the **username** of this account to (mailto:contact@openairinterface.org) ; we will give you the developer rights on this repository. 4. The policies are described in these wiki pages: [OAI Policies](https://gitlab.eurecom.fr/oai/openairinterface5g/wikis/oai-policies-home) - - PLEASE DO NOT FORK the OAI repository on your own Eurecom GitLab account. It just eats up space on our servers. + - PLEASE DO NOT FORK the OAI repository on your own Eurecom GitLab account. It just eats up space on our servers. - You can fork onto another hosting system. But we will NOT accept a merge request from a forked repository. * This decision was made for the license reasons. * The Continuous Integration will reject your merge request. diff --git a/ci-scripts/.gitignore b/ci-scripts/.gitignore index dc5e7c7476..34d19403a7 100644 --- a/ci-scripts/.gitignore +++ b/ci-scripts/.gitignore @@ -1,3 +1,4 @@ +r*.raw enb_*.log ue_*.log ping_*.* diff --git a/ci-scripts/Jenkinsfile-gitlab b/ci-scripts/Jenkinsfile-gitlab index 8dfa5c4ec4..c3b997a4e8 100644 --- a/ci-scripts/Jenkinsfile-gitlab +++ b/ci-scripts/Jenkinsfile-gitlab @@ -66,7 +66,8 @@ pipeline { "Test-IF4p5-TDD-Band38-Multi-RRU", "Test-eNB-OAI-UE-FDD-Band7", "Test-Mono-FDD-Band13-X2-HO", - "Test-TDD-Band78-gNB-NR-UE" + "Test-TDD-Band78-gNB-NR-UE", + "Test-OCP-FDD-Band7" ]) ansiColor('xterm') } @@ -683,6 +684,25 @@ pipeline { } } } + stage ("Test OAI OCP-eNB - FDD - Band 7 - B210") { + steps { + script { + triggerSlaveJob ('OCPeNB-FDD-Band7-B210', 'Test-OCP-FDD-Band7') + } + } + post { + always { + script { + finalizeSlaveJob('OCPeNB-FDD-Band7-B210') + } + } + failure { + script { + currentBuild.result = 'FAILURE' + } + } + } + } } post { always { diff --git a/ci-scripts/args_parse.py b/ci-scripts/args_parse.py new file mode 100644 index 0000000000..1249f52172 --- /dev/null +++ b/ci-scripts/args_parse.py @@ -0,0 +1,229 @@ + +# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more +# * contributor license agreements. See the NOTICE file distributed with +# * this work for additional information regarding copyright ownership. +# * The OpenAirInterface Software Alliance licenses this file to You under +# * the OAI Public License, Version 1.1 (the "License"); you may not use this file +# * except in compliance with the License. +# * You may obtain a copy of the License at +# * +# * http://www.openairinterface.org/?page_id=698 +# * +# * Unless required by applicable law or agreed to in writing, software +# * distributed under the License is distributed on an "AS IS" BASIS, +# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# * See the License for the specific language governing permissions and +# * limitations under the License. +# *------------------------------------------------------------------------------- +# * For more information about the OpenAirInterface (OAI) Software Alliance: +# * contact@openairinterface.org +# */ +#--------------------------------------------------------------------- +# Python for CI of OAI-eNB + COTS-UE +# +# Required Python Version +# Python 3.x +# +# Required Python Package +# pexpect +#--------------------------------------------------------------------- + +#----------------------------------------------------------- +# Import Libs +#----------------------------------------------------------- +import sys # arg +import re # reg +import yaml + + +#----------------------------------------------------------- +# Parsing Command Line Arguements +#----------------------------------------------------------- + + +def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,HELP): + + + py_param_file_present = False + py_params={} + + while len(argvs) > 1: + myArgv = argvs.pop(1) # 0th is this file's name + + #--help + if re.match('^\-\-help$', myArgv, re.IGNORECASE): + HELP.GenericHelp(CONST.Version) + sys.exit(0) + + #--apply= as parameters file, to replace inline parameters + elif re.match('^\-\-Apply=(.+)$', myArgv, re.IGNORECASE): + matchReg = re.match('^\-\-Apply=(.+)$', myArgv, re.IGNORECASE) + py_params_file = matchReg.group(1) + with open(py_params_file,'r') as file: + # The FullLoader parameter handles the conversion from YAML + # scalar values to Python dictionary format + py_params = yaml.load(file,Loader=yaml.FullLoader) + py_param_file_present = True #to be removed once validated + #AssignParams(py_params) #to be uncommented once validated + + #consider inline parameters + elif re.match('^\-\-mode=(.+)$', myArgv, re.IGNORECASE): + matchReg = re.match('^\-\-mode=(.+)$', myArgv, re.IGNORECASE) + mode = matchReg.group(1) + elif re.match('^\-\-eNBRepository=(.+)$|^\-\-ranRepository(.+)$', myArgv, re.IGNORECASE): + if re.match('^\-\-eNBRepository=(.+)$', myArgv, re.IGNORECASE): + matchReg = re.match('^\-\-eNBRepository=(.+)$', myArgv, re.IGNORECASE) + else: + matchReg = re.match('^\-\-ranRepository=(.+)$', myArgv, re.IGNORECASE) + CiTestObj.ranRepository = matchReg.group(1) + RAN.ranRepository=matchReg.group(1) + HTML.ranRepository=matchReg.group(1) + ldpc.ranRepository=matchReg.group(1) + elif re.match('^\-\-eNB_AllowMerge=(.+)$|^\-\-ranAllowMerge=(.+)$', myArgv, re.IGNORECASE): + if re.match('^\-\-eNB_AllowMerge=(.+)$', myArgv, re.IGNORECASE): + matchReg = re.match('^\-\-eNB_AllowMerge=(.+)$', myArgv, re.IGNORECASE) + else: + matchReg = re.match('^\-\-ranAllowMerge=(.+)$', myArgv, re.IGNORECASE) + doMerge = matchReg.group(1) + ldpc.ranAllowMerge=matchReg.group(1) + if ((doMerge == 'true') or (doMerge == 'True')): + CiTestObj.ranAllowMerge = True + RAN.ranAllowMerge=True + HTML.ranAllowMerge=True + elif re.match('^\-\-eNBBranch=(.+)$|^\-\-ranBranch=(.+)$', myArgv, re.IGNORECASE): + if re.match('^\-\-eNBBranch=(.+)$', myArgv, re.IGNORECASE): + matchReg = re.match('^\-\-eNBBranch=(.+)$', myArgv, re.IGNORECASE) + else: + matchReg = re.match('^\-\-ranBranch=(.+)$', myArgv, re.IGNORECASE) + CiTestObj.ranBranch = matchReg.group(1) + RAN.ranBranch=matchReg.group(1) + HTML.ranBranch=matchReg.group(1) + ldpc.ranBranch=matchReg.group(1) + elif re.match('^\-\-eNBCommitID=(.*)$|^\-\-ranCommitID=(.*)$', myArgv, re.IGNORECASE): + if re.match('^\-\-eNBCommitID=(.*)$', myArgv, re.IGNORECASE): + matchReg = re.match('^\-\-eNBCommitID=(.*)$', myArgv, re.IGNORECASE) + else: + matchReg = re.match('^\-\-ranCommitID=(.*)$', myArgv, re.IGNORECASE) + CiTestObj.ranCommitID = matchReg.group(1) + RAN.ranCommitID=matchReg.group(1) + HTML.ranCommitID=matchReg.group(1) + ldpc.ranCommitID=matchReg.group(1) + elif re.match('^\-\-eNBTargetBranch=(.*)$|^\-\-ranTargetBranch=(.*)$', myArgv, re.IGNORECASE): + if re.match('^\-\-eNBTargetBranch=(.*)$', myArgv, re.IGNORECASE): + matchReg = re.match('^\-\-eNBTargetBranch=(.*)$', myArgv, re.IGNORECASE) + else: + matchReg = re.match('^\-\-ranTargetBranch=(.*)$', myArgv, re.IGNORECASE) + CiTestObj.ranTargetBranch = matchReg.group(1) + RAN.ranTargetBranch=matchReg.group(1) + HTML.ranTargetBranch=matchReg.group(1) + ldpc.ranTargetBranch=matchReg.group(1) + elif re.match('^\-\-eNBIPAddress=(.+)$|^\-\-eNB[1-2]IPAddress=(.+)$', myArgv, re.IGNORECASE): + if re.match('^\-\-eNBIPAddress=(.+)$', myArgv, re.IGNORECASE): + matchReg = re.match('^\-\-eNBIPAddress=(.+)$', myArgv, re.IGNORECASE) + RAN.eNBIPAddress=matchReg.group(1) + ldpc.eNBIpAddr=matchReg.group(1) + elif re.match('^\-\-eNB1IPAddress=(.+)$', myArgv, re.IGNORECASE): + matchReg = re.match('^\-\-eNB1IPAddress=(.+)$', myArgv, re.IGNORECASE) + RAN.eNB1IPAddress=matchReg.group(1) + elif re.match('^\-\-eNB2IPAddress=(.+)$', myArgv, re.IGNORECASE): + matchReg = re.match('^\-\-eNB2IPAddress=(.+)$', myArgv, re.IGNORECASE) + RAN.eNB2IPAddress=matchReg.group(1) + elif re.match('^\-\-eNBUserName=(.+)$|^\-\-eNB[1-2]UserName=(.+)$', myArgv, re.IGNORECASE): + if re.match('^\-\-eNBUserName=(.+)$', myArgv, re.IGNORECASE): + matchReg = re.match('^\-\-eNBUserName=(.+)$', myArgv, re.IGNORECASE) + RAN.eNBUserName=matchReg.group(1) + ldpc.eNBUserName=matchReg.group(1) + elif re.match('^\-\-eNB1UserName=(.+)$', myArgv, re.IGNORECASE): + matchReg = re.match('^\-\-eNB1UserName=(.+)$', myArgv, re.IGNORECASE) + RAN.eNB1UserName=matchReg.group(1) + elif re.match('^\-\-eNB2UserName=(.+)$', myArgv, re.IGNORECASE): + matchReg = re.match('^\-\-eNB2UserName=(.+)$', myArgv, re.IGNORECASE) + RAN.eNB2UserName=matchReg.group(1) + elif re.match('^\-\-eNBPassword=(.+)$|^\-\-eNB[1-2]Password=(.+)$', myArgv, re.IGNORECASE): + if re.match('^\-\-eNBPassword=(.+)$', myArgv, re.IGNORECASE): + matchReg = re.match('^\-\-eNBPassword=(.+)$', myArgv, re.IGNORECASE) + RAN.eNBPassword=matchReg.group(1) + ldpc.eNBPassWord=matchReg.group(1) + elif re.match('^\-\-eNB1Password=(.+)$', myArgv, re.IGNORECASE): + matchReg = re.match('^\-\-eNB1Password=(.+)$', myArgv, re.IGNORECASE) + RAN.eNB1Password=matchReg.group(1) + elif re.match('^\-\-eNB2Password=(.+)$', myArgv, re.IGNORECASE): + matchReg = re.match('^\-\-eNB2Password=(.+)$', myArgv, re.IGNORECASE) + RAN.eNB2Password=matchReg.group(1) + elif re.match('^\-\-eNBSourceCodePath=(.+)$|^\-\-eNB[1-2]SourceCodePath=(.+)$', myArgv, re.IGNORECASE): + if re.match('^\-\-eNBSourceCodePath=(.+)$', myArgv, re.IGNORECASE): + matchReg = re.match('^\-\-eNBSourceCodePath=(.+)$', myArgv, re.IGNORECASE) + RAN.eNBSourceCodePath=matchReg.group(1) + ldpc.eNBSourceCodePath=matchReg.group(1) + elif re.match('^\-\-eNB1SourceCodePath=(.+)$', myArgv, re.IGNORECASE): + matchReg = re.match('^\-\-eNB1SourceCodePath=(.+)$', myArgv, re.IGNORECASE) + RAN.eNB1SourceCodePath=matchReg.group(1) + elif re.match('^\-\-eNB2SourceCodePath=(.+)$', myArgv, re.IGNORECASE): + matchReg = re.match('^\-\-eNB2SourceCodePath=(.+)$', myArgv, re.IGNORECASE) + RAN.eNB2SourceCodePath=matchReg.group(1) + elif re.match('^\-\-EPCIPAddress=(.+)$', myArgv, re.IGNORECASE): + matchReg = re.match('^\-\-EPCIPAddress=(.+)$', myArgv, re.IGNORECASE) + EPC.IPAddress=matchReg.group(1) + elif re.match('^\-\-EPCUserName=(.+)$', myArgv, re.IGNORECASE): + matchReg = re.match('^\-\-EPCUserName=(.+)$', myArgv, re.IGNORECASE) + EPC.UserName=matchReg.group(1) + elif re.match('^\-\-EPCPassword=(.+)$', myArgv, re.IGNORECASE): + matchReg = re.match('^\-\-EPCPassword=(.+)$', myArgv, re.IGNORECASE) + EPC.Password=matchReg.group(1) + elif re.match('^\-\-EPCSourceCodePath=(.+)$', myArgv, re.IGNORECASE): + matchReg = re.match('^\-\-EPCSourceCodePath=(.+)$', myArgv, re.IGNORECASE) + EPC.SourceCodePath=matchReg.group(1) + elif re.match('^\-\-EPCType=(.+)$', myArgv, re.IGNORECASE): + matchReg = re.match('^\-\-EPCType=(.+)$', myArgv, re.IGNORECASE) + if re.match('OAI', matchReg.group(1), re.IGNORECASE) or re.match('ltebox', matchReg.group(1), re.IGNORECASE) or re.match('OAI-Rel14-CUPS', matchReg.group(1), re.IGNORECASE) or re.match('OAI-Rel14-Docker', matchReg.group(1), re.IGNORECASE): + EPC.Type=matchReg.group(1) + else: + sys.exit('Invalid EPC Type: ' + matchReg.group(1) + ' -- (should be OAI or ltebox or OAI-Rel14-CUPS or OAI-Rel14-Docker)') + elif re.match('^\-\-EPCContainerPrefix=(.+)$', myArgv, re.IGNORECASE): + matchReg = re.match('^\-\-EPCContainerPrefix=(.+)$', myArgv, re.IGNORECASE) + EPC.ContainerPrefix=matchReg.group(1) + elif re.match('^\-\-ADBIPAddress=(.+)$', myArgv, re.IGNORECASE): + matchReg = re.match('^\-\-ADBIPAddress=(.+)$', myArgv, re.IGNORECASE) + CiTestObj.ADBIPAddress = matchReg.group(1) + elif re.match('^\-\-ADBUserName=(.+)$', myArgv, re.IGNORECASE): + matchReg = re.match('^\-\-ADBUserName=(.+)$', myArgv, re.IGNORECASE) + CiTestObj.ADBUserName = matchReg.group(1) + elif re.match('^\-\-ADBType=(.+)$', myArgv, re.IGNORECASE): + matchReg = re.match('^\-\-ADBType=(.+)$', myArgv, re.IGNORECASE) + if re.match('centralized', matchReg.group(1), re.IGNORECASE) or re.match('distributed', matchReg.group(1), re.IGNORECASE): + if re.match('distributed', matchReg.group(1), re.IGNORECASE): + CiTestObj.ADBCentralized = False + else: + CiTestObj.ADBCentralized = True + else: + sys.exit('Invalid ADB Type: ' + matchReg.group(1) + ' -- (should be centralized or distributed)') + elif re.match('^\-\-ADBPassword=(.+)$', myArgv, re.IGNORECASE): + matchReg = re.match('^\-\-ADBPassword=(.+)$', myArgv, re.IGNORECASE) + CiTestObj.ADBPassword = matchReg.group(1) + elif re.match('^\-\-XMLTestFile=(.+)$', myArgv, re.IGNORECASE): + matchReg = re.match('^\-\-XMLTestFile=(.+)$', myArgv, re.IGNORECASE) + CiTestObj.testXMLfiles.append(matchReg.group(1)) + HTML.testXMLfiles.append(matchReg.group(1)) + HTML.nbTestXMLfiles=HTML.nbTestXMLfiles+1 + elif re.match('^\-\-UEIPAddress=(.+)$', myArgv, re.IGNORECASE): + matchReg = re.match('^\-\-UEIPAddress=(.+)$', myArgv, re.IGNORECASE) + CiTestObj.UEIPAddress = matchReg.group(1) + elif re.match('^\-\-UEUserName=(.+)$', myArgv, re.IGNORECASE): + matchReg = re.match('^\-\-UEUserName=(.+)$', myArgv, re.IGNORECASE) + CiTestObj.UEUserName = matchReg.group(1) + elif re.match('^\-\-UEPassword=(.+)$', myArgv, re.IGNORECASE): + matchReg = re.match('^\-\-UEPassword=(.+)$', myArgv, re.IGNORECASE) + CiTestObj.UEPassword = matchReg.group(1) + elif re.match('^\-\-UESourceCodePath=(.+)$', myArgv, re.IGNORECASE): + matchReg = re.match('^\-\-UESourceCodePath=(.+)$', myArgv, re.IGNORECASE) + CiTestObj.UESourceCodePath = matchReg.group(1) + elif re.match('^\-\-finalStatus=(.+)$', myArgv, re.IGNORECASE): + matchReg = re.match('^\-\-finalStatus=(.+)$', myArgv, re.IGNORECASE) + finalStatus = matchReg.group(1) + if ((finalStatus == 'true') or (finalStatus == 'True')): + CiTestObj.finalStatus = True + else: + HELP.GenericHelp(CONST.Version) + sys.exit('Invalid Parameter: ' + myArgv) + + return py_param_file_present, py_params, mode diff --git a/ci-scripts/checkAddedWarnings.sh b/ci-scripts/checkAddedWarnings.sh index d366059a85..bda8287a78 100755 --- a/ci-scripts/checkAddedWarnings.sh +++ b/ci-scripts/checkAddedWarnings.sh @@ -110,7 +110,7 @@ MODIFIED_FILES=`git log $TARGET_INIT_COMMIT..$MERGE_COMMMIT --oneline --name-sta NB_WARNINGS_FILES=0 # Retrieve list of warnings -LIST_WARNING_FILES=`egrep "error:|warning:" archives/*/*.Rel15.txt archives/*/basic_simulator_*txt | egrep -v "jobserver unavailable|Clock skew detected.|flexran.proto" | sed -e "s#^.*/home/ubuntu/tmp/##" -e "s#^.*/tmp/CI-eNB/##" -e "s#common/utils/.*/itti#common/utils/itti#" | awk -F ":" '{print $1}' | sort | uniq` +LIST_WARNING_FILES=`egrep "error:|warning:" archives/*/*.Rel15.txt | egrep -v "jobserver unavailable|Clock skew detected.|flexran.proto" | sed -e "s#^.*/home/ubuntu/tmp/##" -e "s#^.*/tmp/CI-eNB/##" -e "s#common/utils/.*/itti#common/utils/itti#" | awk -F ":" '{print $1}' | sort | uniq` echo "" echo "List of files that have been modified by the Merge Request AND" diff --git a/ci-scripts/cls_cots_ue.py b/ci-scripts/cls_cots_ue.py new file mode 100644 index 0000000000..6954aa3927 --- /dev/null +++ b/ci-scripts/cls_cots_ue.py @@ -0,0 +1,88 @@ +# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more +# * contributor license agreements. See the NOTICE file distributed with +# * this work for additional information regarding copyright ownership. +# * The OpenAirInterface Software Alliance licenses this file to You under +# * the OAI Public License, Version 1.1 (the "License"); you may not use this file +# * except in compliance with the License. +# * You may obtain a copy of the License at +# * +# * http://www.openairinterface.org/?page_id=698 +# * +# * Unless required by applicable law or agreed to in writing, software +# * distributed under the License is distributed on an "AS IS" BASIS, +# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# * See the License for the specific language governing permissions and +# * limitations under the License. +# *------------------------------------------------------------------------------- +# * For more information about the OpenAirInterface (OAI) Software Alliance: +# * contact@openairinterface.org +# */ +#--------------------------------------------------------------------- +# Python for CI of OAI-eNB + COTS-UE +# +# Required Python Version +# Python 3.x +# +# Required Python Package +# pexpect +#--------------------------------------------------------------------- + +#to use logging.info() +import logging +#to create a SSH object locally in the methods +import sshconnection +#time.sleep +import time + +class CotsUe: + def __init__(self,model,UEIPAddr,UEUserName,UEPassWord): + self.model = model + self.UEIPAddr = UEIPAddr + self.UEUserName = UEUserName + self.UEPassWord = UEPassWord + self.runargs = '' #on of off to toggle airplane mode on/off + self.__SetAirplaneRetry = 3 + +#-----------------$ +#PUBLIC Methods$ +#-----------------$ + + def Check_Airplane(self): + mySSH = sshconnection.SSHConnection() + mySSH.open(self.UEIPAddr, self.UEUserName, self.UEPassWord) + status=mySSH.cde_check_value('sudo adb shell settings get global airplane_mode_on ', ['0','1'],5) + mySSH.close() + return status + + + def Set_Airplane(self,target_state_str): + mySSH = sshconnection.SSHConnection() + mySSH.open(self.UEIPAddr, self.UEUserName, self.UEPassWord) + mySSH.command('sudo adb start-server','$',5) + logging.info("Toggling COTS UE Airplane mode to : "+target_state_str) + current_state = self.Check_Airplane() + if target_state_str.lower()=="on": + target_state=1 + else: + target_state=0 + if current_state != target_state: + #toggle state + retry = 0 + while (current_state!=target_state) and (retry < self.__SetAirplaneRetry): + mySSH.command('sudo adb shell am start -a android.settings.AIRPLANE_MODE_SETTINGS', '\$', 5) + mySSH.command('sudo adb shell input keyevent 20', '\$', 5) + mySSH.command('sudo adb shell input tap 968 324', '\$', 5) + time.sleep(1) + current_state = self.Check_Airplane() + retry+=1 + if current_state != target_state: + logging.error("ATTENTION : Could not toggle to : "+target_state_str) + logging.error("Current state is : "+ str(current_state)) + else: + print("Airplane mode is already "+ target_state_str) + mySSH.command('sudo adb kill-server','$',5) + mySSH.close() + + + + diff --git a/ci-scripts/cls_physim.py b/ci-scripts/cls_physim.py new file mode 100644 index 0000000000..4ca36b8cf0 --- /dev/null +++ b/ci-scripts/cls_physim.py @@ -0,0 +1,191 @@ +# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more +# * contributor license agreements. See the NOTICE file distributed with +# * this work for additional information regarding copyright ownership. +# * The OpenAirInterface Software Alliance licenses this file to You under +# * the OAI Public License, Version 1.1 (the "License"); you may not use this file +# * except in compliance with the License. +# * You may obtain a copy of the License at +# * +# * http://www.openairinterface.org/?page_id=698 +# * +# * Unless required by applicable law or agreed to in writing, software +# * distributed under the License is distributed on an "AS IS" BASIS, +# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# * See the License for the specific language governing permissions and +# * limitations under the License. +# *------------------------------------------------------------------------------- +# * For more information about the OpenAirInterface (OAI) Software Alliance: +# * contact@openairinterface.org +# */ +#--------------------------------------------------------------------- +# Python for CI of OAI-eNB + COTS-UE +# +# Required Python Version +# Python 3.x +# +# Required Python Package +# pexpect +#--------------------------------------------------------------------- + +#to use logging.info() +import logging +#to create a SSH object locally in the methods +import sshconnection +#to update the HTML object +import html +from multiprocessing import SimpleQueue +#for log folder maintenance +import os + +class PhySim: + def __init__(self): + self.buildargs = "" + self.runargs = "" + self.eNBIpAddr = "" + self.eNBUserName = "" + self.eNBPassWord = "" + self.eNBSourceCodePath = "" + self.ranRepository = "" + self.ranBranch = "" + self.ranCommitID= "" + self.ranAllowMerge= "" + self.ranTargetBranch= "" + self.exitStatus=0 + self.forced_workspace_cleanup=False + #private attributes + self.__workSpacePath='' + self.__buildLogFile='compile_phy_sim.log' + self.__runLogFile='' + self.__runResults=[] + self.__runLogPath='phy_sim_logs' + + +#----------------- +#PRIVATE Methods +#----------------- + + def __CheckResults_PhySim(self,HTML,CONST,testcase_id): + mySSH = sshconnection.SSHConnection() + mySSH.open(self.eNBIpAddr, self.eNBUserName, self.eNBPassWord) + #retrieve run log file and store it locally$ + mySSH.copyin(self.eNBIpAddr, self.eNBUserName, self.eNBPassWord, self.__workSpacePath+self.__runLogFile, '.') + mySSH.close() + #parse results looking for Encoding and Decoding mean values + self.__runResults=[] + with open(self.__runLogFile) as f: + for line in f: + if 'mean' in line: + self.__runResults.append(line) + #the values are appended for each mean value (2), so we take these 2 values from the list + info=self.__runResults[0]+self.__runResults[1] + + #once parsed move the local logfile to its folder for tidiness + os.system('mv '+self.__runLogFile+' '+ self.__runLogPath+'/.') + + #updating the HTML with results + html_cell = '
' + info  + '
' + html_queue=SimpleQueue() + html_queue.put(html_cell) + HTML.CreateHtmlTestRowQueue(self.runargs, 'OK', 1, html_queue) + return HTML + + + def __CheckBuild_PhySim(self, HTML, CONST): + self.__workSpacePath=self.eNBSourceCodePath+'/cmake_targets/' + mySSH = sshconnection.SSHConnection() + mySSH.open(self.eNBIpAddr, self.eNBUserName, self.eNBPassWord) + #retrieve compile log file and store it locally + mySSH.copyin(self.eNBIpAddr, self.eNBUserName, self.eNBPassWord, self.__workSpacePath+self.__buildLogFile, '.') + #delete older run log file + mySSH.command('rm ' + self.__workSpacePath+self.__runLogFile, '\$', 5) + mySSH.close() + #check build result from local compile log file + buildStatus=False + with open(self.__buildLogFile) as f: + #nr_prachsim is the last compile step + if 'nr_prachsim compiled' in f.read(): + buildStatus=True + #update HTML based on build status + if buildStatus: + HTML.CreateHtmlTestRow(self.buildargs, 'OK', CONST.ALL_PROCESSES_OK, 'LDPC') + self.exitStatus=0 + else: + logging.error('\u001B[1m Building Physical Simulators Failed\u001B[0m') + HTML.CreateHtmlTestRow(self.buildargs, 'KO', CONST.ALL_PROCESSES_OK, 'LDPC') + HTML.CreateHtmlTabFooter(False) + #exitStatus=1 will do a sys.exit in main + self.exitStatus=1 + return HTML + + +#-----------------$ +#PUBLIC Methods$ +#-----------------$ + + def Build_PhySim(self,htmlObj,constObj): + mySSH = sshconnection.SSHConnection() + mySSH.open(self.eNBIpAddr, self.eNBUserName, self.eNBPassWord) + + #create working dir + mySSH.command('mkdir -p ' + self.eNBSourceCodePath, '\$', 5) + mySSH.command('cd ' + self.eNBSourceCodePath, '\$', 5) + + if not self.ranRepository.lower().endswith('.git'): + self.ranRepository+='.git' + + #git clone + mySSH.command('if [ ! -e .git ]; then stdbuf -o0 git clone ' + self.ranRepository + ' .; else stdbuf -o0 git fetch --prune; fi', '\$', 600) + #git config + mySSH.command('git config user.email "jenkins@openairinterface.org"', '\$', 5) + mySSH.command('git config user.name "OAI Jenkins"', '\$', 5) + + #git clean depending on self.forced_workspace_cleanup captured in xml + if self.forced_workspace_cleanup==True: + logging.info('Cleaning workspace ...') + mySSH.command('echo ' + self.eNBPassWord + ' | sudo -S git clean -x -d -ff', '\$', 30) + else: + logging.info('Workspace cleaning was disabled') + + # if the commit ID is provided, use it to point to it + if self.ranCommitID != '': + mySSH.command('git checkout -f ' + self.ranCommitID, '\$', 5) + # if the branch is not develop, then it is a merge request and we need to do + # the potential merge. Note that merge conflicts should have already been checked earlier + if (self.ranAllowMerge): + if self.ranTargetBranch == '': + if (self.ranBranch != 'develop') and (self.ranBranch != 'origin/develop'): + mySSH.command('git merge --ff origin/develop -m "Temporary merge for CI"', '\$', 5) + else: + logging.info('Merging with the target branch: ' + self.ranTargetBranch) + mySSH.command('git merge --ff origin/' + self.ranTargetBranch + ' -m "Temporary merge for CI"', '\$', 5) + + #build + mySSH.command('source oaienv', '\$', 5) + mySSH.command('cd cmake_targets', '\$', 5) + mySSH.command('mkdir -p log', '\$', 5) + mySSH.command('chmod 777 log', '\$', 5) + mySSH.command('stdbuf -o0 ./build_oai ' + self.buildargs + ' 2>&1 | stdbuf -o0 tee ' + self.__buildLogFile, 'Bypassing the Tests|build have failed', 1500) + + mySSH.close() + #check build status and update HTML object + lHTML = html.HTMLManagement() + lHTML=self.__CheckBuild_PhySim(htmlObj,constObj) + return lHTML + + + def Run_PhySim(self,htmlObj,constObj,testcase_id): + #create run logs folder locally + os.system('mkdir -p ./'+self.__runLogPath) + #log file is tc_.log remotely + self.__runLogFile='physim_'+str(testcase_id)+'.log' + #open a session for test run + mySSH = sshconnection.SSHConnection() + mySSH.open(self.eNBIpAddr, self.eNBUserName, self.eNBPassWord) + mySSH.command('cd '+self.__workSpacePath,'\$',5) + #run and redirect the results to a log file + mySSH.command(self.__workSpacePath+'phy_simulators/build/ldpctest ' + self.runargs + ' >> '+self.__runLogFile, '\$', 30) + mySSH.close() + #return updated HTML to main + lHTML = html.HTMLManagement() + lHTML=self.__CheckResults_PhySim(htmlObj,constObj,testcase_id) + return lHTML diff --git a/ci-scripts/conf_files/enb.band17.tm1.25PRB.usrpb210.conf b/ci-scripts/conf_files/enb.band17.tm1.25PRB.usrpb210.conf index db1c5eae2a..d834b23e30 100644 --- a/ci-scripts/conf_files/enb.band17.tm1.25PRB.usrpb210.conf +++ b/ci-scripts/conf_files/enb.band17.tm1.25PRB.usrpb210.conf @@ -105,6 +105,7 @@ eNBs = ue_TimersAndConstants_n310 = 20; ue_TimersAndConstants_n311 = 1; ue_TransmissionMode = 1; + mbms_dedicated_serving_cell = "DISABLE" //Parameters for SIB18 rxPool_sc_CP_Len = "normal"; diff --git a/ci-scripts/conf_files/enb.band17.tm1.mbms.25PRB.usrpb210.conf b/ci-scripts/conf_files/enb.band17.tm1.mbms.25PRB.usrpb210.conf index de58950df4..a9ccb9f783 100644 --- a/ci-scripts/conf_files/enb.band17.tm1.mbms.25PRB.usrpb210.conf +++ b/ci-scripts/conf_files/enb.band17.tm1.mbms.25PRB.usrpb210.conf @@ -105,6 +105,8 @@ eNBs = ue_TimersAndConstants_n310 = 20; ue_TimersAndConstants_n311 = 1; ue_TransmissionMode = 1; + mbms_dedicated_serving_cell = "DISABLE" + //Parameters for SIB18 rxPool_sc_CP_Len = "normal"; @@ -247,7 +249,6 @@ MCEs = ( ); - NETWORK_INTERFACES : { MCE_INTERFACE_NAME_FOR_M2_ENB = "lo"; @@ -271,12 +272,12 @@ MCEs = ( mcch_update_time = 10; mbms_area_config_list = ( { - common_sf_allocation_period = 2; #rf4(0) rf8(1) rf16(2) rf32(3) rf64(4) rf128(5) rf256(6) + common_sf_allocation_period = 1; #rf4(0) rf8(1) rf16(2) rf32(3) rf64(4) rf128(5) rf256(6) mbms_area_id = 0; pmch_config_list = ( { - allocated_sf_end=64; - data_mcs=10; + allocated_sf_end=40; + data_mcs=20; mch_scheduling_period = 0; #rf8(0) mbms_session_list = ( { @@ -288,7 +289,7 @@ MCEs = ( mnc_length = 2; } service_id=0; - lcid=5; #this must be properly defined lcid:8+service:0 -> rab_id:5 + lcid=5; #this must be properly defined lcid:8+service:0 -> rab_id:5 //with new RLC set lcid either 4 or 5 } ); } @@ -296,10 +297,10 @@ MCEs = ( mbms_sf_config_list = ( { - radioframe_allocation_period=1; #n1(0) n2(1) n4(2) n8(3) n16(4) n32(5) + radioframe_allocation_period=0; #n1(0) n2(1) n4(2) n8(3) n16(4) n32(5) radioframe_alloocation_offset=0; num_frame="oneFrame"; - subframe_allocation=57; #xx100000 + subframe_allocation=59; #xx111011 #57; #xx111001 //num_frame="fourFrame"; //subframe_allocation=14548987; # } diff --git a/ci-scripts/conf_files/enb.band7.tm1.fr1.25PRB.usrpb210.conf b/ci-scripts/conf_files/enb.band7.tm1.fr1.25PRB.usrpb210.conf new file mode 100755 index 0000000000..5b2c90a714 --- /dev/null +++ b/ci-scripts/conf_files/enb.band7.tm1.fr1.25PRB.usrpb210.conf @@ -0,0 +1,284 @@ +Active_eNBs = ( "eNB-Eurecom-LTEBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +eNBs = +( + { + # real_time choice in {hard, rt-preempt, no} + real_time = "no"; + ////////// Identification parameters: + eNB_ID = 0xe01; + cell_type = "CELL_MACRO_ENB"; + eNB_name = "eNB-Eurecom-LTEBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + plmn_list = ( + { mcc = 222; mnc = 01; mnc_length = 2; } + ); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + component_carriers = ( + { + node_function = "eNodeB_3GPP"; + node_timing = "synch_to_ext_device"; + node_synch_ref = 0; + nb_antenna_ports = 1; + ue_TransmissionMode = 1; + frame_type = "FDD"; + tdd_config = 3; + tdd_config_s = 0; + prefix_type = "NORMAL"; + eutra_band = 7; + downlink_frequency = 2680000000L; + uplink_frequency_offset = -120000000; + + Nid_cell = 0; + N_RB_DL = 25; + Nid_cell_mbsfn = 0; + nb_antennas_tx = 1; + nb_antennas_rx = 1; + prach_root = 0; + tx_gain = 90; + rx_gain = 115; + pbch_repetition = "FALSE"; + + prach_config_index = 0; + prach_high_speed = "DISABLE"; + prach_zero_correlation = 1; + prach_freq_offset = 2; + + pucch_delta_shift = 1; + pucch_nRB_CQI = 0; + pucch_nCS_AN = 0; + pucch_n1_AN = 0; + pdsch_referenceSignalPower = -29; + pdsch_p_b = 0; + pusch_n_SB = 1; + pusch_enable64QAM = "DISABLE"; + pusch_hoppingMode = "interSubFrame"; + pusch_hoppingOffset = 0; + pusch_groupHoppingEnabled = "ENABLE"; + pusch_groupAssignment = 0; + pusch_sequenceHoppingEnabled = "DISABLE"; + pusch_nDMRS1 = 1; + phich_duration = "NORMAL"; + phich_resource = "ONESIXTH"; + srs_enable = "DISABLE"; +/* + srs_BandwidthConfig =; + srs_SubframeConfig =; + srs_ackNackST =; + srs_MaxUpPts =; +*/ + + pusch_p0_Nominal = -96; + pusch_alpha = "AL1"; + pucch_p0_Nominal = -96; + msg3_delta_Preamble = 6; + pucch_deltaF_Format1 = "deltaF2"; + pucch_deltaF_Format1b = "deltaF3"; + pucch_deltaF_Format2 = "deltaF0"; + pucch_deltaF_Format2a = "deltaF0"; + pucch_deltaF_Format2b = "deltaF0"; + + rach_numberOfRA_Preambles = 64; + rach_preamblesGroupAConfig = "DISABLE"; +/* + rach_sizeOfRA_PreamblesGroupA = ; + rach_messageSizeGroupA = ; + rach_messagePowerOffsetGroupB = ; +*/ + rach_powerRampingStep = 4; + rach_preambleInitialReceivedTargetPower = -108; + rach_preambleTransMax = 10; + rach_raResponseWindowSize = 10; + rach_macContentionResolutionTimer = 48; + rach_maxHARQ_Msg3Tx = 4; + + pcch_default_PagingCycle = 128; + pcch_nB = "oneT"; + bcch_modificationPeriodCoeff = 2; + ue_TimersAndConstants_t300 = 1000; + ue_TimersAndConstants_t301 = 1000; + ue_TimersAndConstants_t310 = 1000; + ue_TimersAndConstants_t311 = 10000; + ue_TimersAndConstants_n310 = 20; + ue_TimersAndConstants_n311 = 1; + + //Parameters for SIB18 + rxPool_sc_CP_Len = "normal"; + rxPool_sc_Period = "sf40"; + rxPool_data_CP_Len = "normal"; + rxPool_ResourceConfig_prb_Num = 20; + rxPool_ResourceConfig_prb_Start = 5; + rxPool_ResourceConfig_prb_End = 44; + rxPool_ResourceConfig_offsetIndicator_present = "prSmall"; + rxPool_ResourceConfig_offsetIndicator_choice = 0; + rxPool_ResourceConfig_subframeBitmap_present = "prBs40"; + rxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "00000000000000000000"; + rxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5; + rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0; +/* + rxPool_dataHoppingConfig_hoppingParameter = 0; + rxPool_dataHoppingConfig_numSubbands = "ns1"; + rxPool_dataHoppingConfig_rbOffset = 0; + rxPool_commTxResourceUC-ReqAllowed = "TRUE"; +*/ + // Parameters for SIB19 + discRxPool_cp_Len = "normal" + discRxPool_discPeriod = "rf32" + discRxPool_numRetx = 1; + discRxPool_numRepetition = 2; + discRxPool_ResourceConfig_prb_Num = 5; + discRxPool_ResourceConfig_prb_Start = 3; + discRxPool_ResourceConfig_prb_End = 21; + discRxPool_ResourceConfig_offsetIndicator_present = "prSmall"; + discRxPool_ResourceConfig_offsetIndicator_choice = 0; + discRxPool_ResourceConfig_subframeBitmap_present = "prBs40"; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "f0ffffffff"; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0; + + } + ); + + srb1_parameters : + { + # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500] + timer_poll_retransmit = 80; + + # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200] + timer_reordering = 35; + + # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500] + timer_status_prohibit = 0; + + # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)] + poll_pdu = 4; + + # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)] + poll_byte = 99999; + + # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32] + max_retx_threshold = 4; + } + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + enable_measurement_reports = "yes"; + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "CI_MME_IP_ADDR"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + ///X2 + enable_x2 = "yes"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + + NETWORK_INTERFACES : + { + ENB_INTERFACE_NAME_FOR_S1_MME = "eth1"; + ENB_IPV4_ADDRESS_FOR_S1_MME = "CI_ENB_IP_ADDR"; + + ENB_INTERFACE_NAME_FOR_S1U = "eth1"; + ENB_IPV4_ADDRESS_FOR_S1U = "CI_ENB_IP_ADDR"; + ENB_PORT_FOR_S1U = 2152; # Spec 2152 + + ENB_IPV4_ADDRESS_FOR_X2C = "CI_ENB_IP_ADDR"; + ENB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="high"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="debug"; + rlc_log_verbosity ="high"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="high"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + phy_test_mode = 0; + puSch10xSnr = 160; + puCch10xSnr = 160; + } +); + +THREAD_STRUCT = ( + { + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + worker_config = "ENABLE"; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 118; + eNB_instances = [0]; + clock_src = "external"; + } +); + +log_config : + { + global_log_level ="info"; + global_log_verbosity ="high"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="high"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="high"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; diff --git a/ci-scripts/conf_files/gnb.band78.tm1.106PRB.usrpn300.conf b/ci-scripts/conf_files/gnb.band78.tm1.106PRB.usrpn300.conf index d92804ae44..36e93ba14e 100644 --- a/ci-scripts/conf_files/gnb.band78.tm1.106PRB.usrpn300.conf +++ b/ci-scripts/conf_files/gnb.band78.tm1.106PRB.usrpn300.conf @@ -71,6 +71,12 @@ gNBs = initialDLBWPmappingType_2 = 0; #this is SS=1,L=12 initialDLBWPstartSymbolAndLength_2 = 54; + + initialDLBWPk0_3 = 0; + initialDLBWPmappingType_3 = 0; + #this is SS=1,L=4 + initialDLBWPstartSymbolAndLength_3 = 57; + #uplinkConfigCommon #frequencyInfoUL ul_frequencyBand = 78; @@ -105,8 +111,8 @@ gNBs = #1,2,4,8,10,20,40,80 ra_ResponseWindow = 4; #ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR -#0=oneeighth,1=onefourth,2=half,3=one,4=two,5=four,6=eight,7=sixteen - ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 3; +#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen + ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4; #oneHalf (0..15) 4,8,12,16,...60,64 ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 15; #ra_ContentionResolutionTimer @@ -114,8 +120,8 @@ gNBs = ra_ContentionResolutionTimer = 7; rsrp_ThresholdSSB = 19; #prach-RootSequenceIndex_PR -#0 = 839, 1 = 139 - prach_RootSequenceIndex_PR = 1; +#1 = 839, 2 = 139 + prach_RootSequenceIndex_PR = 2; prach_RootSequenceIndex = 1; # SCS for msg1, can only be 15 for 30 kHz < 6 GHz, takes precendence over the one derived from prach-ConfigIndex # @@ -135,7 +141,11 @@ gNBs = # this is SS=0 L=12 initialULBWPstartSymbolAndLength_1 = 69; - + initialULBWPk2_2 = 7; + initialULBWPmappingType_2 = 1; + # this is SS=10 L=4 + initialULBWPstartSymbolAndLength_2 = 52; + msg3_DeltaPreamble = 1; p0_NominalWithGrant =-90; @@ -235,8 +245,10 @@ RUs = ( att_rx = 0; bands = [7]; max_pdschReferenceSignalPower = -27; - max_rxgain = 114; + max_rxgain = 75; eNB_instances = [0]; + #beamforming 1x4 matrix: + bf_weights = [0x00007fff, 0x0000, 0x0000, 0x0000]; sdr_addrs = "addr=192.168.10.2,second_addr=192.168.20.2"; clock_src = "external"; } diff --git a/ci-scripts/conf_files/gnb.band78.tm1.fr1.106PRB.usrpb210.conf b/ci-scripts/conf_files/gnb.band78.tm1.fr1.106PRB.usrpb210.conf new file mode 100755 index 0000000000..92af74c300 --- /dev/null +++ b/ci-scripts/conf_files/gnb.band78.tm1.fr1.106PRB.usrpb210.conf @@ -0,0 +1,291 @@ +Active_gNBs = ( "gNB-Eurecom-5GNRBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + + cell_type = "CELL_MACRO_GNB"; + gNB_name = "gNB-Eurecom-5GNRBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + plmn_list = ({mcc = 222; mnc = 01; mnc_length = 2;}); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 31; //0; + pdsch_AntennaPorts = 1; + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + +# downlinkConfigCommon + #frequencyInfoDL + # this is 3600 MHz + 84 PRBs@30kHz SCS (same as initial BWP) + absoluteFrequencySSB = 641272; //641032; #641968; 641968=start of ssb at 3600MHz + 82 RBs 641032=center of SSB at center of cell + dl_frequencyBand = 78; + # this is 3600 MHz + dl_absoluteFrequencyPointA = 640000; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 1; + dl_carrierBandwidth = 106; + #initialDownlinkBWP + #genericParameters + # this is RBstart=84,L=13 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 6366; //28875; //6366; #6407; #3384; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 1; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 0; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; + #initialULBWPmappingType + #0=typeA,1=typeB + initialDLBWPmappingType_0 = 0; + #this is SS=1,L=13 + initialDLBWPstartSymbolAndLength_0 = 40; + + initialDLBWPk0_1 = 0; + initialDLBWPmappingType_1 = 0; + #this is SS=2,L=12 + initialDLBWPstartSymbolAndLength_1 = 53; + + initialDLBWPk0_2 = 0; + initialDLBWPmappingType_2 = 0; + #this is SS=1,L=12 + initialDLBWPstartSymbolAndLength_2 = 54; + + initialDLBWPk0_3 = 0; + initialDLBWPmappingType_3 = 0; + #this is SS=1,L=4 //5 (4 is for 43, 5 is for 57) + initialDLBWPstartSymbolAndLength_3 = 57; //43; //57; + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 78; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 1; + ul_carrierBandwidth = 106; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 6366; //28875; //6366; #6407; #3384; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 1; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 98; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 13; + preambleReceivedTargetPower = -100; +#preamblTransMax (0...10) = (3,4,5,6,7,8,10,20,50,100,200) + preambleTransMax = 6; +#powerRampingStep +# 0=dB0,1=dB2,2=dB4,3=dB6 + powerRampingStep = 1; +#ra_ReponseWindow +#1,2,4,8,10,20,40,80 + ra_ResponseWindow = 5; +#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR +#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen + ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4; +#oneHalf (0..15) 4,8,12,16,...60,64 + ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 14; //15; +#ra_ContentionResolutionTimer +#(0..7) 8,16,24,32,40,48,56,64 + ra_ContentionResolutionTimer = 7; + rsrp_ThresholdSSB = 19; +#prach-RootSequenceIndex_PR +#1 = 839, 2 = 139 + prach_RootSequenceIndex_PR = 2; + prach_RootSequenceIndex = 1; + # SCS for msg1, can only be 15 for 30 kHz < 6 GHz, takes precendence over the one derived from prach-ConfigIndex + # + msg1_SubcarrierSpacing = 1, + +# restrictedSetConfig +# 0=unrestricted, 1=restricted type A, 2=restricted type B + restrictedSetConfig = 0, + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 2; + initialULBWPmappingType_0 = 1 + # this is SS=0 L=11 + initialULBWPstartSymbolAndLength_0 = 55; + + initialULBWPk2_1 = 2; + initialULBWPmappingType_1 = 1; + # this is SS=0 L=12 + initialULBWPstartSymbolAndLength_1 = 69; + + initialULBWPk2_2 = 7; + initialULBWPmappingType_2 = 1; + # this is SS=10 L=4 + initialULBWPstartSymbolAndLength_2 = 52; + + msg3_DeltaPreamble = 1; + p0_NominalWithGrant =-90; + +# pucch-ConfigCommon setup : +# pucchGroupHopping +# 0 = neither, 1= group hopping, 2=sequence hopping + pucchGroupHopping = 0; + hoppingId = 40; + p0_nominal = -90; +# ssb_PositionsInBurs_BitmapPR +# 1=short, 2=medium, 3=long + ssb_PositionsInBurst_PR = 2; + ssb_PositionsInBurst_Bitmap = 1; #0x80; + +# ssb_periodicityServingCell +# 0 = ms5, 1=ms10, 2=ms20, 3=ms40, 4=ms80, 5=ms160, 6=spare2, 7=spare1 + ssb_periodicityServingCell = 2; + +# dmrs_TypeA_position +# 0 = pos2, 1 = pos3 + dmrs_TypeA_Position = 0; + +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + subcarrierSpacing = 1; + + + #tdd-UL-DL-ConfigurationCommon +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + referenceSubcarrierSpacing = 1; + # pattern1 + # dl_UL_TransmissionPeriodicity + # 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10 + dl_UL_TransmissionPeriodicity = 6; + nrofDownlinkSlots = 7; //8; //7; + nrofDownlinkSymbols = 6; //0; //6; + nrofUplinkSlots = 2; + nrofUplinkSymbols = 4; //0; //4; + + ssPBCH_BlockPower = -25; + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "CI_MME_IP_ADDR"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + ///X2 + enable_x2 = "yes"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + target_enb_x2_ip_address = ( + { ipv4 = "CI_FR1_CTL_ENB_IP_ADDR"; + ipv6 = "192:168:30::17"; + preference = "ipv4"; + } + ); + + NETWORK_INTERFACES : + { + + GNB_INTERFACE_NAME_FOR_S1_MME = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1_MME = "CI_GNB_IP_ADDR"; + GNB_INTERFACE_NAME_FOR_S1U = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1U = "CI_GNB_IP_ADDR"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + GNB_IPV4_ADDRESS_FOR_X2C = "CI_GNB_IP_ADDR"; + GNB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 114; + eNB_instances = [0]; + clock_src = "external"; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + //parallel_config = "PARALLEL_SINGLE_THREAD"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + diff --git a/ci-scripts/conf_files/lte-fdd-fembms-basic-sim.conf b/ci-scripts/conf_files/lte-fdd-fembms-basic-sim.conf new file mode 100644 index 0000000000..e3adedbf4a --- /dev/null +++ b/ci-scripts/conf_files/lte-fdd-fembms-basic-sim.conf @@ -0,0 +1,426 @@ +Active_eNBs = ( "eNB-Eurecom-LTEBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +eNBs = +( + { + ////////// Identification parameters: + eNB_ID = 0xe00; + + cell_type = "CELL_MACRO_ENB"; + + eNB_name = "eNB-Eurecom-LTEBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + plmn_list = ( { mcc = 208; mnc = 93; mnc_length = 2; } ); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + component_carriers = ( + { + node_function = "3GPP_eNODEB"; + node_timing = "synch_to_ext_device"; + node_synch_ref = 0; + frame_type = "FDD"; + tdd_config = 3; + tdd_config_s = 0; + prefix_type = "NORMAL"; + eutra_band = 7; + downlink_frequency = 2680000000L; + uplink_frequency_offset = -120000000; + Nid_cell = 0; + N_RB_DL = 25; + Nid_cell_mbsfn = 0; + nb_antenna_ports = 1; + nb_antennas_tx = 1; + nb_antennas_rx = 1; + tx_gain = 90; + rx_gain = 125; + pbch_repetition = "FALSE"; + prach_root = 0; + prach_config_index = 0; + prach_high_speed = "DISABLE"; + prach_zero_correlation = 1; + prach_freq_offset = 2; + pucch_delta_shift = 1; + pucch_nRB_CQI = 0; + pucch_nCS_AN = 0; + pucch_n1_AN = 0; + pdsch_referenceSignalPower = -27; + pdsch_p_b = 0; + pusch_n_SB = 1; + pusch_enable64QAM = "DISABLE"; + pusch_hoppingMode = "interSubFrame"; + pusch_hoppingOffset = 0; + pusch_groupHoppingEnabled = "ENABLE"; + pusch_groupAssignment = 0; + pusch_sequenceHoppingEnabled = "DISABLE"; + pusch_nDMRS1 = 1; + phich_duration = "NORMAL"; + phich_resource = "ONESIXTH"; + srs_enable = "DISABLE"; + /* srs_BandwidthConfig =; + srs_SubframeConfig =; + srs_ackNackST =; + srs_MaxUpPts =;*/ + + pusch_p0_Nominal = -96; + pusch_alpha = "AL1"; + pucch_p0_Nominal = -104; + msg3_delta_Preamble = 6; + pucch_deltaF_Format1 = "deltaF2"; + pucch_deltaF_Format1b = "deltaF3"; + pucch_deltaF_Format2 = "deltaF0"; + pucch_deltaF_Format2a = "deltaF0"; + pucch_deltaF_Format2b = "deltaF0"; + + rach_numberOfRA_Preambles = 64; + rach_preamblesGroupAConfig = "DISABLE"; + /* + rach_sizeOfRA_PreamblesGroupA = ; + rach_messageSizeGroupA = ; + rach_messagePowerOffsetGroupB = ; + */ + rach_powerRampingStep = 4; + rach_preambleInitialReceivedTargetPower = -108; + rach_preambleTransMax = 10; + rach_raResponseWindowSize = 10; + rach_macContentionResolutionTimer = 48; + rach_maxHARQ_Msg3Tx = 4; + + pcch_default_PagingCycle = 128; + pcch_nB = "oneT"; + bcch_modificationPeriodCoeff = 2; + ue_TimersAndConstants_t300 = 1000; + ue_TimersAndConstants_t301 = 1000; + ue_TimersAndConstants_t310 = 1000; + ue_TimersAndConstants_t311 = 10000; + ue_TimersAndConstants_n310 = 20; + ue_TimersAndConstants_n311 = 1; + ue_TransmissionMode = 1; + mbms_dedicated_serving_cell = "ENABLE" + + //Parameters for SIB18 + rxPool_sc_CP_Len = "normal"; + rxPool_sc_Period = "sf40"; + rxPool_data_CP_Len = "normal"; + rxPool_ResourceConfig_prb_Num = 20; + rxPool_ResourceConfig_prb_Start = 5; + rxPool_ResourceConfig_prb_End = 44; + rxPool_ResourceConfig_offsetIndicator_present = "prSmall"; + rxPool_ResourceConfig_offsetIndicator_choice = 0; + rxPool_ResourceConfig_subframeBitmap_present = "prBs40"; + rxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "00000000000000000000"; + rxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5; + rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0; +/* rxPool_dataHoppingConfig_hoppingParameter = 0; + rxPool_dataHoppingConfig_numSubbands = "ns1"; + rxPool_dataHoppingConfig_rbOffset = 0; + rxPool_commTxResourceUC-ReqAllowed = "TRUE"; +*/ + // Parameters for SIB19 + discRxPool_cp_Len = "normal" + discRxPool_discPeriod = "rf32" + discRxPool_numRetx = 1; + discRxPool_numRepetition = 2; + discRxPool_ResourceConfig_prb_Num = 5; + discRxPool_ResourceConfig_prb_Start = 3; + discRxPool_ResourceConfig_prb_End = 21; + discRxPool_ResourceConfig_offsetIndicator_present = "prSmall"; + discRxPool_ResourceConfig_offsetIndicator_choice = 0; + discRxPool_ResourceConfig_subframeBitmap_present = "prBs40"; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "f0ffffffff"; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0; + + } + ); + + + srb1_parameters : + { + # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500] + timer_poll_retransmit = 80; + + # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200] + timer_reordering = 35; + + # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500] + timer_status_prohibit = 0; + + # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)] + poll_pdu = 4; + + # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)] + poll_byte = 99999; + + # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32] + max_retx_threshold = 4; + } + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "CI_MME_IP_ADDR"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + enable_measurement_reports = "no"; + + ///X2 + enable_x2 = "no"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + + ////////// MCE parameters: + target_mce_m2_ip_address = ( { ipv4 = "127.0.0.7"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + ///M2 + enable_enb_m2 = "yes"; + + + mbms_configuration_data_list = ( + { + mbsfn_sync_area = 0x0001; + mbms_service_area_list=( + { + mbms_service_area=0x0001; + } + ); + } + + ); + + + + NETWORK_INTERFACES : + { + + ENB_INTERFACE_NAME_FOR_S1_MME = "eth0"; + ENB_IPV4_ADDRESS_FOR_S1_MME = "CI_ENB_IP_ADDR"; + ENB_INTERFACE_NAME_FOR_S1U = "eth0"; + ENB_IPV4_ADDRESS_FOR_S1U = "CI_ENB_IP_ADDR"; + ENB_PORT_FOR_S1U = 2152; # Spec 2152 + ENB_IPV4_ADDRESS_FOR_X2C = "CI_ENB_IP_ADDR"; + ENB_PORT_FOR_X2C = 36422; # Spec 36422 + + ENB_IPV4_ADDRESS_FOR_M2C = "127.0.0.2/24"; + ENB_PORT_FOR_M2C = 36443; # Spec 36443 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + phy_test_mode = 0; + puSch10xSnr = 200; + puCch10xSnr = 200; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + } +); + +MCEs = ( + { + MCE_ID = 0xe00; + + MCE_name = "MCE-Vicomtech-LTEBox"; + + //M2 + enable_mce_m2 = "yes"; + + //M3 + enable_mce_m3 = "yes"; + + target_mme_m3_ip_address = ( { ipv4 = "127.0.0.18"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + + + NETWORK_INTERFACES : + { + MCE_INTERFACE_NAME_FOR_M2_ENB = "lo"; + MCE_IPV4_ADDRESS_FOR_M2C = "127.0.0.7/24"; + MCE_PORT_FOR_M2C = 36443; # Spec 36443 + + MCE_INTERFACE_NAME_FOR_M3_MME = "lo"; + MCE_IPV4_ADDRESS_FOR_M3C = "127.0.0.3/24"; + MCE_PORT_FOR_M3C = 36444; # Spec 36444 + }; + + plnm: + { + mcc = 208; + mnc = 93; + mnc_length = 2; + }; + + mbms_sched_info : + { + mcch_update_time = 10; + mbms_area_config_list = ( + { + common_sf_allocation_period = 1; #rf4(0) rf8(1) rf16(2) rf32(3) rf64(4) rf128(5) rf256(6) + mbms_area_id = 0; + pmch_config_list = ( + { + allocated_sf_end=512; + data_mcs=15; + mch_scheduling_period = 0; #rf8(0) rf16(1) rf32(2) rf64(3) rf128(4) rf256(5) rf512(6) rf1024(7) + mbms_session_list = ( + { + #plnm + service_id ->tmgi + plnm: + { + mcc = 208; + mnc = 93; + mnc_length = 2; + } + service_id=0; #keep this allways as 0 (workaround for TUN if) + lcid=5; #this must be properly defined lcid:6+service:0 -> rab_id:5 //with new RLC set lcid either 4 or 5 + } + ); + } + ); + + mbms_sf_config_list = ( + { + radioframe_allocation_period=0; #n1(0) n2(1) n4(2) n8(3) n16(4) n32(5) + radioframe_alloocation_offset=0; + num_frame="oneFrame"; + subframe_allocation=57; #xx111001 + //num_frame="fourFrame"; + //subframe_allocation=14548987; # + } + ); + + } + ); + }; + + + mcch_config_per_mbsfn_area = ( + { + mbsfn_area = 0; + pdcch_length = 1; #s1(0), s2(1) + repetition_period = 0; #rf32(0), rf64(1), rf128(2), rf256(3) + offset = 0; + modification_period = 0; #rf512(0; rf1024(1) + subframe_allocation_info = 32; #BITSTRING (6bits -> one frame) xx100000 + mcs = 0; #n2(0), n7(1), n13(2), n19(3) + } + ); + + #); #end mbms_scheduling_info + + } +); + +MMEs = ( + { + MME_ID = 0xe00; + + MME_name = "MME-MBMS-Vicomtech-LTEBox"; + + //M3 + enable_mme_m3 = "yes"; + NETWORK_INTERFACES : + { + MME_INTERFACE_NAME_FOR_M3_MCE = "lo"; + MME_IPV4_ADDRESS_FOR_M3C = "127.0.0.18/24"; + MME_PORT_FOR_M3C = 36444; # Spec 36444 + + }; + } +); + + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 125; + eNB_instances = [0]; + + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_SINGLE_THREAD"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + +NETWORK_CONTROLLER : +{ + FLEXRAN_ENABLED = "no"; + FLEXRAN_INTERFACE_NAME = "ens3"; + FLEXRAN_IPV4_ADDRESS = "CI_FLEXRAN_CTL_IP_ADDR"; + FLEXRAN_PORT = 2210; + FLEXRAN_CACHE = "/mnt/oai_agent_cache"; + FLEXRAN_AWAIT_RECONF = "no"; +}; + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + +//rfsimulator : +//{ + //options = ("chanmod"); + //modelname = "AWGN"; +//}; + diff --git a/ci-scripts/conf_files/lte-fdd-mbms-basic-sim.conf b/ci-scripts/conf_files/lte-fdd-mbms-basic-sim.conf index 53261ec32d..3d5a859156 100644 --- a/ci-scripts/conf_files/lte-fdd-mbms-basic-sim.conf +++ b/ci-scripts/conf_files/lte-fdd-mbms-basic-sim.conf @@ -102,6 +102,7 @@ eNBs = ue_TimersAndConstants_n310 = 20; ue_TimersAndConstants_n311 = 1; ue_TransmissionMode = 1; + mbms_dedicated_serving_cell = "DISABLE" //Parameters for SIB18 rxPool_sc_CP_Len = "normal"; @@ -295,8 +296,8 @@ MCEs = ( pmch_config_list = ( { allocated_sf_end=32; - data_mcs=14; - mch_scheduling_period = 0; #rf8(0) + data_mcs=15; + mch_scheduling_period = 0; #rf8(0) rf16(1) rf32(2) rf64(3) rf128(4) rf256(5) rf512(6) rf1024(7) mbms_session_list = ( { #plnm + service_id ->tmgi @@ -337,7 +338,7 @@ MCEs = ( offset = 0; modification_period = 0; #rf512(0; rf1024(1) subframe_allocation_info = 32; #BITSTRING (6bits -> one frame) xx100000 - mcs = 1; #n2(0), n7(1), n13(2), n19(3) + mcs = 0; #n2(0), n7(1), n13(2), n19(3) } ); @@ -416,3 +417,10 @@ NETWORK_CONTROLLER : rrc_log_level ="info"; rrc_log_verbosity ="medium"; }; + +//rfsimulator : +//{ + //options = ("chanmod"); + //modelname = "AWGN"; +//}; + diff --git a/ci-scripts/constants.py b/ci-scripts/constants.py index 1e7e84fb32..c5698c5a3e 100644 --- a/ci-scripts/constants.py +++ b/ci-scripts/constants.py @@ -57,6 +57,7 @@ OAI_UE_PROCESS_ASSERTION = -22 OAI_UE_PROCESS_FAILED = -23 OAI_UE_PROCESS_NO_TUNNEL_INTERFACE = -24 OAI_UE_PROCESS_SEG_FAULT = -25 +OAI_UE_PROCESS_NO_MBMS_MSGS = -26 OAI_UE_PROCESS_OK = +6 UE_STATUS_DETACHED = 0 diff --git a/ci-scripts/cppcheck_suppressions.list b/ci-scripts/cppcheck_suppressions.list index cad2aab88b..4b9fb97427 100644 --- a/ci-scripts/cppcheck_suppressions.list +++ b/ci-scripts/cppcheck_suppressions.list @@ -37,6 +37,7 @@ memleak:openair2/UTIL/OMG/omg_hashtable.c // _emm_as_encode function creates the encoded buffer // memleak:openair3/NAS/UE/EMM/SAP/emm_as.c +memleak:openair1/PHY/INIT/nr_init_ue.c //----------------------------------------------------------------------------- //***************************************************************************** // section for files not used in oai exec's included in CI. @@ -82,6 +83,10 @@ nullPointer:common/utils/T/tracer/multi.c:265 // the tests arrayIndexOutOfBounds:openair2/LAYER2/rlc_v2/tests/test.c:401 // +//----------------------------------------------------------------------------- +// cppcheck does not understand the different lengths of arrays +arrayIndexOutOfBounds:openair1/SIMULATION/TOOLS/random_channel.c:705 +arrayIndexOutOfBounds:openair1/SIMULATION/TOOLS/random_channel.c:706 //***************************************************************************** // // True problems we don't know how to fix, Suppression is commented out, diff --git a/ci-scripts/doc/vm_based_simulator_env.md b/ci-scripts/doc/vm_based_simulator_env.md index 5dbcfbd931..95b9d920d5 100644 --- a/ci-scripts/doc/vm_based_simulator_env.md +++ b/ci-scripts/doc/vm_based_simulator_env.md @@ -38,7 +38,6 @@ Last point, this documentation is valid for all CI-supported branches: * `master` * `develop` -* `develop-nr` But the feature set may not be aligned. **The principles still apply.** diff --git a/ci-scripts/epc.py b/ci-scripts/epc.py index 09d500f203..25bbbba091 100644 --- a/ci-scripts/epc.py +++ b/ci-scripts/epc.py @@ -66,38 +66,6 @@ class EPCManagement(): self.MmeIPAddress = '' self.containerPrefix = 'prod' -#----------------------------------------------------------- -# Setter and Getters on Public Members -#----------------------------------------------------------- - - def SetIPAddress(self, ipaddress): - self.IPAddress = ipaddress - def GetIPAddress(self): - return self.IPAddress - def SetUserName(self, username): - self.UserName = username - def GetUserName(self): - return self.UserName - def SetPassword(self, password): - self.Password = password - def GetPassword(self): - return self.Password - def SetSourceCodePath(self, sourcecodepath): - self.SourceCodePath = sourcecodepath - def GetSourceCodePath(self): - return self.SourceCodePath - def SetType(self, kind): - self.Type = kind - def GetType(self): - return self.Type - def SetHtmlObj(self, obj): - self.htmlObj = obj - def SetTestCase_id(self, idx): - self.testCase_id = idx - def GetMmeIPAddress(self): - return self.MmeIPAddress - def SetContainerPrefix(self, prefix): - self.containerPrefix = prefix #----------------------------------------------------------- # EPC management functions diff --git a/ci-scripts/html.py b/ci-scripts/html.py index 1a6e3f8fdb..8f2d38cced 100644 --- a/ci-scripts/html.py +++ b/ci-scripts/html.py @@ -82,73 +82,14 @@ class HTMLManagement(): #----------------------------------------------------------- # Setters and Getters #----------------------------------------------------------- - def SethtmlUEFailureMsg(self,huefa): - self.htmlUEFailureMsg = huefa - def GethtmlUEFailureMsg(self): - return self.htmlUEFailureMsg - def SetHmleNBFailureMsg(self, msg): - self.htmleNBFailureMsg = msg - - def Setdesc(self, dsc): - self.desc = dsc - - def SetstartTime(self, sttime): - self.startTime = sttime - - def SettestCase_id(self, tcid): - self.testCase_id = tcid - def GettestCase_id(self): - return self.testCase_id - - def SetranRepository(self, repository): - self.ranRepository = repository - def SetranAllowMerge(self, merge): - self.ranAllowMerge = merge - def SetranBranch(self, branch): - self.ranBranch = branch - def SetranCommitID(self, commitid): - self.ranCommitID = commitid - def SetranTargetBranch(self, tbranch): - self.ranTargetBranch = tbranch - + def SethtmlUEConnected(self, nbUEs): if nbUEs > 0: self.htmlUEConnected = nbUEs else: self.htmlUEConnected = 1 - def SethtmlNb_Smartphones(self, nbUEs): - self.htmlNb_Smartphones = nbUEs - def SethtmlNb_CATM_Modules(self, nbUEs): - self.htmlNb_CATM_Modules = nbUEs + - def SetnbTestXMLfiles(self, nb): - self.nbTestXMLfiles = nb - def GetnbTestXMLfiles(self): - return self.nbTestXMLfiles - - def SettestXMLfiles(self, xmlFile): - self.testXMLfiles.append(xmlFile) - def SethtmlTabRefs(self, tabRef): - self.htmlTabRefs.append(tabRef) - def SethtmlTabNames(self, tabName): - self.htmlTabNames.append(tabName) - def SethtmlTabIcons(self, tabIcon): - self.htmlTabIcons.append(tabIcon) - - def SetOsVersion(self, version, idx): - self.OsVersion[idx] = version - def SetKernelVersion(self, version, idx): - self.KernelVersion[idx] = version - def SetUhdVersion(self, version, idx): - self.UhdVersion[idx] = version - def SetUsrpBoard(self, version, idx): - self.UsrpBoard[idx] = version - def SetCpuNb(self, nb, idx): - self.CpuNb[idx] = nb - def SetCpuModel(self, model, idx): - self.CpuModel[idx] = model - def SetCpuMHz(self, freq, idx): - self.CpuMHz[idx] = freq #----------------------------------------------------------- # HTML structure creation functions @@ -326,7 +267,7 @@ class HTMLManagement(): continue self.htmlFile.write(' \n') - self.htmlFile.write(' ' + str('eNB') + ' Server Characteristics\n') + self.htmlFile.write(' ' + str(machine) + ' Server Characteristics\n') self.htmlFile.write(' \n') self.htmlFile.write(' \n') self.htmlFile.write(' OS Version\n') diff --git a/ci-scripts/main.py b/ci-scripts/main.py index e9313051fc..d37f205f4e 100644 --- a/ci-scripts/main.py +++ b/ci-scripts/main.py @@ -1,4 +1,4 @@ - +#/* # * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more # * contributor license agreements. See the NOTICE file distributed with # * this work for additional information regarding copyright ownership. @@ -28,14 +28,30 @@ # pexpect #--------------------------------------------------------------------- -import constants as CONST + #----------------------------------------------------------- -# Import +# Import Components +#----------------------------------------------------------- + +import helpreadme as HELP +import constants as CONST + +import cls_physim #class PhySim for physical simulators build and test +import cls_cots_ue #class CotsUe for Airplane mode control + +import sshconnection +import epc +import ran +import html + + +#----------------------------------------------------------- +# Import Libs #----------------------------------------------------------- import sys # arg import re # reg -import pexpect # pexpect +import pexpect # pexpect import time # sleep import os import subprocess @@ -50,8 +66,9 @@ logging.basicConfig( ) + #----------------------------------------------------------- -# Class Declaration +# OaiCiTest Class Definition #----------------------------------------------------------- class OaiCiTest(): @@ -96,12 +113,13 @@ class OaiCiTest(): self.UEIPAddress = '' self.UEUserName = '' self.UEPassword = '' - self.UE_instance = '' + self.UE_instance = 0 self.UESourceCodePath = '' self.UELogFile = '' self.Build_OAI_UE_args = '' self.Initialize_OAI_UE_args = '' self.clean_repository = True + self.air_interface='' self.expectedNbOfConnectedUEs = 0 def BuildOAIUE(self): @@ -111,10 +129,10 @@ class OaiCiTest(): SSH.open(self.UEIPAddress, self.UEUserName, self.UEPassword) result = re.search('--nrUE', self.Build_OAI_UE_args) if result is not None: - RAN.Setair_interface('nr') + self.air_interface='nr-uesoftmodem' ue_prefix = 'NR ' else: - RAN.Setair_interface('lte') + self.air_interface='lte-uesoftmodem' ue_prefix = '' result = re.search('([a-zA-Z0-9\:\-\.\/])+\.git', self.ranRepository) if result is not None: @@ -154,7 +172,7 @@ class OaiCiTest(): mismatch = True if not mismatch: SSH.close() - HTML.CreateHtmlTestRow(RAN.GetBuild_eNB_args(), 'OK', CONST.ALL_PROCESSES_OK) + HTML.CreateHtmlTestRow(self.Build_OAI_UE_args, 'OK', CONST.ALL_PROCESSES_OK) return SSH.command('echo ' + self.UEPassword + ' | sudo -S git clean -x -d -ff', '\$', 30) @@ -180,7 +198,7 @@ class OaiCiTest(): SSH.command('ls ran_build/build', '\$', 3) SSH.command('ls ran_build/build', '\$', 3) buildStatus = True - result = re.search(RAN.Getair_interface() + '-uesoftmodem', SSH.getBefore()) + result = re.search(self.air_interface, SSH.getBefore()) if result is None: buildStatus = False SSH.command('mkdir -p build_log_' + self.testCase_id, '\$', 5) @@ -208,33 +226,33 @@ class OaiCiTest(): sys.exit(1) def CheckFlexranCtrlInstallation(self): - if EPC.GetIPAddress() == '' or EPC.GetUserName() == '' or EPC.GetPassword() == '': + if EPC.IPAddress == '' or EPC.UserName == '' or EPC.Password == '': return - SSH.open(EPC.GetIPAddress(), EPC.GetUserName(), EPC.GetPassword()) + SSH.open(EPC.IPAddress, EPC.UserName, EPC.Password) SSH.command('ls -ls /opt/flexran_rtc/*/rt_controller', '\$', 5) result = re.search('/opt/flexran_rtc/build/rt_controller', SSH.getBefore()) if result is not None: - RAN.SetflexranCtrlInstalled(True) + RAN.flexranCtrlInstalled=True logging.debug('Flexran Controller is installed') SSH.close() def InitializeFlexranCtrl(self): - if RAN.GetflexranCtrlInstalled() == False: + if RAN.flexranCtrlInstalled == False: return - if EPC.GetIPAddress() == '' or EPC.GetUserName() == '' or EPC.GetPassword() == '': + if EPC.IPAddress == '' or EPC.UserName == '' or EPC.Password == '': HELP.GenericHelp(CONST.Version) sys.exit('Insufficient Parameter') - SSH.open(EPC.GetIPAddress(), EPC.GetUserName(), EPC.GetPassword()) + SSH.open(EPC.IPAddress, EPC.UserName, EPC.Password) SSH.command('cd /opt/flexran_rtc', '\$', 5) - SSH.command('echo ' + EPC.GetPassword() + ' | sudo -S rm -f log/*.log', '\$', 5) - SSH.command('echo ' + EPC.GetPassword() + ' | sudo -S echo "build/rt_controller -c log_config/basic_log" > ./my-flexran-ctl.sh', '\$', 5) - SSH.command('echo ' + EPC.GetPassword() + ' | sudo -S chmod 755 ./my-flexran-ctl.sh', '\$', 5) - SSH.command('echo ' + EPC.GetPassword() + ' | sudo -S daemon --unsafe --name=flexran_rtc_daemon --chdir=/opt/flexran_rtc -o /opt/flexran_rtc/log/flexranctl_' + self.testCase_id + '.log ././my-flexran-ctl.sh', '\$', 5) + SSH.command('echo ' + EPC.Password + ' | sudo -S rm -f log/*.log', '\$', 5) + SSH.command('echo ' + EPC.Password + ' | sudo -S echo "build/rt_controller -c log_config/basic_log" > ./my-flexran-ctl.sh', '\$', 5) + SSH.command('echo ' + EPC.Password + ' | sudo -S chmod 755 ./my-flexran-ctl.sh', '\$', 5) + SSH.command('echo ' + EPC.Password + ' | sudo -S daemon --unsafe --name=flexran_rtc_daemon --chdir=/opt/flexran_rtc -o /opt/flexran_rtc/log/flexranctl_' + self.testCase_id + '.log ././my-flexran-ctl.sh', '\$', 5) SSH.command('ps -aux | grep --color=never rt_controller', '\$', 5) result = re.search('rt_controller -c ', SSH.getBefore()) if result is not None: logging.debug('\u001B[1m Initialize FlexRan Controller Completed\u001B[0m') - RAN.SetflexranCtrlStarted(True) + RAN.flexranCtrlStarted=True SSH.close() HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK) @@ -305,14 +323,14 @@ class OaiCiTest(): if self.UEIPAddress == '' or self.UEUserName == '' or self.UEPassword == '' or self.UESourceCodePath == '': HELP.GenericHelp(CONST.Version) sys.exit('Insufficient Parameter') - if RAN.Getair_interface() == 'lte': + if self.air_interface == 'lte-uesoftmodem': result = re.search('--no-L2-connect', str(self.Initialize_OAI_UE_args)) if result is None: check_eNB = True check_OAI_UE = False pStatus = self.CheckProcessExist(check_eNB, check_OAI_UE) if (pStatus < 0): - HTML.CreateHtmlTestRow(self.Initialize_OAI_UE_args, 'KO', pStatus) + HTML.CreateHtmlTestRow(self.air_interface + ' ' + self.Initialize_OAI_UE_args, 'KO', pStatus) HTML.CreateHtmlTabFooter(False) sys.exit(1) UE_prefix = '' @@ -332,15 +350,9 @@ class OaiCiTest(): logging.debug('Found a N3xx device --> resetting it') SSH.command('cd ' + self.UESourceCodePath, '\$', 5) # Initialize_OAI_UE_args usually start with -C and followed by the location in repository - # in case of NR-UE, we may have rrc_config_path (Temporary?) - modifiedUeOptions = str(self.Initialize_OAI_UE_args) - if RAN.Getair_interface() == 'nr': - result = re.search('--rrc_config_path ', modifiedUeOptions) - if result is not None: - modifiedUeOptions = modifiedUeOptions.replace('rrc_config_path ', 'rrc_config_path ' + self.UESourceCodePath + '/') SSH.command('source oaienv', '\$', 5) SSH.command('cd cmake_targets/ran_build/build', '\$', 5) - if RAN.Getair_interface() == 'lte': + if self.air_interface == 'lte-uesoftmodem': result = re.search('--no-L2-connect', str(self.Initialize_OAI_UE_args)) # We may have to regenerate the .u* files if result is None: @@ -352,7 +364,17 @@ class OaiCiTest(): SSH.command('sed -e "s#93#92#" -e "s#8baf473f2f8fd09487cccbd7097c6862#fec86ba6eb707ed08905757b1bb44b8f#" -e "s#e734f8734007d6c5ce7a0508809e7e9c#C42449363BBAD02B66D16BC975D77CC1#" ../../../openair3/NAS/TOOLS/ue_eurecom_test_sfr.conf > ../../../openair3/NAS/TOOLS/ci-ue_eurecom_test_sfr.conf', '\$', 5) SSH.command('echo ' + self.UEPassword + ' | sudo -S rm -Rf .u*', '\$', 5) SSH.command('echo ' + self.UEPassword + ' | sudo -S ../../../targets/bin/conf2uedata -c ../../../openair3/NAS/TOOLS/ci-ue_eurecom_test_sfr.conf -o .', '\$', 5) - SSH.command('echo "ulimit -c unlimited && ./'+ RAN.Getair_interface() +'-uesoftmodem ' + modifiedUeOptions + '" > ./my-lte-uesoftmodem-run' + str(self.UE_instance) + '.sh', '\$', 5) + else: + SSH.command('if [ -e rbconfig.raw ]; then echo ' + self.UEPassword + ' | sudo -S rm rbconfig.raw; fi', '\$', 5) + SSH.command('if [ -e reconfig.raw ]; then echo ' + self.UEPassword + ' | sudo -S rm reconfig.raw; fi', '\$', 5) + # Copy the RAW files from gNB running directory (maybe on another machine) + copyin_res = SSH.copyin(RAN.eNBIPAddress, RAN.eNBUserName, RAN.eNBPassword, RAN.eNBSourceCodePath + '/cmake_targets/rbconfig.raw', '.') + if (copyin_res == 0): + SSH.copyout(self.UEIPAddress, self.UEUserName, self.UEPassword, './rbconfig.raw', self.UESourceCodePath + '/cmake_targets/ran_build/build') + copyin_res = SSH.copyin(RAN.eNBIPAddress, RAN.eNBUserName, RAN.eNBPassword, RAN.eNBSourceCodePath + '/cmake_targets/reconfig.raw', '.') + if (copyin_res == 0): + SSH.copyout(self.UEIPAddress, self.UEUserName, self.UEPassword, './reconfig.raw', self.UESourceCodePath + '/cmake_targets/ran_build/build') + SSH.command('echo "ulimit -c unlimited && ./'+ self.air_interface +' ' + self.Initialize_OAI_UE_args + '" > ./my-lte-uesoftmodem-run' + str(self.UE_instance) + '.sh', '\$', 5) SSH.command('chmod 775 ./my-lte-uesoftmodem-run' + str(self.UE_instance) + '.sh', '\$', 5) SSH.command('echo ' + self.UEPassword + ' | sudo -S rm -Rf ' + self.UESourceCodePath + '/cmake_targets/ue_' + self.testCase_id + '.log', '\$', 5) self.UELogFile = 'ue_' + self.testCase_id + '.log' @@ -365,9 +387,7 @@ class OaiCiTest(): while (doOutterLoop): SSH.command('cd ' + self.UESourceCodePath + '/cmake_targets/ran_build/build', '\$', 5) SSH.command('echo ' + self.UEPassword + ' | sudo -S rm -Rf ' + self.UESourceCodePath + '/cmake_targets/ue_' + self.testCase_id + '.log', '\$', 5) - #use nohup instead of daemon - #SSH.command('echo ' + self.UEPassword + ' | sudo -S -E daemon --inherit --unsafe --name=ue' + str(self.UE_instance) + '_daemon --chdir=' + self.UESourceCodePath + '/cmake_targets/ran_build/build -o ' + self.UESourceCodePath + '/cmake_targets/ue_' + self.testCase_id + '.log ./my-lte-uesoftmodem-run' + str(self.UE_instance) + '.sh', '\$', 5) - SSH.command('echo $USER; nohup sudo ./my-lte-uesoftmodem-run' + str(self.UE_instance) + '.sh' + ' > ' + self.UESourceCodePath + '/cmake_targets/ue_' + self.testCase_id + '.log ' + ' 2>&1 &', self.UEUserName, 5) + SSH.command('echo $USER; nohup sudo -E ./my-lte-uesoftmodem-run' + str(self.UE_instance) + '.sh' + ' > ' + self.UESourceCodePath + '/cmake_targets/ue_' + self.testCase_id + '.log ' + ' 2>&1 &', self.UEUserName, 5) time.sleep(6) SSH.command('cd ../..', '\$', 5) doLoop = True @@ -383,7 +403,7 @@ class OaiCiTest(): doLoop = False continue SSH.command('stdbuf -o0 cat ue_' + self.testCase_id + '.log | egrep --text --color=never -i "wait|sync"', '\$', 4) - if RAN.Getair_interface() == 'nr': + if self.air_interface == 'nr-uesoftmodem': result = re.search('Starting sync detection', SSH.getBefore()) else: result = re.search('got sync', SSH.getBefore()) @@ -408,7 +428,7 @@ class OaiCiTest(): # That is the case for LTE # In NR case, it's a positive message that will show if synchronization occurs doLoop = True - if RAN.Getair_interface() == 'nr': + if self.air_interface == 'nr-uesoftmodem': loopCounter = 10 else: # We are now checking if sync w/ eNB DOES NOT OCCUR @@ -417,7 +437,7 @@ class OaiCiTest(): while (doLoop): loopCounter = loopCounter - 1 if (loopCounter == 0): - if RAN.Getair_interface() == 'nr': + if self.air_interface == 'nr-uesoftmodem': # Here we do have great chances that UE did NOT cell-sync w/ gNB doLoop = False fullSyncStatus = False @@ -436,7 +456,7 @@ class OaiCiTest(): fullSyncStatus = True continue SSH.command('stdbuf -o0 cat ue_' + self.testCase_id + '.log | egrep --text --color=never -i "wait|sync|Frequency"', '\$', 4) - if RAN.Getair_interface() == 'nr': + if self.air_interface == 'nr-uesoftmodem': # Positive messaging --> result = re.search('Measured Carrier Frequency', SSH.getBefore()) if result is not None: @@ -465,12 +485,12 @@ class OaiCiTest(): if fullSyncStatus and gotSyncStatus: doInterfaceCheck = False - if RAN.Getair_interface() == 'lte': + if self.air_interface == 'lte-uesoftmodem': result = re.search('--no-L2-connect', str(self.Initialize_OAI_UE_args)) if result is None: doInterfaceCheck = True # For the moment, only in explicit noS1 without kernel module (ie w/ tunnel interface) - if RAN.Getair_interface() == 'nr': + if self.air_interface == 'nr-uesoftmodem': result = re.search('--noS1 --nokrnmod 1', str(self.Initialize_OAI_UE_args)) if result is not None: doInterfaceCheck = True @@ -486,7 +506,7 @@ class OaiCiTest(): logging.debug(SSH.getBefore()) logging.error('\u001B[1m oaitun_ue1 interface is either NOT mounted or NOT configured\u001B[0m') tunnelInterfaceStatus = False - if RAN.GeteNBmbmsEnable(0): + if RAN.eNBmbmsEnables[0]: SSH.command('ifconfig oaitun_uem1', '\$', 4) result = re.search('inet addr', SSH.getBefore()) if result is not None: @@ -502,7 +522,7 @@ class OaiCiTest(): SSH.close() if fullSyncStatus and gotSyncStatus and tunnelInterfaceStatus: - HTML.CreateHtmlTestRow(self.Initialize_OAI_UE_args, 'OK', CONST.ALL_PROCESSES_OK, 'OAI UE') + HTML.CreateHtmlTestRow(self.air_interface + ' ' + self.Initialize_OAI_UE_args, 'OK', CONST.ALL_PROCESSES_OK, 'OAI UE') logging.debug('\u001B[1m Initialize OAI UE Completed\u001B[0m') if (self.ADBIPAddress != 'none'): self.UEDevices = [] @@ -510,15 +530,15 @@ class OaiCiTest(): self.UEDevicesStatus = [] self.UEDevicesStatus.append(CONST.UE_STATUS_DETACHED) else: - if RAN.Getair_interface() == 'lte': - if RAN.GeteNBmbmsEnable(0): - HTML.SethtmlUEFailureMsg('oaitun_ue1/oaitun_uem1 interfaces are either NOT mounted or NOT configured') + if self.air_interface == 'lte-uesoftmodem': + if RAN.eNBmbmsEnables[0]: + HTML.htmlUEFailureMsg='oaitun_ue1/oaitun_uem1 interfaces are either NOT mounted or NOT configured' else: - HTML.SethtmlUEFailureMsg('oaitun_ue1 interface is either NOT mounted or NOT configured') - HTML.CreateHtmlTestRow(self.Initialize_OAI_UE_args, 'KO', CONST.OAI_UE_PROCESS_NO_TUNNEL_INTERFACE, 'OAI UE') + HTML.htmlUEFailureMsg='oaitun_ue1 interface is either NOT mounted or NOT configured' + HTML.CreateHtmlTestRow(self.air_interface + ' ' + self.Initialize_OAI_UE_args, 'KO', CONST.OAI_UE_PROCESS_NO_TUNNEL_INTERFACE, 'OAI UE') else: - HTML.SethtmlUEFailureMsg('nr-uesoftmodem did NOT synced') - HTML.CreateHtmlTestRow(self.Initialize_OAI_UE_args, 'KO', CONST.OAI_UE_PROCESS_COULD_NOT_SYNC, 'OAI UE') + HTML.htmlUEFailureMsg='nr-uesoftmodem did NOT synced' + HTML.CreateHtmlTestRow(self.air_interface + ' ' + self.Initialize_OAI_UE_args, 'KO', CONST.OAI_UE_PROCESS_COULD_NOT_SYNC, 'OAI UE') logging.error('\033[91mInitialize OAI UE Failed! \033[0m') self.AutoTerminateUEandeNB() @@ -670,7 +690,7 @@ class OaiCiTest(): self.AutoTerminateUEandeNB() def PingCatM(self): - if EPC.GetIPAddress() == '' or EPC.GetUserName() == '' or EPC.GetPassword() == '' or EPC.GetSourceCodePath() == '': + if EPC.IPAddress == '' or EPC.UserName == '' or EPC.Password == '' or EPC.SourceCodePath == '': HELP.GenericHelp(CONST.Version) sys.exit('Insufficient Parameter') check_eNB = True @@ -683,10 +703,10 @@ class OaiCiTest(): try: statusQueue = SimpleQueue() lock = Lock() - SSH.open(EPC.GetIPAddress(), EPC.GetUserName(), EPC.GetPassword()) - SSH.command('cd ' + EPC.GetSourceCodePath(), '\$', 5) + SSH.open(EPC.IPAddress, EPC.UserName, EPC.Password) + SSH.command('cd ' + EPC.SourceCodePath, '\$', 5) SSH.command('cd scripts', '\$', 5) - if re.match('OAI', EPC.GetType(), re.IGNORECASE): + if re.match('OAI', EPC.Type, re.IGNORECASE): logging.debug('Using the OAI EPC HSS: not implemented yet') HTML.CreateHtmlTestRow(self.ping_args, 'KO', pStatus) HTML.CreateHtmlTabFooter(False) @@ -886,7 +906,7 @@ class OaiCiTest(): self.UEDevicesStatus[cnt] = CONST.UE_STATUS_ATTACHED cnt += 1 HTML.CreateHtmlTestRowQueue('N/A', 'OK', len(self.UEDevices), html_queue) - result = re.search('T_stdout', str(RAN.GetInitialize_eNB_args())) + result = re.search('T_stdout', str(RAN.Initialize_eNB_args)) if result is not None: logging.debug('Waiting 5 seconds to fill up record file') time.sleep(5) @@ -932,7 +952,7 @@ class OaiCiTest(): for job in multi_jobs: job.join() HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK) - result = re.search('T_stdout', str(RAN.GetInitialize_eNB_args())) + result = re.search('T_stdout', str(RAN.Initialize_eNB_args)) if result is not None: logging.debug('Waiting 5 seconds to fill up record file') time.sleep(5) @@ -1066,7 +1086,6 @@ class OaiCiTest(): SSH.open(self.ADBIPAddress, self.ADBUserName, self.ADBPassword) if self.ADBCentralized: SSH.command('adb devices', '\$', 15) - #self.UEDevices = re.findall("\\\\r\\\\n([A-Za-z0-9]+)\\\\tdevice",SSH.getBefore()) self.UEDevices = re.findall("\\\\r\\\\n([A-Za-z0-9]+)\\\\tdevice",SSH.getBefore()) SSH.close() else: @@ -1198,8 +1217,8 @@ class OaiCiTest(): i += 1 for job in multi_jobs: job.join() - if RAN.GetflexranCtrlInstalled() and RAN.GetflexranCtrlStarted(): - SSH.open(EPC.GetIPAddress(), EPC.GetUserName(), EPC.GetPassword()) + if RAN.flexranCtrlInstalled and RAN.flexranCtrlStarted: + SSH.open(EPC.IPAddress, EPC.UserName, EPC.Password) SSH.command('cd /opt/flexran_rtc', '\$', 5) SSH.command('curl http://localhost:9999/stats | jq \'.\' > log/check_status_' + self.testCase_id + '.log 2>&1', '\$', 5) SSH.command('cat log/check_status_' + self.testCase_id + '.log | jq \'.eNB_config[0].UE\' | grep -c rnti | sed -e "s#^#Nb Connected UE = #"', '\$', 5) @@ -1311,13 +1330,13 @@ class OaiCiTest(): # Launch ping on the EPC side (true for ltebox and old open-air-cn) # But for OAI-Rel14-CUPS, we launch from python executor launchFromEpc = True - if re.match('OAI-Rel14-CUPS', EPC.GetType(), re.IGNORECASE): + if re.match('OAI-Rel14-CUPS', EPC.Type, re.IGNORECASE): launchFromEpc = False ping_time = re.findall("-c (\d+)",str(self.ping_args)) if launchFromEpc: - SSH.open(EPC.GetIPAddress(), EPC.GetUserName(), EPC.GetPassword()) - SSH.command('cd ' + EPC.GetSourceCodePath(), '\$', 5) + SSH.open(EPC.IPAddress, EPC.UserName, EPC.Password) + SSH.command('cd ' + EPC.SourceCodePath, '\$', 5) SSH.command('cd scripts', '\$', 5) ping_status = SSH.command('stdbuf -o0 ping ' + self.ping_args + ' ' + UE_IPAddress + ' 2>&1 | stdbuf -o0 tee ping_' + self.testCase_id + '_' + device_id + '.log', '\$', int(ping_time[0])*1.5) else: @@ -1326,9 +1345,9 @@ class OaiCiTest(): logging.debug(cmd) ret = subprocess.run(cmd, shell=True) ping_status = ret.returncode - SSH.copyout(EPC.GetIPAddress(), EPC.GetUserName(), EPC.GetPassword(), 'ping_' + self.testCase_id + '_' + device_id + '.log', EPC.GetSourceCodePath() + '/scripts') - SSH.open(EPC.GetIPAddress(), EPC.GetUserName(), EPC.GetPassword()) - SSH.command('cat ' + EPC.GetSourceCodePath() + '/scripts/ping_' + self.testCase_id + '_' + device_id + '.log', '\$', 5) + SSH.copyout(EPC.IPAddress, EPC.UserName, EPC.Password, 'ping_' + self.testCase_id + '_' + device_id + '.log', EPC.SourceCodePath + '/scripts') + SSH.open(EPC.IPAddress, EPC.UserName, EPC.Password) + SSH.command('cat ' + EPC.SourceCodePath + '/scripts/ping_' + self.testCase_id + '_' + device_id + '.log', '\$', 5) # TIMEOUT CASE if ping_status < 0: message = 'Ping with UE (' + str(UE_IPAddress) + ') crashed due to TIMEOUT!' @@ -1408,7 +1427,7 @@ class OaiCiTest(): return ping_from_eNB = re.search('oaitun_enb1', str(self.ping_args)) if ping_from_eNB is not None: - if RAN.GeteNBIPAddress() == '' or RAN.GeteNBUserName() == '' or RAN.GeteNBPassword() == '': + if RAN.eNBIPAddress == '' or RAN.eNBUserName == '' or RAN.eNBPassword == '': HELP.GenericHelp(CONST.Version) sys.exit('Insufficient Parameter') else: @@ -1417,8 +1436,8 @@ class OaiCiTest(): sys.exit('Insufficient Parameter') try: if ping_from_eNB is not None: - SSH.open(RAN.GeteNBIPAddress(), RAN.GeteNBUserName(), RAN.GeteNBPassword()) - SSH.command('cd ' + RAN.GeteNBSourceCodePath() + '/cmake_targets/', '\$', 5) + SSH.open(RAN.eNBIPAddress, RAN.eNBUserName, RAN.eNBPassword) + SSH.command('cd ' + RAN.eNBSourceCodePath + '/cmake_targets/', '\$', 5) else: SSH.open(self.UEIPAddress, self.UEUserName, self.UEPassword) SSH.command('cd ' + self.UESourceCodePath + '/cmake_targets/', '\$', 5) @@ -1482,20 +1501,20 @@ class OaiCiTest(): # copying on the EPC server for logCollection if ping_from_eNB is not None: - copyin_res = SSH.copyin(RAN.GeteNBIPAddress(), RAN.GeteNBUserName(), RAN.GeteNBPassword(), RAN.GeteNBSourceCodePath() + '/cmake_targets/ping_' + self.testCase_id + '.log', '.') + copyin_res = SSH.copyin(RAN.eNBIPAddress, RAN.eNBUserName, RAN.eNBPassword, RAN.eNBSourceCodePath + '/cmake_targets/ping_' + self.testCase_id + '.log', '.') else: copyin_res = SSH.copyin(self.UEIPAddress, self.UEUserName, self.UEPassword, self.UESourceCodePath + '/cmake_targets/ping_' + self.testCase_id + '.log', '.') if (copyin_res == 0): - SSH.copyout(EPC.GetIPAddress(), EPC.GetUserName(), EPC.GetPassword(), 'ping_' + self.testCase_id + '.log', EPC.GetSourceCodePath() + '/scripts') + SSH.copyout(EPC.IPAddress, EPC.UserName, EPC.Password, 'ping_' + self.testCase_id + '.log', EPC.SourceCodePath + '/scripts') except: os.kill(os.getppid(),signal.SIGUSR1) def Ping(self): - result = re.search('noS1', str(RAN.GetInitialize_eNB_args())) + result = re.search('noS1', str(RAN.Initialize_eNB_args)) if result is not None: self.PingNoS1() return - if EPC.GetIPAddress() == '' or EPC.GetUserName() == '' or EPC.GetPassword() == '' or EPC.GetSourceCodePath() == '': + if EPC.IPAddress == '' or EPC.UserName == '' or EPC.Password == '' or EPC.SourceCodePath == '': HELP.GenericHelp(CONST.Version) sys.exit('Insufficient Parameter') check_eNB = True @@ -1581,7 +1600,7 @@ class OaiCiTest(): return result def Iperf_analyzeV2TCPOutput(self, lock, UE_IPAddress, device_id, statusQueue, iperf_real_options): - SSH.command('awk -f /tmp/tcp_iperf_stats.awk /tmp/CI-eNB/scripts/iperf_' + self.testCase_id + '_' + device_id + '.log', '\$', 5) + SSH.command('awk -f /tmp/tcp_iperf_stats.awk ' + EPC.SourceCodePath + '/scripts/iperf_' + self.testCase_id + '_' + device_id + '.log', '\$', 5) result = re.search('Avg Bitrate : (?P[0-9\.]+ Mbits\/sec) Max Bitrate : (?P[0-9\.]+ Mbits\/sec) Min Bitrate : (?P[0-9\.]+ Mbits\/sec)', SSH.getBefore()) if result is not None: avgbitrate = result.group('average') @@ -1839,7 +1858,7 @@ class OaiCiTest(): # Launch iperf server on EPC side (true for ltebox and old open-air-cn0 # But for OAI-Rel14-CUPS, we launch from python executor and we are using its IP address as iperf client address launchFromEpc = True - if re.match('OAI-Rel14-CUPS', EPC.GetType(), re.IGNORECASE): + if re.match('OAI-Rel14-CUPS', EPC.Type, re.IGNORECASE): launchFromEpc = False cmd = 'hostname -I' ret = subprocess.run(cmd, shell=True, stdout=subprocess.PIPE, encoding='utf-8') @@ -1847,13 +1866,13 @@ class OaiCiTest(): EPC_Iperf_UE_IPAddress = ret.stdout.strip() port = 5001 + idx if launchFromEpc: - SSH.open(EPC.GetIPAddress(), EPC.GetUserName(), EPC.GetPassword()) - SSH.command('cd ' + EPC.GetSourceCodePath() + '/scripts', '\$', 5) + SSH.open(EPC.IPAddress, EPC.UserName, EPC.Password) + SSH.command('cd ' + EPC.SourceCodePath + '/scripts', '\$', 5) SSH.command('rm -f iperf_server_' + self.testCase_id + '_' + device_id + '.log', '\$', 5) if udpIperf: - SSH.command('echo $USER; nohup iperf -u -s -i 1 -p ' + str(port) + ' > iperf_server_' + self.testCase_id + '_' + device_id + '.log &', EPC.GetUserName(), 5) + SSH.command('echo $USER; nohup iperf -u -s -i 1 -p ' + str(port) + ' > iperf_server_' + self.testCase_id + '_' + device_id + '.log &', EPC.UserName, 5) else: - SSH.command('echo $USER; nohup iperf -s -i 1 -p ' + str(port) + ' > iperf_server_' + self.testCase_id + '_' + device_id + '.log &', EPC.GetUserName(), 5) + SSH.command('echo $USER; nohup iperf -s -i 1 -p ' + str(port) + ' > iperf_server_' + self.testCase_id + '_' + device_id + '.log &', EPC.UserName, 5) SSH.close() else: if self.ueIperfVersion == self.dummyIperfVersion: @@ -1876,7 +1895,7 @@ class OaiCiTest(): SSH.command('cd ' + self.UESourceCodePath + '/cmake_targets', '\$', 5) else: SSH.open(self.ADBIPAddress, self.ADBUserName, self.ADBPassword) - SSH.command('cd ' + EPC.GetSourceCodePath() + '/scripts', '\$', 5) + SSH.command('cd ' + EPC.SourceCodePath+ '/scripts', '\$', 5) iperf_time = self.Iperf_ComputeTime() time.sleep(0.5) @@ -1910,27 +1929,27 @@ class OaiCiTest(): # Kill iperf server on EPC side if launchFromEpc: - SSH.open(EPC.GetIPAddress(), EPC.GetUserName(), EPC.GetPassword()) - SSH.command('killall --signal SIGKILL iperf', EPC.GetUserName(), 5) + SSH.open(EPC.IPAddress, EPC.UserName, EPC.Password) + SSH.command('killall --signal SIGKILL iperf', EPC.UserName, 5) SSH.close() else: cmd = 'killall --signal SIGKILL iperf' logging.debug(cmd) subprocess.run(cmd, shell=True) time.sleep(1) - SSH.copyout(EPC.GetIPAddress(), EPC.GetUserName(), EPC.GetPassword(), 'iperf_server_' + self.testCase_id + '_' + device_id + '.log', EPC.GetSourceCodePath() + '/scripts') + SSH.copyout(EPC.IPAddress, EPC.UserName, EPC.Password, 'iperf_server_' + self.testCase_id + '_' + device_id + '.log', EPC.SourceCodePath + '/scripts') # in case of failure, retrieve server log if (clientStatus == -1) or (clientStatus == -2): if launchFromEpc: time.sleep(1) if (os.path.isfile('iperf_server_' + self.testCase_id + '_' + device_id + '.log')): os.remove('iperf_server_' + self.testCase_id + '_' + device_id + '.log') - SSH.copyin(EPC.GetIPAddress(), EPC.GetUserName(), EPC.GetPassword(), EPC.GetSourceCodePath() + '/scripts/iperf_server_' + self.testCase_id + '_' + device_id + '.log', '.') + SSH.copyin(EPC.IPAddress, EPC.UserName, EPC.Password, EPC.SourceCodePath+ '/scripts/iperf_server_' + self.testCase_id + '_' + device_id + '.log', '.') self.Iperf_analyzeV2Server(lock, UE_IPAddress, device_id, statusQueue, modified_options) # in case of OAI-UE if (device_id == 'OAI-UE'): SSH.copyin(self.UEIPAddress, self.UEUserName, self.UEPassword, self.UESourceCodePath + '/cmake_targets/iperf_' + self.testCase_id + '_' + device_id + '.log', '.') - SSH.copyout(EPC.GetIPAddress(), EPC.GetUserName(), EPC.GetPassword(), 'iperf_' + self.testCase_id + '_' + device_id + '.log', EPC.GetSourceCodePath() + '/scripts') + SSH.copyout(EPC.IPAddress, EPC.UserName, EPC.Password, 'iperf_' + self.testCase_id + '_' + device_id + '.log', EPC.SourceCodePath + '/scripts') def Iperf_common(self, lock, UE_IPAddress, device_id, idx, ue_num, statusQueue): try: @@ -1944,8 +1963,8 @@ class OaiCiTest(): if (device_id != 'OAI-UE'): SSH.open(self.ADBIPAddress, self.ADBUserName, self.ADBPassword) # if by chance ADB server and EPC are on the same remote host, at least log collection will take care of it - SSH.command('if [ ! -d ' + EPC.GetSourceCodePath() + '/scripts ]; then mkdir -p ' + EPC.GetSourceCodePath() + '/scripts ; fi', '\$', 5) - SSH.command('cd ' + EPC.GetSourceCodePath() + '/scripts', '\$', 5) + SSH.command('if [ ! -d ' + EPC.SourceCodePath + '/scripts ]; then mkdir -p ' + EPC.SourceCodePath + '/scripts ; fi', '\$', 5) + SSH.command('cd ' + EPC.SourceCodePath + '/scripts', '\$', 5) # Checking if iperf / iperf3 are installed if self.ADBCentralized: SSH.command('adb -s ' + device_id + ' shell "ls /data/local/tmp"', '\$', 5) @@ -2004,7 +2023,7 @@ class OaiCiTest(): SSH.command('echo $USER; nohup iperf -B ' + UE_IPAddress + ' -u -s -i 1 > iperf_server_' + self.testCase_id + '_' + device_id + '.log &', self.UEUserName, 5) else: SSH.open(self.ADBIPAddress, self.ADBUserName, self.ADBPassword) - SSH.command('cd ' + EPC.GetSourceCodePath() + '/scripts', '\$', 5) + SSH.command('cd ' + EPC.SourceCodePath + '/scripts', '\$', 5) if self.ADBCentralized: if (useIperf3): SSH.command('stdbuf -o0 adb -s ' + device_id + ' shell /data/local/tmp/iperf3 -s &', '\$', 5) @@ -2026,11 +2045,11 @@ class OaiCiTest(): # Launch the IPERF client on the EPC side for DL (true for ltebox and old open-air-cn # But for OAI-Rel14-CUPS, we launch from python executor launchFromEpc = True - if re.match('OAI-Rel14-CUPS', EPC.GetType(), re.IGNORECASE): + if re.match('OAI-Rel14-CUPS', EPC.Type, re.IGNORECASE): launchFromEpc = False if launchFromEpc: - SSH.open(EPC.GetIPAddress(), EPC.GetUserName(), EPC.GetPassword()) - SSH.command('cd ' + EPC.GetSourceCodePath() + '/scripts', '\$', 5) + SSH.open(EPC.IPAddress, EPC.UserName, EPC.Password) + SSH.command('cd ' + EPC.SourceCodePath + '/scripts', '\$', 5) iperf_time = self.Iperf_ComputeTime() time.sleep(0.5) @@ -2065,9 +2084,9 @@ class OaiCiTest(): logging.debug(cmd) ret = subprocess.run(cmd, shell=True) iperf_status = ret.returncode - SSH.copyout(EPC.GetIPAddress(), EPC.GetUserName(), EPC.GetPassword(), 'iperf_' + self.testCase_id + '_' + device_id + '.log', EPC.GetSourceCodePath() + '/scripts') - SSH.open(EPC.GetIPAddress(), EPC.GetUserName(), EPC.GetPassword()) - SSH.command('cat ' + EPC.GetSourceCodePath() + '/scripts/iperf_' + self.testCase_id + '_' + device_id + '.log', '\$', 5) + SSH.copyout(EPC.IPAddress, EPC.UserName, EPC.Password, 'iperf_' + self.testCase_id + '_' + device_id + '.log', EPC.SourceCodePath + '/scripts') + SSH.open(EPC.IPAddress, EPC.UserName, EPC.Password) + SSH.command('cat ' + EPC.SourceCodePath + '/scripts/iperf_' + self.testCase_id + '_' + device_id + '.log', '\$', 5) if iperf_status < 0: if launchFromEpc: SSH.close() @@ -2104,7 +2123,7 @@ class OaiCiTest(): if (device_id == 'OAI-UE'): SSH.copyin(self.UEIPAddress, self.UEUserName, self.UEPassword, self.UESourceCodePath + '/cmake_targets/iperf_server_' + self.testCase_id + '_' + device_id + '.log', '.') else: - SSH.copyin(self.ADBIPAddress, self.ADBUserName, self.ADBPassword, EPC.GetSourceCodePath() + '/scripts/iperf_server_' + self.testCase_id + '_' + device_id + '.log', '.') + SSH.copyin(self.ADBIPAddress, self.ADBUserName, self.ADBPassword, EPC.SourceCodePath + '/scripts/iperf_server_' + self.testCase_id + '_' + device_id + '.log', '.') # fromdos has to be called on the python executor not on ADB server cmd = 'fromdos -o iperf_server_' + self.testCase_id + '_' + device_id + '.log' subprocess.run(cmd, shell=True) @@ -2114,15 +2133,15 @@ class OaiCiTest(): if (device_id == 'OAI-UE'): if (os.path.isfile('iperf_server_' + self.testCase_id + '_' + device_id + '.log')): if not launchFromEpc: - SSH.copyout(EPC.GetIPAddress(), EPC.GetUserName(), EPC.GetPassword(), 'iperf_server_' + self.testCase_id + '_' + device_id + '.log', EPC.GetSourceCodePath() + '/scripts') + SSH.copyout(EPC.IPAddress, EPC.UserName, EPC.Password, 'iperf_server_' + self.testCase_id + '_' + device_id + '.log', EPC.SourceCodePath + '/scripts') else: SSH.copyin(self.UEIPAddress, self.UEUserName, self.UEPassword, self.UESourceCodePath + '/cmake_targets/iperf_server_' + self.testCase_id + '_' + device_id + '.log', '.') - SSH.copyout(EPC.GetIPAddress(), EPC.GetUserName(), EPC.GetPassword(), 'iperf_server_' + self.testCase_id + '_' + device_id + '.log', EPC.GetSourceCodePath() + '/scripts') + SSH.copyout(EPC.IPAddress, EPC.UserName, EPC.Password, 'iperf_server_' + self.testCase_id + '_' + device_id + '.log', EPC.SourceCodePath + '/scripts') except: os.kill(os.getppid(),signal.SIGUSR1) def IperfNoS1(self): - if RAN.GeteNBIPAddress() == '' or RAN.GeteNBUserName() == '' or RAN.GeteNBPassword() == '' or self.UEIPAddress == '' or self.UEUserName == '' or self.UEPassword == '': + if RAN.eNBIPAddress == '' or RAN.eNBUserName == '' or RAN.eNBPassword == '' or self.UEIPAddress == '' or self.UEUserName == '' or self.UEPassword == '': HELP.GenericHelp(CONST.Version) sys.exit('Insufficient Parameter') check_eNB = True @@ -2134,9 +2153,9 @@ class OaiCiTest(): return server_on_enb = re.search('-R', str(self.iperf_args)) if server_on_enb is not None: - iServerIPAddr = RAN.GeteNBIPAddress() - iServerUser = RAN.GeteNBUserName() - iServerPasswd = RAN.GeteNBPassword() + iServerIPAddr = RAN.eNBIPAddress + iServerUser = RAN.eNBUserName + iServerPasswd = RAN.eNBPassword iClientIPAddr = self.UEIPAddress iClientUser = self.UEUserName iClientPasswd = self.UEPassword @@ -2144,9 +2163,9 @@ class OaiCiTest(): iServerIPAddr = self.UEIPAddress iServerUser = self.UEUserName iServerPasswd = self.UEPassword - iClientIPAddr = RAN.GeteNBIPAddress() - iClientUser = RAN.GeteNBUserName() - iClientPasswd = RAN.GeteNBPassword() + iClientIPAddr = RAN.eNBIPAddress + iClientUser = RAN.eNBUserName + iClientPasswd = RAN.eNBPassword if self.iperf_options != 'sink': # Starting the iperf server SSH.open(iServerIPAddr, iServerUser, iServerPasswd) @@ -2201,10 +2220,10 @@ class OaiCiTest(): if (clientStatus == -1): copyin_res = SSH.copyin(iServerIPAddr, iServerUser, iServerPasswd, '/tmp/tmp_iperf_server_' + self.testCase_id + '.log', 'iperf_server_' + self.testCase_id + '_OAI-UE.log') if (copyin_res == 0): - SSH.copyout(EPC.GetIPAddress(), EPC.GetUserName(), EPC.GetPassword(), 'iperf_server_' + self.testCase_id + '_OAI-UE.log', EPC.GetSourceCodePath() + '/scripts') + SSH.copyout(EPC.IPAddress, EPC.UserName, EPC.Password, 'iperf_server_' + self.testCase_id + '_OAI-UE.log', EPC.SourceCodePath + '/scripts') copyin_res = SSH.copyin(iClientIPAddr, iClientUser, iClientPasswd, '/tmp/tmp_iperf_' + self.testCase_id + '.log', 'iperf_' + self.testCase_id + '_OAI-UE.log') if (copyin_res == 0): - SSH.copyout(EPC.GetIPAddress(), EPC.GetUserName(), EPC.GetPassword(), 'iperf_' + self.testCase_id + '_OAI-UE.log', EPC.GetSourceCodePath() + '/scripts') + SSH.copyout(EPC.IPAddress, EPC.UserName, EPC.Password, 'iperf_' + self.testCase_id + '_OAI-UE.log', EPC.SourceCodePath + '/scripts') iperf_noperf = False if status_queue.empty(): iperf_status = False @@ -2231,11 +2250,11 @@ class OaiCiTest(): self.AutoTerminateUEandeNB() def Iperf(self): - result = re.search('noS1', str(RAN.GetInitialize_eNB_args())) + result = re.search('noS1', str(RAN.Initialize_eNB_args)) if result is not None: self.IperfNoS1() return - if EPC.GetIPAddress() == '' or EPC.GetUserName() == '' or EPC.GetPassword() == '' or EPC.GetSourceCodePath() == '' or self.ADBIPAddress == '' or self.ADBUserName == '' or self.ADBPassword == '': + if EPC.IPAddress == '' or EPC.UserName == '' or EPC.Password == '' or EPC.SourceCodePath == '' or self.ADBIPAddress == '' or self.ADBUserName == '' or self.ADBPassword == '': HELP.GenericHelp(CONST.Version) sys.exit('Insufficient Parameter') check_eNB = True @@ -2312,7 +2331,7 @@ class OaiCiTest(): status_queue = SimpleQueue() # in noS1 config, no need to check status from EPC # in gNB also currently no need to check - result = re.search('noS1|band78', str(RAN.GetInitialize_eNB_args())) + result = re.search('noS1|band78', str(RAN.Initialize_eNB_args)) if result is None: p = Process(target = EPC.CheckHSSProcess, args = (status_queue,)) p.daemon = True @@ -2351,14 +2370,14 @@ class OaiCiTest(): if (status < 0): result = status if result == CONST.ENB_PROCESS_FAILED: - fileCheck = re.search('enb_', str(RAN.GeteNBLogFile(0))) + fileCheck = re.search('enb_', str(RAN.eNBLogFiles[0])) if fileCheck is not None: - SSH.copyin(RAN.GeteNBIPAddress(), RAN.GeteNBUserName(), RAN.GeteNBPassword(), RAN.GeteNBSourceCodePath() + '/cmake_targets/' + RAN.GeteNBLogFile(0), '.') - logStatus = RAN.AnalyzeLogFile_eNB(RAN.GeteNBLogFile[0]) + SSH.copyin(RAN.eNBIPAddress, RAN.eNBUserName, RAN.eNBPassword, RAN.eNBSourceCodePath + '/cmake_targets/' + RAN.eNBLogFiles[0], '.') + logStatus = RAN.AnalyzeLogFile_eNB(RAN.eNBLogFiles[0]) if logStatus < 0: result = logStatus - RAN.SeteNBLogFile('', 0) - if RAN.GetflexranCtrlInstalled() and RAN.GetflexranCtrlStarted(): + RAN.eNBLogFiles[0]='' + if RAN.flexranCtrlInstalled and RAN.flexranCtrlStarted: self.TerminateFlexranCtrl() return result @@ -2393,8 +2412,8 @@ class OaiCiTest(): def CheckOAIUEProcess(self, status_queue): try: SSH.open(self.UEIPAddress, self.UEUserName, self.UEPassword) - SSH.command('stdbuf -o0 ps -aux | grep --color=never ' + RAN.Getair_interface() + '-uesoftmodem | grep -v grep', '\$', 5) - result = re.search(RAN.Getair_interface() + '-uesoftmodem', SSH.getBefore()) + SSH.command('stdbuf -o0 ps -aux | grep --color=never ' + self.air_interface + ' | grep -v grep', '\$', 5) + result = re.search(self.air_interface, SSH.getBefore()) if result is None: logging.debug('\u001B[1;37;41m OAI UE Process Not Found! \u001B[0m') status_queue.put(CONST.OAI_UE_PROCESS_FAILED) @@ -2431,7 +2450,8 @@ class OaiCiTest(): nrFoundDCI = 0 nrCRCOK = 0 mbms_messages = 0 - HTML.SethtmlUEFailureMsg('') + HTML.htmlUEFailureMsg='' + global_status = CONST.ALL_PROCESSES_OK for line in ue_log_file.readlines(): result = re.search('nr_synchro_time', str(line)) if result is not None: @@ -2492,7 +2512,7 @@ class OaiCiTest(): result = re.search('No cell synchronization found, abandoning', str(line)) if result is not None: no_cell_sync_found = True - if RAN.GeteNBmbmsEnable(0): + if RAN.eNBmbmsEnables[0]: result = re.search('TRIED TO PUSH MBMS DATA', str(line)) if result is not None: mbms_messages += 1 @@ -2500,22 +2520,22 @@ class OaiCiTest(): if result is not None and (not mib_found): try: mibMsg = "MIB Information: " + result.group(1) + ', ' + result.group(2) - HTML.SethtmlUEFailureMsg(HTML.GethtmlUEFailureMsg() + mibMsg + '\n') + HTML.htmlUEFailureMsg=HTML.htmlUEFailureMsg + mibMsg + '\n' logging.debug('\033[94m' + mibMsg + '\033[0m') mibMsg = " nidcell = " + result.group('nidcell') - HTML.SethtmlUEFailureMsg(HTML.GethtmlUEFailureMsg() + mibMsg) + HTML.htmlUEFailureMsg=HTML.htmlUEFailureMsg + mibMsg logging.debug('\033[94m' + mibMsg + '\033[0m') mibMsg = " n_rb_dl = " + result.group('n_rb_dl') - HTML.SethtmlUEFailureMsg(HTML.GethtmlUEFailureMsg() + mibMsg + '\n') + HTML.htmlUEFailureMsg=HTML.htmlUEFailureMsg + mibMsg + '\n' logging.debug('\033[94m' + mibMsg + '\033[0m') mibMsg = " phich_duration = " + result.group('phich_duration') - HTML.SethtmlUEFailureMsg(HTML.GethtmlUEFailureMsg() + mibMsg) + HTML.htmlUEFailureMsg=HTML.htmlUEFailureMsg + mibMsg logging.debug('\033[94m' + mibMsg + '\033[0m') mibMsg = " phich_resource = " + result.group('phich_resource') - HTML.SethtmlUEFailureMsg(HTML.GethtmlUEFailureMsg() + mibMsg + '\n') + HTML.htmlUEFailureMsg=HTML.htmlUEFailureMsg + mibMsg + '\n' logging.debug('\033[94m' + mibMsg + '\033[0m') mibMsg = " tx_ant = " + result.group('tx_ant') - HTML.SethtmlUEFailureMsg(HTML.GethtmlUEFailureMsg() + mibMsg + '\n') + HTML.htmlUEFailureMsg=HTML.htmlUEFailureMsg + mibMsg + '\n' logging.debug('\033[94m' + mibMsg + '\033[0m') mib_found = True except Exception as e: @@ -2524,7 +2544,7 @@ class OaiCiTest(): if result is not None and (not frequency_found): try: mibMsg = "Measured Carrier Frequency = " + result.group('measured_carrier_frequency') + ' Hz' - HTML.SethtmlUEFailureMsg(HTML.GethtmlUEFailureMsg() + mibMsg + '\n') + HTML.htmlUEFailureMsg=HTML.htmlUEFailureMsg + mibMsg + '\n' logging.debug('\033[94m' + mibMsg + '\033[0m') frequency_found = True except Exception as e: @@ -2533,7 +2553,7 @@ class OaiCiTest(): if result is not None and (not plmn_found): try: mibMsg = 'PLMN MCC = ' + result.group('mcc') + ' MNC = ' + result.group('mnc') - HTML.SethtmlUEFailureMsg(HTML.GethtmlUEFailureMsg() + mibMsg + '\n') + HTML.htmlUEFailureMsg=HTML.htmlUEFailureMsg + mibMsg + '\n' logging.debug('\033[94m' + mibMsg + '\033[0m') plmn_found = True except Exception as e: @@ -2542,7 +2562,7 @@ class OaiCiTest(): if result is not None: try: mibMsg = "The operator is: " + result.group('operator') - HTML.SethtmlUEFailureMsg(HTML.GethtmlUEFailureMsg() + mibMsg + '\n') + HTML.htmlUEFailureMsg=HTML.htmlUEFailureMsg + mibMsg + '\n' logging.debug('\033[94m' + mibMsg + '\033[0m') except Exception as e: logging.error('\033[91m' + "Operator name not found" + '\033[0m') @@ -2550,25 +2570,25 @@ class OaiCiTest(): if result is not None: try: mibMsg = "SIB5 InterFreqCarrierFreq element " + result.group(1) + '/' + result.group(2) - HTML.SethtmlUEFailureMsg(HTML.GethtmlUEFailureMsg() + mibMsg + ' -> ') + HTML.htmlUEFailureMsg=HTML.htmlUEFailureMsg + mibMsg + ' -> ' logging.debug('\033[94m' + mibMsg + '\033[0m') except Exception as e: logging.error('\033[91m' + "SIB5 InterFreqCarrierFreq element not found" + '\033[0m') - result = re.search("DL Carrier Frequency/ARFCN : (?P\d{1,15}/\d{1,4})", str(line)) + result = re.search("DL Carrier Frequency/ARFCN : \-*(?P\d{1,15}/\d{1,4})", str(line)) if result is not None: try: freq = result.group('carrier_frequency') new_freq = re.sub('/[0-9]+','',freq) float_freq = float(new_freq) / 1000000 - HTMLSethtmlUEFailureMsg(HTMLGethtmlUEFailureMsg() + 'DL Freq: ' + ('%.1f' % float_freq) + ' MHz') - logging.debug('\033[94m' + " DL Carrier Frequency is: " + freq + '\033[0m') + HTML.htmlUEFailureMsg=HTML.htmlUEFailureMsg + 'DL Freq: ' + ('%.1f' % float_freq) + ' MHz' + logging.debug('\033[94m' + " DL Carrier Frequency is: " + str(freq) + '\033[0m') except Exception as e: logging.error('\033[91m' + " DL Carrier Frequency not found" + '\033[0m') result = re.search("AllowedMeasBandwidth : (?P\d{1,7})", str(line)) if result is not None: try: prb = result.group('allowed_bandwidth') - HTML.SethtmlUEFailureMsg(HTML.GethtmlUEFailureMsg() + ' -- PRB: ' + prb + '\n') + HTML.htmlUEFailureMsg=HTML.htmlUEFailureMsg + ' -- PRB: ' + prb + '\n' logging.debug('\033[94m' + " AllowedMeasBandwidth: " + prb + '\033[0m') except Exception as e: logging.error('\033[91m' + " AllowedMeasBandwidth not found" + '\033[0m') @@ -2576,100 +2596,100 @@ class OaiCiTest(): if rrcConnectionRecfgComplete > 0: statMsg = 'UE connected to eNB (' + str(rrcConnectionRecfgComplete) + ' RRCConnectionReconfigurationComplete message(s) generated)' logging.debug('\033[94m' + statMsg + '\033[0m') - HTML.SethtmlUEFailureMsg(HTML.GethtmlUEFailureMsg() + statMsg + '\n') + HTML.htmlUEFailureMsg=HTML.htmlUEFailureMsg + statMsg + '\n' if nrUEFlag: if nrDecodeMib > 0: statMsg = 'UE showed ' + str(nrDecodeMib) + ' MIB decode message(s)' logging.debug('\u001B[1;30;43m ' + statMsg + ' \u001B[0m') - HTML.SethtmlUEFailureMsg(HTML.GethtmlUEFailureMsg() + statMsg + '\n') + HTML.htmlUEFailureMsg=HTML.htmlUEFailureMsg + statMsg + '\n' if nrFoundDCI > 0: statMsg = 'UE showed ' + str(nrFoundDCI) + ' DCI found message(s)' logging.debug('\u001B[1;30;43m ' + statMsg + ' \u001B[0m') - HTML.SethtmlUEFailureMsg(HTML.GethtmlUEFailureMsg() + statMsg + '\n') + HTML.htmlUEFailureMsg=HTML.htmlUEFailureMsg + statMsg + '\n' if nrCRCOK > 0: statMsg = 'UE showed ' + str(nrCRCOK) + ' PDSCH decoding message(s)' logging.debug('\u001B[1;30;43m ' + statMsg + ' \u001B[0m') - HTML.SethtmlUEFailureMsg(HTML.GethtmlUEFailureMsg() + statMsg + '\n') + HTML.htmlUEFailureMsg=HTML.htmlUEFailureMsg + statMsg + '\n' if not frequency_found: statMsg = 'NR-UE could NOT synch!' logging.error('\u001B[1;30;43m ' + statMsg + ' \u001B[0m') - HTML.SethtmlUEFailureMsg(HTML.GethtmlUEFailureMsg() + statMsg + '\n') + HTML.htmlUEFailureMsg=HTML.htmlUEFailureMsg + statMsg + '\n' if uciStatMsgCount > 0: statMsg = 'UE showed ' + str(uciStatMsgCount) + ' "uci->stat" message(s)' logging.debug('\u001B[1;30;43m ' + statMsg + ' \u001B[0m') - HTML.SethtmlUEFailureMsg(HTML.GethtmlUEFailureMsg() + statMsg + '\n') + HTML.htmlUEFailureMsg=HTML.htmlUEFailureMsg + statMsg + '\n' if pdcpDataReqFailedCount > 0: statMsg = 'UE showed ' + str(pdcpDataReqFailedCount) + ' "PDCP data request failed" message(s)' logging.debug('\u001B[1;30;43m ' + statMsg + ' \u001B[0m') - HTML.SethtmlUEFailureMsg(HTML.GethtmlUEFailureMsg() + statMsg + '\n') + HTML.htmlUEFailureMsg=HTML.htmlUEFailureMsg + statMsg + '\n' if badDciCount > 0: statMsg = 'UE showed ' + str(badDciCount) + ' "bad DCI 1(A)" message(s)' logging.debug('\u001B[1;30;43m ' + statMsg + ' \u001B[0m') - HTML.SethtmlUEFailureMsg(HTML.GethtmlUEFailureMsg() + statMsg + '\n') + HTML.htmlUEFailureMsg=HTML.htmlUEFailureMsg + statMsg + '\n' if f1aRetransmissionCount > 0: statMsg = 'UE showed ' + str(f1aRetransmissionCount) + ' "Format1A Retransmission but TBS are different" message(s)' logging.debug('\u001B[1;30;43m ' + statMsg + ' \u001B[0m') - HTML.SethtmlUEFailureMsg(HTML.GethtmlUEFailureMsg() + statMsg + '\n') + HTML.htmlUEFailureMsg=HTML.htmlUEFailureMsg + statMsg + '\n' if fatalErrorCount > 0: statMsg = 'UE showed ' + str(fatalErrorCount) + ' "FATAL ERROR:" message(s)' logging.debug('\u001B[1;30;43m ' + statMsg + ' \u001B[0m') - HTML.SethtmlUEFailureMsg(HTML.GethtmlUEFailureMsg() + statMsg + '\n') + HTML.htmlUEFailureMsg=HTML.htmlUEFailureMsg + statMsg + '\n' if macBsrTimerExpiredCount > 0: statMsg = 'UE showed ' + str(fatalErrorCount) + ' "MAC BSR Triggered ReTxBSR Timer expiry" message(s)' logging.debug('\u001B[1;30;43m ' + statMsg + ' \u001B[0m') - HTML.SethtmlUEFailureMsg(HTML.GethtmlUEFailureMsg() + statMsg + '\n') - if RAN.GeteNBmbmsEnable(0): + HTML.htmlUEFailureMsg=HTML.htmlUEFailureMsg + statMsg + '\n' + if RAN.eNBmbmsEnables[0]: if mbms_messages > 0: statMsg = 'UE showed ' + str(mbms_messages) + ' "TRIED TO PUSH MBMS DATA" message(s)' logging.debug('\u001B[1;30;43m ' + statMsg + ' \u001B[0m') else: statMsg = 'UE did NOT SHOW "TRIED TO PUSH MBMS DATA" message(s)' logging.debug('\u001B[1;30;41m ' + statMsg + ' \u001B[0m') - HTML.SethtmlUEFailureMsg(HTML.GethtmlUEFailureMsg() + statMsg + '\n') + global_status = CONST.OAI_UE_PROCESS_NO_MBMS_MSGS + HTML.htmlUEFailureMsg=HTML.htmlUEFailureMsg + statMsg + '\n' if foundSegFault: logging.debug('\u001B[1;37;41m UE ended with a Segmentation Fault! \u001B[0m') if not nrUEFlag: - return CONST.OAI_UE_PROCESS_SEG_FAULT + global_status = CONST.OAI_UE_PROCESS_SEG_FAULT else: if not frequency_found: - return CONST.OAI_UE_PROCESS_SEG_FAULT + global_status = CONST.OAI_UE_PROCESS_SEG_FAULT if foundAssertion: logging.debug('\u001B[1;30;43m UE showed an assertion! \u001B[0m') - HTML.SethtmlUEFailureMsg(HTML.GethtmlUEFailureMsg() + 'UE showed an assertion!\n') + HTML.htmlUEFailureMsg=HTML.htmlUEFailureMsg + 'UE showed an assertion!\n' if not nrUEFlag: if not mib_found or not frequency_found: - return CONST.OAI_UE_PROCESS_ASSERTION + global_status = CONST.OAI_UE_PROCESS_ASSERTION else: if not frequency_found: - return CONST.OAI_UE_PROCESS_ASSERTION + global_status = CONST.OAI_UE_PROCESS_ASSERTION if foundRealTimeIssue: logging.debug('\u001B[1;37;41m UE faced real time issues! \u001B[0m') - HTML.SethtmlUEFailureMsg(HTML.GethtmlUEFailureMsg() + 'UE faced real time issues!\n') - #return CONST.ENB_PROCESS_REALTIME_ISSUE + HTML.htmlUEFailureMsg=HTML.htmlUEFailureMsg + 'UE faced real time issues!\n' if nrUEFlag: if not frequency_found: - return CONST.OAI_UE_PROCESS_COULD_NOT_SYNC + global_status = CONST.OAI_UE_PROCESS_COULD_NOT_SYNC else: if no_cell_sync_found and not mib_found: logging.debug('\u001B[1;37;41m UE could not synchronize ! \u001B[0m') - HTML.SethtmlUEFailureMsg(HTML.GethtmlUEFailureMsg() + 'UE could not synchronize!\n') - return CONST.OAI_UE_PROCESS_COULD_NOT_SYNC - return 0 + HTML.htmlUEFailureMsg=HTML.htmlUEFailureMsg + 'UE could not synchronize!\n' + global_status = CONST.OAI_UE_PROCESS_COULD_NOT_SYNC + return global_status def TerminateFlexranCtrl(self): - if RAN.GetflexranCtrlInstalled() == False or RAN.GetflexranCtrlStarted() == False: + if RAN.flexranCtrlInstalled == False or RAN.flexranCtrlStarted == False: return - if EPC.GetIPAddress() == '' or EPC.GetUserName() == '' or EPC.GetPassword() == '': + if EPC.IPAddress == '' or EPC.UserName == '' or EPC.Password == '': HELP.GenericHelp(CONST.Version) sys.exit('Insufficient Parameter') - SSH.open(EPC.GetIPAddress(), EPC.GetUserName(), EPC.GetPassword()) - SSH.command('echo ' + EPC.GetPassword() + ' | sudo -S daemon --name=flexran_rtc_daemon --stop', '\$', 5) + SSH.open(EPC.IPAddress, EPC.UserName, EPC.Password) + SSH.command('echo ' + EPC.Password + ' | sudo -S daemon --name=flexran_rtc_daemon --stop', '\$', 5) time.sleep(1) - SSH.command('echo ' + EPC.GetPassword() + ' | sudo -S killall --signal SIGKILL rt_controller', '\$', 5) + SSH.command('echo ' + EPC.Password + ' | sudo -S killall --signal SIGKILL rt_controller', '\$', 5) time.sleep(1) SSH.close() - RAN.SetflexranCtrlStarted(False) + RAN.flexranCtrlStarted=False HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK) def TerminateUE_common(self, device_id, idx): @@ -2735,7 +2755,7 @@ class OaiCiTest(): copyin_res = SSH.copyin(self.UEIPAddress, self.UEUserName, self.UEPassword, self.UESourceCodePath + '/cmake_targets/' + self.UELogFile, '.') if (copyin_res == -1): logging.debug('\u001B[1;37;41m Could not copy UE logfile to analyze it! \u001B[0m') - HTML.SethtmlUEFailureMsg('Could not copy UE logfile to analyze it!') + HTML.htmlUEFailureMsg='Could not copy UE logfile to analyze it!' HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OAI_UE_PROCESS_NOLOGFILE_TO_ANALYZE, 'UE') self.UELogFile = '' return @@ -2748,9 +2768,9 @@ class OaiCiTest(): ueAction = 'Connection' if (logStatus < 0): logging.debug('\u001B[1m' + ueAction + ' Failed \u001B[0m') - HTML.SethtmlUEFailureMsg('' + ueAction + ' Failed\n' + HTML.GethtmlUEFailureMsg()) + HTML.htmlUEFailureMsg='' + ueAction + ' Failed\n' + HTML.htmlUEFailureMsg HTML.CreateHtmlTestRow('N/A', 'KO', logStatus, 'UE') - if RAN.Getair_interface() == 'lte': + if self.air_interface == 'lte-uesoftmodem': # In case of sniffing on commercial eNBs we have random results # Not an error then if (logStatus != CONST.OAI_UE_PROCESS_COULD_NOT_SYNC) or (ueAction != 'Sniffing'): @@ -2762,7 +2782,7 @@ class OaiCiTest(): self.AutoTerminateUEandeNB() else: logging.debug('\u001B[1m' + ueAction + ' Completed \u001B[0m') - HTML.SethtmlUEFailureMsg('' + ueAction + ' Completed\n' + HTML.GethtmlUEFailureMsg()) + HTML.htmlUEFailureMsg='' + ueAction + ' Completed\n' + HTML.htmlUEFailureMsg HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK) self.UELogFile = '' else: @@ -2771,41 +2791,41 @@ class OaiCiTest(): def AutoTerminateUEandeNB(self): if (self.ADBIPAddress != 'none'): self.testCase_id = 'AUTO-KILL-UE' - HTML.SettestCase_id(self.testCase_id) + HTML.testCase_id=self.testCase_id self.desc = 'Automatic Termination of UE' - HTML.Setdesc('Automatic Termination of UE') + HTML.desc='Automatic Termination of UE' self.ShowTestID() self.TerminateUE() if (self.Initialize_OAI_UE_args != ''): self.testCase_id = 'AUTO-KILL-OAI-UE' - HTML.SettestCase_id(self.testCase_id) + HTML.testCase_id=self.testCase_id self.desc = 'Automatic Termination of OAI-UE' - HTML.Setdesc('Automatic Termination of OAI-UE') + HTML.desc='Automatic Termination of OAI-UE' self.ShowTestID() self.TerminateOAIUE() - if (RAN.GetInitialize_eNB_args() != ''): + if (RAN.Initialize_eNB_args != ''): self.testCase_id = 'AUTO-KILL-eNB' - HTML.SettestCase_id(self.testCase_id) + HTML.testCase_id=self.testCase_id self.desc = 'Automatic Termination of eNB' - HTML.Setdesc('Automatic Termination of eNB') + HTML.desc='Automatic Termination of eNB' self.ShowTestID() - RAN.SeteNB_instance('0') + RAN.eNB_instance=0 RAN.TerminateeNB() - if RAN.GetflexranCtrlInstalled() and RAN.GetflexranCtrlStarted(): + if RAN.flexranCtrlInstalled and RAN.flexranCtrlStarted: self.testCase_id = 'AUTO-KILL-flexran-ctl' - HTML.SettestCase_id(self.testCase_id) + HTML.testCase_id=self.testCase_id self.desc = 'Automatic Termination of FlexRan CTL' - HTML.Setdesc('Automatic Termination of FlexRan CTL') + HTML.desc='Automatic Termination of FlexRan CTL' self.ShowTestID() self.TerminateFlexranCtrl() - RAN.SetprematureExit(True) + RAN.prematureExit=True def IdleSleep(self): time.sleep(self.idle_sleep_time) HTML.CreateHtmlTestRow(str(self.idle_sleep_time) + ' sec', 'OK', CONST.ALL_PROCESSES_OK) def X2_Status(self, idx, fileName): - cmd = "curl --silent http://" + EPC.GetIPAddress() + ":9999/stats | jq '.' > " + fileName + cmd = "curl --silent http://" + EPC.IPAddress + ":9999/stats | jq '.' > " + fileName message = cmd + '\n' logging.debug(cmd) subprocess.run(cmd, shell=True) @@ -2854,7 +2874,7 @@ class OaiCiTest(): logging.debug(msg) fullMessage += msg + '\n' if self.x2_ho_options == 'network': - if RAN.GetflexranCtrlInstalled() and RAN.GetflexranCtrlStarted(): + if RAN.flexranCtrlInstalled and RAN.flexranCtrlStarted: self.x2ENBBsIds = [] self.x2ENBConnectedUEs = [] self.x2ENBBsIds.append([]) @@ -2869,7 +2889,7 @@ class OaiCiTest(): eNB_cnt = self.x2NbENBs cnt = 0 while cnt < eNB_cnt: - cmd = "curl -XPOST http://" + EPC.GetIPAddress() + ":9999/rrc/x2_ho_net_control/enb/" + str(self.x2ENBBsIds[0][cnt]) + "/1" + cmd = "curl -XPOST http://" + EPC.IPAddress + ":9999/rrc/x2_ho_net_control/enb/" + str(self.x2ENBBsIds[0][cnt]) + "/1" logging.debug(cmd) fullMessage += cmd + '\n' subprocess.run(cmd, shell=True) @@ -2883,7 +2903,7 @@ class OaiCiTest(): while cnt < eNB_cnt: ueIdx = 0 while ueIdx < len(self.x2ENBConnectedUEs[0][cnt]): - cmd = "curl -XPOST http://" + EPC.GetIPAddress() + ":9999/rrc/ho/senb/" + str(self.x2ENBBsIds[0][cnt]) + "/ue/" + str(self.x2ENBConnectedUEs[0][cnt][ueIdx]) + "/tenb/" + str(self.x2ENBBsIds[0][eNB_cnt - cnt - 1]) + cmd = "curl -XPOST http://" + EPC.IPAddress() + ":9999/rrc/ho/senb/" + str(self.x2ENBBsIds[0][cnt]) + "/ue/" + str(self.x2ENBConnectedUEs[0][cnt][ueIdx]) + "/tenb/" + str(self.x2ENBBsIds[0][eNB_cnt - cnt - 1]) logging.debug(cmd) fullMessage += cmd + '\n' subprocess.run(cmd, shell=True) @@ -2915,11 +2935,11 @@ class OaiCiTest(): HTML.CreateHtmlTestRow('Cannot perform requested X2 Handover', 'KO', CONST.ALL_PROCESSES_OK) def LogCollectBuild(self): - if (RAN.GeteNBIPAddress() != '' and RAN.GeteNBUserName() != '' and RAN.GeteNBPassword() != ''): - IPAddress = RAN.GeteNBIPAddress() - UserName = RAN.GeteNBUserName() - Password = RAN.GeteNBPassword() - SourceCodePath = RAN.GeteNBSourceCodePath() + if (RAN.eNBIPAddress != '' and RAN.eNBUserName != '' and RAN.eNBPassword != ''): + IPAddress = RAN.eNBIPAddress + UserName = RAN.eNBUserName + Password = RAN.eNBPassword + SourceCodePath = RAN.eNBSourceCodePath elif (self.UEIPAddress != '' and self.UEUserName != '' and self.UEPassword != ''): IPAddress = self.UEIPAddress UserName = self.UEUserName @@ -2934,8 +2954,8 @@ class OaiCiTest(): SSH.command('zip build.log.zip build_log_*/*', '\$', 60) SSH.close() def LogCollectPing(self): - SSH.open(EPC.GetIPAddress(), EPC.GetUserName(), EPC.GetPassword()) - SSH.command('cd ' + EPC.GetSourceCodePath(), '\$', 5) + SSH.open(EPC.IPAddress, EPC.UserName, EPC.Password) + SSH.command('cd ' + EPC.SourceCodePath, '\$', 5) SSH.command('cd scripts', '\$', 5) SSH.command('rm -f ping.log.zip', '\$', 5) SSH.command('zip ping.log.zip ping*.log', '\$', 60) @@ -2943,8 +2963,8 @@ class OaiCiTest(): SSH.close() def LogCollectIperf(self): - SSH.open(EPC.GetIPAddress(), EPC.GetUserName(), EPC.GetPassword()) - SSH.command('cd ' + EPC.GetSourceCodePath(), '\$', 5) + SSH.open(EPC.IPAddress, EPC.UserName, EPC.Password) + SSH.command('cd ' + EPC.SourceCodePath, '\$', 5) SSH.command('cd scripts', '\$', 5) SSH.command('rm -f iperf.log.zip', '\$', 5) SSH.command('zip iperf.log.zip iperf*.log', '\$', 60) @@ -2961,20 +2981,20 @@ class OaiCiTest(): SSH.close() def RetrieveSystemVersion(self, machine): - if RAN.GeteNBIPAddress() == 'none' or self.UEIPAddress == 'none': - HTML.SetOsVersion('Ubuntu 16.04.5 LTS', 0) - HTML.SetKernelVersion('4.15.0-45-generic', 0) - HTML.SetUhdVersion('3.13.0.1-0', 0) - HTML.SetUsrpBoard('B210', 0) - HTML.SetCpuNb('4', 0) - HTML.SetCpuModel('Intel(R) Core(TM) i5-6200U', 0) - HTML.SetCpuMHz('2399.996 MHz', 0) + if RAN.eNBIPAddress == 'none' or self.UEIPAddress == 'none': + HTML.OsVersion[0]='Ubuntu 16.04.5 LTS' + HTML.KernelVersion[0]='4.15.0-45-generic' + HTML.UhdVersion[0]='3.13.0.1-0' + HTML.UsrpBoard[0]='B210' + HTML.CpuNb[0]='4' + HTML.CpuModel[0]='Intel(R) Core(TM) i5-6200U' + HTML.CpuMHz[0]='2399.996 MHz' return 0 if machine == 'eNB': - if RAN.GeteNBIPAddress() != '' and RAN.GeteNBUserName() != '' and RAN.GeteNBPassword() != '': - IPAddress = RAN.GeteNBIPAddress() - UserName = RAN.GeteNBUserName() - Password = RAN.GeteNBPassword() + if RAN.eNBIPAddress != '' and RAN.eNBUserName != '' and RAN.eNBPassword != '': + IPAddress = RAN.eNBIPAddress + UserName = RAN.eNBUserName + Password = RAN.eNBPassword idx = 0 else: return -1 @@ -2993,7 +3013,7 @@ class OaiCiTest(): if result is not None: OsVersion = result.group('os_type') logging.debug('OS is: ' + OsVersion) - HTML.SetOsVersion(OsVersion, idx) + HTML.OsVersion[idx]=OsVersion else: SSH.command('hostnamectl', '\$', 5) result = re.search('Operating System: (?P[a-zA-Z0-9\-\_\.\ ]+)', SSH.getBefore()) @@ -3005,26 +3025,26 @@ class OaiCiTest(): if result is not None: OsVersion = OsVersion.replace('7 ', result.group('os_version')) logging.debug('OS is: ' + OsVersion) - HTML.SetOsVersion(OsVersion, idx) + HTML.OsVersion[idx]=OsVersion SSH.command('uname -r', '\$', 5) result = re.search('uname -r\\\\r\\\\n(?P[a-zA-Z0-9\-\_\.]+)', SSH.getBefore()) if result is not None: KernelVersion = result.group('kernel_version') logging.debug('Kernel Version is: ' + KernelVersion) - HTML.SetKernelVersion(KernelVersion, idx) + HTML.KernelVersion[idx]=KernelVersion SSH.command('dpkg --list | egrep --color=never libuhd003', '\$', 5) result = re.search('libuhd003:amd64 *(?P[0-9\.]+)', SSH.getBefore()) if result is not None: UhdVersion = result.group('uhd_version') logging.debug('UHD Version is: ' + UhdVersion) - HTML.SetUhdVersion(UhdVersion, idx) + HTML.UhdVersion[idx]=UhdVersion else: SSH.command('uhd_config_info --version', '\$', 5) result = re.search('UHD (?P[a-zA-Z0-9\.\-]+)', SSH.getBefore()) if result is not None: UhdVersion = result.group('uhd_version') logging.debug('UHD Version is: ' + UhdVersion) - HTML.SetUhdVersion(UhdVersion, idx) + HTML.UhdVersion[idx]=UhdVersion SSH.command('echo ' + Password + ' | sudo -S uhd_find_devices', '\$', 60) usrp_boards = re.findall('product: ([0-9A-Za-z]+)\\\\r\\\\n', SSH.getBefore()) count = 0 @@ -3036,99 +3056,132 @@ class OaiCiTest(): count += 1 if count > 0: logging.debug('USRP Board(s) : ' + UsrpBoard) - HTML.SetUsrpBoard(UsrpBoard, idx) + HTML.UsrpBoard[idx]=UsrpBoard SSH.command('lscpu', '\$', 5) result = re.search('CPU\(s\): *(?P[0-9]+).*Model name: *(?P[a-zA-Z0-9\-\_\.\ \(\)]+).*CPU MHz: *(?P[0-9\.]+)', SSH.getBefore()) if result is not None: CpuNb = result.group('nb_cpus') logging.debug('nb_cpus: ' + CpuNb) - HTML.SetCpuNb(CpuNb, idx) + HTML.CpuNb[idx]=CpuNb CpuModel = result.group('model') logging.debug('model: ' + CpuModel) - HTML.SetCpuModel(CpuModel, idx) + HTML.CpuModel[idx]=CpuModel CpuMHz = result.group('cpu_mhz') + ' MHz' logging.debug('cpu_mhz: ' + CpuMHz) - HTML.SetCpuMHz(CpuMHz, idx) + HTML.CpuMHz[idx]=CpuMHz SSH.close() -#----------------------------------------------------------- -# ShowTestID() -#----------------------------------------------------------- def ShowTestID(self): logging.debug('\u001B[1m----------------------------------------\u001B[0m') logging.debug('\u001B[1mTest ID:' + self.testCase_id + '\u001B[0m') logging.debug('\u001B[1m' + self.desc + '\u001B[0m') logging.debug('\u001B[1m----------------------------------------\u001B[0m') -def CheckClassValidity(action,id): - if action != 'Build_eNB' and action != 'WaitEndBuild_eNB' and action != 'Initialize_eNB' and action != 'Terminate_eNB' and action != 'Initialize_UE' and action != 'Terminate_UE' and action != 'Attach_UE' and action != 'Detach_UE' and action != 'Build_OAI_UE' and action != 'Initialize_OAI_UE' and action != 'Terminate_OAI_UE' and action != 'DataDisable_UE' and action != 'DataEnable_UE' and action != 'CheckStatusUE' and action != 'Ping' and action != 'Iperf' and action != 'Reboot_UE' and action != 'Initialize_FlexranCtrl' and action != 'Terminate_FlexranCtrl' and action != 'Initialize_HSS' and action != 'Terminate_HSS' and action != 'Initialize_MME' and action != 'Terminate_MME' and action != 'Initialize_SPGW' and action != 'Terminate_SPGW' and action != 'Initialize_CatM_module' and action != 'Terminate_CatM_module' and action != 'Attach_CatM_module' and action != 'Detach_CatM_module' and action != 'Ping_CatM_module' and action != 'IdleSleep' and action != 'Perform_X2_Handover': - logging.debug('ERROR: test-case ' + id + ' has wrong class ' + action) - return False - return True + + +#----------------------------------------------------------- +# General Functions +#----------------------------------------------------------- + + + +def CheckClassValidity(xml_class_list,action,id): + if action not in xml_class_list: + logging.debug('ERROR: test-case ' + id + ' has unlisted class ' + action + ' ##CHECK xml_class_list.yml') + resp=False + else: + resp=True + return resp + + +#assigning parameters to object instance attributes (even if the attributes do not exist !!) +def AssignParams(params_dict): + + for key,value in params_dict.items(): + setattr(CiTestObj, key, value) + setattr(RAN, key, value) + setattr(HTML, key, value) + setattr(ldpc, key, value) + + def GetParametersFromXML(action): if action == 'Build_eNB': - RAN.SetBuild_eNB_args(test.findtext('Build_eNB_args')) + RAN.Build_eNB_args=test.findtext('Build_eNB_args') forced_workspace_cleanup = test.findtext('forced_workspace_cleanup') if (forced_workspace_cleanup is None): - RAN.SetBuild_eNB_forced_workspace_cleanup(False) + RAN.Build_eNB_forced_workspace_cleanup=False else: if re.match('true', forced_workspace_cleanup, re.IGNORECASE): - RAN.SetBuild_eNB_forced_workspace_cleanup(True) + RAN.Build_eNB_forced_workspace_cleanup=True else: - RAN.SetBuild_eNB_forced_workspace_cleanup(False) - RAN.SeteNB_instance(test.findtext('eNB_instance')) - if (RAN.GeteNB_instance() is None): - RAN.SeteNB_instance('0') - RAN.SeteNB_serverId(test.findtext('eNB_serverId')) - if (RAN.GeteNB_serverId() is None): - RAN.SeteNB_serverId('0') + RAN.Build_eNB_forced_workspace_cleanup=False + eNB_instance=test.findtext('eNB_instance') + if (eNB_instance is None): + RAN.eNB_instance=0 + else: + RAN.eNB_instance=int(eNB_instance) + RAN.eNB_serverId=test.findtext('eNB_serverId') + if (RAN.eNB_serverId is None): + RAN.eNB_serverId='0' xmlBgBuildField = test.findtext('backgroundBuild') if (xmlBgBuildField is None): - RAN.SetbackgroundBuild(False) + RAN.backgroundBuild=False else: if re.match('true', xmlBgBuildField, re.IGNORECASE): - RAN.SetbackgroundBuild(True) + RAN.backgroundBuild=True else: - RAN.SetbackgroundBuild(False) + RAN.backgroundBuild=False if action == 'WaitEndBuild_eNB': - RAN.SetBuild_eNB_args(test.findtext('Build_eNB_args')) - RAN.SeteNB_instance(test.findtext('eNB_instance')) - if (RAN.GeteNB_instance() is None): - RAN.SeteNB_instance('0') - RAN.SeteNB_serverId(test.findtext('eNB_serverId')) - if (RAN.GeteNB_serverId() is None): - RAN.SeteNB_serverId('0') + RAN.Build_eNB_args=test.findtext('Build_eNB_args') + eNB_instance=test.findtext('eNB_instance') + if (eNB_instance is None): + RAN.eNB_instance=0 + else: + RAN.eNB_instance=int(eNB_instance) + RAN.eNB_serverId=test.findtext('eNB_serverId') + if (RAN.eNB_serverId is None): + RAN.eNB_serverId='0' if action == 'Initialize_eNB': - RAN.SetInitialize_eNB_args(test.findtext('Initialize_eNB_args')) - RAN.SeteNB_instance(test.findtext('eNB_instance')) - if (RAN.GeteNB_instance() is None): - RAN.SeteNB_instance('0') - RAN.SeteNB_serverId(test.findtext('eNB_serverId')) - if (RAN.GeteNB_serverId() is None): - RAN.SeteNB_serverId('0') - CiTestObj.air_interface = test.findtext('air_interface') - if (CiTestObj.air_interface is None): - CiTestObj.air_interface = 'lte' + RAN.Initialize_eNB_args=test.findtext('Initialize_eNB_args') + eNB_instance=test.findtext('eNB_instance') + if (eNB_instance is None): + RAN.eNB_instance=0 else: - CiTestObj.air_interface = CiTestObj.air_interface.lower() - RAN.Setair_interface(CiTestObj.air_interface) + RAN.eNB_instance=int(eNB_instance) + RAN.eNB_serverId=test.findtext('eNB_serverId') + if (RAN.eNB_serverId is None): + RAN.eNB_serverId='0' + + #local variable air_interface + air_interface = test.findtext('air_interface') + if (air_interface is None) or (air_interface.lower() not in ['nr','lte','ocp']): + RAN.air_interface[RAN.eNB_instance] = 'lte-softmodem' + elif (air_interface.lower() in ['nr','lte']): + RAN.air_interface[RAN.eNB_instance] = air_interface.lower() +'-softmodem' + else : + RAN.air_interface[RAN.eNB_instance] = 'ocp-enb' if action == 'Terminate_eNB': - RAN.SeteNB_instance(test.findtext('eNB_instance')) - if (RAN.GeteNB_instance() is None): - RAN.SeteNB_instance('0') - RAN.SeteNB_serverId(test.findtext('eNB_serverId')) - if (RAN.GeteNB_serverId() is None): - RAN.SeteNB_serverId('0') - CiTestObj.air_interface = test.findtext('air_interface') - if (CiTestObj.air_interface is None): - CiTestObj.air_interface = 'lte' + eNB_instance=test.findtext('eNB_instance') + if (eNB_instance is None): + RAN.eNB_instance=0 else: - CiTestObj.air_interface = CiTestObj.air_interface.lower() - RAN.Setair_interface(CiTestObj.air_interface) + RAN.eNB_instance=int(eNB_instance) + RAN.eNB_serverId=test.findtext('eNB_serverId') + if (RAN.eNB_serverId is None): + RAN.eNB_serverId='0' + + #local variable air_interface + air_interface = test.findtext('air_interface') + if (air_interface is None) or (air_interface.lower() not in ['nr','lte','ocp']): + RAN.air_interface[RAN.eNB_instance] = 'lte-softmodem' + elif (air_interface.lower() in ['nr','lte']): + RAN.air_interface[RAN.eNB_instance] = air_interface.lower() +'-softmodem' + else : + RAN.air_interface[RAN.eNB_instance] = 'ocp-enb' if action == 'Attach_UE': nbMaxUEtoAttach = test.findtext('nbMaxUEtoAttach') @@ -3154,19 +3207,38 @@ def GetParametersFromXML(action): if action == 'Initialize_OAI_UE': CiTestObj.Initialize_OAI_UE_args = test.findtext('Initialize_OAI_UE_args') - CiTestObj.UE_instance = test.findtext('UE_instance') - if (CiTestObj.UE_instance is None): - CiTestObj.UE_instance = '0' - CiTestObj.air_interface = test.findtext('air_interface') - if (CiTestObj.air_interface is None): - CiTestObj.air_interface = 'lte' + UE_instance = test.findtext('UE_instance') + if (UE_instance is None): + CiTestObj.UE_instance = 0 else: - CiTestObj.air_interface = CiTestObj.air_interface.lower() + CiTestObj.UE_instance = UE_instance + + #local variable air_interface + air_interface = test.findtext('air_interface') + if (air_interface is None) or (air_interface.lower() not in ['nr','lte','ocp']): + CiTestObj.air_interface = 'lte-uesoftmodem' + elif (air_interface.lower() in ['nr','lte']): + CiTestObj.air_interface = air_interface.lower() +'-uesoftmodem' + else : + #CiTestObj.air_interface = 'ocp-enb' + logging.error('OCP UE -- NOT SUPPORTED') if action == 'Terminate_OAI_UE': - RAN.SeteNB_instance(test.findtext('UE_instance')) - if (CiTestObj.UE_instance is None): + UE_instance=test.findtext('UE_instance') + if (UE_instance is None): CiTestObj.UE_instance = '0' + else: + CiTestObj.UE_instance = int(UE_instance) + + #local variable air_interface + air_interface = test.findtext('air_interface') + if (air_interface is None) or (air_interface.lower() not in ['nr','lte','ocp']): + CiTestObj.air_interface = 'lte-uesoftmodem' + elif (air_interface.lower() in ['nr','lte']): + CiTestObj.air_interface = air_interface.lower() +'-uesoftmodem' + else : + #CiTestObj.air_interface = 'ocp-enb' + logging.error('OCP UE -- NOT SUPPORTED') if action == 'Ping' or action == 'Ping_CatM_module': CiTestObj.ping_args = test.findtext('ping_args') @@ -3208,6 +3280,22 @@ def GetParametersFromXML(action): else: CiTestObj.x2_ho_options = string_field + if action == 'Build_PhySim': + ldpc.buildargs = test.findtext('physim_build_args') + forced_workspace_cleanup = test.findtext('forced_workspace_cleanup') + if (forced_workspace_cleanup is None): + ldpc.forced_workspace_cleanup=False + else: + if re.match('true', forced_workspace_cleanup, re.IGNORECASE): + ldpc.forced_workspace_cleanup=True + else: + ldpc.forced_workspace_cleanup=False + + if action == 'Run_PhySim': + ldpc.runargs = test.findtext('physim_run_args') + + if action == 'COTS_UE_Airplane': + COTS_UE.runargs = test.findtext('cots_ue_airplane_args') #check if given test is in list #it is in list if one of the strings in 'list' is at the beginning of 'test' @@ -3221,195 +3309,88 @@ def test_in_list(test, list): def receive_signal(signum, frame): sys.exit(1) -#----------------------------------------------------------- -# Parameter Check -#----------------------------------------------------------- -mode = '' -CiTestObj = OaiCiTest() -import sshconnection -import epc -import helpreadme as HELP -import ran -import html -import constants + + + + +#----------------------------------------------------------- +# MAIN PART +#----------------------------------------------------------- + +#loading xml action list from yaml +import yaml +xml_class_list_file='' +if (os.path.isfile('xml_class_list.yml')): + xml_class_list_file='xml_class_list.yml' +if (os.path.isfile('ci-scripts/xml_class_list.yml')): + xml_class_list_file='ci-scripts/xml_class_list.yml' +with open(xml_class_list_file,'r') as file: + # The FullLoader parameter handles the conversion from YAML + # scalar values to Python the dictionary format + xml_class_list = yaml.load(file,Loader=yaml.FullLoader) + +mode = '' + +CiTestObj = OaiCiTest() SSH = sshconnection.SSHConnection() EPC = epc.EPCManagement() RAN = ran.RANManagement() HTML = html.HTMLManagement() -EPC.SetHtmlObj(HTML) -RAN.SetHtmlObj(HTML) -RAN.SetEpcObj(EPC) +EPC.htmlObj=HTML +RAN.htmlObj=HTML +RAN.epcObj=EPC -argvs = sys.argv -argc = len(argvs) + +ldpc=cls_physim.PhySim() #create an instance for LDPC test using GPU or CPU build + + + +#----------------------------------------------------------- +# Parsing Command Line Arguments +#----------------------------------------------------------- + +import args_parse +py_param_file_present, py_params, mode = args_parse.ArgsParse(sys.argv,CiTestObj,RAN,HTML,EPC,ldpc,HELP) + + + +#----------------------------------------------------------- +# TEMPORARY params management +#----------------------------------------------------------- +#temporary solution for testing: +if py_param_file_present == True: + AssignParams(py_params) + +#for debug +#print(RAN.__dict__) +#print(CiTestObj.__dict__) +#print(HTML.__dict__) +#print(ldpc.__dict__) +#for debug + + +#----------------------------------------------------------- +# COTS UE instanciation +#----------------------------------------------------------- +#COTS_UE instanciation can only be done here for the moment, due to code architecture +COTS_UE=cls_cots_ue.CotsUe('oppo', CiTestObj.UEIPAddress, CiTestObj.UEUserName,CiTestObj.UEPassword) + + +#----------------------------------------------------------- +# XML class (action) analysis +#----------------------------------------------------------- cwd = os.getcwd() -while len(argvs) > 1: - myArgv = argvs.pop(1) # 0th is this file's name - - if re.match('^\-\-help$', myArgv, re.IGNORECASE): - HELP.GenericHelp(CONST.Version) - sys.exit(0) - elif re.match('^\-\-mode=(.+)$', myArgv, re.IGNORECASE): - matchReg = re.match('^\-\-mode=(.+)$', myArgv, re.IGNORECASE) - mode = matchReg.group(1) - elif re.match('^\-\-eNBRepository=(.+)$|^\-\-ranRepository(.+)$', myArgv, re.IGNORECASE): - if re.match('^\-\-eNBRepository=(.+)$', myArgv, re.IGNORECASE): - matchReg = re.match('^\-\-eNBRepository=(.+)$', myArgv, re.IGNORECASE) - else: - matchReg = re.match('^\-\-ranRepository=(.+)$', myArgv, re.IGNORECASE) - CiTestObj.ranRepository = matchReg.group(1) - RAN.SetranRepository(matchReg.group(1)) - HTML.SetranRepository(matchReg.group(1)) - elif re.match('^\-\-eNB_AllowMerge=(.+)$|^\-\-ranAllowMerge=(.+)$', myArgv, re.IGNORECASE): - if re.match('^\-\-eNB_AllowMerge=(.+)$', myArgv, re.IGNORECASE): - matchReg = re.match('^\-\-eNB_AllowMerge=(.+)$', myArgv, re.IGNORECASE) - else: - matchReg = re.match('^\-\-ranAllowMerge=(.+)$', myArgv, re.IGNORECASE) - doMerge = matchReg.group(1) - if ((doMerge == 'true') or (doMerge == 'True')): - CiTestObj.ranAllowMerge = True - RAN.SetranAllowMerge(True) - HTML.SetranAllowMerge(True) - elif re.match('^\-\-eNBBranch=(.+)$|^\-\-ranBranch=(.+)$', myArgv, re.IGNORECASE): - if re.match('^\-\-eNBBranch=(.+)$', myArgv, re.IGNORECASE): - matchReg = re.match('^\-\-eNBBranch=(.+)$', myArgv, re.IGNORECASE) - else: - matchReg = re.match('^\-\-ranBranch=(.+)$', myArgv, re.IGNORECASE) - CiTestObj.ranBranch = matchReg.group(1) - RAN.SetranBranch(matchReg.group(1)) - HTML.SetranBranch(matchReg.group(1)) - elif re.match('^\-\-eNBCommitID=(.*)$|^\-\-ranCommitID=(.*)$', myArgv, re.IGNORECASE): - if re.match('^\-\-eNBCommitID=(.*)$', myArgv, re.IGNORECASE): - matchReg = re.match('^\-\-eNBCommitID=(.*)$', myArgv, re.IGNORECASE) - else: - matchReg = re.match('^\-\-ranCommitID=(.*)$', myArgv, re.IGNORECASE) - CiTestObj.ranCommitID = matchReg.group(1) - RAN.SetranCommitID(matchReg.group(1)) - HTML.SetranCommitID(matchReg.group(1)) - elif re.match('^\-\-eNBTargetBranch=(.*)$|^\-\-ranTargetBranch=(.*)$', myArgv, re.IGNORECASE): - if re.match('^\-\-eNBTargetBranch=(.*)$', myArgv, re.IGNORECASE): - matchReg = re.match('^\-\-eNBTargetBranch=(.*)$', myArgv, re.IGNORECASE) - else: - matchReg = re.match('^\-\-ranTargetBranch=(.*)$', myArgv, re.IGNORECASE) - CiTestObj.ranTargetBranch = matchReg.group(1) - RAN.SetranTargetBranch(matchReg.group(1)) - HTML.SetranTargetBranch(matchReg.group(1)) - elif re.match('^\-\-eNBIPAddress=(.+)$|^\-\-eNB[1-2]IPAddress=(.+)$', myArgv, re.IGNORECASE): - if re.match('^\-\-eNBIPAddress=(.+)$', myArgv, re.IGNORECASE): - matchReg = re.match('^\-\-eNBIPAddress=(.+)$', myArgv, re.IGNORECASE) - RAN.SeteNBIPAddress(matchReg.group(1)) - elif re.match('^\-\-eNB1IPAddress=(.+)$', myArgv, re.IGNORECASE): - matchReg = re.match('^\-\-eNB1IPAddress=(.+)$', myArgv, re.IGNORECASE) - RAN.SeteNB1IPAddress(matchReg.group(1)) - elif re.match('^\-\-eNB2IPAddress=(.+)$', myArgv, re.IGNORECASE): - matchReg = re.match('^\-\-eNB2IPAddress=(.+)$', myArgv, re.IGNORECASE) - RAN.SeteNB2IPAddress(matchReg.group(1)) - elif re.match('^\-\-eNBUserName=(.+)$|^\-\-eNB[1-2]UserName=(.+)$', myArgv, re.IGNORECASE): - if re.match('^\-\-eNBUserName=(.+)$', myArgv, re.IGNORECASE): - matchReg = re.match('^\-\-eNBUserName=(.+)$', myArgv, re.IGNORECASE) - RAN.SeteNBUserName(matchReg.group(1)) - elif re.match('^\-\-eNB1UserName=(.+)$', myArgv, re.IGNORECASE): - matchReg = re.match('^\-\-eNB1UserName=(.+)$', myArgv, re.IGNORECASE) - RAN.SeteNB1UserName(matchReg.group(1)) - elif re.match('^\-\-eNB2UserName=(.+)$', myArgv, re.IGNORECASE): - matchReg = re.match('^\-\-eNB2UserName=(.+)$', myArgv, re.IGNORECASE) - RAN.SeteNB2UserName(matchReg.group(1)) - elif re.match('^\-\-eNBPassword=(.+)$|^\-\-eNB[1-2]Password=(.+)$', myArgv, re.IGNORECASE): - if re.match('^\-\-eNBPassword=(.+)$', myArgv, re.IGNORECASE): - matchReg = re.match('^\-\-eNBPassword=(.+)$', myArgv, re.IGNORECASE) - RAN.SeteNBPassword(matchReg.group(1)) - elif re.match('^\-\-eNB1Password=(.+)$', myArgv, re.IGNORECASE): - matchReg = re.match('^\-\-eNB1Password=(.+)$', myArgv, re.IGNORECASE) - RAN.SeteNB1Password(matchReg.group(1)) - elif re.match('^\-\-eNB2Password=(.+)$', myArgv, re.IGNORECASE): - matchReg = re.match('^\-\-eNB2Password=(.+)$', myArgv, re.IGNORECASE) - RAN.SeteNB2Password(matchReg.group(1)) - elif re.match('^\-\-eNBSourceCodePath=(.+)$|^\-\-eNB[1-2]SourceCodePath=(.+)$', myArgv, re.IGNORECASE): - if re.match('^\-\-eNBSourceCodePath=(.+)$', myArgv, re.IGNORECASE): - matchReg = re.match('^\-\-eNBSourceCodePath=(.+)$', myArgv, re.IGNORECASE) - RAN.SeteNBSourceCodePath(matchReg.group(1)) - elif re.match('^\-\-eNB1SourceCodePath=(.+)$', myArgv, re.IGNORECASE): - matchReg = re.match('^\-\-eNB1SourceCodePath=(.+)$', myArgv, re.IGNORECASE) - RAN.SeteNB1SourceCodePath(matchReg.group(1)) - elif re.match('^\-\-eNB2SourceCodePath=(.+)$', myArgv, re.IGNORECASE): - matchReg = re.match('^\-\-eNB2SourceCodePath=(.+)$', myArgv, re.IGNORECASE) - RAN.SeteNB2SourceCodePath(matchReg.group(1)) - elif re.match('^\-\-EPCIPAddress=(.+)$', myArgv, re.IGNORECASE): - matchReg = re.match('^\-\-EPCIPAddress=(.+)$', myArgv, re.IGNORECASE) - EPC.SetIPAddress(matchReg.group(1)) - elif re.match('^\-\-EPCUserName=(.+)$', myArgv, re.IGNORECASE): - matchReg = re.match('^\-\-EPCUserName=(.+)$', myArgv, re.IGNORECASE) - EPC.SetUserName(matchReg.group(1)) - elif re.match('^\-\-EPCPassword=(.+)$', myArgv, re.IGNORECASE): - matchReg = re.match('^\-\-EPCPassword=(.+)$', myArgv, re.IGNORECASE) - EPC.SetPassword(matchReg.group(1)) - elif re.match('^\-\-EPCSourceCodePath=(.+)$', myArgv, re.IGNORECASE): - matchReg = re.match('^\-\-EPCSourceCodePath=(.+)$', myArgv, re.IGNORECASE) - EPC.SetSourceCodePath(matchReg.group(1)) - elif re.match('^\-\-EPCType=(.+)$', myArgv, re.IGNORECASE): - matchReg = re.match('^\-\-EPCType=(.+)$', myArgv, re.IGNORECASE) - if re.match('OAI', matchReg.group(1), re.IGNORECASE) or re.match('ltebox', matchReg.group(1), re.IGNORECASE) or re.match('OAI-Rel14-CUPS', matchReg.group(1), re.IGNORECASE) or re.match('OAI-Rel14-Docker', matchReg.group(1), re.IGNORECASE): - EPC.SetType(matchReg.group(1)) - else: - sys.exit('Invalid EPC Type: ' + matchReg.group(1) + ' -- (should be OAI or ltebox or OAI-Rel14-CUPS or OAI-Rel14-Docker)') - elif re.match('^\-\-EPCContainerPrefix=(.+)$', myArgv, re.IGNORECASE): - matchReg = re.match('^\-\-EPCContainerPrefix=(.+)$', myArgv, re.IGNORECASE) - EPC.SetContainerPrefix(matchReg.group(1)) - elif re.match('^\-\-ADBIPAddress=(.+)$', myArgv, re.IGNORECASE): - matchReg = re.match('^\-\-ADBIPAddress=(.+)$', myArgv, re.IGNORECASE) - CiTestObj.ADBIPAddress = matchReg.group(1) - elif re.match('^\-\-ADBUserName=(.+)$', myArgv, re.IGNORECASE): - matchReg = re.match('^\-\-ADBUserName=(.+)$', myArgv, re.IGNORECASE) - CiTestObj.ADBUserName = matchReg.group(1) - elif re.match('^\-\-ADBType=(.+)$', myArgv, re.IGNORECASE): - matchReg = re.match('^\-\-ADBType=(.+)$', myArgv, re.IGNORECASE) - if re.match('centralized', matchReg.group(1), re.IGNORECASE) or re.match('distributed', matchReg.group(1), re.IGNORECASE): - if re.match('distributed', matchReg.group(1), re.IGNORECASE): - CiTestObj.ADBCentralized = False - else: - CiTestObj.ADBCentralized = True - else: - sys.exit('Invalid ADB Type: ' + matchReg.group(1) + ' -- (should be centralized or distributed)') - elif re.match('^\-\-ADBPassword=(.+)$', myArgv, re.IGNORECASE): - matchReg = re.match('^\-\-ADBPassword=(.+)$', myArgv, re.IGNORECASE) - CiTestObj.ADBPassword = matchReg.group(1) - elif re.match('^\-\-XMLTestFile=(.+)$', myArgv, re.IGNORECASE): - matchReg = re.match('^\-\-XMLTestFile=(.+)$', myArgv, re.IGNORECASE) - CiTestObj.testXMLfiles.append(matchReg.group(1)) - HTML.SettestXMLfiles(matchReg.group(1)) - HTML.SetnbTestXMLfiles(HTML.GetnbTestXMLfiles()+1) - elif re.match('^\-\-UEIPAddress=(.+)$', myArgv, re.IGNORECASE): - matchReg = re.match('^\-\-UEIPAddress=(.+)$', myArgv, re.IGNORECASE) - CiTestObj.UEIPAddress = matchReg.group(1) - elif re.match('^\-\-UEUserName=(.+)$', myArgv, re.IGNORECASE): - matchReg = re.match('^\-\-UEUserName=(.+)$', myArgv, re.IGNORECASE) - CiTestObj.UEUserName = matchReg.group(1) - elif re.match('^\-\-UEPassword=(.+)$', myArgv, re.IGNORECASE): - matchReg = re.match('^\-\-UEPassword=(.+)$', myArgv, re.IGNORECASE) - CiTestObj.UEPassword = matchReg.group(1) - elif re.match('^\-\-UESourceCodePath=(.+)$', myArgv, re.IGNORECASE): - matchReg = re.match('^\-\-UESourceCodePath=(.+)$', myArgv, re.IGNORECASE) - CiTestObj.UESourceCodePath = matchReg.group(1) - elif re.match('^\-\-finalStatus=(.+)$', myArgv, re.IGNORECASE): - matchReg = re.match('^\-\-finalStatus=(.+)$', myArgv, re.IGNORECASE) - finalStatus = matchReg.group(1) - if ((finalStatus == 'true') or (finalStatus == 'True')): - CiTestObj.finalStatus = True - else: - HELP.GenericHelp(CONST.Version) - sys.exit('Invalid Parameter: ' + myArgv) - if re.match('^TerminateeNB$', mode, re.IGNORECASE): - if RAN.GeteNBIPAddress() == '' or RAN.GeteNBUserName() == '' or RAN.GeteNBPassword() == '': + if RAN.eNBIPAddress == '' or RAN.eNBUserName == '' or RAN.eNBPassword == '': HELP.GenericHelp(CONST.Version) sys.exit('Insufficient Parameter') - RAN.SeteNB_serverId('0') - RAN.SeteNB_instance('0') - RAN.SeteNBSourceCodePath('/tmp/') + RAN.eNB_serverId='0' + RAN.eNB_instance=0 + RAN.eNBSourceCodePath='/tmp/' RAN.TerminateeNB() elif re.match('^TerminateUE$', mode, re.IGNORECASE): if (CiTestObj.ADBIPAddress == '' or CiTestObj.ADBUserName == '' or CiTestObj.ADBPassword == ''): @@ -3424,52 +3405,52 @@ elif re.match('^TerminateOAIUE$', mode, re.IGNORECASE): signal.signal(signal.SIGUSR1, receive_signal) CiTestObj.TerminateOAIUE() elif re.match('^TerminateHSS$', mode, re.IGNORECASE): - if EPC.GetIPAddress() == '' or EPC.GetUserName() == '' or EPC.GetPassword() == '' or EPC.GetType() == '' or EPC.GetSourceCodePath() == '': + if EPC.IPAddress == '' or EPC.UserName == '' or EPC.Password == '' or EPC.Type == '' or EPC.SourceCodePath == '': HELP.GenericHelp(CONST.Version) sys.exit('Insufficient Parameter') EPC.TerminateHSS() elif re.match('^TerminateMME$', mode, re.IGNORECASE): - if EPC.GetIPAddress() == '' or EPC.GetUserName() == '' or EPC.GetPassword() == '' or EPC.GetType() == '' or EPC.GetSourceCodePath() == '': + if EPC.IPAddress == '' or EPC.UserName == '' or EPC.Password == '' or EPC.Type == '' or EPC.SourceCodePath == '': HELP.GenericHelp(CONST.Version) sys.exit('Insufficient Parameter') EPC.TerminateMME() elif re.match('^TerminateSPGW$', mode, re.IGNORECASE): - if EPC.GetIPAddress() == '' or EPC.GetUserName() == '' or EPC.GetPassword() == '' or EPC.GetType() == '' or EPC.GetSourceCodePath() == '': + if EPC.IPAddress == '' or EPC.UserName == '' or EPC.Password == '' or EPC.Type == '' or EPC.SourceCodePath== '': HELP.GenericHelp(CONST.Version) sys.exit('Insufficient Parameter') EPC.TerminateSPGW() elif re.match('^LogCollectBuild$', mode, re.IGNORECASE): - if (RAN.GeteNBIPAddress() == '' or RAN.GeteNBUserName() == '' or RAN.GeteNBPassword() == '' or RAN.GeteNBSourceCodePath() == '') and (CiTestObj.UEIPAddress == '' or CiTestObj.UEUserName == '' or CiTestObj.UEPassword == '' or CiTestObj.UESourceCodePath == ''): + if (RAN.eNBIPAddress == '' or RAN.eNBUserName == '' or RAN.eNBPassword == '' or RAN.eNBSourceCodePath == '') and (CiTestObj.UEIPAddress == '' or CiTestObj.UEUserName == '' or CiTestObj.UEPassword == '' or CiTestObj.UESourceCodePath == ''): HELP.GenericHelp(CONST.Version) sys.exit('Insufficient Parameter') CiTestObj.LogCollectBuild() elif re.match('^LogCollecteNB$', mode, re.IGNORECASE): - if RAN.GeteNBIPAddress() == '' or RAN.GeteNBUserName() == '' or RAN.GeteNBPassword() == '' or RAN.GeteNBSourceCodePath() == '': + if RAN.eNBIPAddress == '' or RAN.eNBUserName == '' or RAN.eNBPassword == '' or RAN.eNBSourceCodePath == '': HELP.GenericHelp(CONST.Version) sys.exit('Insufficient Parameter') RAN.LogCollecteNB() elif re.match('^LogCollectHSS$', mode, re.IGNORECASE): - if EPC.GetIPAddress() == '' or EPC.GetUserName() == '' or EPC.GetPassword() == '' or EPC.GetType() == '' or EPC.GetSourceCodePath() == '': + if EPC.IPAddress == '' or EPC.UserName == '' or EPC.Password == '' or EPC.Type == '' or EPC.SourceCodePath == '': HELP.GenericHelp(CONST.Version) sys.exit('Insufficient Parameter') EPC.LogCollectHSS() elif re.match('^LogCollectMME$', mode, re.IGNORECASE): - if EPC.GetIPAddress() == '' or EPC.GetUserName() == '' or EPC.GetPassword() == '' or EPC.GetType() == '' or EPC.GetSourceCodePath() == '': + if EPC.IPAddress == '' or EPC.UserName == '' or EPC.Password == '' or EPC.Type == '' or EPC.SourceCodePath == '': HELP.GenericHelp(CONST.Version) sys.exit('Insufficient Parameter') EPC.LogCollectMME() elif re.match('^LogCollectSPGW$', mode, re.IGNORECASE): - if EPC.GetIPAddress() == '' or EPC.GetUserName() == '' or EPC.GetPassword() == '' or EPC.GetType() == '' or EPC.GetSourceCodePath() == '': + if EPC.IPAddress == '' or EPC.UserName == '' or EPC.Password == '' or EPC.Type == '' or EPC.SourceCodePath == '': HELP.GenericHelp(CONST.Version) sys.exit('Insufficient Parameter') EPC.LogCollectSPGW() elif re.match('^LogCollectPing$', mode, re.IGNORECASE): - if EPC.GetIPAddress() == '' or EPC.GetUserName() == '' or EPC.GetPassword() == '' or EPC.GetSourceCodePath() == '': + if EPC.IPAddress == '' or EPC.UserName == '' or EPC.Password == '' or EPC.SourceCodePath == '': HELP.GenericHelp(CONST.Version) sys.exit('Insufficient Parameter') CiTestObj.LogCollectPing() elif re.match('^LogCollectIperf$', mode, re.IGNORECASE): - if EPC.GetIPAddress() == '' or EPC.GetUserName() == '' or EPC.GetPassword() == '' or EPC.GetSourceCodePath() == '': + if EPC.IPAddress == '' or EPC.UserName == '' or EPC.Password == '' or EPC.SourceCodePath == '': HELP.GenericHelp(CONST.Version) sys.exit('Insufficient Parameter') CiTestObj.LogCollectIperf() @@ -3484,7 +3465,7 @@ elif re.match('^InitiateHtml$', mode, re.IGNORECASE): sys.exit('Insufficient Parameter') count = 0 foundCount = 0 - while (count < HTML.GetnbTestXMLfiles()): + while (count < HTML.nbTestXMLfiles): #xml_test_file = cwd + "/" + CiTestObj.testXMLfiles[count] xml_test_file = sys.path[0] + "/" + CiTestObj.testXMLfiles[count] if (os.path.isfile(xml_test_file)): @@ -3493,21 +3474,21 @@ elif re.match('^InitiateHtml$', mode, re.IGNORECASE): except: print("Error while parsing file: " + xml_test_file) xmlRoot = xmlTree.getroot() - HTML.SethtmlTabRefs(xmlRoot.findtext('htmlTabRef',default='test-tab-' + str(count))) - HTML.SethtmlTabNames(xmlRoot.findtext('htmlTabName',default='test-tab-' + str(count))) - HTML.SethtmlTabIcons(xmlRoot.findtext('htmlTabIcon',default='info-sign')) + HTML.htmlTabRefs.append(xmlRoot.findtext('htmlTabRef',default='test-tab-' + str(count))) + HTML.htmlTabNames.append(xmlRoot.findtext('htmlTabName',default='test-tab-' + str(count))) + HTML.htmlTabIcons.append(xmlRoot.findtext('htmlTabIcon',default='info-sign')) foundCount += 1 count += 1 - if foundCount != HTML.GetnbTestXMLfiles(): - HTML.SetnbTestXMLfiles(foundcount) + if foundCount != HTML.nbTestXMLfiles: + HTML.nbTestXMLfiles=foundCount if (CiTestObj.ADBIPAddress != 'none'): terminate_ue_flag = False CiTestObj.GetAllUEDevices(terminate_ue_flag) CiTestObj.GetAllCatMDevices(terminate_ue_flag) HTML.SethtmlUEConnected(len(CiTestObj.UEDevices) + len(CiTestObj.CatMDevices)) - HTML.SethtmlNb_Smartphones(len(CiTestObj.UEDevices)) - HTML.SethtmlNb_CATM_Modules(len(CiTestObj.CatMDevices)) + HTML.htmlNb_Smartphones=len(CiTestObj.UEDevices) + HTML.htmlNb_CATM_Modules=len(CiTestObj.CatMDevices) HTML.CreateHtmlHeader(CiTestObj.ADBIPAddress) elif re.match('^FinalizeHtml$', mode, re.IGNORECASE): logging.debug('\u001B[1m----------------------------------------\u001B[0m') @@ -3519,19 +3500,19 @@ elif re.match('^FinalizeHtml$', mode, re.IGNORECASE): HTML.CreateHtmlFooter(CiTestObj.finalStatus) elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re.IGNORECASE): if re.match('^TesteNB$', mode, re.IGNORECASE): - if RAN.GeteNBIPAddress() == '' or RAN.GetranRepository() == '' or RAN.GetranBranch() == '' or RAN.GeteNBUserName() == '' or RAN.GeteNBPassword() == '' or RAN.GeteNBSourceCodePath() == '' or EPC.GetIPAddress() == '' or EPC.GetUserName() == '' or EPC.GetPassword() == '' or EPC.GetType() == '' or EPC.GetSourceCodePath() == '' or CiTestObj.ADBIPAddress == '' or CiTestObj.ADBUserName == '' or CiTestObj.ADBPassword == '': + if RAN.eNBIPAddress == '' or RAN.ranRepository == '' or RAN.ranBranch == '' or RAN.eNBUserName == '' or RAN.eNBPassword == '' or RAN.eNBSourceCodePath == '' or EPC.IPAddress == '' or EPC.UserName == '' or EPC.Password == '' or EPC.Type == '' or EPC.SourceCodePath == '' or CiTestObj.ADBIPAddress == '' or CiTestObj.ADBUserName == '' or CiTestObj.ADBPassword == '': HELP.GenericHelp(CONST.Version) - if EPC.GetIPAddress() == '' or EPC.GetUserName() == '' or EPC.GetPassword() == '' or EPC.GetSourceCodePath() == '' or EPC.GetType() == '': - HELP.EPCSrvHelp(EPC.GetIPAddress(), EPC.GetUserName(), EPC.GetPassword(), EPC.GetSourceCodePath(), EPC.GetType()) - if RAN.GetranRepository() == '': - HELP.GitSrvHelp(RAN.GetranRepository(), RAN.GetranBranch(), RAN.GetranCommitID(), RAN.GetranAllowMerge(), RAN.GetranTargetBranch()) - if RAN.GeteNBIPAddress() == '' or RAN.GeteNBUserName() == '' or RAN.GeteNBPassword() == '' or RAN.GeteNBSourceCodePath() == '': - HELP.eNBSrvHelp(RAN.GeteNBIPAddress(), RAN.GeteNBUserName(), RAN.GeteNBPassword(), RAN.GeteNBSourceCodePath()) + if EPC.IPAddress == '' or EPC.UserName == '' or EPC.Password == '' or EPC.SourceCodePath == '' or EPC.Type == '': + HELP.EPCSrvHelp(EPC.IPAddress, EPC.UserName, EPC.Password, EPC.SourceCodePath, EPC.Type) + if RAN.ranRepository == '': + HELP.GitSrvHelp(RAN.ranRepository, RAN.ranBranch, RAN.ranCommitID, RAN.ranAllowMerge, RAN.ranTargetBranch) + if RAN.eNBIPAddress == '' or RAN.eNBUserName == '' or RAN.eNBPassword == '' or RAN.eNBSourceCodePath == '': + HELP.eNBSrvHelp(RAN.eNBIPAddress, RAN.eNBUserName, RAN.eNBPassword, RAN.eNBSourceCodePath) sys.exit('Insufficient Parameter') - if (EPC.GetIPAddress() != '') and (EPC.GetIPAddress() != 'none'): - SSH.copyout(EPC.GetIPAddress(), EPC.GetUserName(), EPC.GetPassword(), cwd + "/tcp_iperf_stats.awk", "/tmp") - SSH.copyout(EPC.GetIPAddress(), EPC.GetUserName(), EPC.GetPassword(), cwd + "/active_net_interfaces.awk", "/tmp") + if (EPC.IPAddress!= '') and (EPC.IPAddress != 'none'): + SSH.copyout(EPC.IPAddress, EPC.UserName, EPC.Password, cwd + "/tcp_iperf_stats.awk", "/tmp") + SSH.copyout(EPC.IPAddress, EPC.UserName, EPC.Password, cwd + "/active_net_interfaces.awk", "/tmp") else: if CiTestObj.UEIPAddress == '' or CiTestObj.ranRepository == '' or CiTestObj.ranBranch == '' or CiTestObj.UEUserName == '' or CiTestObj.UEPassword == '' or CiTestObj.UESourceCodePath == '': HELP.GenericHelp(CONST.Version) @@ -3539,7 +3520,7 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re #read test_case_list.xml file # if no parameters for XML file, use default value - if (HTML.GetnbTestXMLfiles() != 1): + if (HTML.nbTestXMLfiles != 1): xml_test_file = cwd + "/test_case_list.xml" else: xml_test_file = cwd + "/" + CiTestObj.testXMLfiles[0] @@ -3549,9 +3530,9 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re exclusion_tests=xmlRoot.findtext('TestCaseExclusionList',default='') requested_tests=xmlRoot.findtext('TestCaseRequestedList',default='') - if (HTML.GetnbTestXMLfiles() == 1): - HTML.SethtmlTabRefs(xmlRoot.findtext('htmlTabRef',default='test-tab-0')) - HTML.SethtmlTabNames(xmlRoot.findtext('htmlTabName',default='Test-0')) + if (HTML.nbTestXMLfiles == 1): + HTML.htmlTabRefs.append(xmlRoot.findtext('htmlTabRef',default='test-tab-0')) + HTML.htmlTabNames.append(xmlRoot.findtext('htmlTabName',default='Test-0')) repeatCount = xmlRoot.findtext('repeatCount',default='1') CiTestObj.repeatCounts.append(int(repeatCount)) all_tests=xmlRoot.findall('testCase') @@ -3579,7 +3560,7 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re else: logging.debug('ERROR: requested test is invalidly formatted: ' + test) sys.exit(1) - if (EPC.GetIPAddress() != '') and (EPC.GetIPAddress() != 'none'): + if (EPC.IPAddress != '') and (EPC.IPAddress != 'none'): CiTestObj.CheckFlexranCtrlInstallation() EPC.SetMmeIPAddress() @@ -3604,29 +3585,29 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re HTML.CreateHtmlTabHeader() CiTestObj.FailReportCnt = 0 - RAN.SetprematureExit(True) - HTML.SetstartTime(int(round(time.time() * 1000))) - while CiTestObj.FailReportCnt < CiTestObj.repeatCounts[0] and RAN.GetprematureExit(): - RAN.SetprematureExit(False) + RAN.prematureExit=True + HTML.startTime=int(round(time.time() * 1000)) + while CiTestObj.FailReportCnt < CiTestObj.repeatCounts[0] and RAN.prematureExit: + RAN.prematureExit=False # At every iteratin of the retry loop, a separator will be added # pass CiTestObj.FailReportCnt as parameter of HTML.CreateHtmlRetrySeparator HTML.CreateHtmlRetrySeparator(CiTestObj.FailReportCnt) for test_case_id in todo_tests: - if RAN.GetprematureExit(): + if RAN.prematureExit: break for test in all_tests: - if RAN.GetprematureExit(): + if RAN.prematureExit: break id = test.get('id') if test_case_id != id: continue CiTestObj.testCase_id = id - HTML.SettestCase_id(CiTestObj.testCase_id) - EPC.SetTestCase_id(CiTestObj.testCase_id) + HTML.testCase_id=CiTestObj.testCase_id + EPC.testCase_id=CiTestObj.testCase_id CiTestObj.desc = test.findtext('desc') - HTML.Setdesc(CiTestObj.desc) + HTML.desc=CiTestObj.desc action = test.findtext('class') - if (CheckClassValidity(action, id) == False): + if (CheckClassValidity(xml_class_list, action, id) == False): continue CiTestObj.ShowTestID() GetParametersFromXML(action) @@ -3641,7 +3622,7 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re elif action == 'Initialize_eNB': check_eNB = False check_OAI_UE = False - RAN.SetpStatus(CiTestObj.CheckProcessExist(check_eNB, check_OAI_UE)) + RAN.pStatus=CiTestObj.CheckProcessExist(check_eNB, check_OAI_UE) RAN.InitializeeNB() elif action == 'Terminate_eNB': @@ -3702,16 +3683,25 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re CiTestObj.IdleSleep() elif action == 'Perform_X2_Handover': CiTestObj.Perform_X2_Handover() + elif action == 'Build_PhySim': + HTML=ldpc.Build_PhySim(HTML,CONST) + if ldpc.exitStatus==1:sys.exit() + elif action == 'Run_PhySim': + HTML=ldpc.Run_PhySim(HTML,CONST,id) + elif action == 'COTS_UE_Airplane': + COTS_UE.Set_Airplane(COTS_UE.runargs) else: - sys.exit('Invalid action') + sys.exit('Invalid class (action) from xml') CiTestObj.FailReportCnt += 1 - if CiTestObj.FailReportCnt == CiTestObj.repeatCounts[0] and RAN.GetprematureExit(): + if CiTestObj.FailReportCnt == CiTestObj.repeatCounts[0] and RAN.prematureExit: logging.debug('Testsuite failed ' + str(CiTestObj.FailReportCnt) + ' time(s)') HTML.CreateHtmlTabFooter(False) sys.exit('Failed Scenario') else: logging.info('Testsuite passed after ' + str(CiTestObj.FailReportCnt) + ' time(s)') HTML.CreateHtmlTabFooter(True) +elif re.match('^LoadParams$', mode, re.IGNORECASE): + pass else: HELP.GenericHelp(CONST.Version) sys.exit('Invalid mode') diff --git a/ci-scripts/oai-ci-vm-tool b/ci-scripts/oai-ci-vm-tool index 9d6349077f..9b9fe462f1 100755 --- a/ci-scripts/oai-ci-vm-tool +++ b/ci-scripts/oai-ci-vm-tool @@ -186,7 +186,7 @@ function variant__v3__phy_sim { BUILD_OPTIONS="--phy_simulators" VM_MEMORY=8192 VM_DISK=20 - RUN_OPTIONS="./run_exec_autotests.bash -g \"01510* 015111\" -q -np -b" + RUN_OPTIONS="./run_exec_autotests.bash -g \"01510* 015111 015112\" -q -np -b" } function variant__v4__cppcheck { @@ -197,7 +197,7 @@ function variant__v4__cppcheck { } function variant__v5__gnb_usrp { - VM_MEMORY=8192 + VM_MEMORY=10240 VM_CPU=8 NB_PATTERN_FILES=9 BUILD_OPTIONS="--gNB -w USRP" diff --git a/ci-scripts/py_params.yaml b/ci-scripts/py_params.yaml new file mode 100644 index 0000000000..303d5d1006 --- /dev/null +++ b/ci-scripts/py_params.yaml @@ -0,0 +1,53 @@ +eNBRepository : b +ranRepository : c +eNB_AllowMerge : +ranAllowMerge : +eNBBranch : f +ranBranch : g +eNBCommitID : +ranCommitID : i +eNBTargetBranch : j +ranTargetBranch : k + +nodes : + - type : eNB + IPAddress : 001.1.1 + UserName : toto + Password : qwe + SourceCodePath : l + - type : gNB + IPAddress : 002.2.2 + UserName : tata + Password : asd + SourceCodePath : m + - type : eNB + IPAddress : 003.3.3 + UserName : titi + Password : zxc + SourceCodePath : n + - type : gNB + IPAddress : 004.4.4 + UserName : caca + Password : pepe + SourceCodePath : o + +EPCIPAddress : p +EPCUserName : q +EPCPassword : r +EPCSourceCodePath : s +EPCType : t +EPCContainerPrefix : u + +ADBIPAddress : v +ADBUserName : w +ADBType : x +ADBPassword : y + +XMLTestFile : z + +UEIPAddress : qqq +UEUserName : www +UEPassword : eee +UESourceCodePath : yyy + +finalStatus : bbb \ No newline at end of file diff --git a/ci-scripts/py_params_template.yaml b/ci-scripts/py_params_template.yaml new file mode 100644 index 0000000000..aaf31c1576 --- /dev/null +++ b/ci-scripts/py_params_template.yaml @@ -0,0 +1,97 @@ +eNBRepository : b +ranRepository : c +eNB_AllowMerge : +ranAllowMerge : +eNBBranch : f +ranBranch : g +eNBCommitID : +ranCommitID : i +eNBTargetBranch : j +ranTargetBranch : k + + +RAN: + RAN_inst_0: + name : RAN_1 + nodes : + - type : eNB + IPAddress : 001.1.1 + UserName : toto + Password : qwe + SourceCodePath : l + - type : gNB + IPAddress : 002.2.2 + UserName : tata + Password : asd + SourceCodePath : m + - type : eNB + IPAddress : 003.3.3 + UserName : titi + Password : zxc + SourceCodePath : n + - type : gNB + IPAddress : 004.4.4 + UserName : caca + Password : pepe + SourceCodePath : o + RAN_inst_1: + name : RAN_2 + nodes : + - type : eNB + IPAddress : 101.1.1 + UserName : toto + Password : qwe + SourceCodePath : l + - type : gNB + IPAddress : 102.2.2 + UserName : zaza + Password : asd + SourceCodePath : m + - type : eNB + IPAddress : 103.3.3 + UserName : zizi + Password : zxc + SourceCodePath : n + - type : gNB + IPAddress : 104.4.4 + UserName : aaaa + Password : pepe + SourceCodePath : o + + + +EPC: + EPC_inst_0: + EPCIPAddress : p + EPCUserName : q + EPCPassword : r + EPCSourceCodePath : s + EPCType : t + EPCContainerPrefix : u + +ADB: + ADBIPAddress : v + ADBUserName : w + ADBType : x + ADBPassword : y + + +UE: + UE_inst_0: + name : UE_1 + type : + UEIPAddress : qqq + UEUserName : www + UEPassword : eee + UESourceCodePath : yyy + UE_inst_1: + name : UE_2 + type : + UEIPAddress : bloblob + UEUserName : gwou + UEPassword : zebu + UESourceCodePath : pop + + +XMLTestFile : z +finalStatus : bbb \ No newline at end of file diff --git a/ci-scripts/ran.py b/ci-scripts/ran.py index 5b5add0adb..96f28e21fe 100644 --- a/ci-scripts/ran.py +++ b/ci-scripts/ran.py @@ -77,8 +77,8 @@ class RANManagement(): self.backgroundBuildTestId = ['', '', ''] self.Build_eNB_forced_workspace_cleanup = False self.Initialize_eNB_args = '' - self.air_interface = 'lte' - self.eNB_instance = '' + self.air_interface = ['', '', ''] #changed from 'lte' to '' may lead to side effects in main + self.eNB_instance = 0 self.eNB_serverId = '' self.eNBLogFiles = ['', '', ''] self.eNBOptions = ['', '', ''] @@ -91,140 +91,7 @@ class RANManagement(): self.htmlObj = None self.epcObj = None -#----------------------------------------------------------- -# Setters and Getters on Public members -#----------------------------------------------------------- - def SetHtmlObj(self, obj): - self.htmlObj = obj - def SetEpcObj(self, obj): - self.epcObj = obj - - def SetflexranCtrlInstalled(self,fxrctin): - self.flexranCtrlInstalled = fxrctin - def GetflexranCtrlInstalled(self): - return self.flexranCtrlInstalled - def SetflexranCtrlStarted(self,fxrctst): - self.flexranCtrlStarted = fxrctst - def GetflexranCtrlStarted(self): - return self.flexranCtrlStarted - def SetpStatus(self, pSt): - self.pStatus = pSt - def SetranRepository(self, repository): - self.ranRepository = repository - def GetranRepository(self): - return self.ranRepository - def SetranBranch(self, branch): - self.ranBranch = branch - def GetranBranch(self): - return self.ranBranch - def SetranCommitID(self, commitid): - self.ranCommitID = commitid - def GetranCommitID(self): - return self.ranCommitID - def SeteNB_serverId(self, enbsrvid): - self.eNB_serverId = enbsrvid - def GeteNB_serverId(self): - return self.eNB_serverId - def SeteNBIPAddress(self, enbip): - self.eNBIPAddress = enbip - def GeteNBIPAddress(self): - return self.eNBIPAddress - def SeteNBUserName(self, enbusr): - self.eNBUserName = enbusr - def GeteNBUserName(self): - return self.eNBUserName - def SeteNBPassword(self, enbpw): - self.eNBPassword = enbpw - def GeteNBPassword(self): - return self.eNBPassword - def SeteNBSourceCodePath(self, enbcodepath): - self.eNBSourceCodePath = enbcodepath - def GeteNBSourceCodePath(self): - return self.eNBSourceCodePath - def SetranAllowMerge(self, merge): - self.ranAllowMerge = merge - def GetranAllowMerge(self): - return self.ranAllowMerge - def SetranTargetBranch(self, tbranch): - self.ranTargetBranch = tbranch - def GetranTargetBranch(self): - return self.ranTargetBranch - def SetBuild_eNB_args(self, enbbuildarg): - self.Build_eNB_args = enbbuildarg - def GetBuild_eNB_args(self): - return self.Build_eNB_args - def SetInitialize_eNB_args(self, initenbarg): - self.Initialize_eNB_args = initenbarg - def GetInitialize_eNB_args(self): - return self.Initialize_eNB_args - def SetbackgroundBuild(self, bkbuild): - self.backgroundBuild = bkbuild - def GetbackgroundBuild(self): - return self.backgroundBuild - def SetbackgroundBuildTestId(self, bkbuildid): - self.backgroundBuildTestId = bkbuildid - def GetbackgroundBuildTestId(self): - return self.backgroundBuildTestId - def SetBuild_eNB_forced_workspace_cleanup(self, fcdwspclean): - self.Build_eNB_forced_workspace_cleanup = fcdwspclean - def GetBuild_eNB_forced_workspace_cleanup(self): - return self.Build_eNB_forced_workspace_cleanup - def Setair_interface(self, airif): - self.air_interface = airif - def Getair_interface(self): - return self.air_interface - def SeteNB_instance(self, enbinst): - self.eNB_instance = enbinst - def GeteNB_instance(self): - return self.eNB_instance - - def SeteNBLogFile(self, enblog, idx): - self.eNBLogFiles[idx] = enblog - def GeteNBLogFile(self, idx): - return self.eNBLogFiles[idx] - - def GeteNBmbmsEnable(self, idx): - return self.eNBmbmsEnables[idx] - - def SeteNB1IPAddress(self,enb1ip): - self.eNB1IPAddress = enb1ip - def GeteNB1IPAddress(self): - return self.eNB1IPAddress - def SeteNB1UserName(self, enb1usr): - self.eNB1UserName = enb1usr - def GeteNB1UserName(self): - return self.eNB1UserName - def SeteNB1Password(self, enb1pw): - self.eNB1Password = enb1pw - def GeteNB1Password(self): - return self.eNB1Password - def SeteNB1SourceCodePath(self, enb1codepath): - self.eNB1SourceCodePath = enb1codepath - def GeteNB1SourceCodePath(self): - return self.eNB1SourceCodePath - - def SeteNB2IPAddress(self, enb2ip): - self.eNB2IPAddress = enb2ip - def GeteNB2IPAddress(self): - return self.eNB2IPAddress - def SeteNB2UserName(self, enb2usr): - self.eNB2UserName = enb2usr - def GeteNB2UserName(self): - return self.eNB2UserName - def SeteNB2Password(self, enb2pw): - self.eNB2Password = enb2pw - def GeteNB2Password(self): - return self.eNB2Password - def SeteNB2SourceCodePath(self, enb2codepath): - self.eNB2SourceCodePath = enb2codepath - def GeteNB2SourceCodePath(self): - return self.eNB2SourceCodePath - - def SetprematureExit(self, premex): - self.prematureExit = premex - def GetprematureExit(self): - return self.prematureExit #----------------------------------------------------------- # RAN management functions @@ -254,17 +121,23 @@ class RANManagement(): sys.exit('Insufficient Parameter') mySSH = SSH.SSHConnection() mySSH.open(lIpAddr, lUserName, lPassWord) - # Check if we build an 5G-NR gNB or an LTE eNB - result = re.search('--gNB', self.Build_eNB_args) + + # Check if we build an 5G-NR gNB or an LTE eNB or an OCP eNB + result = re.search('--eNBocp', self.Build_eNB_args) if result is not None: - self.air_interface = 'nr' - else: - self.air_interface = 'lte' + self.air_interface[self.eNB_instance] = 'ocp-enb' + else: + result = re.search('--gNB', self.Build_eNB_args) + if result is not None: + self.air_interface[self.eNB_instance] = 'nr-softmodem' + else: + self.air_interface[self.eNB_instance] = 'lte-softmodem' + # Worakround for some servers, we need to erase completely the workspace if self.Build_eNB_forced_workspace_cleanup: mySSH.command('echo ' + lPassWord + ' | sudo -S rm -Rf ' + lSourcePath, '\$', 15) if self.htmlObj is not None: - self.testCase_id = self.htmlObj.GettestCase_id() + self.testCase_id = self.htmlObj.testCase_id else: self.testCase_id = '000000' # on RedHat/CentOS .git extension is mandatory @@ -332,7 +205,8 @@ class RANManagement(): if self.backgroundBuild: mySSH.command('echo "./build_oai ' + self.Build_eNB_args + '" > ./my-lte-softmodem-build.sh', '\$', 5) mySSH.command('chmod 775 ./my-lte-softmodem-build.sh', '\$', 5) - mySSH.command('echo ' + lPassWord + ' | sudo -S -E daemon --inherit --unsafe --name=build_enb_daemon --chdir=' + lSourcePath + '/cmake_targets -o ' + lSourcePath + '/cmake_targets/compile_oai_enb.log ./my-lte-softmodem-build.sh', '\$', 5) + mySSH.command('echo ' + lPassWord + ' | sudo -S ls', '\$', 5) + mySSH.command('echo $USER; nohup sudo -E ./my-lte-softmodem-build.sh' + ' > ' + lSourcePath + '/cmake_targets/compile_oai_enb.log ' + ' 2>&1 &', lUserName, 5) mySSH.close() if self.htmlObj is not None: self.htmlObj.CreateHtmlTestRow(self.Build_eNB_args, 'OK', CONST.ALL_PROCESSES_OK) @@ -366,7 +240,7 @@ class RANManagement(): count = 40 buildOAIprocess = True while (count > 0) and buildOAIprocess: - mySSH.command('ps aux | grep --color=never build_ | grep -v grep', '\$', 3) + mySSH.command('ps aux | grep --color=never build_ | grep -v grep', '\$', 6) result = re.search('build_oai', mySSH.getBefore()) if result is None: buildOAIprocess = False @@ -378,21 +252,21 @@ class RANManagement(): def checkBuildeNB(self, lIpAddr, lUserName, lPassWord, lSourcePath, testcaseId): if self.htmlObj is not None: - self.htmlObj.SettestCase_id(testcaseId) + self.htmlObj.testCase_id=testcaseId + mySSH = SSH.SSHConnection() mySSH.open(lIpAddr, lUserName, lPassWord) mySSH.command('cd ' + lSourcePath + '/cmake_targets', '\$', 3) mySSH.command('ls ran_build/build', '\$', 3) mySSH.command('ls ran_build/build', '\$', 3) - if self.air_interface == 'nr': - nodeB_prefix = 'g' - else: - nodeB_prefix = 'e' - buildStatus = True - result = re.search(self.air_interface + '-softmodem', mySSH.getBefore()) + + #check if we have the build corresponding to the air interface keywords (nr-softmode, lte-softmodem, ocp-enb) + logging.info('CHECK Build with IP='+lIpAddr+' SourcePath='+lSourcePath) + result = re.search(self.air_interface[self.eNB_instance], mySSH.getBefore()) if result is None: - buildStatus = False + buildStatus = False #if not, build failed else: + buildStatus = True # Generating a BUILD INFO file mySSH.command('echo "SRC_BRANCH: ' + self.ranBranch + '" > ../LAST_BUILD_INFO.txt', '\$', 2) mySSH.command('echo "SRC_COMMIT: ' + self.ranCommitID + '" >> ../LAST_BUILD_INFO.txt', '\$', 2) @@ -404,6 +278,8 @@ class RANManagement(): mySSH.command('echo "TGT_BRANCH: ' + self.ranTargetBranch + '" >> ../LAST_BUILD_INFO.txt', '\$', 2) else: mySSH.command('echo "MERGED_W_TGT_BRANCH: NO" >> ../LAST_BUILD_INFO.txt', '\$', 2) + + mySSH.command('mkdir -p build_log_' + testcaseId, '\$', 5) mySSH.command('mv log/* ' + 'build_log_' + testcaseId, '\$', 5) mySSH.command('mv compile_oai_enb.log ' + 'build_log_' + testcaseId, '\$', 5) @@ -420,18 +296,20 @@ class RANManagement(): os.remove('./tmp_build' + testcaseId + '.zip') mySSH.open(self.eNBIPAddress, self.eNBUserName, self.eNBPassword) mySSH.command('cd ' + self.eNBSourceCodePath + '/cmake_targets', '\$', 5) - mySSH.command('unzip -qq -DD tmp_build' + testcaseId + '.zip', '\$', 5) + #-qq quiet / -u update orcreate files + mySSH.command('unzip -u -qq -DD tmp_build' + testcaseId + '.zip', '\$', 5) mySSH.command('rm -f tmp_build' + testcaseId + '.zip', '\$', 5) mySSH.close() else: mySSH.close() + #generate logging info depending on buildStatus and air interface if buildStatus: - logging.info('\u001B[1m Building OAI ' + nodeB_prefix + 'NB Pass\u001B[0m') + logging.info('\u001B[1m Building OAI ' + self.air_interface[self.eNB_instance] + ' Pass\u001B[0m') if self.htmlObj is not None: - self.htmlObj.CreateHtmlTestRow(self.Build_eNB_args, 'OK', CONST.ALL_PROCESSES_OK) + self.htmlObj.CreateHtmlTestRow(self.Build_eNB_args, 'OK', CONST.ALL_PROCESSES_OK) else: - logging.error('\u001B[1m Building OAI ' + nodeB_prefix + 'NB Failed\u001B[0m') + logging.error('\u001B[1m Building OAI ' + self.air_interface[self.eNB_instance] + ' Failed\u001B[0m') if self.htmlObj is not None: self.htmlObj.CreateHtmlTestRow(self.Build_eNB_args, 'KO', CONST.ALL_PROCESSES_OK) self.htmlObj.CreateHtmlTabFooter(False) @@ -458,22 +336,22 @@ class RANManagement(): sys.exit('Insufficient Parameter') if self.htmlObj is not None: - self.testCase_id = self.htmlObj.GettestCase_id() + self.testCase_id = self.htmlObj.testCase_id else: self.testCase_id = '000000' mySSH = SSH.SSHConnection() if (self.pStatus < 0): if self.htmlObj is not None: - self.htmlObj.CreateHtmlTestRow(self.Initialize_eNB_args, 'KO', self.pStatus) + self.htmlObj.CreateHtmlTestRow(self.air_interface[self.eNB_instance] + ' ' + self.Initialize_eNB_args, 'KO', self.pStatus) self.htmlObj.CreateHtmlTabFooter(False) sys.exit(1) # If tracer options is on, running tshark on EPC side and capture traffic b/ EPC and eNB result = re.search('T_stdout', str(self.Initialize_eNB_args)) if (result is not None) and (self.epcObj is not None): - localEpcIpAddr = self.epcObj.GetIPAddress() - localEpcUserName = self.epcObj.GetUserName() - localEpcPassword = self.epcObj.GetPassword() + localEpcIpAddr = self.epcObj.IPAddress + localEpcUserName = self.epcObj.UserName + localEpcPassword = self.epcObj.Password mySSH.open(localEpcIpAddr, localEpcUserName, localEpcPassword) mySSH.command('ip addr show | awk -f /tmp/active_net_interfaces.awk | egrep -v "lo|tun"', '\$', 5) result = re.search('interfaceToUse=(?P[a-zA-Z0-9\-\_]+)done', mySSH.getBefore()) @@ -522,12 +400,14 @@ class RANManagement(): # Make a copy and adapt to EPC / eNB IP addresses mySSH.command('cp ' + full_config_file + ' ' + ci_full_config_file, '\$', 5) if self.epcObj is not None: - localMmeIpAddr = self.epcObj.GetMmeIPAddress() + localMmeIpAddr = self.epcObj.MmeIPAddress mySSH.command('sed -i -e \'s/CI_MME_IP_ADDR/' + localMmeIpAddr + '/\' ' + ci_full_config_file, '\$', 2); mySSH.command('sed -i -e \'s/CI_ENB_IP_ADDR/' + lIpAddr + '/\' ' + ci_full_config_file, '\$', 2); + mySSH.command('sed -i -e \'s/CI_GNB_IP_ADDR/' + lIpAddr + '/\' ' + ci_full_config_file, '\$', 2); mySSH.command('sed -i -e \'s/CI_RCC_IP_ADDR/' + self.eNBIPAddress + '/\' ' + ci_full_config_file, '\$', 2); mySSH.command('sed -i -e \'s/CI_RRU1_IP_ADDR/' + self.eNB1IPAddress + '/\' ' + ci_full_config_file, '\$', 2); mySSH.command('sed -i -e \'s/CI_RRU2_IP_ADDR/' + self.eNB2IPAddress + '/\' ' + ci_full_config_file, '\$', 2); + mySSH.command('sed -i -e \'s/CI_FR1_CTL_ENB_IP_ADDR/' + self.eNBIPAddress + '/\' ' + ci_full_config_file, '\$', 2); if self.flexranCtrlInstalled and self.flexranCtrlStarted: mySSH.command('sed -i -e \'s/FLEXRAN_ENABLED.*;/FLEXRAN_ENABLED = "yes";/\' ' + ci_full_config_file, '\$', 2); else: @@ -546,15 +426,14 @@ class RANManagement(): # Launch eNB with the modified config file mySSH.command('source oaienv', '\$', 5) mySSH.command('cd cmake_targets', '\$', 5) - mySSH.command('echo "ulimit -c unlimited && ./ran_build/build/' + self.air_interface + '-softmodem -O ' + lSourcePath + '/' + ci_full_config_file + extra_options + '" > ./my-lte-softmodem-run' + str(self.eNB_instance) + '.sh', '\$', 5) + if self.air_interface == 'nr': + mySSH.command('if [ -e rbconfig.raw ]; then echo ' + lPassWord + ' | sudo -S rm rbconfig.raw; fi', '\$', 5) + mySSH.command('if [ -e reconfig.raw ]; then echo ' + lPassWord + ' | sudo -S rm reconfig.raw; fi', '\$', 5) + # NOTE: WE SHALL do a check if the executable is present (in case build went wrong) + mySSH.command('echo "ulimit -c unlimited && ./ran_build/build/' + self.air_interface[self.eNB_instance] + ' -O ' + lSourcePath + '/' + ci_full_config_file + extra_options + '" > ./my-lte-softmodem-run' + str(self.eNB_instance) + '.sh', '\$', 5) mySSH.command('chmod 775 ./my-lte-softmodem-run' + str(self.eNB_instance) + '.sh', '\$', 5) mySSH.command('echo ' + lPassWord + ' | sudo -S rm -Rf enb_' + self.testCase_id + '.log', '\$', 5) - mySSH.command('hostnamectl','\$', 5) - result = re.search('CentOS Linux 7', mySSH.getBefore()) - if result is not None: - mySSH.command('echo $USER; nohup sudo ./my-lte-softmodem-run' + str(self.eNB_instance) + '.sh > ' + lSourcePath + '/cmake_targets/enb_' + self.testCase_id + '.log 2>&1 &', lUserName, 10) - else: - mySSH.command('echo ' + lPassWord + ' | sudo -S -E daemon --inherit --unsafe --name=enb' + str(self.eNB_instance) + '_daemon --chdir=' + lSourcePath + '/cmake_targets -o ' + lSourcePath + '/cmake_targets/enb_' + self.testCase_id + '.log ./my-lte-softmodem-run' + str(self.eNB_instance) + '.sh', '\$', 5) + mySSH.command('echo $USER; nohup sudo -E ./my-lte-softmodem-run' + str(self.eNB_instance) + '.sh > ' + lSourcePath + '/cmake_targets/enb_' + self.testCase_id + '.log 2>&1 &', lUserName, 10) self.eNBLogFiles[int(self.eNB_instance)] = 'enb_' + self.testCase_id + '.log' if extra_options != '': self.eNBOptions[int(self.eNB_instance)] = extra_options @@ -571,15 +450,15 @@ class RANManagement(): mySSH.command('killall --signal SIGKILL record', '\$', 5) mySSH.close() doLoop = False - logging.error('\u001B[1;37;41m eNB logging system did not show got sync! \u001B[0m') + logging.error('\u001B[1;37;41m eNB/gNB/ocp-eNB logging system did not show got sync! \u001B[0m') if self.htmlObj is not None: - self.htmlObj.CreateHtmlTestRow('-O ' + config_file + extra_options, 'KO', CONST.ALL_PROCESSES_OK) + self.htmlObj.CreateHtmlTestRow(self.air_interface[self.eNB_instance] + ' -O ' + config_file + extra_options, 'KO', CONST.ALL_PROCESSES_OK) # In case of T tracer recording, we need to kill tshark on EPC side result = re.search('T_stdout', str(self.Initialize_eNB_args)) if (result is not None) and (self.epcObj is not None): - localEpcIpAddr = self.epcObj.GetIPAddress() - localEpcUserName = self.epcObj.GetUserName() - localEpcPassword = self.epcObj.GetPassword() + localEpcIpAddr = self.epcObj.IPAddress + localEpcUserName = self.epcObj.UserName + localEpcPassword = self.epcObj.Password mySSH.open(localEpcIpAddr, localEpcUserName, localEpcPassword) logging.debug('\u001B[1m Stopping tshark \u001B[0m') mySSH.command('echo ' + localEpcPassword + ' | sudo -S killall --signal SIGKILL tshark', '\$', 5) @@ -607,7 +486,11 @@ class RANManagement(): enbDidSync = True time.sleep(10) - if enbDidSync and eNBinNoS1: + rruCheck = False + result = re.search('^rru|^du.band', str(config_file)) + if result is not None: + rruCheck = True + if enbDidSync and eNBinNoS1 and not rruCheck: mySSH.command('ifconfig oaitun_enb1', '\$', 4) mySSH.command('ifconfig oaitun_enb1', '\$', 4) result = re.search('inet addr:1|inet 1', mySSH.getBefore()) @@ -627,8 +510,8 @@ class RANManagement(): mySSH.close() if self.htmlObj is not None: - self.htmlObj.CreateHtmlTestRow('-O ' + config_file + extra_options, 'OK', CONST.ALL_PROCESSES_OK) - logging.debug('\u001B[1m Initialize eNB Completed\u001B[0m') + self.htmlObj.CreateHtmlTestRow(self.air_interface[self.eNB_instance] + ' -O ' + config_file + extra_options, 'OK', CONST.ALL_PROCESSES_OK) + logging.debug('\u001B[1m Initialize eNB/gNB/ocp-eNB Completed\u001B[0m') def CheckeNBProcess(self, status_queue): try: @@ -651,8 +534,8 @@ class RANManagement(): lPassWord = self.eNBPassword mySSH = SSH.SSHConnection() mySSH.open(lIpAddr, lUserName, lPassWord) - mySSH.command('stdbuf -o0 ps -aux | grep --color=never ' + self.air_interface + '-softmodem | grep -v grep', '\$', 5) - result = re.search(self.air_interface + '-softmodem', mySSH.getBefore()) + mySSH.command('stdbuf -o0 ps -aux | grep --color=never ' + self.air_interface[self.eNB_instance] + ' | grep -v grep', '\$', 5) + result = re.search(self.air_interface[self.eNB_instance], mySSH.getBefore()) if result is None: logging.debug('\u001B[1;37;41m eNB Process Not Found! \u001B[0m') status_queue.put(CONST.ENB_PROCESS_FAILED) @@ -684,29 +567,28 @@ class RANManagement(): mySSH = SSH.SSHConnection() mySSH.open(lIpAddr, lUserName, lPassWord) mySSH.command('cd ' + lSourcePath + '/cmake_targets', '\$', 5) - if self.air_interface == 'lte': + if (self.air_interface[self.eNB_instance] == 'lte-softmodem') or (self.air_interface[self.eNB_instance] == 'ocp-enb'): nodeB_prefix = 'e' else: nodeB_prefix = 'g' - mySSH.command('stdbuf -o0 ps -aux | grep --color=never softmodem | grep -v grep', '\$', 5) - result = re.search('-softmodem', mySSH.getBefore()) + mySSH.command('stdbuf -o0 ps -aux | grep --color=never -e softmodem -e ocp-enb | grep -v grep', '\$', 5) + result = re.search('(-softmodem|ocp)', mySSH.getBefore()) if result is not None: - mySSH.command('echo ' + lPassWord + ' | sudo -S daemon --name=enb' + str(self.eNB_instance) + '_daemon --stop', '\$', 5) - mySSH.command('echo ' + lPassWord + ' | sudo -S killall --signal SIGINT -r .*-softmodem || true', '\$', 5) + mySSH.command('echo ' + lPassWord + ' | sudo -S killall --signal SIGINT -r .*-softmodem ocp-enb || true', '\$', 5) time.sleep(10) - mySSH.command('stdbuf -o0 ps -aux | grep --color=never softmodem | grep -v grep', '\$', 5) - result = re.search('-softmodem', mySSH.getBefore()) + mySSH.command('stdbuf -o0 ps -aux | grep --color=never -e softmodem -e ocp-enb | grep -v grep', '\$', 5) + result = re.search('(-softmodem|ocp)', mySSH.getBefore()) if result is not None: - mySSH.command('echo ' + lPassWord + ' | sudo -S killall --signal SIGKILL -r .*-softmodem || true', '\$', 5) + mySSH.command('echo ' + lPassWord + ' | sudo -S killall --signal SIGKILL -r .*-softmodem ocp-enb || true', '\$', 5) time.sleep(5) mySSH.command('rm -f my-lte-softmodem-run' + str(self.eNB_instance) + '.sh', '\$', 5) mySSH.close() # If tracer options is on, stopping tshark on EPC side result = re.search('T_stdout', str(self.Initialize_eNB_args)) if (result is not None) and (self.epcObj is not None): - localEpcIpAddr = self.epcObj.GetIPAddress() - localEpcUserName = self.epcObj.GetUserName() - localEpcPassword = self.epcObj.GetPassword() + localEpcIpAddr = self.epcObj.IPAddress + localEpcUserName = self.epcObj.UserName + localEpcPassword = self.epcObj.Password mySSH.open(localEpcIpAddr, localEpcUserName, localEpcPassword) logging.debug('\u001B[1m Stopping tshark \u001B[0m') mySSH.command('echo ' + localEpcPassword + ' | sudo -S killall --signal SIGKILL tshark', '\$', 5) @@ -745,7 +627,7 @@ class RANManagement(): if (copyin_res == -1): logging.debug('\u001B[1;37;41m Could not copy ' + nodeB_prefix + 'NB logfile to analyze it! \u001B[0m') if self.htmlObj is not None: - self.htmlObj.SetHmleNBFailureMsg('Could not copy ' + nodeB_prefix + 'NB logfile to analyze it!') + self.htmlObj.htmleNBFailureMsg='Could not copy ' + nodeB_prefix + 'NB logfile to analyze it!' self.htmlObj.CreateHtmlTestRow('N/A', 'KO', CONST.ENB_PROCESS_NOLOGFILE_TO_ANALYZE) self.eNBmbmsEnables[int(self.eNB_instance)] = False return @@ -774,7 +656,7 @@ class RANManagement(): mySSH.command('cd ' + self.eNBSourceCodePath, '\$', 5) mySSH.command('cd cmake_targets', '\$', 5) mySSH.command('echo ' + self.eNBPassword + ' | sudo -S rm -f enb.log.zip', '\$', 5) - mySSH.command('echo ' + self.eNBPassword + ' | sudo -S zip enb.log.zip enb*.log core* enb_*record.raw enb_*.pcap enb_*txt', '\$', 60) + mySSH.command('echo ' + self.eNBPassword + ' | sudo -S zip enb.log.zip enb*.log core* enb_*record.raw enb_*.pcap enb_*txt physim_*.log', '\$', 60) mySSH.command('echo ' + self.eNBPassword + ' | sudo -S rm enb*.log core* enb_*record.raw enb_*.pcap enb_*txt', '\$', 5) mySSH.close() @@ -800,8 +682,11 @@ class RANManagement(): uciStatMsgCount = 0 pdcpFailure = 0 ulschFailure = 0 + ulschAllocateCCEerror = 0 + uplinkSegmentsAborted = 0 ulschReceiveOK = 0 gnbRxTxWakeUpFailure = 0 + gnbTxWriteThreadEnabled = False cdrxActivationMessageCount = 0 dropNotEnoughRBs = 0 mbmsRequestMsg = 0 @@ -812,7 +697,31 @@ class RANManagement(): X2HO_state = CONST.X2_HO_REQ_STATE__IDLE X2HO_inNbProcedures = 0 X2HO_outNbProcedures = 0 + global_status = CONST.ALL_PROCESSES_OK + # Runtime statistics + runTime = '' + userTime = '' + systemTime = '' + maxPhyMemUsage = '' + nbContextSwitches = '' for line in enb_log_file.readlines(): + # Runtime statistics + result = re.search('Run time:' ,str(line)) + if result is not None: + runTime = str(line).strip() + if runTime != '': + result = re.search('Time executing user inst', str(line)) + if result is not None: + userTime = 'to be decoded - 1' + result = re.search('Time executing system inst', str(line)) + if result is not None: + systemTime = 'to be decoded - 2' + result = re.search('Max. Phy. memory usage:', str(line)) + if result is not None: + maxPhyMemUsage = 'to be decoded - 3' + result = re.search('Number of context switch.*process origin', str(line)) + if result is not None: + nbContextSwitches = 'to be decoded - 4' if X2HO_state == CONST.X2_HO_REQ_STATE__IDLE: result = re.search('target eNB Receives X2 HO Req X2AP_HANDOVER_REQ', str(line)) if result is not None: @@ -885,8 +794,7 @@ class RANManagement(): if result is not None: rrcSetupComplete += 1 result = re.search('Generate LTE_RRCConnectionRelease|Generate RRCConnectionRelease', str(line)) - if result is not None: - rrcReleaseRequest += 1 + if result is not None: rrcReleaseRequest += 1 result = re.search('Generate LTE_RRCConnectionReconfiguration', str(line)) if result is not None: rrcReconfigRequest += 1 @@ -914,9 +822,18 @@ class RANManagement(): result = re.search('could not wakeup gNB rxtx process', str(line)) if result is not None: gnbRxTxWakeUpFailure += 1 + result = re.search('tx write thread ready', str(line)) + if result is not None: + gnbTxWriteThreadEnabled = True result = re.search('ULSCH in error in round|ULSCH 0 in error', str(line)) if result is not None: ulschFailure += 1 + result = re.search('ERROR ALLOCATING CCEs', str(line)) + if result is not None: + ulschAllocateCCEerror += 1 + result = re.search('uplink segment error.*aborted [1-9] segments', str(line)) + if result is not None: + uplinkSegmentsAborted += 1 result = re.search('ULSCH received ok', str(line)) if result is not None: ulschReceiveOK += 1 @@ -935,11 +852,11 @@ class RANManagement(): mbmsRequestMsg += 1 enb_log_file.close() logging.debug(' File analysis completed') - if self.air_interface == 'lte': + if (self.air_interface[self.eNB_instance] == 'lte-softmodem') or (self.air_interface[self.eNB_instance] == 'ocp-enb'): nodeB_prefix = 'e' else: nodeB_prefix = 'g' - if self.air_interface == 'nr': + if self.air_interface[self.eNB_instance] == 'nr-softmodem': if ulschReceiveOK > 0: statMsg = nodeB_prefix + 'NB showed ' + str(ulschReceiveOK) + ' "ULSCH received ok" message(s)' logging.debug('\u001B[1;30;43m ' + statMsg + ' \u001B[0m') @@ -948,6 +865,10 @@ class RANManagement(): statMsg = nodeB_prefix + 'NB showed ' + str(gnbRxTxWakeUpFailure) + ' "could not wakeup gNB rxtx process" message(s)' logging.debug('\u001B[1;30;43m ' + statMsg + ' \u001B[0m') htmleNBFailureMsg += statMsg + '\n' + if gnbTxWriteThreadEnabled: + statMsg = nodeB_prefix + 'NB ran with TX Write thread enabled' + logging.debug('\u001B[1;30;43m ' + statMsg + ' \u001B[0m') + htmleNBFailureMsg += statMsg + '\n' if uciStatMsgCount > 0: statMsg = nodeB_prefix + 'NB showed ' + str(uciStatMsgCount) + ' "uci->stat" message(s)' logging.debug('\u001B[1;30;43m ' + statMsg + ' \u001B[0m') @@ -960,6 +881,14 @@ class RANManagement(): statMsg = nodeB_prefix + 'NB showed ' + str(ulschFailure) + ' "ULSCH in error in round" message(s)' logging.debug('\u001B[1;30;43m ' + statMsg + ' \u001B[0m') htmleNBFailureMsg += statMsg + '\n' + if ulschAllocateCCEerror > 0: + statMsg = nodeB_prefix + 'NB showed ' + str(ulschAllocateCCEerror) + ' "eNB_dlsch_ulsch_scheduler(); ERROR ALLOCATING CCEs" message(s)' + logging.debug('\u001B[1;30;43m ' + statMsg + ' \u001B[0m') + htmleNBFailureMsg += statMsg + '\n' + if uplinkSegmentsAborted > 0: + statMsg = nodeB_prefix + 'NB showed ' + str(uplinkSegmentsAborted) + ' "uplink segment error 0/2, aborted * segments" message(s)' + logging.debug('\u001B[1;30;43m ' + statMsg + ' \u001B[0m') + htmleNBFailureMsg += statMsg + '\n' if dropNotEnoughRBs > 0: statMsg = 'eNB showed ' + str(dropNotEnoughRBs) + ' "dropping, not enough RBs" message(s)' logging.debug('\u001B[1;30;43m ' + statMsg + ' \u001B[0m') @@ -1030,30 +959,30 @@ class RANManagement(): rruMsg = 'Slave RRU DID NOT receive the RRU_frame_resynch command from RAU' logging.debug('\u001B[1;37;41m ' + rruMsg + ' \u001B[0m') htmleNBFailureMsg += rruMsg + '\n' - self.prematureExit(True) - return CONST.ENB_PROCESS_SLAVE_RRU_NOT_SYNCED + self.prematureExit = True + global_status = CONST.ENB_PROCESS_SLAVE_RRU_NOT_SYNCED if foundSegFault: logging.debug('\u001B[1;37;41m ' + nodeB_prefix + 'NB ended with a Segmentation Fault! \u001B[0m') - if self.htmlObj is not None: - self.htmlObj.SetHmleNBFailureMsg(htmleNBFailureMsg) - return CONST.ENB_PROCESS_SEG_FAULT + global_status = CONST.ENB_PROCESS_SEG_FAULT if foundAssertion: logging.debug('\u001B[1;37;41m ' + nodeB_prefix + 'NB ended with an assertion! \u001B[0m') htmleNBFailureMsg += msgAssertion - if self.htmlObj is not None: - self.htmlObj.SetHmleNBFailureMsg(htmleNBFailureMsg) - return CONST.ENB_PROCESS_ASSERTION + global_status = CONST.ENB_PROCESS_ASSERTION if foundRealTimeIssue: logging.debug('\u001B[1;37;41m ' + nodeB_prefix + 'NB faced real time issues! \u001B[0m') htmleNBFailureMsg += nodeB_prefix + 'NB faced real time issues!\n' - #return CONST.ENB_PROCESS_REALTIME_ISSUE if rlcDiscardBuffer > 0: rlcMsg = nodeB_prefix + 'NB RLC discarded ' + str(rlcDiscardBuffer) + ' buffer(s)' logging.debug('\u001B[1;37;41m ' + rlcMsg + ' \u001B[0m') htmleNBFailureMsg += rlcMsg + '\n' - if self.htmlObj is not None: - self.htmlObj.SetHmleNBFailureMsg(htmleNBFailureMsg) - return CONST.ENB_PROCESS_REALTIME_ISSUE + global_status = CONST.ENB_PROCESS_REALTIME_ISSUE if self.htmlObj is not None: - self.htmlObj.SetHmleNBFailureMsg(htmleNBFailureMsg) - return 0 + self.htmlObj.htmleNBFailureMsg=htmleNBFailureMsg + # Runtime statistics + if runTime != '': + logging.debug(runTime) + logging.debug('Time executing user inst : ' + userTime) + logging.debug('Time executing system inst : ' + systemTime) + logging.debug('Max Physical Memory Usage : ' + maxPhyMemUsage) + logging.debug('Nb Context Switches : ' + nbContextSwitches) + return global_status diff --git a/ci-scripts/reportBuildLocally.sh b/ci-scripts/reportBuildLocally.sh index 0a75ff25b7..44d200c3b6 100755 --- a/ci-scripts/reportBuildLocally.sh +++ b/ci-scripts/reportBuildLocally.sh @@ -53,7 +53,7 @@ function details_table { echo " Message" >> $3 echo " " >> $3 - LIST_MESSAGES=`egrep "error:|warning:" $2 | egrep -v "jobserver unavailable|Clock skew detected.|flexran.proto"` + LIST_MESSAGES=`egrep "error:|warning:" $2 | egrep -v "jobserver unavailable|Clock skew detected.|flexran.proto|disabling jobserver mode"` COMPLETE_MESSAGE="start" for MESSAGE in $LIST_MESSAGES do @@ -146,7 +146,7 @@ function summary_table_row { else echo " $NB_ERRORS" >> ./build_results.html fi - NB_WARNINGS=`egrep "warning:" $2 | egrep -v "jobserver unavailable|Clock skew detected.|flexran.proto" | egrep -c "warning:"` + NB_WARNINGS=`egrep "warning:" $2 | egrep -v "jobserver unavailable|Clock skew detected.|flexran.proto|disabling jobserver mode" | egrep -c "warning:"` if [ $NB_WARNINGS -eq 0 ] then echo " $NB_WARNINGS" >> ./build_results.html diff --git a/ci-scripts/reportTestLocally.sh b/ci-scripts/reportTestLocally.sh index b74fe93a1f..b05ccf39db 100755 --- a/ci-scripts/reportTestLocally.sh +++ b/ci-scripts/reportTestLocally.sh @@ -620,6 +620,101 @@ function report_test { #IPERF_TESTS=`ls $ARCHIVES_LOC/${TMODE}_${BW}MHz_${CN_CONFIG}_iperf_ul*client*txt | grep -v mbms 2> /dev/null` #analyzeIperfFiles done + + # FeMBMS Case + CN_CONFIG="noS1" + TMODE="fdd" + BW_CASES=(05) + for BW in ${BW_CASES[@]} + do + echo " " >> ./test_simulator_results.html + echo " Test FeMBMS without EPC (aka noS1): ${TMODE} -- ${BW}MHz " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + ENB_LOG=$ARCHIVES_LOC/${TMODE}_${BW}MHz_${CN_CONFIG}_enb_fembms.log + UE_LOG=`echo $ENB_LOG | sed -e "s#enb#ue#"` + if [ -f $ENB_LOG ] && [ -f $UE_LOG ] + then + NAME_ENB=`echo $ENB_LOG | sed -e "s#$ARCHIVES_LOC/##"` + NAME_UE=`echo $UE_LOG | sed -e "s#$ARCHIVES_LOC/##"` + echo " " >> ./test_simulator_results.html + echo " $NAME_ENB --- $NAME_UE" >> ./test_simulator_results.html + echo " N/A" >> ./test_simulator_results.html + #NB_ENB_GOT_SYNC=`egrep -c "got sync" $ENB_LOG` + NB_ENB_TUNNEL_UP=`egrep -c "Interface oaitun_enb1 successfully configured" $ENB_LOG` + NB_ENB_MTUNNEL_UP=`egrep -c "Interface oaitun_enm1 successfully configured" $ENB_LOG` + #NB_UE_GOT_SYNC=`egrep -c "rfsimulator: Success" $UE_LOG` + #NB_ENB_SYNCED_WITH_UE=`egrep -c "Generating RRCConnectionReconfigurationComplete" $UE_LOG` + NB_UE_TUNNEL_UP=`egrep -c "Interface oaitun_ue1 successfully configured" $UE_LOG` + NB_UE_MTUNNEL_UP=`egrep -c "Interface oaitun_uem1 successfully configured" $UE_LOG` + NB_UE_MBMS_PUSH_MSG=`egrep -c "TRIED TO PUSH MBMS DATA TO" $UE_LOG` + #if [ $NB_ENB_GOT_SYNC -gt 0 ] && [ $NB_UE_GOT_SYNC -gt 0 ] && [ $NB_ENB_SYNCED_WITH_UE -gt 0 ] && [ $NB_UE_MBMS_PUSH_MSG -gt 0 ] + if [ $NB_UE_MBMS_PUSH_MSG -gt 0 ] + then + echo " OK" >> ./test_simulator_results.html + else + echo " KO" >> ./test_simulator_results.html + fi + echo "
" >> ./test_simulator_results.html
+                #if [ $NB_ENB_GOT_SYNC -gt 0 ]
+                #then
+                #    echo "- eNB --> got sync" >> ./test_simulator_results.html
+                #else
+                #    echo "- eNB NEVER got sync" >> ./test_simulator_results.html
+                #fi
+                if [ $NB_ENB_TUNNEL_UP -gt 0 ]
+                then
+                    echo "- eNB mounted oaitun_enb1 interface" >> ./test_simulator_results.html
+                else
+                    echo "- eNB NEVER mounted oaitun_enb1 interface" >> ./test_simulator_results.html
+                fi
+                if [ $NB_ENB_MTUNNEL_UP -gt 0 ]
+                then
+                    echo "- eNB mounted oaitun_enm1 interface" >> ./test_simulator_results.html
+                else
+                    echo "- eNB NEVER mounted oaitun_enm1 interface" >> ./test_simulator_results.html
+                fi
+                #if [ $NB_UE_GOT_SYNC -gt 0 ]
+                #then
+                #    echo "- LTE UE --> got sync" >> ./test_simulator_results.html
+                #else
+                #    echo "- LTE UE NEVER got sync" >> ./test_simulator_results.html
+                #fi
+                #if [ $NB_ENB_SYNCED_WITH_UE -gt 0 ]
+                #then
+                #    echo "- LTE UE attached to eNB" >> ./test_simulator_results.html
+                #else
+                #    echo "- LTE UE NEVER attached to eNB" >> ./test_simulator_results.html
+                #fi
+                if [ $NB_UE_TUNNEL_UP -gt 0 ]
+                then
+                    echo "- LTE UE mounted oaitun_ue1 interface" >> ./test_simulator_results.html
+                else
+                    echo "- LTE UE NEVER mounted oaitun_ue1 interface" >> ./test_simulator_results.html
+                fi
+                if [ $NB_UE_MTUNNEL_UP -gt 0 ]
+                then
+                    echo "- LTE UE mounted oaitun_uem1 interface" >> ./test_simulator_results.html
+                else
+                    echo "- LTE UE NEVER mounted oaitun_uem1 interface" >> ./test_simulator_results.html
+                fi
+                if [ $NB_UE_MBMS_PUSH_MSG -gt 0 ]
+                then
+                    echo "- LTE UE tried to push ${NB_UE_MBMS_PUSH_MSG} MBMS DATA" >> ./test_simulator_results.html
+                else
+                    echo "- LTE UE NEVER pushed MBMS DATA" >> ./test_simulator_results.html
+                fi
+                echo "        
" >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + fi + #PING_LOGS=`ls $ARCHIVES_LOC/${TMODE}_${BW}MHz_${CN_CONFIG}_ping*.log 2> /dev/null` + #analyzePingFiles + + #IPERF_TESTS=`ls $ARCHIVES_LOC/${TMODE}_${BW}MHz_${CN_CONFIG}_iperf_dl*client*txt | grep -v mbms 2> /dev/null` + #analyzeIperfFiles + + #IPERF_TESTS=`ls $ARCHIVES_LOC/${TMODE}_${BW}MHz_${CN_CONFIG}_iperf_ul*client*txt | grep -v mbms 2> /dev/null` + #analyzeIperfFiles + done echo " " >> ./test_simulator_results.html echo " " >> ./test_simulator_results.html @@ -724,8 +819,8 @@ function report_test { echo " " >> ./test_simulator_results.html echo " " >> ./test_simulator_results.html fi - #PING_LOGS=`ls $ARCHIVES_LOC/${TMODE}_${BW}MHz_${UES}users_${CN_CONFIG}_ping*.log 2> /dev/null` - #analyzePingFiles + PING_LOGS=`ls $ARCHIVES_LOC/${TMODE}_${BW}prb_${CN_CONFIG}_ping*.log 2> /dev/null` + analyzePingFiles IPERF_TESTS=`ls $ARCHIVES_LOC/${TMODE}_${BW}prb_${CN_CONFIG}_iperf_dl*client*txt 2> /dev/null` analyzeIperfFiles diff --git a/ci-scripts/rrc-files/rbconfig.raw b/ci-scripts/rrc-files/rbconfig.raw deleted file mode 100644 index b03f18d1219201d789d1c70e1dced3e84a932990..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 PcmWgP)DUkvz{3Cl2C4z8 diff --git a/ci-scripts/rrc-files/reconfig.raw b/ci-scripts/rrc-files/reconfig.raw deleted file mode 100644 index 97b41d9b6b0f0662487ca39848f85e9c1f7f8594..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 479 zcmZvXK}Zx)0EYiJZ+7;%j_XKUh%ENXDK?21#KRUHp2H>+lyvMMF*~+WLFgem)aA{% zl66`(S%faD6@&yyL3n&?+qPmv2;D@MEa;eCx>&Z|yM5p7`&hU&j$JjxrW$?heDiE# zrp~RxosN$_z1U>h&8!6U&Bpv>RXxWN$Vq{N}IvEipfZ!CNn4gOq0Wp{R}^Kfa2pe-7*}_6@%Q6AZjd^V@W_3Ne!j2yN1Yorg8CJ&MSq*vtF|z9Rf}kw9 zOx9^wP&>JogICi$s@0-2 zPoAI>dgr#}5FkI0;q=V(#{Xt(%cWbI-oqTJ2GB)JI7a5$XTEsf?jL>hsog_Mw{JWI@5GhC+Q#8h* qJUD$YnWS13stM;DOiNO|EftB=CGW!CtAm++osPf`dKT!uA^!qOo0Vh$ diff --git a/ci-scripts/runTestOnVM.sh b/ci-scripts/runTestOnVM.sh index 64af11c8ba..b9b9a2bafa 100755 --- a/ci-scripts/runTestOnVM.sh +++ b/ci-scripts/runTestOnVM.sh @@ -89,6 +89,9 @@ function start_basic_sim_enb { fi done ENB_SYNC=0 + echo "echo \"free -m\"" > $1 + echo "free -m" >> $1 + ssh -T -o StrictHostKeyChecking=no ubuntu@$LOC_VM_IP_ADDR < $1 rm $1 if [ $i -lt 50 ] then @@ -151,6 +154,9 @@ function start_basic_sim_ue { i=$[$i+1] fi done + echo "echo \"free -m\"" > $1 + echo "free -m" >> $1 + ssh -T -o StrictHostKeyChecking=no ubuntu@$2 < $1 rm $1 if [ $i -lt 50 ] then @@ -523,9 +529,9 @@ function install_epc_on_vm { echo "############################################################" echo "[ -f 01proxy ] && sudo cp 01proxy /etc/apt/apt.conf.d/" > $LOC_EPC_VM_CMDS echo "touch /home/ubuntu/.hushlogin" >> $LOC_EPC_VM_CMDS - echo "echo \"sudo apt-get --yes --quiet install zip openjdk-8-jre libconfuse-dev libreadline-dev liblog4c-dev libgcrypt-dev libsctp-dev python2.7 python2.7-dev daemon iperf\"" >> $LOC_EPC_VM_CMDS + echo "echo \"sudo apt-get --yes --quiet install zip openjdk-8-jre libconfuse-dev libreadline-dev liblog4c-dev libgcrypt-dev libsctp-dev python2.7 python2.7-dev iperf\"" >> $LOC_EPC_VM_CMDS echo "sudo apt-get update > zip-install.txt 2>&1" >> $LOC_EPC_VM_CMDS - echo "sudo apt-get --yes install zip openjdk-8-jre libconfuse-dev libreadline-dev liblog4c-dev libgcrypt-dev libsctp-dev python2.7 python2.7-dev daemon iperf >> zip-install.txt 2>&1" >> $LOC_EPC_VM_CMDS + echo "sudo apt-get --yes install zip openjdk-8-jre libconfuse-dev libreadline-dev liblog4c-dev libgcrypt-dev libsctp-dev python2.7 python2.7-dev iperf >> zip-install.txt 2>&1" >> $LOC_EPC_VM_CMDS # Installing HSS echo "echo \"cd /opt\"" >> $LOC_EPC_VM_CMDS @@ -588,8 +594,6 @@ function start_epc { echo "echo \"cd /opt/hss_sim0609\"" > $LOC_EPC_VM_CMDS echo "cd /opt/hss_sim0609" >> $LOC_EPC_VM_CMDS echo "sudo rm -f hss.log" >> $LOC_EPC_VM_CMDS - #echo "echo \"sudo daemon --unsafe --name=simulated_hss --chdir=/opt/hss_sim0609 ./starthss_real\"" >> $LOC_EPC_VM_CMDS - #echo "sudo daemon --unsafe --name=simulated_hss --chdir=/opt/hss_sim0609 ./starthss_real" >> $LOC_EPC_VM_CMDS echo "echo \"screen -dm -S simulated_hss ./starthss_real\"" >> $LOC_EPC_VM_CMDS echo "sudo su -c \"screen -dm -S simulated_hss ./starthss_real\"" >> $LOC_EPC_VM_CMDS @@ -656,8 +660,6 @@ function terminate_epc { echo "cd /opt/ltebox/tools" >> $1 echo "echo \"sudo ./stop_ltebox\"" >> $1 echo "sudo ./stop_ltebox" >> $1 - echo "echo \"sudo daemon --name=simulated_hss --stop\"" >> $1 - echo "sudo daemon --name=simulated_hss --stop" >> $1 echo "echo \"sudo killall --signal SIGKILL hss_sim\"" >> $1 echo "sudo killall --signal SIGKILL hss_sim" >> $1 ssh -T -o StrictHostKeyChecking=no ubuntu@$2 < $1 @@ -764,6 +766,9 @@ function start_l2_sim_enb { i=$[$i+1] fi done + echo "echo \"free -m\"" > $1 + echo "free -m" >> $1 + ssh -T -o StrictHostKeyChecking=no ubuntu@$LOC_ENB_VM_IP_ADDR < $1 rm $1 ENB_SYNC=1 if [ $i -lt 50 ] @@ -872,6 +877,9 @@ function start_l2_sim_ue { i=$[$i+1] fi done + echo "echo \"free -m\"" > $1 + echo "free -m" >> $1 + ssh -T -o StrictHostKeyChecking=no ubuntu@$LOC_UE_VM_IP_ADDR < $1 rm $1 UE_SYNC=1 if [ $i -lt 50 ] @@ -985,6 +993,9 @@ function start_rf_sim_enb { i=$[$i+1] fi done + echo "echo \"free -m\"" > $1 + echo "free -m" >> $1 + ssh -T -o StrictHostKeyChecking=no ubuntu@$LOC_ENB_VM_IP_ADDR < $1 rm $1 if [ $i -lt 50 ] then @@ -1114,6 +1125,9 @@ function start_rf_sim_ue { i=$[$i+1] fi done + echo "echo \"free -m\"" > $1 + echo "free -m" >> $1 + ssh -T -o StrictHostKeyChecking=no ubuntu@$LOC_UE_VM_IP_ADDR < $1 rm $1 if [ $i -lt 50 ] then @@ -1158,6 +1172,10 @@ function start_rf_sim_gnb { local LOC_CONF_FILE=$5 # 1 is with S1 and 0 without S1 aka noS1 local LOC_S1_CONFIGURATION=$6 + + if [ -e rbconfig.raw ]; then rm -f rbconfig.raw; fi + if [ -e reconfig.raw ]; then rm -f reconfig.raw; fi + echo "cd /home/ubuntu/tmp" > $1 echo "echo \"sudo apt-get --yes --quiet install daemon \"" >> $1 echo "sudo apt-get --yes install daemon >> /home/ubuntu/tmp/cmake_targets/log/daemon-install.txt 2>&1" >> $1 @@ -1171,6 +1189,7 @@ function start_rf_sim_gnb { echo "echo \"cd /home/ubuntu/tmp/cmake_targets/ran_build/build/\"" >> $1 echo "sudo chmod 777 /home/ubuntu/tmp/cmake_targets/ran_build/build/" >> $1 echo "cd /home/ubuntu/tmp/cmake_targets/ran_build/build/" >> $1 + echo "sudo rm -f r*config.raw" >> $1 if [ $LOC_S1_CONFIGURATION -eq 0 ] then echo "echo \"RFSIMULATOR=server ./nr-softmodem -O /home/ubuntu/tmp/ci-scripts/conf_files/ci-$LOC_CONF_FILE --log_config.global_log_options level,nocolor --parallel-config PARALLEL_SINGLE_THREAD --noS1 --nokrnmod 1 --rfsim --phy-test\" > ./my-nr-softmodem-run.sh " >> $1 @@ -1231,6 +1250,13 @@ function start_rf_sim_gnb { fi fi sleep 10 + echo "echo \"free -m\"" > $1 + echo "free -m" >> $1 + ssh -T -o StrictHostKeyChecking=no ubuntu@$LOC_GNB_VM_IP_ADDR < $1 + rm $1 + # Copy the RAW files from the gNB run for the NR-UE + scp -o StrictHostKeyChecking=no ubuntu@$LOC_GNB_VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/ran_build/build/rbconfig.raw . + scp -o StrictHostKeyChecking=no ubuntu@$LOC_GNB_VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/ran_build/build/reconfig.raw . } function start_rf_sim_nr_ue { @@ -1241,14 +1267,21 @@ function start_rf_sim_nr_ue { local LOC_FREQUENCY=$6 # 1 is with S1 and 0 without S1 aka noS1 local LOC_S1_CONFIGURATION=$7 + + # Copy the RAW files from the gNB run + scp -o StrictHostKeyChecking=no rbconfig.raw ubuntu@$LOC_NR_UE_VM_IP_ADDR:/home/ubuntu/tmp + scp -o StrictHostKeyChecking=no reconfig.raw ubuntu@$LOC_NR_UE_VM_IP_ADDR:/home/ubuntu/tmp + echo "echo \"sudo apt-get --yes --quiet install daemon \"" > $1 echo "sudo apt-get --yes install daemon >> /home/ubuntu/tmp/cmake_targets/log/daemon-install.txt 2>&1" >> $1 echo "echo \"cd /home/ubuntu/tmp/cmake_targets/ran_build/build/\"" >> $1 echo "sudo chmod 777 /home/ubuntu/tmp/cmake_targets/ran_build/build/" >> $1 + echo "sudo cp /home/ubuntu/tmp/r*config.raw /home/ubuntu/tmp/cmake_targets/ran_build/build/" >> $1 + echo "sudo chmod 666 /home/ubuntu/tmp/cmake_targets/ran_build/build/r*config.raw" >> $1 echo "cd /home/ubuntu/tmp/cmake_targets/ran_build/build/" >> $1 if [ $LOC_S1_CONFIGURATION -eq 0 ] then - echo "echo \"RFSIMULATOR=${LOC_GNB_VM_IP_ADDR} ./nr-uesoftmodem --nokrnmod 1 --rfsim --phy-test --rrc_config_path /home/ubuntu/tmp/ci-scripts/rrc-files --log_config.global_log_options level,nocolor --noS1\" > ./my-nr-softmodem-run.sh " >> $1 + echo "echo \"RFSIMULATOR=${LOC_GNB_VM_IP_ADDR} ./nr-uesoftmodem --nokrnmod 1 --rfsim --phy-test --rrc_config_path /home/ubuntu/tmp/cmake_targets/ran_build/build/ --log_config.global_log_options level,nocolor --noS1\" > ./my-nr-softmodem-run.sh " >> $1 fi echo "chmod 775 ./my-nr-softmodem-run.sh" >> $1 echo "cat ./my-nr-softmodem-run.sh" >> $1 @@ -1295,6 +1328,9 @@ function start_rf_sim_nr_ue { i=$[$i+1] fi done + echo "echo \"free -m\"" > $1 + echo "free -m" >> $1 + ssh -T -o StrictHostKeyChecking=no ubuntu@$LOC_NR_UE_VM_IP_ADDR < $1 rm $1 if [ $i -lt 50 ] then @@ -2014,6 +2050,95 @@ function run_test_on_vm { echo "LTE RFSIM seems to FAIL" echo "LTE: TEST_KO" > $ARCHIVES_LOC/test_final_status.log fi + + #################### + ## FeMBMS CASE noS1 ## + #################### + CONF_FILE=lte-fdd-fembms-basic-sim.conf + CN_CONFIG="noS1" + S1_NOS1_CFG=0 + LTEBOX=0 + TMODE="fdd" + FREQUENCY=2680 + BW_CASES=(05) + FeMBMS_STATUS=0 + + for BW in ${BW_CASES[@]} + do + if [[ $BW =~ .*05.* ]]; then PRB=25; fi + if [[ $BW =~ .*10.* ]]; then PRB=50; fi + if [[ $BW =~ .*20.* ]]; then PRB=100; fi + + echo "############################################################" + echo "${CN_CONFIG} : Starting the eNB with MSMS in ${TMODE}-${BW}MHz mode" + echo "############################################################" + CURRENT_ENB_LOG_FILE=${TMODE}_${BW}MHz_${CN_CONFIG}_enb_fembms.log + start_rf_sim_enb $ENB_VM_CMDS "$ENB_VM_IP_ADDR" "$EPC_VM_IP_ADDR" $CURRENT_ENB_LOG_FILE $PRB $CONF_FILE $S1_NOS1_CFG + + echo "############################################################" + echo "${CN_CONFIG} : Starting the UE" + echo "############################################################" + CURRENT_UE_LOG_FILE=${TMODE}_${BW}MHz_${CN_CONFIG}_ue_fembms.log + start_rf_sim_ue $UE_VM_CMDS $UE_VM_IP_ADDR $ENB_VM_IP_ADDR $CURRENT_UE_LOG_FILE $PRB $FREQUENCY $S1_NOS1_CFG 1 + if [ $UE_SYNC -eq 0 ] + then + echo "Problem w/ eNB and UE not syncing" + terminate_enb_ue_basic_sim $ENB_VM_CMDS $ENB_VM_IP_ADDR 1 + terminate_enb_ue_basic_sim $UE_VM_CMDS $UE_VM_IP_ADDR 2 + scp -o StrictHostKeyChecking=no ubuntu@$ENB_VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC + scp -o StrictHostKeyChecking=no ubuntu@$UE_VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC + STATUS=-1 + break + fi + + echo "############################################################" + echo "${CN_CONFIG} : iperf DL -- UE is server and eNB is client" + echo "############################################################" + get_enb_mbms_noS1_ip_addr $ENB_VM_CMDS $ENB_VM_IP_ADDR + IPERF_LOG_FILE=${TMODE}_${BW}MHz_${CN_CONFIG}_iperf_dl_fembms + get_ue_mbms_ip_addr $UE_VM_CMDS $UE_VM_IP_ADDR 1 + THROUGHPUT=2 + generic_iperf $UE_VM_CMDS $UE_VM_IP_ADDR $UE_IP_ADDR $ENB_VM_CMDS $ENB_VM_IP_ADDR $ENB_IP_ADDR $THROUGHPUT $IPERF_LOG_FILE 1 0 + scp -o StrictHostKeyChecking=no ubuntu@$UE_VM_IP_ADDR:/home/ubuntu/${IPERF_LOG_FILE}_server.txt $ARCHIVES_LOC + scp -o StrictHostKeyChecking=no ubuntu@$ENB_VM_IP_ADDR:/home/ubuntu/${IPERF_LOG_FILE}_client.txt $ARCHIVES_LOC + #check_iperf $ARCHIVES_LOC/$IPERF_LOG_FILE $THROUGHPUT + + echo "############################################################" + echo "${CN_CONFIG} : Terminate enb/ue simulators" + echo "############################################################" + terminate_enb_ue_basic_sim $ENB_VM_CMDS $ENB_VM_IP_ADDR 1 + terminate_enb_ue_basic_sim $UE_VM_CMDS $UE_VM_IP_ADDR 2 + scp -o StrictHostKeyChecking=no ubuntu@$ENB_VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC + scp -o StrictHostKeyChecking=no ubuntu@$UE_VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC + NB_UE_FeMBMS_MESSAGES=`egrep -c "TRIED TO PUSH MBMS DATA TO" $ARCHIVES_LOC/$CURRENT_UE_LOG_FILE` + if [ $NB_UE_FeMBMS_MESSAGES -eq 0 ]; then FeMBMS_STATUS=-1; fi + + done + + full_l2_sim_destroy + + echo "############################################################" + echo "Checking run status" + echo "############################################################" + + if [ $PING_STATUS -ne 0 ]; then STATUS=-1; fi + if [ $IPERF_STATUS -ne 0 ]; then STATUS=-1; fi + if [ $FeMBMS_STATUS -eq 0 ] + then + echo "LTE FeMBMS RFSIM seems OK" + else + echo "LTE FeMBMS RFSIM seems to FAIL" + STATUS=-1 + fi + if [ $STATUS -eq 0 ] + then + echo "LTE RFSIM seems OK" + echo "LTE: TEST_OK" > $ARCHIVES_LOC/test_final_status.log + else + echo "LTE RFSIM seems to FAIL" + echo "LTE: TEST_KO" > $ARCHIVES_LOC/test_final_status.log + fi + fi if [[ "$RUN_OPTIONS" == "complex" ]] && [[ $VM_NAME =~ .*-rf-sim.* ]] @@ -2028,7 +2153,7 @@ function run_test_on_vm { NR_STATUS=0 ######### start of loop - while [ $try_cnt -lt 5 ] + while [ $try_cnt -lt 1 ] do SYNC_STATUS=0 PING_STATUS=0 @@ -2050,6 +2175,8 @@ function run_test_on_vm { echo "Problem w/ gNB and NR-UE not syncing" terminate_enb_ue_basic_sim $NR_UE_VM_CMDS $NR_UE_VM_IP_ADDR 2 terminate_enb_ue_basic_sim $GNB_VM_CMDS $GNB_VM_IP_ADDR 1 + scp -o StrictHostKeyChecking=no ubuntu@$GNB_VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_GNB_LOG_FILE $ARCHIVES_LOC + scp -o StrictHostKeyChecking=no ubuntu@$NR_UE_VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_NR_UE_LOG_FILE $ARCHIVES_LOC SYNC_STATUS=-1 try_cnt=$[$try_cnt+1] continue @@ -2089,6 +2216,8 @@ function run_test_on_vm { echo "DL test not OK" terminate_enb_ue_basic_sim $NR_UE_VM_CMDS $NR_UE_VM_IP_ADDR 2 terminate_enb_ue_basic_sim $GNB_VM_CMDS $GNB_VM_IP_ADDR 1 + scp -o StrictHostKeyChecking=no ubuntu@$GNB_VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_GNB_LOG_FILE $ARCHIVES_LOC + scp -o StrictHostKeyChecking=no ubuntu@$NR_UE_VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_NR_UE_LOG_FILE $ARCHIVES_LOC try_cnt=$[$try_cnt+1] continue fi diff --git a/ci-scripts/sshconnection.py b/ci-scripts/sshconnection.py index ba0f900f29..ed0cf5379a 100644 --- a/ci-scripts/sshconnection.py +++ b/ci-scripts/sshconnection.py @@ -101,6 +101,18 @@ class SSHConnection(): else: sys.exit('SSH Connection Failed') + + + + def cde_check_value(self, commandline, expected, timeout): + logging.debug(commandline) + self.ssh.timeout = timeout + self.ssh.sendline(commandline) + expected.append(pexpect.EOF) + expected.append(pexpect.TIMEOUT) + self.sshresponse = self.ssh.expect(expected) + return self.sshresponse + def command(self, commandline, expectedline, timeout): logging.debug(commandline) self.ssh.timeout = timeout diff --git a/ci-scripts/xml_class_list.yml b/ci-scripts/xml_class_list.yml new file mode 100755 index 0000000000..e80063a120 --- /dev/null +++ b/ci-scripts/xml_class_list.yml @@ -0,0 +1,35 @@ + - COTS_UE_Airplane + - Build_PhySim + - Run_PhySim + - Build_eNB + - WaitEndBuild_eNB + - Initialize_eNB + - Terminate_eNB + - Initialize_UE + - Terminate_UE + - Attach_UE + - Detach_UE + - Build_OAI_UE + - Initialize_OAI_UE + - Terminate_OAI_UE + - DataDisable_UE + - DataEnable_UE + - CheckStatusUE + - Ping + - Iperf + - Reboot_UE + - Initialize_FlexranCtrl + - Terminate_FlexranCtrl + - Initialize_HSS + - Terminate_HSS + - Initialize_MME + - Terminate_MME + - Initialize_SPGW + - Terminate_SPGW + - Initialize_CatM_module + - Terminate_CatM_module + - Attach_CatM_module + - Detach_CatM_module + - Ping_CatM_module + - IdleSleep + - Perform_X2_Handover diff --git a/ci-scripts/xml_files/enb_ocp_usrp210_band7_test_05mhz_tm1.xml b/ci-scripts/xml_files/enb_ocp_usrp210_band7_test_05mhz_tm1.xml new file mode 100644 index 0000000000..a4caa77075 --- /dev/null +++ b/ci-scripts/xml_files/enb_ocp_usrp210_band7_test_05mhz_tm1.xml @@ -0,0 +1,147 @@ + + + test-05-tm1 + Test-05MHz-TM1 + tasks + 4 + + 030201 + 040101 + 030101 040301 040501 040603 040604 040605 040606 040607 040641 040642 040643 040644 040401 040201 030201 + + + + + Initialize_eNB + Initialize OCP-eNB (FDD/Band7/5MHz) + -O ci-scripts/conf_files/enb.band7.tm1.25PRB.usrpb210.conf + ocp + + + + Terminate_eNB + Terminate OCP-eNB + ocp + + + + Initialize_UE + Initialize UE + + + + Terminate_UE + Terminate UE + + + + Attach_UE + Attach UE + + + + Detach_UE + Detach UE + + + + Ping + ping (5MHz - 20 sec) + -c 20 + 5 + + + + Iperf + iperf (5MHz - DL/15Mbps/UDP)(30 sec)(balanced profile) + -u -b 15M -t 30 -i 1 + 50 + balanced + + + + Iperf + iperf (5MHz - DL/15Mbps/UDP)(30 sec)(single-ue profile) + -u -b 15M -t 30 -i 1 + 50 + single-ue + + + + Iperf + iperf (5MHz - DL/15Mbps/UDP)(30 sec)(unbalanced profile) + -u -b 15M -t 30 -i 1 + 50 + unbalanced + + + + Iperf + iperf (5MHz - DL/TCP)(30 sec)(single-ue profile) + -t 30 -i 1 -fm + 50 + single-ue + + + + Iperf + iperf (5MHz - DL/TCP)(30 sec)(balanced profile) + -t 30 -i 1 -fm + 50 + balanced + + + + Iperf + iperf (5MHz - UL/9Mbps/UDP)(30 sec)(balanced profile) + -u -b 9M -t 30 -i 1 -R + 50 + balanced + + + + Iperf + iperf (5MHz - UL/9Mbps/UDP)(30 sec)(single-ue profile) + -u -b 9M -t 30 -i 1 -R + 50 + single-ue + + + + Iperf + iperf (5MHz - UL/TCP)(30 sec)(single-ue profile) + -t 30 -i 1 -fm -R + 50 + single-ue + + + + Iperf + iperf (5MHz - UL/TCP)(30 sec)(balanced profile) + -t 30 -i 1 -fm -R + 50 + balanced + + + diff --git a/ci-scripts/xml_files/enb_ocp_usrp210_build.xml b/ci-scripts/xml_files/enb_ocp_usrp210_build.xml new file mode 100644 index 0000000000..33a0fc205e --- /dev/null +++ b/ci-scripts/xml_files/enb_ocp_usrp210_build.xml @@ -0,0 +1,38 @@ + + + build-tab + Build + wrench + + 010101 + + + + + Build_eNB + Build eNB OCP (USRP) + -w USRP -c --eNBocp --ninja + + + diff --git a/ci-scripts/xml_files/enb_ue_usrp210_band7_epc_start.xml b/ci-scripts/xml_files/enb_ue_usrp210_band7_epc_start.xml index 4dbfe00821..aac71198f1 100644 --- a/ci-scripts/xml_files/enb_ue_usrp210_band7_epc_start.xml +++ b/ci-scripts/xml_files/enb_ue_usrp210_band7_epc_start.xml @@ -25,23 +25,10 @@ EPC-Start log-in - 010101 090101 050101 060101 070101 - - Build_eNB - Build eNB (USRP) - -w USRP -c --eNB - - - - Build_OAI_UE - Build OAI UE - -w USRP --UE - - Initialize_HSS Initialize HSS diff --git a/ci-scripts/xml_files/enb_ue_usrp210_band7_test_05mhz_tm1_fembms_no_s1.xml b/ci-scripts/xml_files/enb_ue_usrp210_band7_test_05mhz_tm1_fembms_no_s1.xml new file mode 100644 index 0000000000..775ef2e023 --- /dev/null +++ b/ci-scripts/xml_files/enb_ue_usrp210_band7_test_05mhz_tm1_fembms_no_s1.xml @@ -0,0 +1,82 @@ + + + test-05-tm1-fembms-nos1-tunnel + Test-05MHz-FEMBMS-TM1-noS1-tunnel + tasks + 2 + + 030201 090109 + 030104 000001 090104 000002 040605 000001 090109 030201 + + + + + IdleSleep + Sleep + 10 + + + + IdleSleep + Sleep + 15 + + + + IdleSleep + Sleep + 60 + + + + Initialize_eNB + Initialize eNB (FDD/Band7/5MHz/MBMS) + -O ci-scripts/conf_files/enb.band17.tm1.mbms.25PRB.usrpb210.conf --noS1 --eNBs.[0].rrc_inactivity_threshold 0 --nokrnmod 1 --eNBs.[0].component_carriers.[0].eutra_band 7 --eNBs.[0].component_carriers.[0].downlink_frequency 2680000000 --eNBs.[0].component_carriers.[0].uplink_frequency_offset -120000000 --eNBs.[0].component_carriers.[0].mbms_dedicated_serving_cell ENABLE --MCEs.[0].mbms_sched_info.mbms_area_config_list.[0].pmch_config_list.[0].allocated_sf_end 512 + + + + Terminate_eNB + Terminate eNB + + + + Initialize_OAI_UE + Initialize OAI UE (FDD/Band7/5MHz/MBMS) + -C 2680000000 -r 25 --ue-rxgain 120 --ue-txgain 0 --ue-max-power 0 --ue-scan-carrier --nokrnmod 1 --noS1 + + + + Terminate_OAI_UE + Terminate OAI UE + + + + Iperf + iperf (5MHz - DL/1.5Mbps/UDP/MBMS-sink)(20 sec) + -c 10.0.2.2 -u -b 1.5M -t 20 -i 1 -fm -B 10.0.2.1 + 50 + sink + + + diff --git a/ci-scripts/xml_files/enb_usrp210_band7_test_05mhz_tm1_rrc_inactivity_no_flexran.xml b/ci-scripts/xml_files/enb_usrp210_band7_test_05mhz_tm1_rrc_inactivity_no_flexran.xml index 41e746bc85..73d1216199 100644 --- a/ci-scripts/xml_files/enb_usrp210_band7_test_05mhz_tm1_rrc_inactivity_no_flexran.xml +++ b/ci-scripts/xml_files/enb_usrp210_band7_test_05mhz_tm1_rrc_inactivity_no_flexran.xml @@ -24,6 +24,7 @@ test-05-tm1-rrc-no-flex Test-05MHz-TM1-RRC-Inactivity tasks + 2 030201 040101 diff --git a/ci-scripts/xml_files/fr1_multi_node_build.xml b/ci-scripts/xml_files/fr1_multi_node_build.xml new file mode 100644 index 0000000000..7b4eacef3a --- /dev/null +++ b/ci-scripts/xml_files/fr1_multi_node_build.xml @@ -0,0 +1,66 @@ + + + build-tab + Build + wrench + + 000001 000002 + 000003 000004 + + + + + Build_eNB + Build eNB + -w USRP -c --eNB --ninja + 0 + 0 + True + + + + WaitEndBuild_eNB + Wait for end of Build eNB + 0 + 0 + + + + Build_eNB + Build gNB + -w USRP -c --gNB --ninja + 1 + 1 + True + + + + WaitEndBuild_eNB + Wait for end of Build gNB + 1 + 1 + + + + diff --git a/ci-scripts/xml_files/fr1_multi_node_terminate.xml b/ci-scripts/xml_files/fr1_multi_node_terminate.xml new file mode 100644 index 0000000000..cbaaf8ba99 --- /dev/null +++ b/ci-scripts/xml_files/fr1_multi_node_terminate.xml @@ -0,0 +1,50 @@ + + + test-fr1-tm1 + Test-FR1-TM1 + tasks + 1 + + 070001 + 070000 + + + + + + Terminate_eNB + Terminate eNB + 0 + 0 + + + + Terminate_eNB + Terminate gNB + 1 + 1 + + + + diff --git a/ci-scripts/xml_files/fr1_multi_node_test.xml b/ci-scripts/xml_files/fr1_multi_node_test.xml new file mode 100644 index 0000000000..8c56f0bcec --- /dev/null +++ b/ci-scripts/xml_files/fr1_multi_node_test.xml @@ -0,0 +1,77 @@ + + + test-fr1-tm1 + Test-FR1-TM1 + tasks + 1 + + 030000 + 040000 + 000001 + 070001 + 070000 + + + + + + Initialize_eNB + Initialize eNB + -O ci-scripts/conf_files/enb.band7.tm1.fr1.25PRB.usrpb210.conf + 0 + 0 + lte + + + + Initialize_eNB + Initialize gNB (3/4 sampling rate) + -O ci-scripts/conf_files/gnb.band78.tm1.fr1.106PRB.usrpb210.conf -E + 1 + 1 + nr + + + + IdleSleep + Sleep + 30 + + + + Terminate_eNB + Terminate eNB + 0 + 0 + + + + Terminate_eNB + Terminate gNB + 1 + 1 + + + + diff --git a/ci-scripts/xml_files/fr1_toggle_cots_ue.xml b/ci-scripts/xml_files/fr1_toggle_cots_ue.xml new file mode 100644 index 0000000000..b2267efc77 --- /dev/null +++ b/ci-scripts/xml_files/fr1_toggle_cots_ue.xml @@ -0,0 +1,39 @@ + + + test-airplane-mode + AirplaneToggle + tasks + + 010000 + + + + + COTS_UE_Airplane + Toggle COTS Airplane mode ON + ON + + + + diff --git a/ci-scripts/xml_files/gnb_nr_ue_usrp_run.xml b/ci-scripts/xml_files/gnb_nr_ue_usrp_run.xml index f3e80c576a..a344cb6a7f 100644 --- a/ci-scripts/xml_files/gnb_nr_ue_usrp_run.xml +++ b/ci-scripts/xml_files/gnb_nr_ue_usrp_run.xml @@ -52,7 +52,7 @@ Initialize_OAI_UE Initialize NR UE USRP - --phy-test --usrp-args "addr=192.168.30.2,second_addr=192.168.50.2,clock_source=external,time_source=external" --threadoffset 16 --rrc_config_path ci-scripts/rrc-files + --phy-test --usrp-args "addr=192.168.30.2,second_addr=192.168.50.2,clock_source=external,time_source=external" --ue-rxgain 75 --threadoffset 16 --rrc_config_path . NR diff --git a/ci-scripts/xml_files/gnb_nr_ue_usrp_run_multi_thread.xml b/ci-scripts/xml_files/gnb_nr_ue_usrp_run_multi_thread.xml new file mode 100644 index 0000000000..9e5e0a2bac --- /dev/null +++ b/ci-scripts/xml_files/gnb_nr_ue_usrp_run_multi_thread.xml @@ -0,0 +1,71 @@ + + + run-oai-gnb-nr-ue-tx-write-thread + Run-gNB-and-NR-UE-TX-Write-Thread + tasks + 2 + +090103 000001 090104 000002 090108 090109 + + + + + Initialize_eNB + Initialize gNB USRP (Tx-Write-Threading enabled) + -O ci-scripts/conf_files/gnb.band78.tm1.106PRB.usrpn300.conf --phy-test --usrp-tx-thread-config 1 + NR + + + + IdleSleep + Sleep + 5 + + + + IdleSleep + Waiting for NR UE to synchronize w/ gNB + 180 + + + + Initialize_OAI_UE + Initialize NR UE USRP + --phy-test --usrp-args "addr=192.168.30.2,second_addr=192.168.50.2,clock_source=external,time_source=external" --ue-rxgain 75 --threadoffset 16 --rrc_config_path . + NR + + + + Terminate_OAI_UE + Terminate NR UE + NR + + + + Terminate_eNB + Terminate gNB + NR + + + diff --git a/ci-scripts/xml_files/gnb_usrp_build.xml b/ci-scripts/xml_files/gnb_usrp_build.xml index bba92930c5..e2662180c5 100644 --- a/ci-scripts/xml_files/gnb_usrp_build.xml +++ b/ci-scripts/xml_files/gnb_usrp_build.xml @@ -24,6 +24,7 @@ gnb-build-tab Build-gNB wrench + 4 010101 @@ -33,7 +34,7 @@ TesteNB Build_eNB Build gNB (USRP) - --gNB -w USRP + --gNB -w USRP --ninja True diff --git a/ci-scripts/xml_files/if4p5_usrp210_band40_test_10mhz.xml b/ci-scripts/xml_files/if4p5_usrp210_band40_test_10mhz.xml index e1644f3931..8276294e9a 100644 --- a/ci-scripts/xml_files/if4p5_usrp210_band40_test_10mhz.xml +++ b/ci-scripts/xml_files/if4p5_usrp210_band40_test_10mhz.xml @@ -24,6 +24,7 @@ test-10 Test-10MHz tasks + 2 030201 040101 diff --git a/ci-scripts/xml_files/ldpc_gpu_test.xml b/ci-scripts/xml_files/ldpc_gpu_test.xml new file mode 100644 index 0000000000..a0191fbd76 --- /dev/null +++ b/ci-scripts/xml_files/ldpc_gpu_test.xml @@ -0,0 +1,161 @@ + + + test-ldpc-gpu + Test-ldpc-GPU + tasks + 1 + 000001 000002 000003 000004 000005 000006 000007 000008 000009 000010 000011 000012 000013 000014 000015 000016 000017 000018 000019 000020 000021 + + + + Build_PhySim + Build for physical simulator + --phy_simulators --ninja + FALSE + + + + Run_PhySim + Run LDPC Test with CPU + -l 3872 -s10 -n100 + + + + Run_PhySim + Run LDPC Test with GPU + -l 3872 -s10 -n100 -G 1 + + + + Run_PhySim + Run LDPC Test with CPU + -l 4224 -s10 -n100 + + + + Run_PhySim + Run LDPC Test with GPU + -l 4224 -s10 -n100 -G 1 + + + + Run_PhySim + Run LDPC Test with CPU + -l 4576 -s10 -n100 + + + + Run_PhySim + Run LDPC Test with GPU + -l 4576 -s10 -n100 -G 1 + + + + Run_PhySim + Run LDPC Test with CPU + -l 4928 -s10 -n100 + + + + Run_PhySim + Run LDPC Test with GPU + -l 4928 -s10 -n100 -G 1 + + + + Run_PhySim + Run LDPC Test with CPU + -l 5280 -s10 -n100 + + + + Run_PhySim + Run LDPC Test with GPU + -l 5280 -s10 -n100 -G 1 + + + + Run_PhySim + Run LDPC Test with CPU + -l 5632 -s10 -n100 + + + + Run_PhySim + Run LDPC Test with GPU + -l 5632 -s10 -n100 -G 1 + + + + Run_PhySim + Run LDPC Test with CPU + -l 6336 -s10 -n100 + + + + Run_PhySim + Run LDPC Test with GPU + -l 6336 -s10 -n100 -G 1 + + + + Run_PhySim + Run LDPC Test with CPU + -l 7040 -s10 -n100 + + + + Run_PhySim + Run LDPC Test with GPU + -l 7040 -s10 -n100 -G 1 + + + + Run_PhySim + Run LDPC Test with CPU + -l 7744 -s10 -n100 + + + + Run_PhySim + Run LDPC Test with GPU + -l 7744 -s10 -n100 -G 1 + + + + Run_PhySim + Run LDPC Test with CPU + -l 8448 -s10 -n100 + + + + Run_PhySim + Run LDPC Test with GPU + -l 8448 -s10 -n100 -G 1 + + + + + diff --git a/ci-scripts/xml_files/multi_rru_band38_build.xml b/ci-scripts/xml_files/multi_rru_band38_build.xml index 614ef394f3..ba45eab10a 100644 --- a/ci-scripts/xml_files/multi_rru_band38_build.xml +++ b/ci-scripts/xml_files/multi_rru_band38_build.xml @@ -33,7 +33,7 @@ Build_eNB Build RCC - -w USRP -c --eNB + -w USRP -c --eNB --ninja 0 0 True @@ -42,7 +42,7 @@ WaitEndBuild_eNB Wait for end of Build RCC - -w USRP -c --eNB + -w USRP -c --eNB --ninja 0 0 @@ -50,7 +50,7 @@ Build_eNB Build Master RRU - -w USRP -c --eNB + -w USRP -c --eNB --ninja 1 1 True @@ -59,7 +59,7 @@ WaitEndBuild_eNB Wait for end of Build Master RRU - -w USRP -c --eNB + -w USRP -c --eNB --ninja 1 1 @@ -67,7 +67,7 @@ Build_eNB Build Slave RRU - -w USRP -c --eNB + -w USRP -c --eNB --ninja 2 2 True @@ -76,7 +76,7 @@ WaitEndBuild_eNB Wait for end of Build Slave RRU - -w USRP -c --eNB + -w USRP -c --eNB --ninja 2 2 diff --git a/ci-scripts/xml_files/multi_rru_band38_test_10mhz_tm1.xml b/ci-scripts/xml_files/multi_rru_band38_test_10mhz_tm1.xml index 7658f8a0e5..cca14c0696 100644 --- a/ci-scripts/xml_files/multi_rru_band38_test_10mhz_tm1.xml +++ b/ci-scripts/xml_files/multi_rru_band38_test_10mhz_tm1.xml @@ -24,7 +24,7 @@ test-multi-rru-10 Test-Multi-RRU-10MHz tasks - 4 + 2 030211 030212 030213 030111 030112 030113 diff --git a/ci-scripts/xml_files/nr_ue_usrp_build.xml b/ci-scripts/xml_files/nr_ue_usrp_build.xml index 7d8d97d2c5..bc04efdb4b 100644 --- a/ci-scripts/xml_files/nr_ue_usrp_build.xml +++ b/ci-scripts/xml_files/nr_ue_usrp_build.xml @@ -24,6 +24,7 @@ nr-ue-build-tab Build-NR-UE wrench + 2 010102 @@ -33,7 +34,7 @@ TestUE Build_OAI_UE Build NR UE (USRP) - --nrUE -w USRP + --nrUE -w USRP --ninja false diff --git a/cmake_targets/CMakeLists.txt b/cmake_targets/CMakeLists.txt index eea22d129f..e540c3f95d 100644 --- a/cmake_targets/CMakeLists.txt +++ b/cmake_targets/CMakeLists.txt @@ -27,6 +27,10 @@ cmake_minimum_required (VERSION 3.0) # Base directories, compatible with legacy OAI building # ######################################################### set (OPENAIR_DIR $ENV{OPENAIR_DIR}) +if("${OPENAIR_DIR}" STREQUAL "") + string(REGEX REPLACE "/cmake_targets.*$" "" OPENAIR_DIR ${CMAKE_CURRENT_BINARY_DIR}) +endif() + set (NFAPI_DIR ${OPENAIR_DIR}/nfapi/open-nFAPI) set (NFAPI_USER_DIR ${OPENAIR_DIR}/nfapi/oai_integration) set (OPENAIR1_DIR ${OPENAIR_DIR}/openair1) @@ -39,6 +43,33 @@ set (OPENAIR_BIN_DIR ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}) project (OpenAirInterface) + + +############################################## +# Base CUDA setting +############################################## +find_package(CUDA) +if (CUDA_FOUND) + message ("cuda include ${CUDA_INCLUDE_DIRS}") + message ("cuda library ${CUDA_LIBRARY_DIRS}") + + add_definitions("-L/usr/local/cuda/lib64") + + SET(CUDA_NVCC_FLAGS + "${CUDA_NVCC_FLAGS};-arch=sm_60;") + + # Disable warnings for CUDA + SET(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS};-lpthread;-w;-O3;--default-stream;per-thread;-I/usr/local/cuda/inc;-L/usr/local/cuda/lib -lcutil;-rdc=true;-lcudadevrt") + SET(CUDA_VERBOSE_BUILD ON) + SET(CUDA_HOST_COMPILER "/usr/bin/g++") + + SET(CUDA_SEPARABLE_COMPILATION ON) + +else (CUDA_FOUND) + message ("No CUDA tool installed") +endif () + + ########################################### # macros to define options as there is numerous options in oai ################################################ @@ -169,13 +200,30 @@ endif() set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${C_FLAGS_PROCESSOR} -pipe -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing -rdynamic -funroll-loops -Wno-packed-bitfield-compat -fPIC") # add autotools definitions that were maybe used! -set(MKVER "'MAKE_VERSION(a,b,c)=((a)*256+(b)*16+c)'") -set(CMAKE_C_FLAGS - "${CMAKE_C_FLAGS} -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_FCNTL_H=1 -DHAVE_ARPA_INET_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_STRERROR=1 -DHAVE_SOCKET=1 -DHAVE_MEMSET=1 -DHAVE_GETTIMEOFDAY=1 -DHAVE_STDLIB_H=1 -DHAVE_MALLOC=1 -DHAVE_LIBSCTP -D${MKVER}" -) -set(CMAKE_CXX_FLAGS +if (CUDA_FOUND) + set(MKVER "'MAKE_VERSION(a,b,c)=((a)*256+(b)*16+c)'") + set(CUDA_CMAKE_C_FLAGS + "${CMAKE_C_FLAGS} -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_FCNTL_H=1 -DHAVE_ARPA_INET_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_STRERROR=1 -DHAVE_SOCKET=1 -DHAVE_MEMSET=1 -DHAVE_GETTIMEOFDAY=1 -DHAVE_STDLIB_H=1 -DHAVE_MALLOC=1 -DHAVE_LIBSCTP -D CUDA_FLAG" + ) + set(CUDA_CMAKE_CXX_FLAGS + "${CMAKE_CXX_FLAGS} ${C_FLAGS_PROCESSOR} -Wno-packed-bitfield-compat -fPIC -Wall -fno-strict-aliasing -rdynamic -std=c++11 -D CUDA_FLAG" + ) + + set(CMAKE_C_FLAGS + "${CMAKE_C_FLAGS} -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_FCNTL_H=1 -DHAVE_ARPA_INET_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_STRERROR=1 -DHAVE_SOCKET=1 -DHAVE_MEMSET=1 -DHAVE_GETTIMEOFDAY=1 -DHAVE_STDLIB_H=1 -DHAVE_MALLOC=1 -DHAVE_LIBSCTP -D${MKVER} -D CUDA_FLAG" + ) + set(CMAKE_CXX_FLAGS + "${CMAKE_CXX_FLAGS} ${C_FLAGS_PROCESSOR} -Wno-packed-bitfield-compat -fPIC -Wall -fno-strict-aliasing -rdynamic -std=c++11 -D${MKVER} -D CUDA_FLAG" + ) +else (CUDA_FOUND) + set(MKVER "'MAKE_VERSION(a,b,c)=((a)*256+(b)*16+c)'") + set(CMAKE_C_FLAGS + "${CMAKE_C_FLAGS} -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_FCNTL_H=1 -DHAVE_ARPA_INET_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_STRERROR=1 -DHAVE_SOCKET=1 -DHAVE_MEMSET=1 -DHAVE_GETTIMEOFDAY=1 -DHAVE_STDLIB_H=1 -DHAVE_MALLOC=1 -DHAVE_LIBSCTP -D${MKVER}" + ) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${C_FLAGS_PROCESSOR} -Wno-packed-bitfield-compat -fPIC -Wall -fno-strict-aliasing -rdynamic -std=c++11 -D${MKVER}" -) + ) +endif () add_definitions("-DASN_DISABLE_OER_SUPPORT") @@ -715,6 +763,42 @@ set(HWLIB_TCP_BRIDGE_OAI_SOURCE add_library(tcp_bridge_oai MODULE ${HWLIB_TCP_BRIDGE_OAI_SOURCE} ) set_target_properties(tcp_bridge_oai PROPERTIES COMPILE_FLAGS "-fvisibility=hidden") +# Benetel 4G library +###################################################################### + +set(HWLIB_BENETEL_4G_SOURCE + ${OPENAIR_TARGETS}/ARCH/ETHERNET/benetel/4g/benetel.c + ${OPENAIR_TARGETS}/ARCH/ETHERNET/benetel/4g/shared_buffers.c + ${OPENAIR_TARGETS}/ARCH/ETHERNET/benetel/4g/low.c + ${OPENAIR_TARGETS}/ARCH/ETHERNET/benetel/4g/low_dpdk.c + ${OPENAIR_TARGETS}/ARCH/ETHERNET/benetel/4g/dpdk_driver.c + ) +add_library(benetel_4g MODULE ${HWLIB_BENETEL_4G_SOURCE} ) + +set_target_properties(benetel_4g PROPERTIES COMPILE_FLAGS "-fvisibility=hidden -march=native -I$ENV{RTE_SDK}/$ENV{RTE_TARGET}/include") + +SET(DPDK_LIBS "-Wl,-rpath,$ENV{RTE_SDK}/$ENV{RTE_TARGET}/lib -Wl,--whole-archive -L$ENV{RTE_SDK}/$ENV{RTE_TARGET}/lib -ldpdk -Wl,--no-whole-archive") +TARGET_LINK_LIBRARIES(benetel_4g ${DPDK_LIBS}) +TARGET_LINK_LIBRARIES(benetel_4g pthread dl rt m numa) + +# Benetel 5G library +###################################################################### + +set(HWLIB_BENETEL_5G_SOURCE + ${OPENAIR_TARGETS}/ARCH/ETHERNET/benetel/5g/benetel.c + ${OPENAIR_TARGETS}/ARCH/ETHERNET/benetel/5g/shared_buffers.c + ${OPENAIR_TARGETS}/ARCH/ETHERNET/benetel/5g/low.c + ${OPENAIR_TARGETS}/ARCH/ETHERNET/benetel/5g/low_dpdk.c + ${OPENAIR_TARGETS}/ARCH/ETHERNET/benetel/5g/dpdk_driver.c + ) +add_library(benetel_5g MODULE ${HWLIB_BENETEL_5G_SOURCE} ) + +set_target_properties(benetel_5g PROPERTIES COMPILE_FLAGS "-fvisibility=hidden -march=native -I$ENV{RTE_SDK}/$ENV{RTE_TARGET}/include") + +SET(DPDK_LIBS "-Wl,-rpath,$ENV{RTE_SDK}/$ENV{RTE_TARGET}/lib -Wl,--whole-archive -L$ENV{RTE_SDK}/$ENV{RTE_TARGET}/lib -ldpdk -Wl,--no-whole-archive") +TARGET_LINK_LIBRARIES(benetel_5g ${DPDK_LIBS}) +TARGET_LINK_LIBRARIES(benetel_5g pthread dl rt m numa) + ########################################################## include_directories ("${OPENAIR_TARGETS}/ARCH/COMMON") @@ -1208,7 +1292,7 @@ set(SCHED_SRC_NR_UE ${OPENAIR1_DIR}/SCHED_NR_UE/phy_procedures_nr_ue.c ${OPENAIR1_DIR}/SCHED_NR/phy_procedures_nr_common.c ${OPENAIR1_DIR}/SCHED_NR_UE/fapi_nr_ue_l1.c - ${OPENAIR1_DIR}/SCHED_NR/phy_frame_config_nr.c + ${OPENAIR1_DIR}/SCHED_NR_UE/phy_frame_config_nr_ue.c ${OPENAIR1_DIR}/SCHED_NR_UE/harq_nr.c ${OPENAIR1_DIR}/SCHED_NR_UE/pucch_uci_ue_nr.c ${OPENAIR1_DIR}/SCHED_NR_UE/pucch_power_control_ue_nr.c @@ -1499,11 +1583,12 @@ set(PHY_SRC_UE ${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_dmrs_rx.c ${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_gold.c ${OPENAIR1_DIR}/PHY/NR_REFSIG/scrambling_luts.c + ${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_gen_mod_table.c ${OPENAIR1_DIR}/PHY/NR_REFSIG/dmrs_nr.c ${OPENAIR1_DIR}/PHY/NR_REFSIG/ptrs_nr.c ${OPENAIR1_DIR}/PHY/NR_UE_ESTIMATION/filt16a_32.c ${OPENAIR1_DIR}/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c - ${OPENAIR1_DIR}/PHY/NR_ESTIMATION/nr_adjust_sync_gNB.c + ${OPENAIR1_DIR}/PHY/NR_ESTIMATION/nr_measurements_gNB.c ${OPENAIR1_DIR}/PHY/TOOLS/file_output.c ${OPENAIR1_DIR}/PHY/TOOLS/cadd_vv.c #${OPENAIR1_DIR}/PHY/TOOLS/lte_dfts.c @@ -1551,6 +1636,7 @@ set(PHY_SRC_UE ${OPENAIR1_DIR}/PHY/NR_REFSIG/dmrs_nr.c ${OPENAIR1_DIR}/PHY/NR_REFSIG/ptrs_nr.c ${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_gold_ue.c + ${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_gen_mod_table.c ${OPENAIR1_DIR}/PHY/NR_UE_ESTIMATION/filt16a_32.c ${OPENAIR1_DIR}/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c ${OPENAIR1_DIR}/PHY/NR_UE_ESTIMATION/nr_adjust_synch_ue.c @@ -1630,7 +1716,7 @@ add_library(PHY_MEX ${PHY_MEX_UE} ${CONFIG_LIB}) #Layer 2 library ##################### set(MAC_DIR ${OPENAIR2_DIR}/LAYER2/MAC) -set(NR_MAC_DIR ${OPENAIR2_DIR}/LAYER2/NR_MAC_gNB) +set(NR_GNB_MAC_DIR ${OPENAIR2_DIR}/LAYER2/NR_MAC_gNB) set(NR_UE_MAC_DIR ${OPENAIR2_DIR}/LAYER2/NR_MAC_UE) set(PHY_INTERFACE_DIR ${OPENAIR2_DIR}/PHY_INTERFACE) set(NR_PHY_INTERFACE_DIR ${OPENAIR2_DIR}/NR_PHY_INTERFACE) @@ -1696,9 +1782,15 @@ set(NR_RLC_SRC ${OPENAIR2_DIR}/LAYER2/nr_rlc/nr_rlc_sdu.c ${OPENAIR2_DIR}/LAYER2/nr_rlc/nr_rlc_ue_manager.c ) + +set(NR_PDCP_SRC + ${OPENAIR2_DIR}/LAYER2/nr_pdcp/nr_pdcp_oai_api.c + ${OPENAIR2_DIR}/LAYER2/nr_pdcp/nr_pdcp_ue_manager.c + ${OPENAIR2_DIR}/LAYER2/nr_pdcp/nr_pdcp_entity.c + ${OPENAIR2_DIR}/LAYER2/nr_pdcp/nr_pdcp_entity_drb_am.c + ) set(L2_SRC - ${OPENAIR2_DIR}/LAYER2/openair2_proc.c ${PDCP_DIR}/pdcp.c ${PDCP_DIR}/pdcp_fifo.c ${PDCP_DIR}/pdcp_sequence_manager.c @@ -1706,6 +1798,7 @@ set(L2_SRC ${PDCP_DIR}/pdcp_util.c ${PDCP_DIR}/pdcp_security.c ${PDCP_DIR}/pdcp_netlink.c + ${OPENAIR2_DIR}/LAYER2/openair2_proc.c # ${RRC_DIR}/rrc_UE.c ${RRC_DIR}/rrc_eNB.c ${RRC_DIR}/rrc_eNB_endc.c @@ -1717,6 +1810,20 @@ set(L2_SRC ${RRC_DIR}/L2_interface_common.c ${RRC_DIR}/L2_interface_ue.c ) + +set(L2_RRC_SRC + ${OPENAIR2_DIR}/LAYER2/openair2_proc.c + # ${RRC_DIR}/rrc_UE.c + ${RRC_DIR}/rrc_eNB.c + ${RRC_DIR}/rrc_eNB_endc.c + ${RRC_DIR}/rrc_eNB_S1AP.c + ${RRC_DIR}/rrc_eNB_M2AP.c + ${RRC_DIR}/rrc_eNB_UE_context.c + ${RRC_DIR}/rrc_common.c + ${RRC_DIR}/L2_interface.c + ${RRC_DIR}/L2_interface_common.c + ${RRC_DIR}/L2_interface_ue.c + ) set(L2_LTE_SRC ${RLC_V2} @@ -1724,6 +1831,7 @@ set(L2_LTE_SRC set(L2_NR_SRC ${NR_RLC_SRC} + ${NR_PDCP_SRC} ${NR_RRC_DIR}/rrc_gNB.c ${NR_RRC_DIR}/nr_rrc_common.c ${NR_RRC_DIR}/L2_nr_interface.c @@ -1748,19 +1856,16 @@ set(L2_SRC_UE ${RRC_DIR}/L2_interface_ue.c ) -set(LTE_NR_L2_SRC_UE - ${PDCP_DIR}/pdcp.c - ${PDCP_DIR}/pdcp_fifo.c - ${PDCP_DIR}/pdcp_sequence_manager.c - ${PDCP_DIR}/pdcp_primitives.c - ${PDCP_DIR}/pdcp_util.c - ${PDCP_DIR}/pdcp_security.c - ${PDCP_DIR}/pdcp_netlink.c - ${RLC_V2} - ) - +set(L2_RRC_SRC_UE + ${RRC_DIR}/rrc_UE.c + ${RRC_DIR}/rrc_common.c + ${RRC_DIR}/L2_interface_common.c + ${RRC_DIR}/L2_interface_ue.c + ) + set(NR_L2_SRC_UE ${NR_RLC_SRC} + ${NR_PDCP_SRC} ${NR_UE_RRC_DIR}/L2_interface_ue.c ${NR_UE_RRC_DIR}/main_ue.c ${NR_UE_RRC_DIR}/rrc_UE.c @@ -1786,20 +1891,22 @@ set (MAC_SRC ${MAC_DIR}/eNB_scheduler_fairRR.c ${MAC_DIR}/eNB_scheduler_phytest.c ${MAC_DIR}/pre_processor.c + ${MAC_DIR}/slicing/slicing.c ${MAC_DIR}/config.c ${MAC_DIR}/config_ue.c ) set (MAC_NR_SRC ${NR_PHY_INTERFACE_DIR}/NR_IF_Module.c - ${NR_MAC_DIR}/main.c - ${NR_MAC_DIR}/config.c - ${NR_MAC_DIR}/gNB_scheduler.c - ${NR_MAC_DIR}/gNB_scheduler_bch.c - ${NR_MAC_DIR}/gNB_scheduler_dlsch.c - ${NR_MAC_DIR}/gNB_scheduler_ulsch.c - ${NR_MAC_DIR}/gNB_scheduler_primitives.c - ${NR_MAC_DIR}/gNB_scheduler_phytest.c + ${NR_GNB_MAC_DIR}/main.c + ${NR_GNB_MAC_DIR}/config.c + ${NR_GNB_MAC_DIR}/gNB_scheduler.c + ${NR_GNB_MAC_DIR}/gNB_scheduler_bch.c + ${NR_GNB_MAC_DIR}/gNB_scheduler_dlsch.c + ${NR_GNB_MAC_DIR}/gNB_scheduler_ulsch.c + ${NR_GNB_MAC_DIR}/gNB_scheduler_primitives.c + ${NR_GNB_MAC_DIR}/gNB_scheduler_phytest.c + ${NR_GNB_MAC_DIR}/gNB_scheduler_RA.c ) @@ -1811,7 +1918,6 @@ set (MAC_SRC_UE ${MAC_DIR}/l1_helpers.c ${MAC_DIR}/rar_tools_ue.c ${MAC_DIR}/config_ue.c - ) set (MAC_NR_SRC_UE @@ -1821,6 +1927,9 @@ set (MAC_NR_SRC_UE ${NR_UE_MAC_DIR}/main_ue_nr.c ${NR_UE_MAC_DIR}/nr_ue_procedures.c ${NR_UE_MAC_DIR}/nr_ue_dci_configuration.c + ${NR_UE_MAC_DIR}/nr_l1_helpers.c + ${NR_UE_MAC_DIR}/nr_ra_procedures.c + ${NR_UE_MAC_DIR}/rar_tools_nrUE.c ) set (ENB_APP_SRC @@ -1866,6 +1975,14 @@ add_library(L2_NR ${MAC_NR_SRC} ${GNB_APP_SRC} ) + +add_library(L2_LTE_NR + ${L2_RRC_SRC} + ${MAC_SRC} + ${ENB_APP_SRC} + ${MCE_APP_SRC} +) + add_dependencies(L2_NR rrc_flag nr_rrc_flag s1ap_flag x2_flag) add_library(L2_UE @@ -1873,6 +1990,11 @@ add_library(L2_UE ${MAC_SRC_UE} ) +add_library(L2_UE_LTE_NR + ${L2_RRC_SRC_UE} + ${MAC_SRC_UE} +) + if (NOT ${NOS1}) target_compile_definitions(L2_UE PUBLIC -DPDCP_USE_NETLINK) endif() @@ -1884,7 +2006,7 @@ add_library( NR_L2_UE ${NR_L2_SRC_UE} ${MAC_NR_SRC_UE} ) add_library( MAC_NR_COMMON ${OPENAIR2_DIR}/LAYER2/NR_MAC_COMMON/nr_mac_common.c ${OPENAIR2_DIR}/LAYER2/NR_MAC_gNB/nr_compute_tbs_common.c) include_directories("${OPENAIR2_DIR}/NR_UE_PHY_INTERFACE") -include_directories("${OPENAIR2_DIR}/LAYER2/NR_MAC_UE") +include_directories("${OPENAIR2_DIR}/LAYER2") include_directories("${OPENAIR1_DIR}/SCHED_NR_UE") #include_directories("${NFAPI_USER_DIR}"") @@ -1912,6 +2034,19 @@ set (GTPV1U_SRC add_library(GTPV1U ${GTPV1U_SRC}) add_dependencies(GTPV1U rrc_flag) +#NR case +set (NR_GTPV1U_SRC + ${NR_RRC_DIR}/rrc_gNB_GTPV1U.c + ${RRC_DIR}/rrc_eNB_GTPV1U.c + ${GTPV1U_DIR}/nw-gtpv1u/src/NwGtpv1uTunnelEndPoint.c + ${GTPV1U_DIR}/nw-gtpv1u/src/NwGtpv1uTrxn.c + ${GTPV1U_DIR}/nw-gtpv1u/src/NwGtpv1uMsg.c + ${GTPV1U_DIR}/nw-gtpv1u/src/NwGtpv1u.c + ${GTPV1U_DIR}/gtpv1u_teid_pool.c +) +add_library(NR_GTPV1U ${NR_GTPV1U_SRC}) +add_dependencies(NR_GTPV1U rrc_flag) + set (MME_APP_SRC ${OPENAIR3_DIR}/MME_APP/mme_app.c ${OPENAIR3_DIR}/MME_APP/mme_config.c @@ -2239,26 +2374,28 @@ add_library(LFDS7 ${lfds7_queue} ${lfds7_ring} ${lfds7_qbss} ${lfds7_stack} ${lfds7_freelist} ${lfds7_btree} ${lfds7_hash} ${lfds7_ordered_list} ${lfds7_unordered_list} ${lfds7_misc} ) -# Simulation library -########################## -set (SIMUSRC -${OPENAIR1_DIR}/SIMULATION/TOOLS/random_channel.c -${OPENAIR1_DIR}/SIMULATION/TOOLS/rangen_double.c -${OPENAIR1_DIR}/SIMULATION/TOOLS/taus.c -${OPENAIR1_DIR}/SIMULATION/TOOLS/multipath_channel.c -${OPENAIR1_DIR}/SIMULATION/TOOLS/multipath_tv_channel.c -${OPENAIR1_DIR}/SIMULATION/TOOLS/abstraction.c -${OPENAIR1_DIR}/SIMULATION/TOOLS/channel_sim.c -${OPENAIR1_DIR}/SIMULATION/RF/rf.c -${OPENAIR1_DIR}/SIMULATION/RF/dac.c -${OPENAIR1_DIR}/SIMULATION/RF/adc.c -${OPENAIR_DIR}/targets/ARCH/rfsimulator/apply_channelmod.c -#${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/netlink_init.c -) +add_library(SIMU_COMMON + ${OPENAIR1_DIR}/SIMULATION/TOOLS/random_channel.c + ${OPENAIR1_DIR}/SIMULATION/TOOLS/rangen_double.c + ) # Simulation library ########################## -add_library( SIMU SHARED ${SIMUSRC} ) +set (SIMUSRC + ${OPENAIR1_DIR}/SIMULATION/TOOLS/taus.c + ${OPENAIR1_DIR}/SIMULATION/TOOLS/multipath_channel.c + ${OPENAIR1_DIR}/SIMULATION/TOOLS/multipath_tv_channel.c + ${OPENAIR1_DIR}/SIMULATION/TOOLS/abstraction.c + ${OPENAIR1_DIR}/SIMULATION/TOOLS/channel_sim.c + ${OPENAIR1_DIR}/SIMULATION/RF/rf.c + ${OPENAIR1_DIR}/SIMULATION/RF/dac.c + ${OPENAIR1_DIR}/SIMULATION/RF/adc.c + #${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/netlink_init.c + ) + +# Simulation library +########################## +add_library(SIMU SHARED ${SIMUSRC} ) add_library(SIMU_ETH ${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/netlink_init.c @@ -2411,14 +2548,16 @@ add_library(uescope MODULE ${XFORMS_SOURCE} ${XFORMS_SOURCE_SOFTMODEM} ${XFORMS_ target_link_libraries(enbscope ${XFORMS_LIBRARIES}) target_link_libraries(uescope ${XFORMS_LIBRARIES}) -add_library(gnbscope MODULE ${XFORMS_SOURCE_NR}) -target_link_libraries(gnbscope ${XFORMS_LIBRARIES}) +add_library(nrscope MODULE ${XFORMS_SOURCE_NR}) +target_link_libraries(nrscope ${XFORMS_LIBRARIES}) add_library(rfsimulator MODULE - ${OPENAIR_TARGETS}/ARCH/rfsimulator/simulator.c + ${OPENAIR_TARGETS}/ARCH/rfsimulator/simulator.c + ${OPENAIR_TARGETS}/ARCH/rfsimulator/apply_channelmod.c + ${OPENAIR_TARGETS}/ARCH/rfsimulator/new_channel_sim.c ) -target_link_libraries(rfsimulator SIMU ${ATLAS_LIBRARIES}) +target_link_libraries(rfsimulator SIMU_COMMON ${ATLAS_LIBRARIES}) add_library(oai_iqplayer MODULE ${OPENAIR_TARGETS}/ARCH/iqplayer/iqplayer_lib.c @@ -2441,7 +2580,7 @@ endif (${T_TRACER}) add_custom_command ( OUTPUT ${OPENAIR_DIR}/common/utils/T/T_IDs.h COMMAND make clean - COMMAND make + COMMAND make -j2 COMMAND make check_vcd WORKING_DIRECTORY ${OPENAIR_DIR}/common/utils/T DEPENDS ${OPENAIR_DIR}/common/utils/T/T_messages.txt @@ -2559,12 +2698,12 @@ add_executable(ocp-enb ${CONFIG_SOURCES} ${SHLIB_LOADER_SOURCES} ) -add_dependencies(ocp-enb rrc_flag s1ap_flag x2_flag oai_iqplayer) +add_dependencies(ocp-enb rrc_flag s1ap_flag x2_flag oai_iqplayer coding params_libconfig rfsimulator) target_link_libraries (ocp-enb -Wl,--start-group RRC_LIB NR_RRC_LIB S1AP_LIB S1AP_ENB F1AP_LIB F1AP M2AP_LIB M2AP_ENB X2AP_LIB X2AP_ENB M3AP_LIB M3AP_ENB GTPV1U SECU_CN SECU_OSA UTIL HASHTABLE SCTP_CLIENT MME_APP UDP SCHED_LIB SCHED_RU_LIB - PHY_COMMON PHY PHY_RU LFDS L2 L2_LTE NFAPI_COMMON_LIB NFAPI_LIB NFAPI_VNF_LIB NFAPI_PNF_LIB NFAPI_USER_LIB LFDS7 + PHY_COMMON PHY PHY_RU LFDS L2 L2_LTE NFAPI_COMMON_LIB NFAPI_LIB NFAPI_VNF_LIB NFAPI_PNF_LIB NFAPI_USER_LIB LFDS7 SIMU_COMMON ${MSC_LIB} ${RAL_LIB} ${NAS_UE_LIB} ${ITTI_LIB} ${FLPT_MSG_LIB} ${ASYNC_IF_LIB} ${FLEXRAN_AGENT_LIB} ${FSPT_MSG_LIB} ${PROTO_AGENT_LIB} -Wl,--end-group z dl) target_link_libraries (ocp-enb ${LIBXML2_LIBRARIES} pthread m ${CONFIG_LIBRARIES} rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} sctp ${PROTOBUF_LIB} ${CMAKE_DL_LIBS} ${LIBYAML_LIBRARIES} ${LIB_LMS_LIBRARIES} ${T_LIB}) @@ -2634,7 +2773,7 @@ target_link_libraries (lte-uesoftmodem -Wl,--start-group RRC_LIB S1AP_LIB S1AP_ENB X2AP_LIB X2AP_ENB M2AP_LIB M2AP_ENB M3AP_LIB M3AP_ENB F1AP F1AP_LIB GTPV1U SECU_CN SECU_OSA UTIL HASHTABLE SCTP_CLIENT MME_APP UDP SCHED_RU_LIB SCHED_UE_LIB PHY_COMMON - PHY_UE PHY_RU LFDS L2_UE L2_LTE LFDS7 SIMU NFAPI_COMMON_LIB NFAPI_LIB NFAPI_PNF_LIB NFAPI_USER_LIB + PHY_UE PHY_RU LFDS L2_UE L2_LTE LFDS7 SIMU_COMMON SIMU NFAPI_COMMON_LIB NFAPI_LIB NFAPI_PNF_LIB NFAPI_USER_LIB ${MSC_LIB} ${RAL_LIB} ${NAS_UE_LIB} ${ITTI_LIB} ${FLPT_MSG_LIB} ${ASYNC_IF_LIB} ${ATLAS_LIBRARIES} -Wl,--end-group z dl) @@ -2660,12 +2799,13 @@ add_executable(nr-softmodem ${OPENAIR_TARGETS}/ARCH/COMMON/record_player.c ${OPENAIR2_DIR}/RRC/NAS/nas_config.c ${OPENAIR2_DIR}/RRC/NAS/rb_config.c + ${OPENAIR3_DIR}/GTPV1-U/gtpv1u_gNB.c ${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/netlink_init.c ${OPENAIR_DIR}/common/utils/utils.c ${OPENAIR_DIR}/common/utils/system.c ${OPENAIR_DIR}/common/utils/nr/nr_common.c ${GTPU_need_ITTI} - ${XFORMS_SOURCE_NR} + ${XFORMSINTERFACE_SOURCE} ${T_SOURCE} ${CONFIG_SOURCES} ${SHLIB_LOADER_SOURCES} @@ -2673,9 +2813,9 @@ add_executable(nr-softmodem target_link_libraries (nr-softmodem -Wl,--start-group - UTIL HASHTABLE SCTP_CLIENT UDP SCHED_LIB SCHED_RU_LIB SCHED_NR_LIB PHY_NR PHY PHY_COMMON PHY_NR_COMMON PHY_RU LFDS GTPV1U SECU_CN SECU_OSA + UTIL HASHTABLE SCTP_CLIENT UDP SCHED_LIB SCHED_RU_LIB SCHED_NR_LIB PHY_NR PHY PHY_COMMON PHY_NR_COMMON PHY_RU LFDS NR_GTPV1U SECU_CN SECU_OSA ${ITTI_LIB} ${FLPT_MSG_LIB} ${ASYNC_IF_LIB} ${FLEXRAN_AGENT_LIB} LFDS7 ${MSC_LIB} ${RAL_LIB} ${NAS_UE_LIB} RRC_LIB NR_RRC_LIB - S1AP_LIB S1AP_ENB L2 L2_NR MAC_NR_COMMON NFAPI_COMMON_LIB NFAPI_LIB NFAPI_VNF_LIB NFAPI_PNF_LIB NFAPI_USER_LIB + S1AP_LIB S1AP_ENB L2_LTE_NR L2_NR MAC_NR_COMMON NFAPI_COMMON_LIB NFAPI_LIB NFAPI_VNF_LIB NFAPI_PNF_LIB NFAPI_USER_LIB X2AP_LIB X2AP_ENB F1AP_LIB F1AP M2AP_LIB M2AP_ENB M3AP_LIB M3AP_ENB ${PROTO_AGENT_LIB} ${FSPT_MSG_LIB} -Wl,--end-group z dl) @@ -2707,7 +2847,7 @@ add_executable(nr-uesoftmodem ${OPENAIR_DIR}/common/utils/utils.c ${OPENAIR_DIR}/common/utils/system.c ${OPENAIR_DIR}/common/utils/nr/nr_common.c - ${XFORMS_SOURCE_NR} + ${XFORMSINTERFACE_SOURCE} ${T_SOURCE} ${UTIL_SRC} ${CONFIG_SOURCES} @@ -2717,9 +2857,9 @@ add_executable(nr-uesoftmodem target_link_libraries (nr-uesoftmodem -Wl,--start-group RRC_LIB NR_RRC_LIB SECU_CN SECU_OSA UTIL HASHTABLE SCTP_CLIENT UDP SCHED_RU_LIB SCHED_UE_LIB SCHED_NR_UE_LIB + PHY_COMMON PHY_NR_COMMON PHY_UE PHY_NR_UE PHY_RU LFDS NR_L2_UE L2_UE_LTE_NR MAC_NR_COMMON NFAPI_COMMON_LIB NFAPI_LIB NFAPI_PNF_LIB + NFAPI_USER_LIB S1AP_LIB S1AP_ENB ${MSC_LIB} ${RAL_LIB} ${NAS_UE_LIB} ${ITTI_LIB} ${FLPT_MSG_LIB} ${ASYNC_IF_LIB} LFDS7 ${ATLAS_LIBRARIES} - PHY_COMMON PHY_NR_COMMON PHY_UE PHY_NR_UE PHY_RU LFDS L2_UE NR_L2_UE MAC_NR_COMMON S1AP_LIB S1AP_ENB - NFAPI_COMMON_LIB NFAPI_LIB NFAPI_PNF_LIB NFAPI_USER_LIB -Wl,--end-group z dl) target_link_libraries (nr-uesoftmodem ${LIBXML2_LIBRARIES}) @@ -2729,29 +2869,6 @@ target_link_libraries (nr-uesoftmodem ${T_LIB}) add_dependencies( nr-uesoftmodem ldpc_orig ldpc_optim ldpc_optim8seg ldpc ) -# USIM process -################# -#add_executable(usim -# ${OPENAIR3_DIR}/NAS/TOOLS/usim_data.c -# ${OPENAIR3_DIR}/NAS/USER/API/USIM/usim_api.c -# ${OPENAIR3_DIR}/NAS/USER/API/USIM/aka_functions.c -# ${OPENAIR3_DIR}/NAS/COMMON/UTIL/memory.c -# ${OPENAIR3_DIR}/NAS/COMMON/UTIL/nas_log.c -# ${OPENAIR3_DIR}/NAS/COMMON/UTIL/OctetString.c -# ${OPENAIR3_DIR}/NAS/COMMON/UTIL/TLVEncoder.c -# ) -#target_link_libraries (usim ${NAS_LIB} UTIL ${ITTI_LIB} LFDS pthread rt nettle crypto m) - -# ??? -##################### -#add_executable(nvram -# ${OPENAIR3_DIR}/NAS/TOOLS/ue_data.c -# ${OPENAIR3_DIR}/NAS/COMMON/UTIL/memory.c -# ${OPENAIR3_DIR}/NAS/COMMON/UTIL/nas_log.c -# ) -#target_link_libraries (nvram LIB_NAS_UE UTIL ${ITTI_LIB} LFDS pthread rt nettle crypto m) - - ###################################" # Addexecutables for tests #################################### @@ -2768,7 +2885,7 @@ add_executable(dlsim_tm4 ${T_SOURCE} ) target_link_libraries (dlsim_tm4 - -Wl,--start-group SIMU UTIL SCHED_LIB SCHED_RU_LIB PHY LFDS ${ITTI_LIB} -Wl,--end-group + -Wl,--start-group SIMU_COMMON SIMU UTIL SCHED_LIB SCHED_RU_LIB PHY LFDS ${ITTI_LIB} -Wl,--end-group pthread m rt ${CONFIG_LIB} ${ATLAS_LIBRARIES} ${T_LIB} ) @@ -2781,7 +2898,7 @@ add_executable(polartest ${SHLIB_LOADER_SOURCES} ) target_link_libraries(polartest - -Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR PHY_NR_COMMON PHY_NR_UE CONFIG_LIB -Wl,--end-group + -Wl,--start-group UTIL SIMU_COMMON SIMU PHY_COMMON PHY_NR PHY_NR_COMMON PHY_NR_UE CONFIG_LIB -Wl,--end-group m pthread ${ATLAS_LIBRARIES} dl ) @@ -2796,44 +2913,90 @@ add_executable(smallblocktest target_link_libraries(smallblocktest - -Wl,--start-group UTIL SIMU PHY_NR PHY_COMMON PHY_NR_COMMON CONFIG_LIB -Wl,--end-group + -Wl,--start-group UTIL SIMU_COMMON SIMU PHY_NR PHY_COMMON PHY_NR_COMMON CONFIG_LIB -Wl,--end-group m pthread ${ATLAS_LIBRARIES} dl ) -add_executable(ldpctest - ${PHY_NR_CODINGIF} - ${OPENAIR1_DIR}/PHY/CODING/TESTBENCH/ldpctest.c - ${T_SOURCE} - ${SHLIB_LOADER_SOURCES} - ) + +# temp_C_flag = CMAKE_C_FLAGS +#set(CMAKE_C_FLAGS " ") +set (TEMP_C_FLAG ${CMAKE_C_FLAGS}) +set (CMAKE_C_FLAGS ${CUDA_CMAKE_C_FLAGS}) + +set (TEMP_CXX_FLAG ${CMAKE_CXX_FLAGS}) +set (CMAKE_CXX_FLAGS ${CUDA_CMAKE_CXX_FLAGS}) +if (CUDA_FOUND) +################################################### +# For CUDA library +################################################### + + CUDA_ADD_LIBRARY(LDPC_CU + ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder_LYC/nrLDPC_decoder_LYC.cu + ) + CUDA_ADD_CUFFT_TO_TARGET(LDPC_CU) + cuda_add_executable(ldpctest + ${OPENAIR1_DIR}/PHY/CODING/TESTBENCH/ldpctest.c + ${T_SOURCE} + ${SHLIB_LOADER_SOURCES} + ) + target_link_libraries(ldpctest -ldl + -Wl,--start-group + LDPC_CU UTIL SIMU PHY_NR CONFIG_LIB + -Wl,--end-group + m pthread ${ATLAS_LIBRARIES} dl + ) + +else (CUDA_FOUND) + add_executable(ldpctest + ${PHY_NR_CODINGIF} + ${OPENAIR1_DIR}/PHY/CODING/TESTBENCH/ldpctest.c + ${T_SOURCE} + ${SHLIB_LOADER_SOURCES} + ) + +endif () +set (CMAKE_C_FLAGS ${TEMP_C_FLAG}) +set (CMAKE_CXX_FLAGS ${TEMP_CXX_FLAG}) + + +# add_executable(ldpctest + # ${PHY_NR_CODINGIF} + # ${OPENAIR1_DIR}/PHY/CODING/TESTBENCH/ldpctest.c + # ${T_SOURCE} + # ${SHLIB_LOADER_SOURCES} + # ) add_dependencies( ldpctest ldpc_orig ldpc_optim ldpc_optim8seg ldpc ) target_link_libraries(ldpctest - -Wl,--start-group UTIL SIMU PHY_NR PHY_COMMON PHY_NR_COMMON CONFIG_LIB -Wl,--end-group + -Wl,--start-group UTIL SIMU_COMMON SIMU PHY_NR PHY_COMMON PHY_NR_COMMON CONFIG_LIB -Wl,--end-group m pthread ${ATLAS_LIBRARIES} dl ) add_executable(nr_dlschsim ${OPENAIR1_DIR}/SIMULATION/NR_PHY/dlschsim.c ${OPENAIR_DIR}/common/utils/system.c + ${OPENAIR_DIR}/common/utils/nr/nr_common.c + ${OPENAIR_DIR}/common/utils/utils.c ${UTIL_SRC} ${T_SOURCE} ${SHLIB_LOADER_SOURCES} ) target_link_libraries(nr_dlschsim - -Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB CONFIG_LIB MAC_NR_COMMON -Wl,--end-group + -Wl,--start-group UTIL SIMU_COMMON SIMU PHY_COMMON PHY_NR_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB CONFIG_LIB MAC_NR_COMMON -Wl,--end-group m pthread ${ATLAS_LIBRARIES} ${T_LIB} ${ITTI_LIB} dl ) add_executable(nr_pbchsim ${OPENAIR1_DIR}/SIMULATION/NR_PHY/pbchsim.c ${OPENAIR_DIR}/common/utils/system.c + ${OPENAIR_DIR}/common/utils/nr/nr_common.c + ${OPENAIR_DIR}/common/utils/utils.c ${UTIL_SRC} ${T_SOURCE} ${SHLIB_LOADER_SOURCES} ) target_link_libraries(nr_pbchsim - -Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB CONFIG_LIB MAC_NR_COMMON -Wl,--end-group + -Wl,--start-group UTIL SIMU_COMMON SIMU PHY_COMMON PHY_NR_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB CONFIG_LIB MAC_NR_COMMON -Wl,--end-group m pthread ${ATLAS_LIBRARIES} ${T_LIB} ${ITTI_LIB} dl ) @@ -2843,17 +3006,19 @@ add_executable(nr_pucchsim ${OPENAIR_DIR}/common/utils/backtrace.c ${OPENAIR_DIR}/common/utils/nr/nr_common.c ${OPENAIR_DIR}/common/utils/system.c + ${OPENAIR_DIR}/common/utils/utils.c ${UTIL_SRC} ${T_SOURCE} ${SHLIB_LOADER_SOURCES} ) target_link_libraries(nr_pucchsim - -Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB CONFIG_LIB MAC_NR_COMMON -Wl,--end-group + -Wl,--start-group UTIL SIMU_COMMON SIMU PHY_COMMON PHY_NR_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB CONFIG_LIB MAC_NR_COMMON -Wl,--end-group m pthread ${ATLAS_LIBRARIES} ${T_LIB} ${ITTI_LIB} dl ) add_executable(nr_dlsim ${OPENAIR1_DIR}/SIMULATION/NR_PHY/dlsim.c + ${OPENAIR_DIR}/common/utils/utils.c ${OPENAIR_DIR}/common/utils/system.c ${OPENAIR_DIR}/common/utils/nr/nr_common.c ${OPENAIR_DIR}/executables/softmodem-common.c @@ -2862,13 +3027,14 @@ add_executable(nr_dlsim ${SHLIB_LOADER_SOURCES} ) target_link_libraries(nr_dlsim - -Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB SCHED_NR_UE_LIB MAC_NR MAC_UE_NR MAC_NR_COMMON RRC_LIB NR_RRC_LIB CONFIG_LIB L2_NR -Wl,--end-group + -Wl,--start-group UTIL SIMU_COMMON SIMU PHY_COMMON PHY_NR_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB SCHED_NR_UE_LIB MAC_NR MAC_UE_NR MAC_NR_COMMON RRC_LIB NR_RRC_LIB CONFIG_LIB L2_NR -Wl,--end-group m pthread ${ATLAS_LIBRARIES} ${T_LIB} ${ITTI_LIB} dl ) target_compile_definitions(nr_dlsim PUBLIC -DPHYSICAL_SIMULATOR) add_executable(nr_prachsim ${OPENAIR1_DIR}/SIMULATION/NR_PHY/prachsim.c + ${OPENAIR_DIR}/common/utils/utils.c ${OPENAIR_DIR}/common/utils/system.c ${OPENAIR_DIR}/common/utils/nr/nr_common.c ${OPENAIR1_DIR}/SCHED_NR/phy_procedures_nr_common.c @@ -2876,22 +3042,25 @@ add_executable(nr_prachsim ${T_SOURCE} ${SHLIB_LOADER_SOURCES}) target_link_libraries(nr_prachsim - -Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR_COMMON PHY_NR PHY_RU PHY_NR_UE MAC_NR_COMMON SCHED_NR_LIB SCHED_NR_UE_LIB RRC_LIB NR_RRC_LIB L2_NR CONFIG_LIB -Wl,--end-group m pthread ${ATLAS_LIBRARIES} ${T_LIB} ${ITTI_LIB} dl) + -Wl,--start-group UTIL SIMU_COMMON SIMU PHY_COMMON PHY_NR_COMMON PHY_NR PHY_RU PHY_NR_UE MAC_NR_COMMON SCHED_NR_LIB MAC_UE_NR SCHED_NR_UE_LIB RRC_LIB NR_RRC_LIB L2_NR CONFIG_LIB -Wl,--end-group m pthread ${ATLAS_LIBRARIES} ${T_LIB} ${ITTI_LIB} dl) add_executable(nr_ulschsim ${OPENAIR1_DIR}/SIMULATION/NR_PHY/ulschsim.c + ${OPENAIR_DIR}/common/utils/utils.c ${OPENAIR_DIR}/common/utils/system.c + ${OPENAIR_DIR}/common/utils/nr/nr_common.c ${UTIL_SRC} ${T_SOURCE} ${SHLIB_LOADER_SOURCES} ) target_link_libraries(nr_ulschsim - -Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB CONFIG_LIB MAC_NR_COMMON -Wl,--end-group + -Wl,--start-group UTIL SIMU_COMMON SIMU PHY_COMMON PHY_NR_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB CONFIG_LIB MAC_NR_COMMON -Wl,--end-group m pthread ${ATLAS_LIBRARIES} ${T_LIB} ${ITTI_LIB} dl ) add_executable(nr_ulsim ${OPENAIR1_DIR}/SIMULATION/NR_PHY/ulsim.c + ${OPENAIR_DIR}/common/utils/utils.c ${OPENAIR_DIR}/common/utils/system.c ${OPENAIR_DIR}/common/utils/nr/nr_common.c ${OPENAIR_DIR}/executables/softmodem-common.c @@ -2900,7 +3069,7 @@ add_executable(nr_ulsim ${SHLIB_LOADER_SOURCES} ) target_link_libraries(nr_ulsim - -Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR PHY_NR_COMMON PHY_NR_UE SCHED_NR_LIB SCHED_NR_UE_LIB MAC_NR MAC_UE_NR MAC_NR_COMMON RRC_LIB NR_RRC_LIB CONFIG_LIB L2_NR -Wl,--end-group + -Wl,--start-group UTIL SIMU_COMMON SIMU PHY_COMMON PHY_NR PHY_NR_COMMON PHY_NR_UE SCHED_NR_LIB SCHED_NR_UE_LIB MAC_NR MAC_UE_NR MAC_NR_COMMON RRC_LIB NR_RRC_LIB CONFIG_LIB L2_NR -Wl,--end-group m pthread ${ATLAS_LIBRARIES} ${T_LIB} ${ITTI_LIB} dl ) target_compile_definitions(nr_ulsim PUBLIC -DPHYSICAL_SIMULATOR) @@ -2912,6 +3081,7 @@ foreach(myExe dlsim dlsim_tm7 ulsim pbchsim scansim mbmssim pdcchsim pucchsim pr ${OPENAIR_DIR}/common/utils/threadPool/thread-pool.c ${OPENAIR_DIR}/common/utils/backtrace.c ${OPENAIR_DIR}/common/utils/system.c + ${OPENAIR_DIR}/common/utils/utils.c ${XFORMS_SOURCE} ${T_SOURCE} ${CONFIG_SOURCES} @@ -2919,7 +3089,7 @@ foreach(myExe dlsim dlsim_tm7 ulsim pbchsim scansim mbmssim pdcchsim pucchsim pr ${NFAPI_USER_DIR}/nfapi.c ) target_link_libraries (${myExe} - -Wl,--start-group SIMU UTIL SCHED_LIB SCHED_RU_LIB SCHED_UE_LIB PHY_COMMON PHY_NR_COMMON PHY PHY_UE PHY_RU LFDS ${ITTI_LIB} LFDS7 -Wl,--end-group + -Wl,--start-group SIMU_COMMON SIMU UTIL SCHED_LIB SCHED_RU_LIB SCHED_UE_LIB PHY_COMMON PHY_NR_COMMON PHY PHY_UE PHY_RU LFDS ${ITTI_LIB} LFDS7 -Wl,--end-group pthread m rt ${CONFIG_LIB} ${ATLAS_LIBRARIES} ${XFORMS_LIBRARIES} ${T_LIB} dl ) @@ -2998,9 +3168,9 @@ if (${T_TRACER}) SECU_OSA SECU_CN SCHED_LIB SCHED_NR_LIB SCHED_RU_LIB SCHED_UE_LIB SCHED_NR_UE_LIB default_sched remote_sched RAL NFAPI_COMMON_LIB NFAPI_LIB NFAPI_PNF_LIB NFAPI_VNF_LIB NFAPI_USER_LIB PHY_COMMON PHY PHY_UE PHY_NR PHY_NR_COMMON PHY_NR_UE PHY_RU PHY_MEX - L2 L2_LTE L2_NR L2_UE NR_L2_UE MAC_NR_COMMON MAC_NR MAC_UE_NR - CN_UTILS GTPV1U SCTP_CLIENT MME_APP UDP LIB_NAS_UE NB_IoT LFDS LFDS7 SIMU SIMU_ETH OPENAIR0_LIB - ldpc_orig ldpc_optim ldpc_optim8seg ldpc PROTO_AGENT) + L2 L2_LTE L2_NR L2_LTE_NR L2_UE NR_L2_UE MAC_NR_COMMON MAC_NR MAC_UE_NR + CN_UTILS GTPV1U NR_GTPV1U SCTP_CLIENT MME_APP UDP LIB_NAS_UE NB_IoT LFDS LFDS7 SIMU_COMMON SIMU SIMU_ETH OPENAIR0_LIB + ldpc_orig ldpc_optim ldpc_optim8seg ldpc PROTO_AGENT dfts) if (TARGET ${i}) add_dependencies(${i} generate_T) endif() @@ -3043,7 +3213,7 @@ function(make_driver name dir) endforeach() CONFIGURE_FILE(${OPENAIR_CMAKE}/tools/Kbuild.cmake ${OPENAIR_BIN_DIR}/${name}/Kbuild) add_custom_command(OUTPUT ${name}.ko - COMMAND make -C ${module_build_path} M=${OPENAIR_BIN_DIR}/${name} + COMMAND make -j2 -C ${module_build_path} M=${OPENAIR_BIN_DIR}/${name} WORKING_DIRECTORY ${OPENAIR_BIN_DIR}/${name} COMMENT "building ${module}.ko" VERBATIM diff --git a/cmake_targets/autotests/README.txt b/cmake_targets/autotests/README.txt index 10c14fd59a..19a333c626 100644 --- a/cmake_targets/autotests/README.txt +++ b/cmake_targets/autotests/README.txt @@ -142,10 +142,14 @@ Obj.# Case# Test# Description (Test 11: 10 MHz, R7.FDD (MCS 25), EVA5, 17.7dB (70%)) (TM2 Test 1 10 MHz, R.11 FDD (MCS 14), EVA5, 6.8 dB (70%)), (TM2 Test 1b 20 MHz, R.11-2 FDD (MCS 13), EVA5, 5.9 dB (70%)), -01 51 11 nr_ulsim Test cases. (Test1: MCS 9), - (Test2: MCS 16), - (Test3: MCS 28) - +01 51 11 nr_ulsim Test cases. (Test1: MCS 9 106 PRBs), + (Test2: MCS 16 50 PRBs), + (Test3: MCS 28 50 PRBs), + (Test4: MCS 9 217 PRBs), + (Test5: MCS 9 273 PRBs) +01 51 12 nr_prachsim Test cases.(Test1: 106 PRBs), + (Test2: 217 PRBs), + (Test3: 273 PRBs) diff --git a/cmake_targets/autotests/test_case_list.xml b/cmake_targets/autotests/test_case_list.xml index 882670727b..786002e982 100644 --- a/cmake_targets/autotests/test_case_list.xml +++ b/cmake_targets/autotests/test_case_list.xml @@ -1036,7 +1036,9 @@ execution polartest Test cases. (Test1: PBCH polar test), - (Test2: DCI polar test) + (Test2: DCI polar test), + (Test3: UCI polar test,6-bit CRC), + (Test4: UCI polar test,11-bit CRC) $OPENAIR_DIR/cmake_targets/build_oai --phy_simulators -c @@ -1044,8 +1046,10 @@ $OPENAIR_DIR/targets/bin/polartest.Rel15 -q -s-10 -f0 - -q -s-10 -f0 -m1 - polartest.test1 polartest.test2 + -q -s-10 -f0 -m1 + -q -s-2 -f2 -m2 -k12 + -q -s-2 -f2 -m2 -k20 + polartest.test1 polartest.test2 polartest.test3 polartest.test4 BLER= 0.000000 segmentation fault|assertion|exiting|fatal 3 @@ -1067,9 +1071,9 @@ $OPENAIR_DIR/targets/bin/nr_pbchsim.Rel15 -s0 -S1 -n1000 -R106 -s0 -S1 -n10 -I -R106 - -s0 -S1 -n1000 -R217 + -s0 -S1 -n1000 -R217 -s0 -S1 -n10 -I -R217 - -s0 -S1 -n1000 -R273 + -s0 -S1 -n1000 -R273 -s0 -S1 -n10 -I -R273 nr_pbchsim.test1 nr_pbchsim.test2 nr_pbchsim.test3 nr_pbchsim.test4 nr_pbchsim.test5 nr_pbchsim.test6 PBCH test OK @@ -1087,8 +1091,11 @@ (Test6: 217 PRB 100 PDSCH-PRBs), (Test7: 217 PRB 80 PDSCH-Offset), (Test8: 217 PRB 100 PDSCH-PRBs 110 PDSCH-Offset), - (Test9: 106 PRBs 50 PDSCH-PRBs MCS Index 27) - (Test10: 106 PRBs 50 PDSCH-PRBs MCS Index 16) + (Test9: 106 PRBs 50 PDSCH-PRBs MCS Index 27), + (Test10: 106 PRBs 50 PDSCH-PRBs MCS Index 16), + (Test11: HARQ test 25% TP (4 rounds), + (Test12: HARQ test 33% TP (3 rounds), + (Test13: HARQ test 50% TP (2 rounds) $OPENAIR_DIR/cmake_targets/build_oai --phy_simulators -c @@ -1104,8 +1111,11 @@ -n100 -R217 -a80 -s5 -n100 -R217 -a110 -s5 -b100 -n100 -e27 -s30 - -n100 -e16 -s10 - nr_dlsim.test1 nr_dlsim.test2 nr_dlsim.test3 nr_dlsim.test4 nr_dlsim.test5 nr_dlsim.test6 nr_dlsim.test7 nr_dlsim.test8 nr_dlsim.test9 nr_dlsim.test10 + -n100 -e16 -s10 + -n100 -s1 -t25 + -n100 -s1 -t33 + -n100 -s1 -t50 + nr_dlsim.test1 nr_dlsim.test2 nr_dlsim.test3 nr_dlsim.test4 nr_dlsim.test5 nr_dlsim.test6 nr_dlsim.test7 nr_dlsim.test8 nr_dlsim.test9 nr_dlsim.test10 nr_dlsim.test11 nr_dlsim.test12 nr_dlsim.test13 PDSCH test OK segmentation fault|assertion|exiting|fatal 3 @@ -1179,15 +1189,20 @@ nr_pucchsim Test cases. (Test1: Format 0 1-bit ACK miss 106 PRB), (Test2: Format 0 2-bit ACK miss 106 PRB), (Test3: Format 0 2-bit ACK miss, 1-bit SR 106 PRB), - (Test4: Format 2 3-bit 106 PRB), - (Test5: Format 2 4-bit 106 PRB), - (Test6: Format 2 5-bit 106 PRB), - (Test7: Format 2 6-bit 106 PRB), - (Test8: Format 2 7-bit 106 PRB), - (Test9: Format 2 8-bit 106 PRB), - (Test10: Format 2 9-bit 106 PRB), - (Test11: Format 2 10-bit 106 PRB), - (Test12: Format 2 11-bit 106 PRB) + (Test4: Format 2 3-bit 2/106 PRB), + (Test5: Format 2 4-bit 2/106 PRB), + (Test6: Format 2 5-bit 2/106 PRB), + (Test7: Format 2 6-bit 2/106 PRB), + (Test8: Format 2 7-bit 2/106 PRB), + (Test9: Format 2 8-bit 2/106 PRB), + (Test10: Format 2 9-bit 2/106 PRB), + (Test11: Format 2 10-bit 2/106 PRB), + (Test12: Format 2 11-bit 2/106 PRB), + (Test13: Format 2 12-bit 8/106 PRB), + (Test14: Format 2 19-bit 8/106 PRB), + (Test15: Format 2 32-bit 8/106 PRB), + (Test16: Format 2 32-bit 16/106 PRB), + (Test17: Format 2 64-bit 16/106 PRB) $OPENAIR_DIR/cmake_targets/build_oai --phy_simulators -c @@ -1206,8 +1221,12 @@ -R 106 -i 1 -P 2 -b 9 -s5 -n1000 -R 106 -i 1 -P 2 -b 10 -s6 -n1000 -R 106 -i 1 -P 2 -b 11 -s6 -n1000 - - nr_pucchsim.test1 nr_pucchsim.test2 nr_pucchsim.test3 nr_pucchsim.test4 nr_pucchsim.test5 nr_pucchsim.test6 nr_pucchsim.test7 nr_pucchsim.test8 nr_pucchsim.test9 nr_pucchsim.test10 nr_pucchsim.test11 nr_pucchsim.test12 + -R 106 -i 1 -P 2 -q8 -b 12 -s-3 -n1000 + -R 106 -i 1 -P 2 -q8 -b 19 -s-3 -n1000 + -R 106 -i 1 -P 2 -q8 -b 32 -s-3 -n1000 + -R 106 -i 1 -P 2 -q16 -b 32 -s-3 -n1000 + -R 106 -i 1 -P 2 -q16 -b 64 -s-3 -n1000 + nr_pucchsim.test1 nr_pucchsim.test2 nr_pucchsim.test3 nr_pucchsim.test4 nr_pucchsim.test5 nr_pucchsim.test6 nr_pucchsim.test7 nr_pucchsim.test8 nr_pucchsim.test9 nr_pucchsim.test10 nr_pucchsim.test11 nr_pucchsim.test12 nr_pucchsim.test13 nr_pucchsim.test14 nr_pucchsim.test15 nr_pucchsim.test16 nr_pucchsim.test17 PUCCH test OK segmentation fault|assertion|exiting|fatal 3 @@ -1275,6 +1294,28 @@ 3 + + execution + nr_prachsim Test cases. (Test1: 106 PRBs - Prach format A2), + (Test2: 217 PRBs - Prach format A2), + (Test3: 273 PRBs - Prach format A2), + (Test4: 106 PRBs - Prach format 0) + + $OPENAIR_DIR/cmake_targets/build_oai + --phy_simulators -c + $OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash + + $OPENAIR_DIR/targets/bin/nr_prachsim.Rel15 + -a -s -30 -n 100 -p 63 -R 106 + -a -s -30 -n 100 -p 63 -R 217 + -a -s -30 -n 100 -p 63 -R 273 + -a -s -30 -n 100 -p 63 -R 106 -c 4 + nr_prachsim.test1 nr_prachsim.test2 nr_prachsim.test3 nr_prachsim.test4 + PRACH test OK + segmentation fault|assertion|exiting|fatal + 3 + + lte-softmodem diff --git a/cmake_targets/build_oai b/cmake_targets/build_oai index 9a5d5f370c..36af9eaee4 100755 --- a/cmake_targets/build_oai +++ b/cmake_targets/build_oai @@ -67,7 +67,7 @@ UE_TIMING_TRACE="False" USRP_REC_PLAY="False" BUILD_ECLIPSE=0 NR="False" -OPTIONAL_LIBRARIES="telnetsrv enbscope uescope msc" +OPTIONAL_LIBRARIES="telnetsrv enbscope uescope nrscope msc" trap handle_ctrl_c INT function print_help() { @@ -96,7 +96,9 @@ Options enable cmake debugging messages --eNB Makes the LTE softmodem ---gNB +--eNBocp + Makes the OCP LTE softmodem +-gNB Makes the NR softmodem --nrUE Makes the NR UE softmodem @@ -237,7 +239,11 @@ function main() { eNB=1 echo_info "Will compile eNB" shift;; - --gNB) + --eNBocp) + eNBocp=1 + echo_info "Will compile OCP eNB" + shift;; + --gNB) gNB=1 NR="True" echo_info "Will compile gNB" @@ -406,7 +412,7 @@ function main() { shift 1;; -k | --skip-shared-libraries) SKIP_SHARED_LIB_FLAG="True" - echo_info "Skipping build of shared libraries, rfsimulator, basicsimulator and transport protocol libraries" + echo_info "Skipping build of shared libraries, rfsimulator and transport protocol libraries" shift;; --ninja) CMAKE_CMD="$CMAKE_CMD -GNinja" @@ -443,7 +449,7 @@ function main() { ######################################################## # to be discussed - if [ "$eNB" = "1" -o "$gNB" = "1" ] ; then + if [ "$eNB" = "1" -o "$eNBocp" = "1" -o "$gNB" = "1" ] ; then if [ "$HW" = "None" -a "$TP" = "None" ] ; then echo_info "No local radio head and no transport protocol selected" fi @@ -574,12 +580,13 @@ function main() { config_libconfig_shlib=params_libconfig # first generate the CMakefile in the right directory - if [ "$eNB" = "1" -o "$UE" = "1" -o "$gNB" = "1" -o "$nrUE" = "1" -o "$HW" = "EXMIMO" ] ; then + if [ "$eNB" = "1" -o "$eNBocp" = "1" -o "$UE" = "1" -o "$gNB" = "1" -o "$nrUE" = "1" -o "$HW" = "EXMIMO" ] ; then # softmodem compilation cmake_file=$DIR/$build_dir/CMakeLists.txt echo "cmake_minimum_required(VERSION 2.8)" > $cmake_file + echo "project (OpenAirInterface)" >> $cmake_file echo "set ( CMAKE_BUILD_TYPE $CMAKE_BUILD_TYPE )" >> $cmake_file echo "set ( CFLAGS_PROCESSOR_USER \"$CFLAGS_PROCESSOR_USER\" )" >> $cmake_file echo "set ( UE_EXPANSION $UE_EXPANSION )" >> $cmake_file @@ -606,6 +613,9 @@ function main() { if [ "$eNB" = "1" ] ; then execlist="$execlist lte-softmodem" fi + if [ "$eNBocp" = "1" ] ; then + execlist="$execlist ocp-enb" + fi if [ "$gNB" = "1" ] ; then execlist="$execlist nr-softmodem" fi @@ -702,6 +712,7 @@ function main() { echo_info "Compiling physical unitary tests simulators" # TODO: fix: dlsim_tm4 pucchsim prachsim pdcchsim pbchsim mbmssim simlist="dlsim ulsim ldpctest polartest smallblocktest nr_pbchsim nr_dlschsim nr_ulschsim nr_dlsim nr_ulsim nr_pucchsim nr_prachsim" + # simlist="ldpctest" for f in $simlist ; do compilations \ phy_simulators $f \ @@ -820,7 +831,7 @@ function main() { #################################################### # Build RF device and transport protocol libraries # #################################################### - if [ "$eNB" = "1" -o "$UE" = "1" -o "$gNB" = "1" -o "$nrUE" = "1" -o "$HWLAT" = "1" ] ; then + if [ "$eNB" = "1" -o "$eNBocp" = "1" -o "$UE" = "1" -o "$gNB" = "1" -o "$nrUE" = "1" -o "$HWLAT" = "1" ] ; then # build RF device libraries if [ "$HW" != "None" ] ; then @@ -896,7 +907,7 @@ function main() { $build_dir rfsimulator \ librfsimulator.so $dbin/librfsimulator.so.$REL - echo_info "Compiling basicsimulator" + echo_info "Compiling tcp_bridge_oai" compilations \ $build_dir tcp_bridge_oai \ libtcp_bridge_oai.so $dbin/libtcp_bridge_oai.so.$REL @@ -958,6 +969,7 @@ function main() { wait else echo_info "10. Bypassing the Tests ..." + echo_success "BUILD SHOULD BE SUCCESSFUL" fi } diff --git a/cmake_targets/tools/build_helper b/cmake_targets/tools/build_helper index 20bc5dc2b9..b8f0125b10 100755 --- a/cmake_targets/tools/build_helper +++ b/cmake_targets/tools/build_helper @@ -150,7 +150,9 @@ clean_all_files() { set_openair_env dir=$OPENAIR_DIR/cmake_targets rm -rf $dir/log $OPENAIR_DIR/targets/bin/* - rm -rf $dir/ran_build $dir/lte-simulators/build + rm -rf $dir/ran_build $dir/ran_build_noLOG + rm -rf $dir/lte-simulators/build + rm -rf $dir/phy_simulators/build $dir/nas_sim_tools/build rm -rf $dir/oaisim_build_oai/build $dir/oaisim_build_oai/CMakeLists.txt rm -rf $dir/autotests/bin $dir/autotests/log $dir/autotests/*/build } @@ -167,17 +169,29 @@ check_warnings() { #we look for 'warning:' in the compilation log file #this is how gcc starts a warning #this is not perfect, we may get false positive - warning_count=`grep "warning:" "$1"|wc -l` + warning_count=`grep "warning:" "$1" | egrep -v "jobserver unavailable|disabling jobserver mode" | wc -l` if [ $warning_count -gt 0 ]; then echo_error "WARNING: $warning_count warnings. See $1" fi } +#check_errors: +# print error message if the compilation had errors +#argument: +# $1: log file +check_errors() { + #we look for 'warning:' in the compilation log file + error_count=`grep "error:" "$1" | wc -l` + if [ $error_count -gt 0 ]; then + echo_error "ERROR: $error_count error. See $1" + fi +} + compilations() { cd $OPENAIR_DIR/cmake_targets/$1/build + echo_info "Log file for compilation is being written to: $dlog/$2.$REL.txt" set +e { - rm -f $3 if [ "$BUILD_COVERITY_SCAN" == "1" ]; then COV_SCAN_PREFIX="cov-build --dir cov-int" else @@ -192,15 +206,22 @@ compilations() { $COV_SCAN_PREFIX make -j`nproc` $2 fi fi - + ret=$? } > $dlog/$2.$REL.txt 2>&1 set -e - echo_info "Log file for compilation has been written to: $dlog/$2.$REL.txt" + if [[ $ret -ne 0 ]]; then + check_warnings "$dlog/$2.$REL.txt" + check_errors "$dlog/$2.$REL.txt" + echo_error "$2 compilation failed" + exit 1 + fi if [ -s $3 ] ; then cp $3 $4 echo_success "$2 compiled" check_warnings "$dlog/$2.$REL.txt" else + check_warnings "$dlog/$2.$REL.txt" + check_errors "$dlog/$2.$REL.txt" echo_error "$2 compilation failed" exit 1 fi diff --git a/common/config/libconfig/config_libconfig.c b/common/config/libconfig/config_libconfig.c index 2d861f2dc3..2e9fd614c5 100644 --- a/common/config/libconfig/config_libconfig.c +++ b/common/config/libconfig/config_libconfig.c @@ -179,8 +179,8 @@ int config_libconfig_get(paramdef_t *cfgoptions,int numoptions, char *prefix ) { *(cfgoptions[i].u64ptr) = (uint64_t)llu; printf_params("[LIBCONFIG] %s: %llu\n", cfgpath,(long long unsigned)(*(cfgoptions[i].u64ptr)) ); } else { - *(cfgoptions[i].iptr) = llu; - printf_params("[LIBCONFIG] %s: %llu\n", cfgpath,(long long unsigned)(*(cfgoptions[i].i64ptr)) ); + *(cfgoptions[i].i64ptr) = llu; + printf_params("[LIBCONFIG] %s: %lld\n", cfgpath,(long long)(*(cfgoptions[i].i64ptr)) ); } } else { defval=config_setdefault_int64(&(cfgoptions[i]),prefix); diff --git a/common/utils/LOG/vcd_signal_dumper.c b/common/utils/LOG/vcd_signal_dumper.c index 79db7f1c0e..90857d7cd9 100644 --- a/common/utils/LOG/vcd_signal_dumper.c +++ b/common/utils/LOG/vcd_signal_dumper.c @@ -518,7 +518,29 @@ const char* eurecomFunctionsNames[] = { "wakeup_txfh", "gNB_thread_rxtx0", "gNB_thread_rxtx1", - "ru_thread_tx_wait" + "ru_thread_tx_wait", + "gNB_ulsch_decoding", + "gNB_pdsch_codeword_scrambling", + "gNB_dlsch_encoding", + "gNB_pdsch_modulation", + "gNB_pdcch_tx", + "phy_procedures_gNB_tx", + "phy_procedures_gNB_common_tx", + "phy_procedures_gNB_uespec_rx", + "nr_rx_pusch", + "nr_ulsch_procedures_rx", + "macxface_gNB_dlsch_ulsch_scheduler", + + /*NR ue-softmodem signal*/ + "nr_ue_ulsch_encoding", + "nr_segmentation", + "ldpc_encoder_optim", + "nr_rate_matching_ldpc", + "nr_interleaving_ldpc", + "pss_synchro_nr", + "pss_search_time_nr", + "nr_initial_ue_sync", + "beam_switching_gpio" }; struct vcd_module_s vcd_modules[] = { diff --git a/common/utils/LOG/vcd_signal_dumper.h b/common/utils/LOG/vcd_signal_dumper.h index 88655977bb..601465c628 100644 --- a/common/utils/LOG/vcd_signal_dumper.h +++ b/common/utils/LOG/vcd_signal_dumper.h @@ -511,6 +511,29 @@ typedef enum { VCD_SIGNAL_DUMPER_FUNCTIONS_gNB_PROC_RXTX0, VCD_SIGNAL_DUMPER_FUNCTIONS_gNB_PROC_RXTX1, VCD_SIGNAL_DUMPER_FUNCTIONS_RU_TX_WAIT, + VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_gNB_ULSCH_DECODING, + VCD_SIGNAL_DUMPER_FUNCTIONS_gNB_PDSCH_CODEWORD_SCRAMBLING, + VCD_SIGNAL_DUMPER_FUNCTIONS_gNB_DLSCH_ENCODING, + VCD_SIGNAL_DUMPER_FUNCTIONS_gNB_PDSCH_MODULATION, + VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_gNB_PDCCH_TX, + VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_gNB_TX, + VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_gNB_COMMON_TX, + VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_gNB_UESPEC_RX, + VCD_SIGNAL_DUMPER_FUNCTIONS_NR_RX_PUSCH, + VCD_SIGNAL_DUMPER_FUNCTIONS_NR_ULSCH_PROCEDURES_RX, + VCD_SIGNAL_DUMPER_FUNCTIONS_gNB_DLSCH_ULSCH_SCHEDULER, + +/* NR ue-softmodem signal*/ + VCD_SIGNAL_DUMPER_FUNCTIONS_NR_UE_ULSCH_ENCODING, + VCD_SIGNAL_DUMPER_FUNCTIONS_NR_SEGMENTATION, + VCD_SIGNAL_DUMPER_FUNCTIONS_LDPC_ENCODER_OPTIM, + VCD_SIGNAL_DUMPER_FUNCTIONS_NR_RATE_MATCHING_LDPC, + VCD_SIGNAL_DUMPER_FUNCTIONS_NR_INTERLEAVING_LDPC, + VCD_SIGNAL_DUMPER_FUNCTIONS_PSS_SYNCHRO_NR, + VCD_SIGNAL_DUMPER_FUNCTIONS_PSS_SEARCH_TIME_NR, + VCD_SIGNAL_DUMPER_FUNCTIONS_NR_INITIAL_UE_SYNC, + VCD_SIGNAL_DUMPER_FUNCTIONS_BEAM_SWITCHING_GPIO, + VCD_SIGNAL_DUMPER_FUNCTIONS_END } vcd_signal_dump_functions; diff --git a/common/utils/T/T_defs.h b/common/utils/T/T_defs.h index 2221dbbcac..7b5304b1cb 100644 --- a/common/utils/T/T_defs.h +++ b/common/utils/T/T_defs.h @@ -73,7 +73,7 @@ typedef struct { } T_cache_t; /* number of VCD functions (to be kept up to date! see in T_messages.txt) */ -#define VCD_NUM_FUNCTIONS (249) +#define VCD_NUM_FUNCTIONS (269) /* number of VCD variables (to be kept up to date! see in T_messages.txt) */ #define VCD_NUM_VARIABLES (187) diff --git a/common/utils/T/T_messages.txt b/common/utils/T/T_messages.txt index 3838518834..d036b40560 100644 --- a/common/utils/T/T_messages.txt +++ b/common/utils/T/T_messages.txt @@ -3393,3 +3393,106 @@ ID = VCD_FUNCTION_RU_TX_WAIT GROUP = ALL:VCD:ENB:VCD_FUNCTION FORMAT = int,value VCD_NAME = ru_thread_tx_wait +ID = VCD_FUNCTION_PHY_gNB_ULSCH_DECODING + DESC = VCD function PHY_gNB_ULSCH_DECODING + GROUP = ALL:VCD:ENB:VCD_FUNCTION + FORMAT = int,value + VCD_NAME = gNB_ulsch_decoding +ID = VCD_FUNCTION_gNB_PDSCH_CODEWORD_SCRAMBLING + DESC = VCD function gNB_PDSCH_CODEWORD_SCRAMBLING + GROUP = ALL:VCD:ENB:VCD_FUNCTION + FORMAT = int,value + VCD_NAME = gNB_pdsch_codeword_scrambling +ID = VCD_FUNCTION_gNB_DLSCH_ENCODING + DESC = VCD function gNB_DLSCH_ENCODING + GROUP = ALL:VCD:ENB:VCD_FUNCTION + FORMAT = int,value + VCD_NAME = gNB_dlsch_encoding +ID = VCD_FUNCTION_gNB_PDSCH_MODULATION + DESC = VCD function gNB_PDSCH_MODULATION + GROUP = ALL:VCD:ENB:VCD_FUNCTION + FORMAT = int,value + VCD_NAME = gNB_pdsch_modulation +ID = VCD_FUNCTION_PHY_gNB_PDCCH_TX + DESC = VCD function PHY_gNB_PDCCH_TX + GROUP = ALL:VCD:ENB:VCD_FUNCTION + FORMAT = int,value + VCD_NAME = gNB_pdcch_tx +ID = VCD_FUNCTION_PHY_PROCEDURES_gNB_TX + DESC = VCD function PHY_PROCEDURES_gNB_TX + GROUP = ALL:VCD:ENB:VCD_FUNCTION + FORMAT = int,value + VCD_NAME = phy_procedures_gNB_tx +ID = VCD_FUNCTION_PHY_PROCEDURES_gNB_COMMON_TX + DESC = VCD function PHY_PROCEDURES_gNB_COMMON_TX + GROUP = ALL:VCD:ENB:VCD_FUNCTION + FORMAT = int,value + VCD_NAME = phy_procedures_gNB_common_tx +ID = VCD_FUNCTION_PHY_PROCEDURES_gNB_UESPEC_RX + DESC = VCD function PHY_PROCEDURES_gNB_UESPEC_RX + GROUP = ALL:VCD:ENB:VCD_FUNCTION + FORMAT = int,value + VCD_NAME = phy_procedures_gNB_uespec_rx +ID = VCD_FUNCTION_NR_RX_PUSCH + DESC = VCD function NR_RX_PUSCH + GROUP = ALL:VCD:ENB:VCD_FUNCTION + FORMAT = int,value + VCD_NAME = nr_rx_pusch +ID = VCD_FUNCTION_NR_ULSCH_PROCEDURES_RX + DESC = VCD function NR_ULSCH_PROCEDURES_RX + GROUP = ALL:VCD:ENB:VCD_FUNCTION + FORMAT = int,value + VCD_NAME = nr_ulsch_procedures_rx +ID = VCD_FUNCTION_gNB_DLSCH_ULSCH_SCHEDULER + DESC = VCD function gNB_DLSCH_ULSCH_SCHEDULER + GROUP = ALL:VCD:ENB:VCD_FUNCTION + FORMAT = int,value + VCD_NAME = macxface_gNB_dlsch_ulsch_scheduler + + #function for nrUE +ID = VCD_FUNCTION_NR_UE_ULSCH_ENCODING + DESC = VCD function NR_UE_ULSCH_ENCODING + GROUP = ALL:VCD:UE:VCD_FUNCTION + FORMAT = int,value + VCD_NAME = nr_ue_ulsch_encoding +ID = VCD_FUNCTION_NR_SEGMENTATION + DESC = VCD function NR_SEGMENTATION + GROUP = ALL:VCD:UE:VCD_FUNCTION + FORMAT = int,value + VCD_NAME = nr_segmentation +ID = VCD_FUNCTION_LDPC_ENCODER_OPTIM + DESC = VCD function LDPC_ENCODER_OPTIM + GROUP = ALL:VCD:UE:VCD_FUNCTION + FORMAT = int,value + VCD_NAME = ldpc_encoder_optim +ID = VCD_FUNCTION_NR_RATE_MATCHING_LDPC + DESC = VCD function NR_RATE_MATCHING_LDPC + GROUP = ALL:VCD:UE:VCD_FUNCTION + FORMAT = int,value + VCD_NAME = nr_rate_matching_ldpc +ID = VCD_FUNCTION_NR_INTERLEAVING_LDPC + DESC = VCD function NR_INTERLEAVING_LDPC + GROUP = ALL:VCD:UE:VCD_FUNCTION + FORMAT = int,value + VCD_NAME = nr_interleaving_ldpc +ID = VCD_FUNCTION_PSS_SYNCHRO_NR + DESC = VCD function PSS_SYNCHRO_NR + GROUP = ALL:VCD:UE:VCD_FUNCTION + FORMAT = int,value + VCD_NAME = pss_synchro_nr +ID = VCD_FUNCTION_PSS_SEARCH_TIME_NR + DESC = VCD function PSS_SEARCH_TIME_NR + GROUP = ALL:VCD:UE:VCD_FUNCTION + FORMAT = int,value + VCD_NAME = pss_search_time_nr +ID = VCD_FUNCTION_NR_INITIAL_UE_SYNC + DESC = VCD function NR_INITIAL_UE_SYNC + GROUP = ALL:VCD:UE:VCD_FUNCTION + FORMAT = int,value + VCD_NAME = nr_initial_ue_sync +ID = VCD_FUNCTION_BEAM_SWITCHING_GPIO + DESC = VCD function BEAM_SWITCHING_GPIO + GROUP = ALL:VCD:ENB:VCD_FUNCTION + FORMAT = int,value + VCD_NAME = beam_switching_gpio + diff --git a/common/utils/nr/nr_common.c b/common/utils/nr/nr_common.c index 8a236c49f9..5f07fc00aa 100644 --- a/common/utils/nr/nr_common.c +++ b/common/utils/nr/nr_common.c @@ -52,6 +52,7 @@ int NRRIV2PRBOFFSET(int locationAndBandwidth,int N_RB) { else return(N_RB-1-tmp2); } +/* TS 38.214 ch. 6.1.2.2.2 - Resource allocation type 1 for DL and UL */ int PRBalloc_to_locationandbandwidth0(int NPRB,int RBstart,int BWPsize) { AssertFatal(NPRB>0 && (NPRB + RBstart <= BWPsize),"Illegal NPRB/RBstart Configuration (%d,%d) for BWPsize %d\n",NPRB,RBstart,BWPsize); @@ -62,14 +63,21 @@ int PRBalloc_to_locationandbandwidth0(int NPRB,int RBstart,int BWPsize) { int PRBalloc_to_locationandbandwidth(int NPRB,int RBstart) { return(PRBalloc_to_locationandbandwidth0(NPRB,RBstart,275)); } + /// Target code rate tables indexed by Imcs +/* TS 38.214 table 5.1.3.1-1 - MCS index table 1 for PDSCH */ uint16_t nr_target_code_rate_table1[29] = {120, 157, 193, 251, 308, 379, 449, 526, 602, 679, 340, 378, 434, 490, 553, \ 616, 658, 438, 466, 517, 567, 616, 666, 719, 772, 822, 873, 910, 948}; - // Imcs values 20 and 26 have been multiplied by 2 to avoid the floating point + +/* TS 38.214 table 5.1.3.1-2 - MCS index table 2 for PDSCH */ +// Imcs values 20 and 26 have been multiplied by 2 to avoid the floating point uint16_t nr_target_code_rate_table2[28] = {120, 193, 308, 449, 602, 378, 434, 490, 553, 616, 658, 466, 517, 567, \ 616, 666, 719, 772, 822, 873, 1365, 711, 754, 797, 841, 885, 1833, 948}; + +/* TS 38.214 table 5.1.3.1-3 - MCS index table 3 for PDSCH */ uint16_t nr_target_code_rate_table3[29] = {30, 40, 50, 64, 78, 99, 120, 157, 193, 251, 308, 379, 449, 526, 602, 340, \ 378, 434, 490, 553, 616, 438, 466, 517, 567, 616, 666, 719, 772}; + uint16_t nr_tbs_table[93] = {24, 32, 40, 48, 56, 64, 72, 80, 88, 96, 104, 112, 120, 128, 136, 144, 152, 160, 168, 176, 184, 192, 208, 224, 240, 256, 272, 288, 304, 320, \ 336, 352, 368, 384, 408, 432, 456, 480, 504, 528, 552, 576, 608, 640, 672, 704, 736, 768, 808, 848, 888, 928, 984, 1032, 1064, 1128, 1160, 1192, 1224, 1256, \ 1288, 1320, 1352, 1416, 1480, 1544, 1608, 1672, 1736, 1800, 1864, 1928, 2024, 2088, 2152, 2216, 2280, 2408, 2472, 2536, 2600, 2664, 2728, 2792, 2856, 2976, \ diff --git a/common/utils/ocp_itti/intertask_interface.cpp b/common/utils/ocp_itti/intertask_interface.cpp index 3d4d356dcf..1680410ebb 100644 --- a/common/utils/ocp_itti/intertask_interface.cpp +++ b/common/utils/ocp_itti/intertask_interface.cpp @@ -80,7 +80,7 @@ task_list_t tasks[TASK_MAX]; void *itti_malloc(task_id_t origin_task_id, task_id_t destination_task_id, ssize_t size) { void *ptr = NULL; - AssertFatal ((ptr=malloc (size)) != NULL, "Memory allocation of %zu bytes failed (%d -> %d)!\n", + AssertFatal ((ptr=calloc (size, 1)) != NULL, "Memory allocation of %zu bytes failed (%d -> %d)!\n", size, origin_task_id, destination_task_id); return ptr; } @@ -91,8 +91,16 @@ task_list_t tasks[TASK_MAX]; return (EXIT_SUCCESS); } + // in the two following functions, the +32 in malloc is there to deal with gcc memory alignment + // because a struct size can be larger than sum(sizeof(struct components)) + // We should remove the itti principle of a huge union for all types of messages in paramter "msg_t ittiMsg" + // to use a more C classical pointer casting "void * ittiMsg", later casted in the right struct + // but we would have to change all legacy macros, as per this example + // #define S1AP_REGISTER_ENB_REQ(mSGpTR) (mSGpTR)->ittiMsg.s1ap_register_enb_req + // would become + // #define S1AP_REGISTER_ENB_REQ(mSGpTR) (s1ap_register_enb_req) mSGpTR)->ittiMsg MessageDef *itti_alloc_new_message_sized(task_id_t origin_task_id, MessagesIds message_id, MessageHeaderSize size) { - MessageDef *temp = (MessageDef *)itti_malloc (origin_task_id, TASK_UNKNOWN, sizeof(MessageHeader) + size); + MessageDef *temp = (MessageDef *)itti_malloc (origin_task_id, TASK_UNKNOWN, sizeof(MessageHeader) +32 + size); temp->ittiMsgHeader.messageId = message_id; temp->ittiMsgHeader.originTaskId = origin_task_id; temp->ittiMsgHeader.ittiMsgSize = size; @@ -100,7 +108,7 @@ task_list_t tasks[TASK_MAX]; } MessageDef *itti_alloc_new_message(task_id_t origin_task_id, MessagesIds message_id) { - int size=sizeof(MessageHeader) + messages_info[message_id].size; + int size=sizeof(MessageHeader) + 32 + messages_info[message_id].size; MessageDef *temp = (MessageDef *)itti_malloc (origin_task_id, TASK_UNKNOWN, size); temp->ittiMsgHeader.messageId = message_id; temp->ittiMsgHeader.originTaskId = origin_task_id; diff --git a/common/utils/ocp_itti/intertask_interface.h b/common/utils/ocp_itti/intertask_interface.h index 0cd25ee231..026c8270d7 100644 --- a/common/utils/ocp_itti/intertask_interface.h +++ b/common/utils/ocp_itti/intertask_interface.h @@ -256,6 +256,7 @@ typedef struct IttiMsgText_s { //#include #include +#include void *rrc_enb_process_itti_msg(void *); #include #include @@ -414,7 +415,7 @@ static const message_info_t messages_info[] = { #undef MESSAGE_DEF }; -typedef struct __attribute__ ((__packed__)) MessageDef_s { +typedef struct MessageDef_s { MessageHeader ittiMsgHeader; /**< Message header */ msg_t ittiMsg; } MessageDef; diff --git a/common/utils/telnetsrv/telnetsrv.c b/common/utils/telnetsrv/telnetsrv.c index 06a5d350c7..03f7af99bc 100644 --- a/common/utils/telnetsrv/telnetsrv.c +++ b/common/utils/telnetsrv/telnetsrv.c @@ -53,6 +53,7 @@ #include #include "common/utils/load_module_shlib.h" #include "common/config/config_userapi.h" +#include "common/utils/threadPool/thread-pool.h" #include "executables/softmodem-common.h" #include @@ -507,12 +508,22 @@ int process_command(char *buf) { } rt= CMDSTATUS_FOUND; - } else if (strncasecmp(cmd,"get",3) == 0 || strncasecmp(cmd,"set",3) == 0) { + } else if (strcasecmp(cmd,"get") == 0 || strcasecmp(cmd,"set") == 0) { rt= setgetvar(i,cmd[0],cmdb); } else { for (k=0 ; telnetparams.CmdParsers[i].cmd[k].cmdfunc != NULL ; k++) { if (strncasecmp(cmd, telnetparams.CmdParsers[i].cmd[k].cmdname,sizeof(telnetparams.CmdParsers[i].cmd[k].cmdname)) == 0) { - telnetparams.CmdParsers[i].cmd[k].cmdfunc(cmdb, telnetparams.telnetdbg, client_printf); + if (telnetparams.CmdParsers[i].cmd[k].qptr != NULL) { + notifiedFIFO_elt_t *msg =newNotifiedFIFO_elt(sizeof(telnetsrv_qmsg_t),0,NULL,NULL); + telnetsrv_qmsg_t *cmddata=NotifiedFifoData(msg); + cmddata->cmdfunc=(qcmdfunc_t)telnetparams.CmdParsers[i].cmd[k].cmdfunc; + cmddata->prnt=client_printf; + cmddata->debug=telnetparams.telnetdbg; + cmddata->cmdbuff=strdup(cmdb); + pushNotifiedFIFO(telnetparams.CmdParsers[i].cmd[k].qptr, msg); + } else { + telnetparams.CmdParsers[i].cmd[k].cmdfunc(cmdb, telnetparams.telnetdbg, client_printf); + } rt= CMDSTATUS_FOUND; } } /* for k */ @@ -673,6 +684,16 @@ void run_telnetsrv(void) { return; } +void poll_telnetcmdq(void *qid, void *arg) { + notifiedFIFO_elt_t *msg = pollNotifiedFIFO((notifiedFIFO_t *)qid); + + if (msg != NULL) { + telnetsrv_qmsg_t *msgdata=NotifiedFifoData(msg); + msgdata->cmdfunc(msgdata->cmdbuff,msgdata->debug,msgdata->prnt,arg); + free(msgdata->cmdbuff); + delNotifiedFIFO_elt(msg); + } +} /*------------------------------------------------------------------------------------------------*/ /* load the commands delivered with the telnet server * @@ -758,6 +779,7 @@ int telnetsrv_autoinit(void) { */ int add_telnetcmd(char *modulename, telnetshell_vardef_t *var, telnetshell_cmddef_t *cmd) { int i; + notifiedFIFO_t *afifo=NULL; if( modulename == NULL || var == NULL || cmd == NULL) { fprintf(stderr,"[TELNETSRV] Telnet server, add_telnetcmd: invalid parameters\n"); @@ -769,6 +791,13 @@ int add_telnetcmd(char *modulename, telnetshell_vardef_t *var, telnetshell_cmdde strncpy(telnetparams.CmdParsers[i].module,modulename,sizeof(telnetparams.CmdParsers[i].module)-1); telnetparams.CmdParsers[i].cmd = cmd; telnetparams.CmdParsers[i].var = var; + if (cmd->cmdflags & TELNETSRV_CMDFLAG_PUSHINTPOOLQ) { + if (afifo == NULL) { + afifo = malloc(sizeof(notifiedFIFO_t)); + initNotifiedFIFO(afifo); + } + cmd->qptr = afifo; + } printf("[TELNETSRV] Telnet server: module %i = %s added to shell\n", i,telnetparams.CmdParsers[i].module); break; @@ -797,8 +826,10 @@ int telnetsrv_checkbuildver(char *mainexec_buildversion, char **shlib_buildvers } int telnetsrv_getfarray(loader_shlibfunc_t **farray) { - *farray=malloc(sizeof(loader_shlibfunc_t)); + *farray=malloc(sizeof(loader_shlibfunc_t)*2); (*farray)[0].fname=TELNET_ADDCMD_FNAME; (*farray)[0].fptr=(int (*)(void) )add_telnetcmd; - return 1; + (*farray)[1].fname=TELNET_POLLCMDQ_FNAME; + (*farray)[1].fptr=(int (*)(void) )poll_telnetcmdq; + return ( 2); } diff --git a/common/utils/telnetsrv/telnetsrv.h b/common/utils/telnetsrv/telnetsrv.h index debb9f02ec..b66641d5c8 100644 --- a/common/utils/telnetsrv/telnetsrv.h +++ b/common/utils/telnetsrv/telnetsrv.h @@ -53,13 +53,26 @@ /* to add a set of new command to the telnet server shell */ typedef void(*telnet_printfunc_t)(const char* format, ...); typedef int(*cmdfunc_t)(char*, int, telnet_printfunc_t prnt); +typedef int(*qcmdfunc_t)(char*, int, telnet_printfunc_t prnt,void *arg); +#define TELNETSRV_CMDFLAG_PUSHINTPOOLQ (1<<0) // ask the telnet server to push the command in a thread pool queue typedef struct cmddef { char cmdname[TELNET_CMD_MAXSIZE]; char helpstr[TELNET_HELPSTR_SIZE]; cmdfunc_t cmdfunc; + unsigned int cmdflags; + void *qptr; } telnetshell_cmddef_t; +/*----------------------------------------------------------------------------*/ +/* structure used to send a command via a message queue to enable */ +/* executing a command in a thread different from the telnet server thread */ +typedef struct telnetsrv_qmsg { + qcmdfunc_t cmdfunc; + telnet_printfunc_t prnt; + int debug; + char *cmdbuff; +} telnetsrv_qmsg_t; /*----------------------------------------------------------------------------*/ /*structure to be used when adding a module to the telnet server */ /* This is the first parameter of the add_telnetcmd function, which can be used */ @@ -111,9 +124,6 @@ typedef struct { } telnetsrv_params_t; - -typedef int(*addcmdfunc_t)(char*, telnetshell_vardef_t*, telnetshell_cmddef_t*); - typedef void(*settelnetmodule_t)(char *name, void *ptr); /*-------------------------------------------------------------------------------------------*/ @@ -133,7 +143,9 @@ VT escape sequence definition, for smarter display.... /*---------------------------------------------------------------------------------------------*/ #define TELNET_ADDCMD_FNAME "add_telnetcmd" +#define TELNET_POLLCMDQ_FNAME "poll_telnetcmdq" typedef int(*add_telnetcmd_func_t)(char *, telnetshell_vardef_t *, telnetshell_cmddef_t *); +typedef void(*poll_telnetcmdq_func_t)(void *qid,void *arg); #ifdef TELNETSERVERCODE int add_telnetcmd(char *modulename, telnetshell_vardef_t *var, telnetshell_cmddef_t *cmd); void set_sched(pthread_t tid, int pid,int priority); diff --git a/common/utils/threadPool/thread-pool.c b/common/utils/threadPool/thread-pool.c index cbb2dbe3d9..e1446f15d7 100644 --- a/common/utils/threadPool/thread-pool.c +++ b/common/utils/threadPool/thread-pool.c @@ -111,9 +111,10 @@ void initTpool(char *params,tpool_t *pool, bool performanceMeas) { pool->activated=true; initNotifiedFIFO(&pool->incomingFifo); char *saveptr, * curptr; + char *parms_cpy=strdup(params); pool->nbThreads=0; pool->restrictRNTI=false; - curptr=strtok_r(params,",",&saveptr); + curptr=strtok_r(parms_cpy,",",&saveptr); struct one_thread * ptr; while ( curptr!=NULL ) { int c=toupper(curptr[0]); @@ -145,7 +146,7 @@ void initTpool(char *params,tpool_t *pool, bool performanceMeas) { curptr=strtok_r(NULL,",",&saveptr); } - + free(parms_cpy); if (pool->activated && pool->nbThreads==0) { printf("No servers created in the thread pool, exit\n"); exit(1); diff --git a/common/utils/utils.c b/common/utils/utils.c index a807a27096..7f7aafc94a 100644 --- a/common/utils/utils.c +++ b/common/utils/utils.c @@ -105,3 +105,9 @@ char *itoa(int i) { return strdup(buffer); } +void *memcpy1(void *dst,const void *src,size_t n) { + + void *ret=dst; + asm volatile("rep movsb" : "+D" (dst) : "c"(n), "S"(src) : "cc","memory"); + return(ret); +} diff --git a/common/utils/utils.h b/common/utils/utils.h index 11db07056e..da7c453b03 100644 --- a/common/utils/utils.h +++ b/common/utils/utils.h @@ -15,6 +15,9 @@ int hex_char_to_hex_value (char c); // Converts an hexadecimal ASCII coded string into its value.** int hex_string_to_hex_value (uint8_t *hex_value, const char *hex_string, int size); +void *memcpy1(void *dst,const void *src,size_t n); + + char *itoa(int i); #define findInList(keY, result, list, element_type) {\ diff --git a/doc/BUILD.md b/doc/BUILD.md index 9ada32e532..a15083dc32 100644 --- a/doc/BUILD.md +++ b/doc/BUILD.md @@ -16,7 +16,6 @@ This page is valid on tags starting from **`2019.w09`**. # Soft Modem Build Script -oai EPC is developed in a distinct project with it's own [documentation](https://github.com/OPENAIRINTERFACE/openair-cn/wiki) , it is not described here. OAI softmodem sources, which aim to implement 3GPP compliant UEs, eNodeB and gNodeB can be downloaded from the Eurecom [gitlab repository](./GET_SOURCES.md). @@ -34,7 +33,7 @@ The main oai binaries, which are tested by the Continuous Integration process ar Running the [build_oai](../cmake_targets/build_oai) script also generates some utilities required to build and/or run the oai softmodem binaries: -- `con2uedata`: a binary used to build the UE data from a configuration file. The created file emulates the sim card of a 3GPP compliant phone. +- `conf2uedata`: a binary used to build the UE data from a configuration file. The created file emulates the sim card of a 3GPP compliant phone. - `nvram`: a binary used to build UE (IMEI...) and EMM (IMSI, registered PLMN) non volatile data. - `rb_tool`: radio bearer utility - `genids` T Tracer utility, used at build time to generate T_IDs.h include file. This binary is located in the [T Tracer source file directory](../common/utils/T) . diff --git a/doc/FEATURE_SET.md b/doc/FEATURE_SET.md index f71b9acb33..23d32effbb 100644 --- a/doc/FEATURE_SET.md +++ b/doc/FEATURE_SET.md @@ -1,6 +1,8 @@ **Table of Contents** -1. [OpenAirInterface eNB Feature Set](#openairinterface-enb-feature-set) +1. [Functional Split Architecture](#functional-split-architecture) +2. [OpenAirInterface Block Diagram](#openairinterface-block-diagram) +2. [OpenAirInterface 4G-LTE eNB Feature Set](#openairinterface-4g-lte-enb-feature-set) 1. [eNB PHY Layer](#enb-phy-layer) 2. [eNB MAC Layer](#enb-mac-layer) 3. [eNB RLC Layer](#enb-rlc-layer) @@ -9,29 +11,38 @@ 6. [eNB X2AP](#enb-x2ap) 7. [eNB/MCE M2AP](#enbmce-m2ap) 8. [MCE/MME M3AP](#mcemme-m3ap) - 9. [eNB Advanced Features](#enb-advanced-features) -2. [OpenAirInterface Functional Split](#openairinterface-functional-split) -3. [OpenAirInterface UE Feature Set](#openairinterface-ue-feature-set) +3. [OpenAirInterface 4G-LTE UE Feature Set](#openairinterface-4g-lte-ue-feature-set) 1. [LTE UE PHY Layer](#lte-ue-phy-layer) 2. [LTE UE MAC Layer](#lte-ue-mac-layer) 3. [LTE UE RLC Layer](#lte-ue-rlc-layer) 4. [LTE UE PDCP Layer](#lte-ue-pdcp-layer) 5. [LTE UE RRC Layer](#lte-ue-rrc-layer) -4. [OpenAirInterface Functional Split](#openairinterface-functional-split) -5. [OpenAirInterface 5G-NR Feature Set](#openairinterface-5g-nr-feature-set) +4. [OpenAirInterface 5G-NR gNB Feature Set](#openairinterface-5g-nr-feature-set) 1. [General Parameters](#general-parameters) - 2. [gNB Features](#gnb-features) - 1. [gNB Physical Layer](#gnb-phy-layer) - 2. [gNB Higher Layers](#gnb-higher-layers) - 3. [NR UE Features](#nr-ue-features) - 1. [NR UE Physical Layer](#nr-ue-phy-layer) - 2. [NR UE Higher Layers](#nr-ue-higher-layers) + 2. [gNB Physical Layer](#gnb-phy-layer) + 3. [gNB Higher Layers](#gnb-higher-layers) +5. [OpenAirInterface 5G-NR UE Feature Set](#openairinterface-5g-nr-ue-feature-set) + 1. [UE Physical Layer](#ue-phy-layer) + 2. [UE Higher Layers](#ue-higher-layers) -# OpenAirInterface Block diagram # + +# Functional Split Architecture # + +- RCC: Radio-Cloud Center +- RAU: Radio-Access Unit +- RRU: Remote Radio-Unit +- IF4.5 / IF5 : similar to IEEE P1914.1 +- FAPI (IF2) : specified by Small Cell Forum (open-nFAPI implementation) +- IF1 : F1 in 3GPP Release 15 + +![Functional Split Architecture](./oai_enb_func_split_arch.png) + + +# OpenAirInterface Block Diagram # ![Block Diagram](./oai_enb_block_diagram.png) -# OpenAirInterface eNB Feature Set # +# OpenAirInterface 4G LTE eNB Feature Set # ## eNB PHY Layer ## @@ -82,7 +93,11 @@ TDD UL: 20 MHz, 100 PRBS/ MCS **XX** | 3.0 Mbit/s | TM1: 4.21 Mbits/s The MAC layer implements a subset of the **3GPP 36.321** release v8.6 in support of BCH, DLSCH, RACH, and ULSCH channels. - RRC interface for CCCH, DCCH, and DTCH -- Proportional fair scheduler (round robin scheduler soon) +- Proportional fair scheduler (round robin scheduler soon), with the following improvements: + - Up to 30 users tested in the L2 simulator, CCE allocation in the preprocessor ; the scheduler was also simplified and made more modular + - Adaptative UL-HARQ + - Remove out-of-sync UEs + - No use of the `first_rb` in the UL scheduler ; respects `vrb_map_UL` and `vrb_map` in the DL - DCI generation - HARQ Support - RA procedures and RNTI management @@ -123,7 +138,7 @@ The current PDCP layer is header compliant with **3GPP 36.323** Rel 10.1.0 and i ## eNB RRC Layer ## -The RRC layer is based on **3GPP 36.331** v14.3.0 and implements the following functions: +The RRC layer is based on **3GPP 36.331** v15.6 and implements the following functions: - System Information broadcast (SIB 1, 2, 3, and 13) * SIB1: Up to 6 PLMN IDs broadcast @@ -150,6 +165,10 @@ The X2AP layer is based on **3GPP 36.423** v14.6.0 and implements the following - X2 timers (t_reloc_prep, tx2_reloc_overall) - Handover Cancel - X2-U interface implemented + - EN-DC is implemented + - X2AP : Handling of SgNB Addition Request / Addition Request Acknowledge / Reconfiguration Complete + - RRC : Handling of RRC Connection Reconfiguration with 5G cell info, configuration of 5G-NR measurements + - S1AP : Handling of E-RAB Modification Indication / Confirmation ## eNB/MCE M2AP ## @@ -171,11 +190,8 @@ The M3AP layer is based on **3GPP 36.444** v14.0.1: - M3 Session Start Request - M3 Session Start Response -## eNB Advanced Features ## -**To be completed** - -# OpenAirInterface UE Feature Set # +# OpenAirInterface 4G LTE UE Feature Set # ## LTE UE PHY Layer ## @@ -230,17 +246,6 @@ The NAS layer is based on **3GPP 24.301** and implements the following functions - EMM attach/detach, authentication, tracking area update, and more - ESM default/dedicated bearer, PDN connectivity, and more -# OpenAirInterface Functional Split # - -- RCC: Radio-Cloud Center -- RAU: Radio-Access Unit -- RRU: Remote Radio-Unit - -![Functional Split Architecture](./oai_enb_func_split_arch.png) - -- IF4.5 / IF5 : similar to IEEE P1914.1 -- FAPI (IF2) : specified by Small Cell Forum (open-nFAPI implementation) -- IF1 : F1 in 3GPP Release 15 # OpenAirInterface 5G-NR Feature Set # @@ -258,49 +263,103 @@ The following features are valid for the gNB and the 5G-NR UE. * Highly efficient 3GPP compliant polar encoder and decoder * Encoder and decoder for short blocks -## gNB Features ## -### gNB PHY Layer ### +## gNB PHY Layer ## -* Generation of PSS/SSS/PBCH for multiple beams and -* Generation of PDCCH for SIB1 (including generation of DCI, polar encoding, scrambling, modulation, RB mapping, etc) +* 30KHz SCS for FR1 and 120 KHz SCS for FR2 +* Generation of NR-PSS/NR-SSS +* NR-PBCH supports multiple SSBs and flexible periodicity +* Generation of NR-PDCCH for SIB1 (including generation of DCI, polar encoding, scrambling, modulation, RB mapping, etc) - common search space configured by MIB - user-specific search space configured by RRC - - DCI formats: 00, 10 -* Generation of PDSCH (including Segmentation, LDPC encoding, rate matching, scrambling, modulation, RB mapping, etc). - - Single symbol DMRS, dmrs-TypeA-Position Pos2, DMRS configuration type 1 - - PDSCH mapping type A + - DCI formats: 00, 10 (01 and 11 **under integration**) +* Generation of NR-PDSCH (including Segmentation, LDPC encoding, rate matching, scrambling, modulation, RB mapping, etc). + - Single symbol DMRS, DMRS-TypeA-Position Pos2, DMRS configuration type 1 + - PDSCH mapping type A +* NR-CSI Generation of sequence at PHY (**under integration**) * NR-PUSCH (including Segmentation, LDPC encoding, rate matching, scrambling, modulation, RB mapping, etc). * NR-PUCCH - - Format 0 (ACK/NACK) + - Format 0 (2 bits, mainly for ACK/NACK) + - Format 2 (up to 64 bits, mainly for CSI feedback) +* NR-PRACH + - Formats 0,1,2,3, A1-A3, B1-B3 +* Highly efficient 3GPP compliant LDPC encoder and decoder (BG1 and BG2 are supported) +* Highly efficient 3GPP compliant polar encoder and decoder +* Encoder and decoder for short block -### gNB higher Layers ### - +## gNB Higher Layers ## + +**gNB RRC** - NR RRC (38.331) Rel 15 messages using new asn1c - LTE RRC (36.331) also updated to Rel 15 -- Generation of MIB +- Generation of CellGroupConfig (for eNB) and MIB - Application to read configuration file and program gNB RRC -- RRC -> MAC configuration -- MAC -> PHY configuration (using NR FAPI P5 interface) -- FAPI P7 interface for BCH PDU, DCI PDU, PDSCH PDU +- RRC can configure PDCP, RLC, MAC -For more details see [this document](https://gitlab.eurecom.fr/oai/openairinterface5g/uploads/ba5368448d627743a28c770c29e8978e/OAI_Software_Architecture_for_Dual_Connectivity_in_E-UTRA_and_5G-NR_and_nFAPI_for_MAC-PHY_Interface.docx) +**gNB X2AP** +- X2 setup with eNB +- Handling of SgNB Addition Request / Addition Request Acknowledge / Reconfiguration Complete -## NR UE Features ## +**gNB MAC** +- MAC -> PHY configuration using NR FAPI P5 interface +- MAC <-> PHY data interface using FAPI P7 interface for BCH PDU, DCI PDU, PDSCH PDU +- Scheduler for RA procedreat gNB +- MAC downlink scheduler (fixed allocations) +- MAC header generation (including timing advance) +- ACK / NACK handling and HARQ procedures for downlink +- **As of May 2020** only DL was validated with COTS phone ; UL in progress, validated with OAI UE in noS1 mode -### NR UE PHY Layer ### +# OpenAirInterface 5G-NR UE Feature Set # -- initial synchronization -- Time tracking based on PDCCH DMRS -- Frequency offset estimation -- PBCH RX -- PDCCH RX -- PDSCH RX - - including first version of dual stream receiver for PDSCH +**as of May 2020** only supporting "noS1" mode (DL): +- Creates TUN interface to PDCP to inject and receive user-place traffic +- Will only work with OAI gNB configured in the same mode + +## UE PHY Layer ## + +* Initial synchronization +* Time tracking based on PBCH DMRS +* Time tracking based on PBCH DMRS +* Frequency offset estimation +* PBCH RX +* PDCCH RX +* PDSCH RX, including a first version of dual stream receiver for PDSCH +* 30KHz SCS for FR1 and 120 KHz SCS for FR2 +* Generation of NR-PSS/NR-SSS +* NR-PBCH supports multiple SSBs and flexible periodicity +* Generation of NR-PDCCH for SIB1 (including generation of DCI, polar encoding, scrambling, modulation, RB mapping, etc) + - common search space configured by MIB + - user-specific search space configured by RRC + - DCI formats: 00, 10 (01 and 11 **under integration**) +* Generation of NR-PDSCH (including Segmentation, LDPC encoding, rate matching, scrambling, modulation, RB mapping, etc). + - Single symbol DMRS, DMRS-TypeA-Position Pos2, DMRS configuration type 1 + - PDSCH mapping type A +* NR-CSI Generation of sequence at PHY (**under integration**) +* NR-PUSCH (including Segmentation, LDPC encoding, rate matching, scrambling, modulation, RB mapping, etc). +* NR-PUCCH + - Format 0 (2 bits, mainly for ACK/NACK) + - Format 2 (up to 64 bits, mainly for CSI feedback) +* NR-PRACH + - Formats 0,1,2,3, A1-A3, B1-B3 +* Highly efficient 3GPP compliant LDPC encoder and decoder (BG1 and BG2 are supported) +* Highly efficient 3GPP compliant polar encoder and decoder +* Encoder and decoder for short block + + +## UE Higher Layers ## + +**gNB MAC** +- Initial sync and MIB detection +- MAC -> PHY configuration of PHY via UE FAPI P5 interface +- Basic MAC to control PHY via UE FAPI P7 interface +- Random access procedure + + +**RLC** + +**PDCP** -### NR UE higher Layers ### -For more details see [this document](https://gitlab.eurecom.fr/oai/openairinterface5g/uploads/f7386f3a64806fd6b2ac1fc3d0252fff/UE_FAPI-like_interface.docx) [OAI wiki home](https://gitlab.eurecom.fr/oai/openairinterface5g/wikis/home) diff --git a/doc/RUNMODEM.md b/doc/RUNMODEM.md index 0c66b58547..37eadd92f3 100644 --- a/doc/RUNMODEM.md +++ b/doc/RUNMODEM.md @@ -56,9 +56,56 @@ oai supports [number of deployment](FEATURE_SET.md) model, the following are tes 1. [Monolithic eNodeB](https://gitlab.eurecom.fr/oai/openairinterface5g/wikis/HowToConnectCOTSUEwithOAIeNBNew) where the whole signal processing is performed in a single process 2. if4p5 mode, where frequency domain samples are carried over ethernet, from the RRU which implement part of L1(FFT,IFFT,part of PRACH), to a RAU +# 5G NR + +As of February 2020, all 5G NR development is part of the develop branch (the branch develop-nr is no longer maintained). This also means that all new development will be merged into there once it passes all the CI. + +## NSA setup with COTS UE + +This setup requires an EPC, an OAI eNB and gNB, and a COTS Phone. A dedicated page describe the setup can be found [here](https://gitlab.eurecom.fr/oai/openairinterface5g/wikis/home/gNB-COTS-UE-testing). + +### Launch gNB + +```bash sudo ./nr-softmodem -O ../../../targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.usrpn300.conf``` + +### Launch eNB + +```bash sudo ./lte-softmodem -O ../../../targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpb210.conf``` +## phy-test setup with OAI UE + +The OAI UE can also be used in front of a OAI gNB without the support of eNB or EPC. In this case both gNB and eNB need to be run with the --phy-test flag. At the gNB this flag does the following + - it reads the RRC configuration from the configuration file + - it encodes the RRCConfiguration and the RBconfig message and stores them in the binary files rbconfig.raw and reconfig.raw + - the MAC uses a pre-configured allocation of PDSCH and PUSCH with randomly generated payload + +At the UE the --phy-test flag will + - read the binary files rbconfig.raw and reconfig.raw from the current directory (a different directory can be specified with the flag --rrc_config_path) and process them. + + +### Launch gNB + +```bash sudo ./nr-softmodem -O ../../../targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.usrpn300.conf --phy-test``` + +### Launch UE in another window + +```bash sudo ./nr-uesoftmodem --phy-test [--rrc_config_path ../../../ci-scripts/rrc-files]``` + +Some other useful paramters of the UE are + + - --ue-fo-compensation: enables the frequency offset compenstation at the UE. This is useful when running over the air and/or without an external clock/time source + - --usrp-args: this is the equivalend paramter of sdr_addrs field in the gNB config file and can be used to identify the USRP and set some basic paramters (like the clock source) + - --clock-source: sets the clock-source (internal or external). + - --time-source: sets the time-source (internal or external). + + +## noS1 setup with OAI UE + +Instead of randomly generated payload, in the phy-test mode we can also inject/receive user-plane traffic over a TUN interface. This is the so-called noS1 mode. + +This setup is described in the [rfsimulator page](../targets/ARCH/rfsimulator/README.md#5g-case). In theory this should also work with the real hardware target although this has yet to be tested. diff --git a/doc/TESTING_GNB_W_COTS_UE.md b/doc/TESTING_GNB_W_COTS_UE.md new file mode 100644 index 0000000000..c87a9e934d --- /dev/null +++ b/doc/TESTING_GNB_W_COTS_UE.md @@ -0,0 +1,389 @@ +STATUS 2020/07/30 : under continuous improvement ; updated the configuration files links with CI approved reference files + + +## Table of Contents ## + +1. [Configuration Overview](#configuration-overview) +2. [SW Repository / Branch](#repository) +3. [Architecture Setup](#architecture-setup) +4. [Build / Install](#build-and-install) +5. [Run / Test](#run-and-test) +6. [Test case](#test-case) +7. [Log file monitoring](#log-file-monitoring) +6. [Required tools for debug](#required-tools-for-debug) +7. [Status of interoperability](#status-of-interoperability) + +## Configuration Overview + +* Non Standalone (NSA) configuration : initial Control Plane established between UE and RAN eNB, then User Plane established between UE and gNB, Core network is 4G based supporting rel 15 + +* Commercial UE: Oppo Reno 5G +* OAI Software Defined gNB and eNB +* eNB RF front end: USRP (ETTUS) B200 Mini or B210 +* gNB RF front end: USRP (ETTUS) B200 Mini or B210 (N310 will be needed for MIMO and wider BW's) +* 5G TDD duplexing mode +* 5G FR1 Band n78 (3.5 GHz) +* BW: 40MHz +* Antenna scheme: SISO + +## Repository + +https://gitlab.eurecom.fr/oai/openairinterface5g/tree/develop + +## Architecture Setup + +The scheme below depicts our typical setup: + +![image info](./testing_gnb_w_cots_ue_resources/oai_fr1_setup.jpg) + +The photo depicts the FR1 setup part of the scheme above: + + +![image info](./testing_gnb_w_cots_ue_resources/oai_fr1_lab.jpg) + +## Build and Install + +General guidelines to build eNB and gNB : +See https://gitlab.eurecom.fr/oai/openairinterface5g/blob/develop/doc/BUILD.md#building-ues-enodeb-and-gnodeb-executables + + +- **eNB** + +``` +cd /openairinterface5g/ +source oaienv +cd cmake_targets/ +./build_oai -I -w USRP --eNB + +``` + +- **gNB** + +``` +cd /openairinterface5g/ +source oaienv +cd cmake_targets/ +./build_oai -I -w USRP --gNB +``` + + +- **EPC** + +for reference: +https://github.com/OPENAIRINTERFACE/openair-epc-fed/blob/master-documentation/docs/DEPLOY_HOME.md + + + +## Configuration Files + +Each component (EPC, eNB, gNB) has its own configuration file. +These config files are passed as arguments of the run command line, using the option -O \ + +The **REFERENCE** files for eNB and gNB, **used by the CI**, can be found here: +[enb conf file](../ci-scripts/conf_files/enb.band7.tm1.fr1.25PRB.usrpb210.conf) +[gnb conf file](../ci-scripts/conf_files/gnb.band78.tm1.fr1.106PRB.usrpb210.conf) + +These files have to be updated manually to set the IP addresses and frequency. + + +**ATTENTION** : an **EXTERNAL** clock is used to sync the eNB and gNB, +whether the clock is internal or external is defined in the configuration files (!! details needed !!) + + +1- In the **eNB configuration file** : +- look for MME IP address, and update the **ipv4 field** with the IP address of the **EPC** server +``` + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "**YOUR_EPC_IP_ADDR**"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + +``` + +- look for S1 IP address, and update the **3 fields below** with the IP address of the **eNB** server +``` + NETWORK_INTERFACES : + { + ENB_INTERFACE_NAME_FOR_S1_MME = "eth0"; + ENB_IPV4_ADDRESS_FOR_S1_MME = "**YOUR_ENB_IP_ADDR**"; + ENB_INTERFACE_NAME_FOR_S1U = "eth0"; + ENB_IPV4_ADDRESS_FOR_S1U = "**YOUR_ENB_IP_ADDR**"; + ENB_PORT_FOR_S1U = 2152; # Spec 2152 + ENB_IPV4_ADDRESS_FOR_X2C = "**YOUR_ENB_IP_ADDR**"; + ENB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + +``` + +2- In the **gNB configuration file** : +- look for MME IP address, and update the **ipv4 field** with the IP address of the **EPC** server +``` + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "**YOUR_EPC_IP_ADDR**"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); +``` +- look for X2 IP address, and update the **4 fields** with the IP address of the **eNB** server / **gNB** server as below (notice : even if -in principle- S1 MME is not required for gNB setting) +``` + + ///X2 + enable_x2 = "yes"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + target_enb_x2_ip_address = ( + { ipv4 = "**YOUR_ENB_IP_ADDR**"; + ipv6 = "192:168:30::17"; + preference = "ipv4"; + } + ); + + NETWORK_INTERFACES : + { + + GNB_INTERFACE_NAME_FOR_S1_MME = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1_MME = "**YOUR_GNB_IP_ADDR**"; + GNB_INTERFACE_NAME_FOR_S1U = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1U = "**YOUR_GNB_IP_ADDR**"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + GNB_IPV4_ADDRESS_FOR_X2C = "**YOUR_GNB_IP_ADDR**"; + GNB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + + +``` + + + +3- The frequency setting requires a manual update in the .C and in the gNB conf file: + + +In the C file **openair2/RRC/LTE/rrc_eNB.c:3217** +set the nrarfcn to the same value as absoluteFrequencySSB in the **gNB config file**, that is **641272** in the example below + +C file : +``` +MeasObj2->measObject.choice.measObjectNR_r15.carrierFreq_r15 =641272; +``` + +gNB config file : + +``` + # absoluteFrequencySSB is the central frequency of SSB + absoluteFrequencySSB = 641272; + dl_frequencyBand = 78; + # the carrier frequency is assumed to be in the middle of the carrier, i.e. dl_absoluteFrequencyPointA_kHz + dl_carrierBandwidth*12*SCS_kHz/2 + dl_absoluteFrequencyPointA = 640000; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; + # subcarrierSpacing + # 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 1; + dl_carrierBandwidth = 106; +``` + + +## Run and Test + +The order to run the different components is important: +1- first, CN +2- then, eNB +3- then, gNB +4- finally, switch UE from airplane mode ON to OFF (ie Radio from OFF to ON) + +It is recommended to redirect the run commands to the same log file (fur further analysis and debug), using ```| tee **YOUR_LOG_FILE**``` especially for eNB and gNB. +It is not very useful for the CN. + +The test takes typically a few seconds, max 10-15 seconds. If it takes more than 30 seconds, there is a problem. + +- **EPC** (on EPC host): + +for reference: +https://github.com/OPENAIRINTERFACE/openair-epc-fed/blob/master-documentation/docs/DEPLOY_HOME.md + + + +- **eNB** (on the eNB host): + +Execute: +``` +~/openairinterface5g/cmake_targets/ran_build/build$ sudo ./lte-softmodem -O **YOUR_ENB_CONF_FILE** | tee **YOUR_LOG_FILE** + +``` + + +- **gNB** (on the gNB host) + + +Execute: +``` +~/openairinterface5g/cmake_targets/ran_build/build$ sudo ./nr-softmodem -O **YOUR_GNB_CONF_FILE** -E | tee **YOUR_LOG_FILE** + +``` + +**ATTENTION** : for the gNB execution, +The -E option is required to enable the tri-quarter sampling rate when using a B2xx serie USRP +The -E opton is not needed when using a a N300 USRP + + + +## Test Case + +The test case corresponds to the UE attachement, that is the UE connection and its initial access in 5G, as depicted below: + +**Source** : https://www.sharetechnote.com/html/5G/5G_LTE_Interworking.html + +![image info](./testing_gnb_w_cots_ue_resources/attach_signaling_scheme.jpg) + +The test reaches step **12. E-RAB modifcation confirmation** , eventhough not all the messages will appear in the log file. + +## Log file monitoring + +From the log file that is generated, we can monitor several important steps, to assess that the test was successful. +Log files examples can be found here: +[enb log file](https://gitlab.eurecom.fr/oai/openairinterface5g/-/blob/rh_doc_update_3/doc/testing_gnb_w_cots_ue_resources/oai_enb.log) +[gnb log file](https://gitlab.eurecom.fr/oai/openairinterface5g/-/blob/rh_doc_update_3/doc/testing_gnb_w_cots_ue_resources/oai_gnb.log) + + +- eNB receives UE capabilities information, including its NR capabilites, and triggers sGNB Addition Request message: + +***eNBlog.1315 :*** +``` +[RRC] [FRAME 00000][eNB][MOD 00][RNTI 43eb] received ueCapabilityInformation on UL-DCCH 1 from UE +... +[RRC] [eNB 0] frame 0 subframe 0: UE rnti 43eb switching to NSA mode +... + + + 27 + + + + + + 111 + + + 0 + + +``` + +- gNB receives sGNB Addition request, processes UE capabilities for the corresponding UE and triggers sGNB Addition Request ACK, carrying NR RRC Reconfiguration message: + + +***gNBlog.2291 :*** +``` + + + 27 + + + + + + 111 + + + 0 + + +``` + + +- Upon reception of the sGNB Addition Request ACK, the eNB sends a new RRCConnectionReconfiguration message containing the NR Reconfiguration. +The UE replies with a Reconfiguration Complete message: + +***eNBlog.1686 :*** +``` +[RRC] [FRAME 00000][eNB][MOD 00][RNTI 43eb] UE State = RRC_RECONFIGURED (default DRB, xid 1) +``` + +- The Random Access procedure of the UE to the gNB takes place: + +***gNBlog.2382 :*** +``` +[PHY] [gNB 0][RAPROC] Frame 751, slot 19 Initiating RA procedure with +preamble 63, energy 35.7 dB, delay 6 + [0m [0m[MAC] [gNB 0][RAPROC] CC_id 0 Frame 751, Slot 19 Initiating RA +procedure for preamble index 63 + [0m [0m[MAC] [gNB 0][RAPROC] CC_id 0 Frame 751 Activating Msg2 +generation in frame 752, slot 7 using RA rnti 10b + [0m [0m[MAC] [gNB 0] [RAPROC] CC_id 0 Frame 752, slotP 7: Generating +RAR DCI, state 1 + [0m [0m[MAC] [RAPROC] DCI type 1 payload: freq_alloc 120 (0,6,24), +time_alloc 3, vrb to prb 0, mcs 0 tb_scaling 0 + [0m [0m[MAC] Frame 752: Subframe 7 : Adding common DL DCI for RA_RNTI 10b + [0m [0m[MAC] Frame 752, Subframe 7: Setting Msg3 reception for Frame +752 Subframe 17 + [0m [0m[PHY] ULSCH received ok +``` + +- The eNB triggers the path switch procedure towards the MME, so that +the traffic can be routed now from the SGW towards the gNB on the S1-U +plane. + +***eNBlog.1691 :*** +``` + + + 50 + + + + + + 0 + + +553648130 + + +``` + + +Eventually, step **12. E-RAB Modification Confirmation** is successfully reached + + + +## Required tools for debug + +- **Wireshark** to trace X2AP and S1AP protocols +- **Ttracer** for 5G messages +- **GDB debugger** to check function calls + + +## Status of interoperability + +The following parts have been validated with FR1 COTS UE: + +- Phone accepts the configurtion provided by OAI eNB: + this validates RRC and X2AP + +- Successful Random Access Procedure: + PRACH is correctly decoded at gNB + Phone correctly receives and decodes msg2 (NR PDCCH Format 1_0 and NR PDSCH) + msg3 is transmitted to gNB according to the configuration sent in msg2, and received correctly at gNB + +- Successful path switch of user plane traffic from 4G to 5G cell (E-RAB modification message): + this validates S1AP + +- Downlink traffic: + PDCCH DCI format 1_1 and correponding PDSCH are decoded correctlyby the phone + ACK/NACK (PUCCH format 0) are successfully received at gNB + +- On going: + validation of HARQ procedures + Integration with higher layers to replace dummy data with real traffic + +- Known limitations as of May 2020: + only dummy DL traffic + no UL traffic + no end-to-end traffic possible + + diff --git a/doc/testing_gnb_w_cots_ue_resources/attach_signaling_scheme.jpg b/doc/testing_gnb_w_cots_ue_resources/attach_signaling_scheme.jpg new file mode 100755 index 0000000000000000000000000000000000000000..085c3f8d88ee1caefb2ff12674f3289f579da6aa GIT binary patch literal 48290 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%0Drd)6(dsPl)drgwvvn=6PA7C8TI)_i7 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 literal 0 HcmV?d00001 diff --git a/doc/testing_gnb_w_cots_ue_resources/enb.conf b/doc/testing_gnb_w_cots_ue_resources/enb.conf new file mode 100755 index 0000000000..58e4e86873 --- /dev/null +++ b/doc/testing_gnb_w_cots_ue_resources/enb.conf @@ -0,0 +1,281 @@ +Active_eNBs = ( "eNB-Eurecom-LTEBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +eNBs = +( + { + # real_time choice in {hard, rt-preempt, no} + real_time = "no"; + ////////// Identification parameters: + eNB_ID = 0xe01; + + cell_type = "CELL_MACRO_ENB"; + + eNB_name = "eNB-Eurecom-LTEBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + plmn_list = ( + { mcc = 222; mnc = 01; mnc_length = 2; } + ); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + component_carriers = ( + { + node_function = "eNodeB_3GPP"; + node_timing = "synch_to_ext_device"; + node_synch_ref = 0; + nb_antenna_ports = 1; + ue_TransmissionMode = 1; + frame_type = "FDD"; + tdd_config = 3; + tdd_config_s = 0; + prefix_type = "NORMAL"; + eutra_band = 7; + downlink_frequency = 2680000000L; //2655000000L; + uplink_frequency_offset = -120000000; + + Nid_cell = 0; + N_RB_DL = 25; //100; + Nid_cell_mbsfn = 0; + nb_antennas_tx = 1; + nb_antennas_rx = 1; + prach_root = 0; + tx_gain = 90; + rx_gain = 115; + pbch_repetition = "FALSE"; + prach_config_index = 0; + prach_high_speed = "DISABLE"; + prach_zero_correlation = 1; + prach_freq_offset = 2; + pucch_delta_shift = 1; + pucch_nRB_CQI = 0; + pucch_nCS_AN = 0; + pucch_n1_AN = 0; + pdsch_referenceSignalPower = -29; + pdsch_p_b = 0; + pusch_n_SB = 1; + pusch_enable64QAM = "DISABLE"; + pusch_hoppingMode = "interSubFrame"; + pusch_hoppingOffset = 0; + pusch_groupHoppingEnabled = "ENABLE"; + pusch_groupAssignment = 0; + pusch_sequenceHoppingEnabled = "DISABLE"; + pusch_nDMRS1 = 1; + phich_duration = "NORMAL"; + phich_resource = "ONESIXTH"; + srs_enable = "DISABLE"; + /* srs_BandwidthConfig =; + srs_SubframeConfig =; + srs_ackNackST =; + srs_MaxUpPts =;*/ + + pusch_p0_Nominal = -96; + pusch_alpha = "AL1"; + pucch_p0_Nominal = -96; + msg3_delta_Preamble = 6; + pucch_deltaF_Format1 = "deltaF2"; + pucch_deltaF_Format1b = "deltaF3"; + pucch_deltaF_Format2 = "deltaF0"; + pucch_deltaF_Format2a = "deltaF0"; + pucch_deltaF_Format2b = "deltaF0"; + + rach_numberOfRA_Preambles = 64; + rach_preamblesGroupAConfig = "DISABLE"; +/* + rach_sizeOfRA_PreamblesGroupA = ; + rach_messageSizeGroupA = ; + rach_messagePowerOffsetGroupB = ; +*/ + rach_powerRampingStep = 4; + rach_preambleInitialReceivedTargetPower = -108; + rach_preambleTransMax = 10; + rach_raResponseWindowSize = 10; + rach_macContentionResolutionTimer = 48; + rach_maxHARQ_Msg3Tx = 4; + + pcch_default_PagingCycle = 128; + pcch_nB = "oneT"; + bcch_modificationPeriodCoeff = 2; + ue_TimersAndConstants_t300 = 1000; + ue_TimersAndConstants_t301 = 1000; + ue_TimersAndConstants_t310 = 1000; + ue_TimersAndConstants_t311 = 10000; + ue_TimersAndConstants_n310 = 20; + ue_TimersAndConstants_n311 = 1; + + //Parameters for SIB18 + rxPool_sc_CP_Len = "normal"; + rxPool_sc_Period = "sf40"; + rxPool_data_CP_Len = "normal"; + rxPool_ResourceConfig_prb_Num = 20; + rxPool_ResourceConfig_prb_Start = 5; + rxPool_ResourceConfig_prb_End = 44; + rxPool_ResourceConfig_offsetIndicator_present = "prSmall"; + rxPool_ResourceConfig_offsetIndicator_choice = 0; + rxPool_ResourceConfig_subframeBitmap_present = "prBs40"; + rxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "00000000000000000000"; + rxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5; + rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0; +/* rxPool_dataHoppingConfig_hoppingParameter = 0; + rxPool_dataHoppingConfig_numSubbands = "ns1"; + rxPool_dataHoppingConfig_rbOffset = 0; + rxPool_commTxResourceUC-ReqAllowed = "TRUE"; +*/ + // Parameters for SIB19 + discRxPool_cp_Len = "normal" + discRxPool_discPeriod = "rf32" + discRxPool_numRetx = 1; + discRxPool_numRepetition = 2; + discRxPool_ResourceConfig_prb_Num = 5; + discRxPool_ResourceConfig_prb_Start = 3; + discRxPool_ResourceConfig_prb_End = 21; + discRxPool_ResourceConfig_offsetIndicator_present = "prSmall"; + discRxPool_ResourceConfig_offsetIndicator_choice = 0; + discRxPool_ResourceConfig_subframeBitmap_present = "prBs40"; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "f0ffffffff"; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0; + + } + ); + + srb1_parameters : + { + # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500] + timer_poll_retransmit = 80; + + # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200] + timer_reordering = 35; + + # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500] + timer_status_prohibit = 0; + + # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)] + poll_pdu = 4; + + # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)] + poll_byte = 99999; + + # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32] + max_retx_threshold = 4; + } + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + enable_measurement_reports = "yes"; + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.18.99"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + ///X2 + enable_x2 = "yes"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + + NETWORK_INTERFACES : + { + ENB_INTERFACE_NAME_FOR_S1_MME = "eth1"; + ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.18.199/24"; + + ENB_INTERFACE_NAME_FOR_S1U = "eth1"; + ENB_IPV4_ADDRESS_FOR_S1U = "192.168.18.199/24"; + ENB_PORT_FOR_S1U = 2152; # Spec 2152 + + ENB_IPV4_ADDRESS_FOR_X2C = "192.168.18.199/24"; + ENB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="high"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="debug"; + rlc_log_verbosity ="high"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="high"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + phy_test_mode = 0; + puSch10xSnr = 160; + puCch10xSnr = 160; + } +); + +THREAD_STRUCT = ( + { + parallel_config = "PARALLEL_RU_L1_TRX_SPLITaaaaaa"; + worker_config = "ENABLE"; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 118; + eNB_instances = [0]; + + } +); + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="high"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="high"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="high"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; diff --git a/doc/testing_gnb_w_cots_ue_resources/gnb.conf b/doc/testing_gnb_w_cots_ue_resources/gnb.conf new file mode 100755 index 0000000000..db8aef33ba --- /dev/null +++ b/doc/testing_gnb_w_cots_ue_resources/gnb.conf @@ -0,0 +1,293 @@ +Active_gNBs = ( "gNB-Eurecom-5GNRBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + + cell_type = "CELL_MACRO_GNB"; + + gNB_name = "gNB-Eurecom-5GNRBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ({mcc = 222; mnc = 01; mnc_length = 2;}); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 31; //0; + pdsch_AntennaPorts = 1; + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + +# downlinkConfigCommon + #frequencyInfoDL + # this is 3600 MHz + 84 PRBs@30kHz SCS (same as initial BWP) + absoluteFrequencySSB = 641272; //641032; #641968; 641968=start of ssb at 3600MHz + 82 RBs 641032=center of SSB at center of cell + dl_frequencyBand = 78; + # this is 3600 MHz + dl_absoluteFrequencyPointA = 640000; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 1; + dl_carrierBandwidth = 106; + #initialDownlinkBWP + #genericParameters + # this is RBstart=84,L=13 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 6366; //28875; //6366; #6407; #3384; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 1; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 0; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; + #initialULBWPmappingType + #0=typeA,1=typeB + initialDLBWPmappingType_0 = 0; + #this is SS=1,L=13 + initialDLBWPstartSymbolAndLength_0 = 40; + + initialDLBWPk0_1 = 0; + initialDLBWPmappingType_1 = 0; + #this is SS=2,L=12 + initialDLBWPstartSymbolAndLength_1 = 53; + + initialDLBWPk0_2 = 0; + initialDLBWPmappingType_2 = 0; + #this is SS=1,L=12 + initialDLBWPstartSymbolAndLength_2 = 54; + + initialDLBWPk0_3 = 0; + initialDLBWPmappingType_3 = 0; + #this is SS=1,L=4 //5 (4 is for 43, 5 is for 57) + initialDLBWPstartSymbolAndLength_3 = 57; //43; //57; + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 78; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 1; + ul_carrierBandwidth = 106; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 6366; //28875; //6366; #6407; #3384; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 1; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 98; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 13; + preambleReceivedTargetPower = -118; +#preamblTransMax (0...10) = (3,4,5,6,7,8,10,20,50,100,200) + preambleTransMax = 6; +#powerRampingStep +# 0=dB0,1=dB2,2=dB4,3=dB6 + powerRampingStep = 1; +#ra_ReponseWindow +#1,2,4,8,10,20,40,80 + ra_ResponseWindow = 5; +#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR +#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen + ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4; +#oneHalf (0..15) 4,8,12,16,...60,64 + ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 14; //15; +#ra_ContentionResolutionTimer +#(0..7) 8,16,24,32,40,48,56,64 + ra_ContentionResolutionTimer = 7; + rsrp_ThresholdSSB = 19; +#prach-RootSequenceIndex_PR +#1 = 839, 2 = 139 + prach_RootSequenceIndex_PR = 2; + prach_RootSequenceIndex = 1; + # SCS for msg1, can only be 15 for 30 kHz < 6 GHz, takes precendence over the one derived from prach-ConfigIndex + # + msg1_SubcarrierSpacing = 1, + +# restrictedSetConfig +# 0=unrestricted, 1=restricted type A, 2=restricted type B + restrictedSetConfig = 0, + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 2; + initialULBWPmappingType_0 = 1 + # this is SS=0 L=11 + initialULBWPstartSymbolAndLength_0 = 55; + + initialULBWPk2_1 = 2; + initialULBWPmappingType_1 = 1; + # this is SS=0 L=12 + initialULBWPstartSymbolAndLength_1 = 69; + + initialULBWPk2_2 = 7; + initialULBWPmappingType_2 = 1; + # this is SS=10 L=4 + initialULBWPstartSymbolAndLength_2 = 52; + + msg3_DeltaPreamble = 1; + p0_NominalWithGrant =-90; + +# pucch-ConfigCommon setup : +# pucchGroupHopping +# 0 = neither, 1= group hopping, 2=sequence hopping + pucchGroupHopping = 0; + hoppingId = 40; + p0_nominal = -90; +# ssb_PositionsInBurs_BitmapPR +# 1=short, 2=medium, 3=long + ssb_PositionsInBurst_PR = 2; + ssb_PositionsInBurst_Bitmap = 1; #0x80; + +# ssb_periodicityServingCell +# 0 = ms5, 1=ms10, 2=ms20, 3=ms40, 4=ms80, 5=ms160, 6=spare2, 7=spare1 + ssb_periodicityServingCell = 2; + +# dmrs_TypeA_position +# 0 = pos2, 1 = pos3 + dmrs_TypeA_Position = 0; + +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + subcarrierSpacing = 1; + + + #tdd-UL-DL-ConfigurationCommon +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + referenceSubcarrierSpacing = 1; + # pattern1 + # dl_UL_TransmissionPeriodicity + # 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10 + dl_UL_TransmissionPeriodicity = 6; + nrofDownlinkSlots = 7; //8; //7; + nrofDownlinkSymbols = 6; //0; //6; + nrofUplinkSlots = 2; + nrofUplinkSymbols = 4; //0; //4; + + ssPBCH_BlockPower = 10; + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.18.99"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + ///X2 + enable_x2 = "yes"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + target_enb_x2_ip_address = ( + { ipv4 = "192.168.18.199"; + ipv6 = "192:168:30::17"; + preference = "ipv4"; + } + ); + + NETWORK_INTERFACES : + { + + GNB_INTERFACE_NAME_FOR_S1_MME = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1_MME = "192.168.18.198/24"; + GNB_INTERFACE_NAME_FOR_S1U = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1U = "192.168.18.198/24"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + GNB_IPV4_ADDRESS_FOR_X2C = "192.168.18.198/24"; + GNB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 114; + eNB_instances = [0]; + clock_src = "internal"; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + //parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + parallel_config = "PARALLEL_SINGLE_THREAD"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + diff --git a/doc/testing_gnb_w_cots_ue_resources/oai_enb.log b/doc/testing_gnb_w_cots_ue_resources/oai_enb.log new file mode 100755 index 0000000000..9b9de24a86 --- /dev/null +++ b/doc/testing_gnb_w_cots_ue_resources/oai_enb.log @@ -0,0 +1,1912 @@ +[CONFIG] get parameters from libconfig ../../../targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.minimassive.master.conf , debug flags: 0x00000000 +[CONFIG] function config_libconfig_init returned 0 +[CONFIG] config module libconfig loaded +[LIBCONFIG] config: 1/1 parameters successfully set, (1 to default value) +# /dev/cpu_dma_latency set to 0us +[LIBCONFIG] log_config: 3/3 parameters successfully set, (1 to default value) +[LIBCONFIG] log_config: 52/52 parameters successfully set, (46 to default value) +[LIBCONFIG] log_config: 52/52 parameters successfully set, (52 to default value) +[LIBCONFIG] log_config: 15/15 parameters successfully set, (15 to default value) +[LIBCONFIG] log_config: 15/15 parameters successfully set, (15 to default value) +log init done +Reading in command-line options +[LIBCONFIG] (root): 23/23 parameters successfully set, (19 to default value) +[LIBCONFIG] (root): 5/5 parameters successfully set, (4 to default value) +Getting ENBSParams +[LIBCONFIG] (root): 3/3 parameters successfully set, (1 to default value) +[LIBCONFIG] THREAD_STRUCT.[0]: 2/2 parameters successfully set, (0 to default value) +[ENB_APP] Impossible value: PARALLEL_RU_L1_TRX_SPLITaaaaaa +[CONFIG] parallel_conf is set to 0 +[LIBCONFIG] THREAD_STRUCT.[0]: 2/2 parameters successfully set, (0 to default value) +[ENB_APP] Impossible value: ENABLE +[CONFIG] worker_conf is set to 0 +Configuration: nb_rrc_inst 1, nb_L1_inst 1, nb_ru 1 +[LIBCONFIG] loader: 2/2 parameters successfully set, (2 to default value) +[LIBCONFIG] loader.NB_IoT: 2/2 parameters successfully set, (1 to default value) + nb_nbiot_rrc_inst 0, nb_nbiot_L1_inst 0, nb_nbiot_macrlc_inst 0 +[LIBCONFIG] TTracer: 4/4 parameters successfully set, (4 to default value) +configuring for RAU/RRU +CPU Freq is 2.992899 +ITTI init, useMME: 1 +[TMR] Starting itti queue: TASK_UNKNOWN as task 0 +[TMR] Starting itti queue: TASK_TIMER as task 1 +[TMR] Starting itti queue: TASK_L2L1 as task 2 +[TMR] Starting itti queue: TASK_BM as task 3 +[TMR] Starting itti queue: TASK_PHY_ENB as task 4 +[TMR] Starting itti queue: TASK_MAC_ENB as task 5 +[TMR] Starting itti queue: TASK_RLC_ENB as task 6 +[TMR] Starting itti queue: TASK_RRC_ENB_NB_IoT as task 7 +[TMR] Starting itti queue: TASK_PDCP_ENB as task 8 +[TMR] Starting itti queue: TASK_DATA_FORWARDING as task 9 +[TMR] Starting itti queue: TASK_END_MARKER as task 10 +[TMR] Starting itti queue: TASK_RRC_ENB as task 11 +[TMR] Starting itti queue: TASK_RRC_GNB as task 12 +[TMR] Starting itti queue: TASK_RAL_ENB as task 13 +[TMR] Starting itti queue: TASK_S1AP as task 14 +[TMR] Starting itti queue: TASK_X2AP as task 15 +[TMR] Starting itti queue: TASK_M2AP_ENB as task 16 +[TMR] Starting itti queue: TASK_M2AP_MCE as task 17 +[TMR] Starting itti queue: TASK_M3AP as task 18 +[TMR] Starting itti queue: TASK_M3AP_MME as task 19 +[TMR] Starting itti queue: TASK_M3AP_MCE as task 20 +[TMR] Starting itti queue: TASK_SCTP as task 21 +[TMR] Starting itti queue: TASK_ENB_APP as task 22 +[TMR] Starting itti queue: TASK_GNB_APP as task 23 +[TMR] Starting itti queue: TASK_MCE_APP as task 24 +[TMR] Starting itti queue: TASK_MME_APP as task 25 +[TMR] Starting itti queue: TASK_FLEXRAN_AGENT as task 26 +[TMR] Starting itti queue: TASK_PHY_UE as task 27 +[TMR] Starting itti queue: TASK_MAC_UE as task 28 +[TMR] Starting itti queue: TASK_RLC_UE as task 29 +[TMR] Starting itti queue: TASK_PDCP_UE as task 30 +[TMR] Starting itti queue: TASK_RRC_UE as task 31 +[TMR] Starting itti queue: TASK_NAS_UE as task 32 +[TMR] Starting itti queue: TASK_RAL_UE as task 33 +[TMR] Starting itti queue: TASK_MSC as task 34 +[TMR] Starting itti queue: TASK_GTPV1_U as task 35 +[TMR] Starting itti queue: TASK_UDP as task 36 +[TMR] Starting itti queue: TASK_CU_F1 as task 37 +[TMR] Starting itti queue: TASK_DU_F1 as task 38 +[LIBCONFIG] opt: 3/3 parameters successfully set, (3 to default value) +[OPT] OPT disabled +reported resolution = 1 ns +[HW] Version: Branch: NR_RRC_harq_hacks Abrev. Hash: 94fa9c5 Date: Fri Jun 19 18:16:53 2020 +0200 +Runtime table +[PHY] RC.eNB = 0x2b10b70 +[LIBCONFIG] L1s.[0]: 24/24 parameters successfully set, (22 to default value) +[PHY] RC.eNB[0] = 0x2b10c20 +[PHY] RC.eNB[0][0] = 0x7f9fab347010 +[ENB_APP] Initializing northbound interface for L1 +[PHY] l1_north_init_eNB() RC.nb_L1_inst:1 +[PHY] l1_north_init_eNB() RC.nb_L1_CC[0]:1 +[PHY] l1_north_init_eNB() RC.eNB[0][0] installing callbacks +[PHY] read_config_and_init() RC.nb_L1_inst: 1 +[LIBCONFIG] MACRLCs.[0]: 20/20 parameters successfully set, (15 to default value) +[LIBCONFIG] MACRLCs.[0]: 20/20 parameters successfully set, (15 to default value) +[MAC] [MAIN] Init function start:nb_macrlc_inst=1 +[PDCP] PDCP layer has been initialized +Configuring local RRC for MACRLC +[ENB_APP] sched mode = default 0 [default] +[MAC] read_config_and_init() RC.nb_macrlc_inst: 1 +[PHY] l1_north_init_eNB() RC.nb_L1_inst:1 +[PHY] l1_north_init_eNB() RC.nb_L1_CC[0]:1 +[PHY] l1_north_init_eNB() RC.eNB[0][0] installing callbacks +[LIBCONFIG] (root): 3/3 parameters successfully set, (1 to default value) +[LIBCONFIG] eNBs.[0]: 20/20 parameters successfully set, (11 to default value) +[RRC] Instance 0: Southbound Transport local_mac +[RRC] Setting node_type to ngran_eNB +[LIBCONFIG] eNBs.[0].plmn_list.[0]: 3/3 parameters successfully set, (0 to default value) +[RRC] num component carriers 1 +[RRC] enb_config::RCconfig_RRC() parameter number: 0, total number of parameters: 78, ccspath: eNBs.[0].component_carriers.[0] + +[LIBCONFIG] eNBs.[0].component_carriers.[0]: 78/78 parameters successfully set, (17 to default value) +phich.resource 0 (ONESIXTH), phich.duration 0 (NORMAL) +No eMBMS configuration, skipping it +[LIBCONFIG] eNBs.[0].component_carriers.[0].emtc_parameters: 88/88 parameters successfully set, (88 to default value) +No eMTC configuration, skipping it +[LIBCONFIG] eNBs.[0].component_carriers.[0].SLparameters: 39/39 parameters successfully set, (39 to default value) +No SL configuration skipping it +[LIBCONFIG] eNBs.[0].srb1_parameters: 6/6 parameters successfully set, (0 to default value) +[RRC] Node type 0 + [LIBCONFIG] (root): 3/3 parameters successfully set, (1 to default value) +[LIBCONFIG] NETWORK_CONTROLLER: 6/6 parameters successfully set, (6 to default value) +[LIBCONFIG] RUs.[0]: 27/27 parameters successfully set, (18 to default value) +Creating RC.ru[0]:0x2b41780 +Setting function for RU 0 to eNodeB_3GPP +[PHY] number of L1 instances 1, number of RU 1, number of CPU cores 4 +[FLEXRAN_AGENT] FlexRAN Agent for eNB 0 is DISABLED +[PDCP] PDCP layer has been initialized +[PDCP] pdcp init,usegtp +[PDCP] ENB pdcp will use tun interface for MBMS +[NETLINK]Opened socket oaitun_enm1 with fd 84 +returnValue 0 +returnValue 0 +returnValue 0 +[OIP] Interface oaitun_enm1 successfully configured, ip address 10.0.2.1, mask 255.255.255.0 broadcast address 10.0.2.255 +[ENB_APP] Creating ENB_APP eNB Task +[TMR] Created Posix thread TASK_ENB_APP +[RRC] Creating RRC eNB Task +[LIBCONFIG] (root): 3/3 parameters successfully set, (1 to default value) +[TMR] Created Posix thread TASK_RRC_ENB +[LIBCONFIG] eNBs.[0]: 20/20 parameters successfully set, (11 to default value) +[TMR] Created Posix thread TASK_SCTP +[RRC] Entering main loop of RRC message task +[LIBCONFIG] eNBs.[0].plmn_list.[0]: 3/3 parameters successfully set, (0 to default value) +[TMR] Created Posix thread TASK_S1AP +[TMR] Created Posix thread TASK_UDP +[SCTP] Starting SCTP layer +[S1AP] Starting S1AP layer +[UDP] Initializing UDP task interface +[UDP] Initializing UDP task interface: DONE +[LIBCONFIG] eNBs.[0].component_carriers.[0]: 78/78 parameters successfully set, (17 to default value) +[LIBCONFIG] eNBs.[0].mme_ip_address.[0]: 5/5 parameters successfully set, (0 to default value) +[LIBCONFIG] eNBs.[0].SCTP: 2/2 parameters successfully set, (0 to default value) +[LIBCONFIG] eNBs.[0].NETWORK_INTERFACES: 11/11 parameters successfully set, (2 to default value) +[TMR] Created Posix thread TASK_GTPV1_U +[GTPV1U] Configuring GTPu +[LIBCONFIG] (root): 3/3 parameters successfully set, (1 to default value) +[LIBCONFIG] eNBs.[0]: 1/1 parameters successfully set, (0 to default value) +[LIBCONFIG] gNBs.[0]: 1/1 parameters successfully set, (1 to default value) +[LIBCONFIG] eNBs.[0].NETWORK_INTERFACES: 3/3 parameters successfully set, (0 to default value) +[GTPV1U] Configuring GTPu address : 192.168.18.199 -> c712a8c0 +[ENB_APP] default drx 2 +[ENB_APP] [eNB 0] eNB_app_register via S1AP for instance 0 +[LIBCONFIG] (root): 3/3 parameters successfully set, (1 to default value) +[GTPV1U] Initializing GTPU stack 0x16968b0 +[LIBCONFIG] eNBs.[0]: 20/20 parameters successfully set, (11 to default value) +[LIBCONFIG] eNBs.[0].plmn_list.[0]: 3/3 parameters successfully set, (0 to default value) +[S1AP] Registered new eNB[0] and macro eNB id 3585 +[S1AP] [eNB 0] check the mme registration state +[GTPV1U] Tx UDP_INIT IP addr 192.168.18.199 (868) +[UDP] Initializing UDP for local address 192.168.18.199 with port 2152 +[TMR] Created Posix thread TASK_X2AP +[MAC] Creating MAC eNB Task +[LIBCONFIG] eNBs.[0].component_carriers.[0]: 78/78 parameters successfully set, (17 to default value) +[LIBCONFIG] list eNBs.[0].target_enb_x2_ip_address not found in config file ../../../targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.minimassive.master.conf +[LIBCONFIG] eNBs.[0]: 2/2 parameters successfully set, (0 to default value) +[LIBCONFIG] eNBs.[0].SCTP: 2/2 parameters successfully set, (0 to default value) +[UDP] Inserting new descriptor for task 35, sd 85 +[LIBCONFIG] eNBs.[0].NETWORK_INTERFACES: 11/11 parameters successfully set, (2 to default value) +[UDP] Initializing UDP for local address 192.168.18.199 with port 2152: DONE +[MAC] Starting main loop of MAC message task +[LIBCONFIG] eNBs.[0]: 1/1 parameters successfully set, (1 to default value) +[SCTP] sctp_bindx SCTP_BINDX_ADD_ADDR socket bound to : 192.168.18.199 +[X2AP] Registered new eNB[0] and macro eNB id 3585 +[X2AP] eNB[0] eNB id 3585 acting as a listner (server) +[TMR] Created Posix thread TASK_MAC_ENB +[SCTP] Converted ipv4 address 192.168.18.99 to network type +[RRC] [eNB 0] Received RRC_CONFIGURATION_REQ : 0x2b4a80c +[RRC] [FRAME 00000][eNB][MOD 00][RNTI 0] Init... +[SCTP] connectx assoc_id 903 in progress..., used 1 addresses +[RRC] [FRAME 00000][eNB][MOD 00][RNTI 0] Checking release +[SCTP] Inserted new descriptor for sd 86 in list, nb elements 1, assoc_id 903 +[RRC] [FRAME 00000][eNB][MOD 00][RNTI 0] Rel14 RRC detected, MBMS flag 0 +[SCTP] Received SCTP_INIT_MSG_MULTI_REQ +[RRC] [eNB 0] Node type 0 + [SCTP] Creating new listen socket on port 36422 with +[SCTP] ipv4 addresses: +[SCTP] - 192.168.18.199 +[RRC] configuration->schedulingInfoSIB1_BR_r13[CC_id] 0 +[RRC] Configuring MIB (N_RB_DL 25,phich_Resource 0,phich_Duration 0) +[RRC] [MIB] systemBandwidth 2, phich_duration 0, phich_resource 0, sfn 0 +[RRC] [MIB] schedulingInfoSIB1 0 +[RRC] [eNB 0] Configuration SIB2/3, eMBMS = 0 +[RRC] do_SIB23, size 38 + [MAC] Configuring MIB for instance 0, CCid 0 : (band 7,N_RB_DL 25,Nid_cell 0,p 1,DL freq 2680000000,phich_config.resource 0, phich_config.duration 0) +[MAC] config_mib() NFAPI_CONFIG_REQUEST(num_tlv:16) DL_BW:25 UL_BW:25 Ncp 0,p_eNB 1,earfcn 3350,band 7,phich_resource 0 phich_duration 0 phich_power_offset 6000 PSS 6000 SSS 6000 PCI 0 PBCH repetition 0 +[MAC] [CONFIG]SIB2/3 Contents (partial) +[MAC] [CONFIG]pusch_config_common.n_SB = 1 +[MAC] [CONFIG]pusch_config_common.hoppingMode = 0 +[MAC] [CONFIG]pusch_config_common.pusch_HoppingOffset = 0 +[MAC] [CONFIG]pusch_config_common.enable64QAM = 0 +[MAC] [CONFIG]pusch_config_common.groupHoppingEnabled = 1 +[MAC] [CONFIG]pusch_config_common.groupAssignmentPUSCH = 0 +[MAC] [CONFIG]pusch_config_common.sequenceHoppingEnabled = 0 +[MAC] [CONFIG]pusch_config_common.cyclicShift = 1 +[PHY] Configuring MIB for instance 0, CCid 0 : (band 7,N_RB_DL 25, N_RB_UL 25, Nid_cell 0,eNB_tx_antenna_ports 1,Ncp 0,DL freq 3350,phich_config.resource 0, phich_config.duration 0) +[PHY] Initializing frame parms for N_RB_DL 25, Ncp 0, osf 1 +[PHY] lte_parms.c: Setting N_RB_DL to 25, ofdm_symbol_size 512 +[SCTP] Found data for descriptor 86 +[SCTP] Received notification for sd 86, type 32769 +[SCTP] Client association changed: 0 +[SCTP] ---------------------- +[SCTP] Peer addresses: +[SCTP] - [192.168.18.99] +[SCTP] ---------------------- +[SCTP] ---------------------- +[SCTP] SCTP Status: +[SCTP] assoc id .....: 903 +[SCTP] state ........: 4 +[SCTP] instrms ......: 2 +[SCTP] outstrms .....: 2 +[SCTP] fragmentation : 1452 +[SCTP] pending data .: 0 +[SCTP] unack data ...: 0 +[SCTP] rwnd .........: 106496 +[SCTP] peer info : +[SCTP] state ....: 2 +[SCTP] cwnd .....: 4380 +[SCTP] srtt .....: 0 +[SCTP] rto ......: 3000 +[SCTP] mtu ......: 1500 +[SCTP] ---------------------- +[SCTP] Comm up notified for sd 86, assigned assoc_id 903 +[S1AP] 3585 -> 00e010 + + + 17 + + + + + + 59 + + + + 22 F2 10 + + + 00000000111000000001 + + + + + + + 60 + + + eNB-Eurecom-LTEBox + + + + 64 + + + + + 00 01 + + 22 F2 10 + + + + + + + 137 + + + + + + + + + + +[SCTP] Successfully sent 59 bytes on stream 0 for assoc_id 903 +[LIBCONFIG] loader.coding: 2/2 parameters successfully set, (1 to default value) +[SCTP] Found data for descriptor 86 +[SCTP] Received notification for sd 86, type 32777 +[SCTP] Found data for descriptor 86 +[SCTP] [903][86] Msg of length 58 received from port 36412, on stream 0, PPID 18 +[S1AP] servedGUMMEIs.list.count 3 +[S1AP] servedPLMNs.list.count 1 +[S1AP] servedPLMNs.list.count 1 +[S1AP] servedPLMNs.list.count 1 +[ENB_APP] [eNB 0] Received S1AP_REGISTER_ENB_CNF: associated MME 1 +[LOADER] library libcoding.so successfully loaded +[PHY] prach_config_common.rootSequenceIndex = 0 +[PHY] prach_config_common.prach_ConfigInfo.prach_ConfigIndex = 0 +[PHY] prach_config_common.prach_ConfigInfo.highSpeedFlag = 0 +[PHY] prach_config_common.prach_ConfigInfo.zeroCorrelationZoneConfig = 1 +[PHY] prach_config_common.prach_ConfigInfo.prach_FreqOffset = 2 +[PHY] pusch_config_common.n_SB = 1 +[PHY] pusch_config_common.hoppingMode = 0 +[PHY] pusch_config_common.pusch_HoppingOffset = 0 +[PHY] pusch_config_common.enable64QAM = 0 +[PHY] pusch_config_common.ul_ReferenceSignalsPUSCH.groupHoppingEnabled = 1 +[PHY] pusch_config_common.ul_ReferenceSignalsPUSCH.groupAssignmentPUSCH = 0 +[PHY] pusch_config_common.ul_ReferenceSignalsPUSCH.sequenceHoppingEnabled = 0 +[PHY] pusch_config_common.ul_ReferenceSignalsPUSCH.cyclicShift = 2 +[PHY] eNB 0/0 configured +[RRC] [eNB] handover active state is 0 +[RRC] [eNB] eMBMS active state is 0 +[RRC] [FRAME 00000][eNB][MOD 00][RNTI 0] ENB:OPENAIR RRC IN.... +[ENB_APP] START MAIN THREADS +RC.nb_L1_inst:1 +Initializing eNB threads single_thread_flag:0 wait_for_sync:0 +[PHY] [lte-softmodem.c] eNB structure about to allocated RC.nb_L1_inst:1 RC.nb_L1_CC[0]:1 +[PHY] [lte-softmodem.c] eNB structure RC.eNB allocated +[PHY] Initializing eNB 0 CC_id 0 single_thread_flag:0 +[PHY] Initializing eNB 0 CC_id 0 +[PHY] Registering with MAC interface module +[PHY] Setting indication lists +[PHY] [lte-softmodem.c] eNB structure allocated +wait_eNBs() +Waiting for eNB L1 instances to all get configured ... sleeping 50ms (nb_L1_inst 1) +RC.nb_L1_CC[0]:1 +eNB L1 are configured +About to Init RU threads RC.nb_RU:1 +Initializing RU threads +[PHY] DJP - delete code above this /home/eurecom/panos/NR_RRC_harq_hacks/openairinterface5g/targets/RT/USER/lte-ru.c:2739 +[PHY] Copying frame parms from eNB 0 to ru 0 +[PHY] Initializing RRU descriptor 0 : (local RF,synch_to_ext_device,0) +configuring ru_id 0 (start_rf 0x5b1a00) +[PHY] Starting ru_thread 0, is_slave 0, send_dmrs 0 +[PHY] Initializing RU proc 0 (eNodeB_3GPP,synch_to_ext_device), +[PHY] init_RU_proc() DJP - added creation of pthread_prach +[HW] thread_top_init() called with affinity>0, but overruled by #ifndef CPU_AFFINITY. +[HW] [SCHED][eNB] ru_thread started on CPU 1, sched_policy = SCHED_FIFO , priority = 99, CPU Affinity= CPU_0 CPU_1 CPU_2 CPU_3 +[PHY] thread ru created id=7295 +[PHY] Starting RU 0 (eNodeB_3GPP,synch_to_ext_device), +waiting for sync (ru_thread,-1/0xff4968,0x17af520,0x16952a0) +channel 0, Setting tx_gain offset 0.000000, rx_gain offset 118.000000, tx_freq 2680000000.000000, rx_freq 2560000000.000000 +[HW] thread_top_init() called with affinity>0, but overruled by #ifndef CPU_AFFINITY. +[PHY] Initializing frame parms for N_RB_DL 25, Ncp 0, osf 1 +[PHY] lte_parms.c: Setting N_RB_DL to 25, ofdm_symbol_size 512 +[PHY] Initializing RU signal buffers (if_south local RF) nb_tx 1 +[HW] [SCHED][eNB] ru_thread_prach started on CPU 2, sched_policy = SCHED_FIFO , priority = 99, CPU Affinity= CPU_0 CPU_1 CPU_2 CPU_3 +[PHY] [INIT] common.txdata[0] = 0x7f9fafc66010 (307200 bytes) +[PHY] ru_thread_prach() RU configured - RACH processing thread running +[LIBCONFIG] loader.dfts: 2/2 parameters successfully set, (1 to default value) +[LOADER] library libdfts.so successfully loaded +[PHY] nb_tx 1 +[PHY] rxdata_7_5kHz[0] 0x2b9c1c0 for RU 0 +[PHY] [INIT] common.txdata_BF= 0x2b4ae80 (8 bytes) +[PHY] txdataF_BF[0] 0x2bba1e0 for RU 0 +[PHY] rxdataF[0] 0x2bc1200 for RU 0 +[LIBCONFIG] device.recplay: 7/7 parameters successfully set, (7 to default value) +[LIBCONFIG] device: 1/1 parameters successfully set, (1 to default value) +[LIBCONFIG] loader.oai_device: 2/2 parameters successfully set, (1 to default value) +[LOADER] library liboai_device.so successfully loaded +[HW] UHD version 3.13.0.HEAD-0-g0ddc19e5 (3.13.0) +[HW] Found USRP b200 +Found USRP b200 +[HW] Clock source set neither in usrp_args nor on command line, using default! +[HW] Time source set neither in usrp_args nor on command line, using default! +[SCTP] Found data for descriptor 87 +[SCTP] Received notification for sd 87, type 32769 +[SCTP] Client association changed: 0 +[SCTP] Comm up notified for sd 87, assigned assoc_id 904 +[SCTP] ---------------------- +[SCTP] SCTP Status: +[SCTP] assoc id .....: 904 +[SCTP] state ........: 4 +[SCTP] instrms ......: 32 +[SCTP] outstrms .....: 32 +[SCTP] fragmentation : 1452 +[SCTP] pending data .: 0 +[SCTP] unack data ...: 0 +[SCTP] rwnd .........: 106496 +[SCTP] peer info : +[SCTP] state ....: 2 +[SCTP] cwnd .....: 4380 +[SCTP] srtt .....: 0 +[SCTP] rto ......: 3000 +[SCTP] mtu ......: 1500 +[SCTP] ---------------------- +x2ap_eNB_handle_sctp_association_ind at 1 (called for instance 0) +here comes the tree (instance 0): +--------------------------------------------- +--------------------------------------------- +x2ap_eNB_handle_sctp_association_ind at 2 +here comes the tree (instance 0): +--------------------------------------------- +----------------------- +eNB id 0 (null) +state 2 +nextstream 0 +in_streams 0 out_streams 0 +cnx_id 1 assoc_id 0 +--------------------------------------------- +x2ap_eNB_handle_sctp_association_ind at 3 +here comes the tree (instance 0): +--------------------------------------------- +----------------------- +eNB id 0 (null) +state 2 +nextstream 0 +in_streams 32 out_streams 32 +cnx_id 1 assoc_id 904 +--------------------------------------------- +[SCTP] Found data for descriptor 95 +[SCTP] [904][95] Msg of length 66 received from port 36422, on stream 0, PPID 27 + + + 36 + + + + + + 244 + + + + + + 252 + + + + 22 F2 10 + + + 00000000000000000000111000000000 + + + + + + + 253 + + + + + + 0 + + 22 F2 10 + + 000000000000000000000000111000000000 + + + 00 64 90 + + 22 F2 10 + + + + + 0 + + + 1 + + + 80 + + + + + + + + + + + + 00 + + + + + + + + + + + + + + +[X2AP] X2AP_ProcedureCode_id_endcX2Setup message! +[X2AP] TAC: 006490 +[X2AP] PLMN: 22f210 + + + 36 + + + + + + 246 + + + + + + 21 + + + + 22 F2 10 + + + 00000000111000000001 + + + + + + + 250 + + + + + + 0 + + 22 F2 10 + + 0000000011100000000100000000 + + + 00 01 + + 22 F2 10 + + + + 21350 + 3350 + + + + + + + + + + + + + + + + + + +[SCTP] Successfully sent 53 bytes on stream 0 for assoc_id 904 +[SCTP] Found data for descriptor 95 +[SCTP] Received notification for sd 95, type 32777 +[HW] cal 0: freq 3500000000.000000, offset 44.000000, diff 940000000.000000 +[HW] cal 1: freq 2660000000.000000, offset 49.800000, diff 100000000.000000 +[HW] cal 2: freq 2300000000.000000, offset 51.000000, diff 260000000.000000 +[HW] cal 3: freq 1880000000.000000, offset 53.000000, diff 680000000.000000 +[HW] cal 4: freq 816000000.000000, offset 57.000000, diff 1744000000.000000 +[HW] RX Gain 0 118.000000 (55.800000) => 62.200000 (max 76.000000) +[HW] USRP TX_GAIN:89.75 gain_range:89.75 tx_gain:0.00 +[HW] Actual master clock: 30.720000MHz... +[HW] Actual clock source internal... +[HW] Actual time source internal... +[HW] RF board max packet size 1916, size for 100µs jitter 768 +[HW] rx_max_num_samps 768 +[HW] RX Channel 0 +[HW] Actual RX sample rate: 7.680000MSps... +[HW] Actual RX frequency: 2.560000GHz... +[HW] Actual RX gain: 62.000000... +[HW] Actual RX bandwidth: 20.000000M... +[HW] Actual RX antenna: RX2... +[HW] TX Channel 0 +[HW] Actual TX sample rate: 7.680000MSps... +[HW] Actual TX frequency: 2.680000GHz... +[HW] Actual TX gain: 89.750000... +[HW] Actual TX bandwidth: 20.000000M... +[HW] Actual TX antenna: TX/RX... +[HW] Actual TX packet size: 1916 +[HW] Device timestamp: 1.703971... +[HW] [RAU] has loaded USRP B200 device. +setup_RU_buffers: frame_parms = 0x7f9fab347e68 +[PHY] Signaling main thread that RU 0 (is_slave 0,send_dmrs 0) is ready in state RU_RUN +wait RUs +[ENB_APP] Waiting for RUs to be configured ... RC.ru_mask:00 +[PHY] RUs configured +[ENB_APP] RC.nb_RU:1 +ALL RUs ready - init eNBs +[ENB_APP] Not NFAPI mode - call init_eNB_afterRU() +[PHY] init_eNB_afterRU() RC.nb_inst:1 +[PHY] RC.nb_CC[inst]:1 +[PHY] RC.nb_CC[inst:0][CC_id:0]:0x7f9fab347010 +[PHY] [eNB 0] phy_init_lte_eNB() About to wait for eNB to be configured[PHY] [eNB 0] Initializing DL_FRAME_PARMS : N_RB_DL 25, PHICH Resource 1, PHICH Duration 0 nb_antennas_tx:0 nb_antennas_rx:1 nb_antenna_ports_eNB:1 PRACH[rootSequenceIndex:0 prach_Config_enabled:1 configIndex:0 highSpeed:0 zeroCorrelationZoneConfig:1 freqOffset:2] +[PHY] [eNB 0] Initializing DL_FRAME_PARMS : N_RB_DL 25, PHICH Resource 1, PHICH Duration 0 +pcfich_reg : 0,12,25,37 +[PHY] [INIT] NB_ANTENNA_PORTS_ENB:6 fp->nb_antenna_ports_eNB:1 +[PHY] [INIT] common_vars->txdataF[0] = 0x7f9fafb87010 (286720 bytes) +[PHY] [INIT] common_vars->txdataF[5] = 0x7f9fa80ff010 (286720 bytes) +[PHY] Mapping RX ports from 1 RUs to eNB 0 +[PHY] Overwriting eNB->prach_vars.rxsigF[0]:0x330a6c0 +[PHY] Overwriting eNB->prach_vars_br.rxsigF.rxsigF[0]:(nil) +[PHY] Overwriting eNB->prach_vars_br.rxsigF.rxsigF[0]:(nil) +[PHY] Overwriting eNB->prach_vars_br.rxsigF.rxsigF[0]:(nil) +[PHY] Overwriting eNB->prach_vars_br.rxsigF.rxsigF[0]:(nil) +[PHY] eNB->num_RU:1 +[PHY] Attaching RU 0 antenna 0 to eNB antenna 0 +[PHY] init_eNB_afterRU() ************* DJP ***** eNB->frame_parms.nb_antennas_tx:0 - GOING TO HARD CODE TO 1[PHY] inst 0, CC_id 0 : nb_antennas_rx 1 +[PHY] Initialise transport +[PHY] init_eNB_proc(inst:0) RC.nb_CC[inst]:1 +[PHY] Initializing eNB processes instance:0 CC_id 0 +[PHY] eNB->single_thread_flag:0 +[HW] thread_top_init() called with affinity>0, but overruled by #ifndef CPU_AFFINITY. +[HW] [SCHED][eNB] eNB_thread_prach started on CPU 0, sched_policy = SCHED_FIFO , priority = 99, CPU Affinity= CPU_0 CPU_1 CPU_2 CPU_3 +[ENB_APP] ALL RUs ready - ALL eNBs ready +[HW] thread_top_init() called with affinity>0, but overruled by #ifndef CPU_AFFINITY. +[HW] [SCHED][eNB] eNB_thread_prach_br started on CPU 0, sched_policy = SCHED_FIFO , priority = 99, CPU Affinity= CPU_0 CPU_1 CPU_2 CPU_3 +[ENB_APP] Sending sync to all threads +[MME_APP] Creating MME_APP eNB Task +got sync (ru_thread) +[TMR] Created Posix thread TASK_MME_APP +[HW] Time in secs now: 22168192 +[LIBCONFIG] MMEs.[0]: 1/1 parameters successfully set, (1 to default value) +[MCE_APP] Creating MCE_APP eNB Task +[HW] Time in secs last pps: 21747824 +[PHY] RU 0 rf device ready +[TMR] Created Posix thread TASK_MCE_APP +[LIBCONFIG] MCEs.[0]: 1/1 parameters successfully set, (1 to default value) +[LIBCONFIG] MCEs.[0]: 1/1 parameters successfully set, (1 to default value) +[ENB_APP] TYPE TO TERMINATE +[ENB_APP] [MCE 0] MCE_app_register via M3AP for instance 0 +[HW] [recv] received 0 samples out of 7680 +[HW] ERROR_CODE_OVERFLOW (Out of sequence error) + +[PHY] rx_rf: Asked for 7680 samples, got 0 from SDR +[PHY] problem receiving samples[MAC] SCHED_MODE = 0 +[PHY] rx_rf: rfdevice timing drift of 22200737 samples (ts_off 0) +[PHY] prach_I0 = 0.0 dB +[PHY] max_I0 18, min_I0 0 +[PHY] fill_ulsch UE_id 0 nb_rb = 0 +[RRC] [FRAME 00738][eNB][MOD 00][RNTI 43eb] Decoding UL CCCH 59.e8.a9.2.18.72 (0x3a52693) +[RRC] [FRAME 00738][eNB][MOD 00][RNTI 43eb] Accept new connection from UE random UE identity (0x8721908a9e000000) MME code 0 TMSI 0 cause 1 +[MAC] UE 0 RNTI 43eb adding LC 1 idx 0 to scheduling control (total 1) +[MAC] UE 0 RNTI 43eb adding LC 2 idx 1 to scheduling control (total 2) +[MAC] Added physicalConfigDedicated 0x7f9f600085d0 for 0.0 +[RRC] [FRAME 00738][eNB][MOD 00][RNTI 43eb]CALLING RLC CONFIG SRB1 (rbid 1) +add new uid is 0 43eb + +[PDCP] [FRAME 00738][eNB][MOD 00][RNTI 43eb][SRB 01] Action ADD LCID 1 (SRB id 1) configured with SN size 5 bits and RLC AM +[MAC] generate_Msg4 ra->Msg4_frame SFN/SF: 739.2, frameP SFN/SF: 739.2 FOR eNB_Mod: 0 +[MAC] [eNB 0][RAPROC] CC_id 0 Frame 739, subframeP 2: Generating Msg4 with RRC Piggyback (RNTI 43eb) +[PHY] fill_ulsch UE_id 0 nb_rb = 0 +[MAC] [eNB 0][PUSCH 6] CC_id 0 740.6 ULSCH in error in round 0, ul_cqi 132, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 6] CC_id 0 741.4 ULSCH in error in round 1, ul_cqi 138, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 6] CC_id 0 742.2 ULSCH in error in round 2, ul_cqi 134, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 6] CC_id 0 743.0 ULSCH in error in round 3, ul_cqi 132, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 6] CC_id 0 743.8 ULSCH in error in round 0, ul_cqi 140, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 6] CC_id 0 744.6 ULSCH in error in round 1, ul_cqi 140, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 6] CC_id 0 745.4 ULSCH in error in round 2, ul_cqi 142, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 6] CC_id 0 746.2 ULSCH in error in round 3, ul_cqi 143, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 6] CC_id 0 747.0 ULSCH in error in round 0, ul_cqi 143, UE_id 0, RNTI 43eb (len 63) +[PHY] fill_ulsch UE_id 0 nb_rb = 0 +[MAC] [eNB 0][PUSCH 0] CC_id 0 748.8 ULSCH in error in round 0, ul_cqi 146, UE_id 0, RNTI 43eb (len 63) +[RRC] [FRAME 00000][eNB][MOD 00][RNTI 43eb] [RAPROC] Logical Channel UL-DCCH, processing LTE_RRCConnectionSetupComplete from UE (SRB1 Active) +[NAS] AttachRequest.c:40 EMM - attach_request len = 97 +[NAS] UeNetworkCapability.c:46 decode_ue_network_capability len = 7 +[NAS] UeNetworkCapability.c:63 uenetworkcapability decoded UMTS + +[NAS] UeNetworkCapability.c:74 uenetworkcapability decoded GPRS + +[NAS] UeNetworkCapability.c:82 uenetworkcapability decoded=6 + +[NAS] UeNetworkCapability.c:86 uenetworkcapability then decoded=8 + +[NAS] AttachRequest.c:285 EMM: Can't decode the message with iei 111 + +[S1AP] [eNB 0] Build S1AP_NAS_FIRST_REQ adding in s_TMSI: GUMMEI mme_code 1 mme_group_id 32768 ue 43eb +[RRC] [FRAME 00000][eNB][MOD 00][RNTI 43eb] UE State = RRC_CONNECTED +[S1AP] [eNB 0] Chose MME 'MME 1' (assoc_id 903) through GUMMEI MCC 222 MNC 1 MMEGI 32768 MMEC 1 +[S1AP] Found usable eNB_ue_s1ap_id: 0x06692d 420141(10) +[S1AP] GUMMEI_ID_PRESENT + + + 12 + + + + + + 8 + + + 420141 + + + + 26 + + + + 17 A0 9C 9B 3F 04 07 41 02 0B F6 22 F2 10 80 00 + 01 00 00 00 37 07 F0 70 C0 40 10 00 10 00 2A 02 + 1F D0 11 D1 27 23 80 80 21 10 01 00 00 10 81 06 + 00 00 00 00 83 06 00 00 00 00 00 0D 00 00 0A 00 + 00 05 00 00 10 00 00 11 00 52 22 F2 10 00 01 5C + 0A 00 31 04 E5 E0 34 01 90 11 03 57 58 A6 5D 01 + 00 E0 C1 6F 04 F0 00 70 00 + + + + + 67 + + + + 22 F2 10 + 00 01 + + + + + 100 + + + + 22 F2 10 + + 0000000011100000000100000000 + + + + + + 134 + + + + + + + 75 + + + + 22 F2 10 + 80 00 + 01 + + + + + + + + +[SCTP] Successfully sent 164 bytes on stream 1 for assoc_id 903 +[RLC] /home/eurecom/panos/NR_RRC_harq_hacks/openairinterface5g/openair2/LAYER2/rlc_v2/rlc_entity_am.c:941:generate_status: warning: cannot generate status PDU, not enough room +[RLC] /home/eurecom/panos/NR_RRC_harq_hacks/openairinterface5g/openair2/LAYER2/rlc_v2/rlc_entity_am.c:941:generate_status: warning: cannot generate status PDU, not enough room +[RLC] /home/eurecom/panos/NR_RRC_harq_hacks/openairinterface5g/openair2/LAYER2/rlc_v2/rlc_entity_am.c:941:generate_status: warning: cannot generate status PDU, not enough room +[RLC] /home/eurecom/panos/NR_RRC_harq_hacks/openairinterface5g/openair2/LAYER2/rlc_v2/rlc_entity_am.c:941:generate_status: warning: cannot generate status PDU, not enough room +[SCTP] Found data for descriptor 86 +[SCTP] Received notification for sd 86, type 32777 +[SCTP] Found data for descriptor 86 +[SCTP] [903][86] Msg of length 32 received from port 36412, on stream 1, PPID 18 +[RRC] [eNB 0] Received S1AP_DOWNLINK_NAS: ue_initial_id 1, eNB_ue_s1ap_id 420141 +[RRC] sent RRC_DCCH_DATA_REQ to TASK_PDCP_ENB +[PHY] fill_ulsch UE_id 0 nb_rb = 0 +[MAC] [eNB 0][PUSCH 3] CC_id 0 752.3 ULSCH in error in round 0, ul_cqi 146, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 0] CC_id 0 752.8 ULSCH in error in round 0, ul_cqi 152, UE_id 0, RNTI 43eb (len 63) + + + 13 + + + + + + 0 + + + 553648130 + + + + 8 + + + 420141 + + + + 26 + + + + 17 A8 76 C5 F5 05 07 56 08 29 22 10 10 00 00 11 + 04 + + + + + 100 + + + + 22 F2 10 + + 0000000011100000000100000000 + + + + + + 67 + + + + 22 F2 10 + 00 01 + + + + + + + + +[SCTP] Successfully sent 68 bytes on stream 1 for assoc_id 903 +[SCTP] Found data for descriptor 86 +[SCTP] Received notification for sd 86, type 32777 +[SCTP] Found data for descriptor 86 +[SCTP] [903][86] Msg of length 65 received from port 36412, on stream 1, PPID 18 +[RRC] [eNB 0] Received S1AP_DOWNLINK_NAS: ue_initial_id 1, eNB_ue_s1ap_id 420141 +[RRC] sent RRC_DCCH_DATA_REQ to TASK_PDCP_ENB +[PHY] fill_ulsch UE_id 0 nb_rb = 0 +[MAC] [eNB 0][PUSCH 4] CC_id 0 761.2 ULSCH in error in round 0, ul_cqi 158, UE_id 0, RNTI 43eb (len 63) +[PHY] fill_ulsch UE_id 0 nb_rb = 0 +[PHY] fill_ulsch UE_id 0 nb_rb = 0 +[MAC] UE rnti 43eb : in synch, PHR 40 dB DL CQI 15 PUSCH SNR 10 PUCCH SNR 10 + + + 13 + + + + + + 0 + + + 553648130 + + + + 8 + + + 420141 + + + + 26 + + + + 17 9B EE 3B BF 06 07 53 08 ED CA A1 31 56 26 D7 + E1 + + + + + 100 + + + + 22 F2 10 + + 0000000011100000000100000000 + + + + + + 67 + + + + 22 F2 10 + 00 01 + + + + + + + + +[SCTP] Successfully sent 68 bytes on stream 1 for assoc_id 903 +[SCTP] Found data for descriptor 86 +[SCTP] Received notification for sd 86, type 32777 +[SCTP] Found data for descriptor 86 +[SCTP] [903][86] Msg of length 51 received from port 36412, on stream 1, PPID 18 +[RRC] [eNB 0] Received S1AP_DOWNLINK_NAS: ue_initial_id 1, eNB_ue_s1ap_id 420141 +[RRC] sent RRC_DCCH_DATA_REQ to TASK_PDCP_ENB + + + 13 + + + + + + 0 + + + 553648130 + + + + 8 + + + 420141 + + + + 26 + + + 47 86 59 47 B7 00 07 5E + + + + 100 + + + + 22 F2 10 + + 0000000011100000000100000000 + + + + + + 67 + + + + 22 F2 10 + 00 01 + + + + + + + + +[SCTP] Successfully sent 59 bytes on stream 1 for assoc_id 903 +[SCTP] Found data for descriptor 86 +[SCTP] Received notification for sd 86, type 32777 +[SCTP] Found data for descriptor 86 +[SCTP] [903][86] Msg of length 38 received from port 36412, on stream 1, PPID 18 +[RRC] [eNB 0] Received S1AP_DOWNLINK_NAS: ue_initial_id 1, eNB_ue_s1ap_id 420141 +[RRC] sent RRC_DCCH_DATA_REQ to TASK_PDCP_ENB + + + 13 + + + + + + 0 + + + 553648130 + + + + 8 + + + 420141 + + + + 26 + + + + 27 F5 4A 60 81 01 02 1F DA 28 09 03 6F 61 69 04 + 69 70 76 34 + + + + + 100 + + + + 22 F2 10 + + 0000000011100000000100000000 + + + + + + 67 + + + + 22 F2 10 + 00 01 + + + + + + + + +[SCTP] Successfully sent 71 bytes on stream 1 for assoc_id 903 +[PHY] fill_ulsch UE_id 0 nb_rb = 0 +[SCTP] Found data for descriptor 86 +[SCTP] Received notification for sd 86, type 32777 +[SCTP] Found data for descriptor 86 +[SCTP] [903][86] Msg of length 235 received from port 36412, on stream 1, PPID 18 +[S1AP] Received NAS message with the E_RAB setup procedure +[RRC] [eNB 0] Received S1AP_INITIAL_CONTEXT_SETUP_REQ: ue_initial_id 1, eNB_ue_s1ap_id 420141, nb_of_e_rabs 1 +[GTPV1U] Configured GTPu address : c712a8c0 +[GTPV1U] Copied to create_tunnel_resp tunnel: index 0 target gNB ip 192.168.18.199 length 4 gtp teid 3396329693 +[RRC] [FRAME 00000][eNB][MOD 00][RNTI 43eb] rrc_eNB_process_GTPV1U_CREATE_TUNNEL_RESP tunnel (3396329693, 3396329693) bearer UE context index 0, msg index 0, id 5, gtp addr len 4 +[RRC] [eNB 0][UE 43eb] Selected security algorithms (0x7f9f9400213c): 0, 2, changed +[RRC] [eNB 0][UE 43eb] Saved security key 107FB5D1A79727631F15C38738093134AAF72931EA06D9495605EDB00D8D8044 +[RRC]  +KeNB:10 7f b5 d1 a7 97 27 63 1f 15 c3 87 38 09 31 34 aa f7 29 31 ea 06 d9 49 56 05 ed b0 0d 8d 80 44 +[RRC]  +KRRCenc:1b 33 28 35 5a 74 f3 6a 05 c6 cf 34 e9 be 54 63 7b a8 5a 48 1d 72 54 67 ae b0 12 a4 1d 3b 7d 86 +[RRC]  +KRRCint:ba a3 e0 18 79 1e 68 44 c6 60 dd c9 a8 8c 65 c2 e8 74 09 da 28 d6 f2 d9 6f ad da 41 d7 ec 8e 71 +[RRC] [FRAME 00000][eNB][MOD 00][RNTI 43eb] Logical Channel DL-DCCH, Generate SecurityModeCommand (bytes 3) +[RRC] calling rrc_data_req :securityModeCommand +[RRC] sent RRC_DCCH_DATA_REQ to TASK_PDCP_ENB +[RRC] [FRAME 00000][eNB][MOD 00][RNTI 43eb] received securityModeComplete on UL-DCCH 1 from UE +[RRC] [FRAME 00000][eNB][MOD 00][RNTI 43eb] Logical Channel DL-DCCH, Generate UECapabilityEnquiry (bytes 3) +[RRC] sent RRC_DCCH_DATA_REQ to TASK_PDCP_ENB +[RRC] [FRAME 00000][eNB][MOD 00][RNTI 43eb] received ueCapabilityInformation on UL-DCCH 1 from UE +[RRC] got UE capabilities for UE 43eb +[RRC] drx_Configuration parameter is NULL, cannot configure local UE parameters or CDRX is deactivated +[RRC] [eNB 0] frame 0: requesting A2, A3, A4, and A5 event reporting + + + 22 + + + + + + 0 + + + 553648130 + + + + 8 + + + 420141 + + + + 74 + + + + 04 43 DA 01 08 87 7D DB 80 51 81 80 01 04 0C 20 + 71 63 08 11 24 4C C1 93 67 0F A1 4A 99 3A 85 AF + CC 58 FF FF FF 95 FF EC 7F FF FF CA FF F6 3F FF + FF E5 7F FB 1F FF FF F2 BF FD 8F FF FF F9 5F FE + C7 FF FF FC AF FF 63 FF FF FE 57 FF B1 FF FF FF + 2B FF D8 FF FF FF 95 FF EC 7F FF FF CA FF F6 3F + FF FF E5 7F FB 1F FF FF F2 BF FD 8F FF FF F9 5F + FE C7 FF FF FC AF FF 63 FF FF FE 57 FF B1 FF FF + FF 2B FF D8 FF FF FF 95 FF EC 7F FF FF CA FF F6 + 3F FF FF E5 7F FB 1F FF FF F2 BF FD 8F FF FF F9 + 5F FE C7 FF FF FC AF FF 63 FF FF FE 57 FF B1 FF + FF FF 2B FF D8 FF FF FF 95 FF DF F3 FF AF A2 0C + 00 8C 85 3C 10 65 3A 54 95 1F C0 77 7E 00 00 00 + 00 02 04 BD 80 00 00 08 09 DF 00 00 00 02 F5 C0 + 0C 00 A0 04 00 04 00 A0 06 00 48 20 0C 10 06 08 + 03 04 01 82 00 C1 08 60 84 30 42 18 21 0A 08 03 + 04 01 82 00 C1 00 60 84 30 42 18 20 0C 10 06 08 + 03 04 01 82 00 A1 80 01 04 30 00 20 86 00 04 10 + C0 00 82 18 00 10 43 00 02 08 40 00 61 00 01 84 + 00 82 10 00 18 40 08 21 00 01 84 00 82 10 00 18 + 40 08 21 00 01 84 00 82 10 02 08 60 08 43 0C 01 + 08 61 80 21 0C 30 04 21 84 00 86 10 02 18 40 08 + 61 00 21 84 00 86 10 02 18 60 08 43 0C 01 08 61 + 80 21 0C 30 04 21 84 00 86 10 02 18 40 08 61 00 + 21 84 00 86 10 02 18 41 08 61 04 21 84 10 86 08 + 43 04 21 82 10 C1 08 60 04 84 00 86 10 02 18 40 + 08 61 00 21 84 00 86 10 02 18 21 0C 10 86 10 00 + 18 40 00 60 80 30 03 00 25 A0 7D 54 6C 1E 00 00 + 35 81 8C 00 08 20 60 00 02 08 18 20 00 80 06 10 + 00 20 81 86 00 08 00 62 00 02 00 18 E0 00 80 06 + 58 00 20 01 98 00 08 00 68 00 02 00 1A 20 00 80 + 06 90 00 20 01 A6 00 08 00 6C 00 02 00 1B 20 00 + 80 06 D8 00 20 00 B8 10 00 5F 08 00 70 80 02 00 + 1C A0 00 82 07 30 00 20 01 CE 00 08 20 74 00 02 + 08 0D A1 00 0F F0 00 40 05 7C 20 63 00 02 08 3B + 60 00 80 8C 10 41 5B 08 18 C0 00 82 0E 98 00 20 + 23 04 10 54 C2 06 30 00 20 83 8C 00 08 28 41 04 + 14 60 83 84 00 08 20 E3 00 02 0A 00 41 05 18 20 + E0 00 02 08 2B E1 03 00 00 10 01 DB 00 04 04 00 + 82 0A D8 40 C0 00 04 10 74 C0 01 01 00 20 82 A6 + 10 30 00 01 04 1C 20 00 41 40 08 20 A1 04 1C 00 + 00 41 05 7C 20 61 00 02 08 3B 60 00 80 84 10 41 + 5B 08 18 40 00 82 0E 98 00 20 21 04 10 54 C2 06 + 10 00 20 82 BE 10 34 C0 01 00 35 F0 81 A6 00 08 + 08 C1 05 08 20 06 BE 10 14 C2 06 30 00 20 A1 04 + 00 D7 C2 02 98 40 46 08 38 40 00 80 1A F8 40 D3 + 00 04 04 60 82 80 10 03 5F 08 0A 61 03 18 00 10 + 50 02 00 6B E1 01 4C 20 23 04 1C 00 00 40 09 7C + 20 69 80 02 02 30 41 09 7C 20 29 84 0C 60 00 41 + 09 7C 20 63 00 02 0A 10 48 09 7C 20 63 00 02 02 + 10 49 09 7C 20 23 04 1C 20 00 48 09 7C 20 23 04 + 0C 20 00 49 09 7C 20 63 00 02 0A 10 40 09 7C 20 + 63 00 02 02 10 41 09 7C 20 23 04 1C 20 00 40 09 + 7C 20 23 04 0C 20 00 41 09 7C 20 63 00 02 0A 00 + 40 09 7C 20 23 04 1C 00 00 40 0F 6C 00 10 11 82 + 0A 10 41 40 08 21 AD 84 0C 60 00 41 42 08 28 01 + 04 35 B0 80 8C 10 70 80 01 05 00 20 86 B6 10 11 + 82 0A 10 41 C0 00 04 10 B6 C0 01 01 18 20 A1 04 + 10 96 C2 06 30 00 20 A1 04 10 96 C2 02 30 41 C2 + 00 04 10 B6 C0 01 01 18 20 A0 04 10 96 C2 06 30 + 00 20 A0 04 10 96 C2 02 30 41 C0 00 04 10 F4 C0 + 01 01 18 20 A1 04 14 00 82 1A 98 40 C6 00 04 14 + 20 82 80 10 43 53 08 08 C1 07 08 00 10 50 02 08 + 6A 61 01 18 20 A1 04 1C 00 00 41 0B 4C 00 10 11 + 82 0A 10 41 09 4C 20 63 00 02 0A 10 41 09 4C 20 + 23 04 1C 20 00 41 0B 4C 00 10 11 82 0A 00 41 09 + 4C 20 63 00 02 0A 00 41 09 4C 20 23 04 1C 00 00 + 41 0B 18 00 10 50 82 0A 00 41 09 18 20 E1 00 02 + 0A 00 41 09 18 20 A1 04 1C 00 00 41 07 18 04 12 + 50 82 08 28 C1 27 08 00 10 41 C6 00 04 14 20 92 + 0A 30 41 C2 01 04 90 31 80 41 24 25 F0 81 A6 00 + 08 08 01 00 25 F0 80 A6 10 30 00 01 00 2D B0 00 + 40 42 08 28 01 04 25 B0 81 84 00 08 28 01 04 25 + B0 80 84 10 70 00 01 04 2D 30 00 40 42 08 28 01 + 04 25 30 81 84 00 08 28 01 04 25 30 80 84 10 70 + 00 01 04 1C 20 00 41 40 09 20 A1 04 1C 00 00 49 + 09 7C 20 69 80 02 02 10 41 09 7C 20 29 84 0C 20 + 00 41 05 7C 20 61 00 02 48 18 40 20 92 07 28 08 + 24 EB B1 FF FF FF 2B FF D8 FF FF FF 95 FF EC 7F + FF FF CA FF F6 3F FF FF E5 7F FB 1F FF FF F2 BF + FD 8F FF FF F9 5F FE C7 FF FF FC AF FF 63 FF FF + FE 57 FF B1 FF FF FF 2B FF D8 FF FF FF 95 FF EC + 7F FF FF CA FF F6 3F FF FF E5 7F FB 1F FF FF F2 + BF FD 8F FF FF F9 5F FE C7 FF FF FC AF FF 63 FF + FF FE 57 FF B1 FF FF FF 2B FF D8 FF FF FF 95 FF + EC 7F FF FF CA FF F6 3F FF FF E5 7F FB 1F FF FF + F2 BF FD 8F FF FF F9 5F FE C7 FF FF FC AF FF 63 + FF FF FE 57 FF B1 FF FF FF 2B FF D8 FF FF FF 95 + FF EC 7F FF FF CA FF F6 3F FF FF E5 7F FB 1F FF + FF F2 BF FD 8F FF FF F9 5F FE C7 FF FF FC AF FF + 63 FF FF FE 57 FF B1 FF FF FF 2B FF D8 FF FF FF + 95 FF EC 7F FF FF CA FF F6 3F FF FF E5 7F FB 1F + FF FF F2 BF FD 8F FF FF F9 5F FE C7 FF FF FC AF + FF 63 FF FF FE 57 FF B1 FF FF FF 2B FF D8 FF FF + FF 95 FF EC 7F FF FF CA FF F6 3F FF FF E5 7F FB + 1F FF FF F2 BF FD 8F FF FF F9 5F FE C7 FF FF FC + AF FF 63 FF FF FE 57 FF B1 FF FF FF 2B FF D8 FF + FF FF 95 FF EC 7F FF FF CA FF F6 3F FF FF E5 7F + FB 1F FF FF F2 BF FD 8F FF FF F9 5F FE C7 FF FF + FC AF FF 63 FF FF FE 57 FF B1 FF FF FF 2B FF D8 + FF FF FF 95 FF EC 7F FF FF CA FF F6 3F FF FF E5 + 7F FB 1F FF FF F2 BF FD 8F FF FF F9 5F FE C7 FF + FF FC AF FF 63 FF FF FE 57 FF B1 FF FF FF 2B FF + D8 FF FF FF 95 FF EC 7F FF FF CA FF F6 3F FF FF + E5 7F FB 1F FF FF F2 BF FD 8F FF FF F9 5F FE C7 + FF FF FC AF FF 63 FF FF FE 57 FF B1 FF FF FF 2B + FF D8 FF FF FF 95 FF EC 7F FF FF CA FF F6 3F FF + FF E5 7F FB 1F FF FF F2 BF FD 8F FF FF F9 5F FE + C7 FF FF FC AF FF 63 FF FF FE 57 FF B1 FF FF FF + 2B FF D8 FF FF FF 95 FF EC 7F FF FF CA FF F6 3F + FF FF E5 7F FB 1F FF FF F2 BF FD 8F FF FF F9 5F + FE C7 FF FF FC AF FF 63 FF FF FE 57 FF B1 FF FF + FF 2B FF D8 FF FF FF 95 FF EC 7F FF FF CA FF F6 + 3F FF FF E5 7F FB 1F FF FF F2 BF FD 8F FF FF F9 + 5F FE C7 FF FF FC AF FF 63 FF FF FE 57 FF B1 FF + FF FF 2B FF D8 FF FF FF 95 FF EC 7F FF FF CA FF + F6 3F FF FF E5 7F FB 1F FF FF F2 BF FD 8F FF FF + F9 5F FE C7 FF FF FC AF FF 63 FF FF FE 57 FF B1 + FF FF FF 2B FF D8 FF FF FF 95 FF EC 7F FF FF CA + FF F6 3F FF FF E5 7F F6 CE C0 00 0F D8 81 B3 B0 + 00 00 8F 9D 80 00 1A C0 00 00 08 78 78 BC 5E 1E + 1E 1E 1D 0F 0E 43 C3 A1 E1 E1 E1 E1 C0 00 08 78 + 78 78 71 17 8B C5 E1 E1 E1 E1 E1 E1 E1 E2 F1 78 + BC 3C 3C 3C 3C 39 17 00 01 F5 80 00 00 00 00 00 + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 00 00 00 80 82 00 80 20 08 02 00 80 20 08 02 00 + 80 20 08 02 00 80 20 08 02 00 80 20 08 02 00 80 + 60 01 80 06 00 18 00 60 01 80 04 00 40 04 00 40 + 04 00 40 04 00 40 04 00 40 04 00 40 06 00 18 00 + 60 01 80 04 00 40 04 00 40 04 00 40 06 00 18 00 + 60 01 80 04 00 40 04 00 40 04 00 40 04 00 40 04 + 00 20 08 02 00 80 00 40 04 00 40 04 00 40 04 00 + 40 04 00 20 08 04 00 40 02 00 00 1F 04 01 20 03 + E6 57 9A 04 01 4B 1F FF FF FF FF FF FE 69 4B BC + 50 0F 80 04 20 09 86 00 00 00 00 00 05 50 92 48 + 81 01 00 02 F2 42 0B 51 40 01 34 00 00 00 + + + + + [RRC] RRCConnectionReconfiguration Encoded 1796 bits (225 bytes) +[RRC] [eNB 0] Frame 0, Logical Channel DL-DCCH, Generate LTE_RRCConnectionReconfiguration (bytes 225, UE id 43eb) + [RRC] sent RRC_DCCH_DATA_REQ to TASK_PDCP_ENB + + + [PDCP] [FRAME 00000][eNB][MOD 00][RNTI 43eb][SRB 02] Action ADD LCID 2 (SRB id 2) configured with SN size 5 bits and RLC AM + + +[PDCP] [FRAME 00000][eNB][MOD 00][RNTI 43eb][DRB 01] Action ADD LCID 3 (DRB id 1) configured with SN size 12 bits and RLC AM +[SCTP] Successfully sent 2206 bytes on stream 1 for assoc_id 903 +[SCTP] Found data for descriptor 86 +[SCTP] Received notification for sd 86, type 32777 +[RRC] [FRAME 00000][eNB][MOD 00][RNTI 43eb] UE State = RRC_RECONFIGURED (default DRB, xid 2) +[PDCP] [FRAME 00000][eNB][MOD 00][RNTI 43eb][SRB 02] Action MODIFY LCID 2 RB id 2 reconfigured with SN size 5 and RLC AM +[PDCP] [FRAME 00000][eNB][MOD 00][RNTI 43eb][DRB 01] Action MODIFY LCID 3 RB id 1 reconfigured with SN size 1 and RLC AM +[RRC] [eNB 0] Frame 0 CC 0 : SRB2 is now active +[RRC] [eNB 0] Frame 0 : Logical Channel UL-DCCH, Received LTE_RRCConnectionReconfigurationComplete from UE rnti 43eb, reconfiguring DRB 1/LCID 3 +[RRC] [eNB 0] Frame 0 : Logical Channel UL-DCCH, Received LTE_RRCConnectionReconfigurationComplete from UE 0, reconfiguring DRB 1/LCID 3 +[MAC] UE 0 RNTI 43eb adding LC 3 idx 2 to scheduling control (total 3) +[MAC] Added physicalConfigDedicated 0x7f9f600085d0 for 0.0 +[RRC] [FRAME 00000][eNB][MOD 00][RNTI 43eb] Logical Channel DL-DCCH, Generate NR UECapabilityEnquiry (bytes 27) +[RRC] sent RRC_DCCH_DATA_REQ to TASK_PDCP_ENB +[S1AP] initial_ctxt_resp_p: e_rab ID 5, enb_addr 192.168.18.199, SIZE 4 + + + 13 + + + + + + 0 + + + 553648130 + + + + 8 + + + 420141 + + + + 26 + + + 27 22 5C 78 F3 02 07 43 00 03 52 00 C2 + + + + 100 + + + + 22 F2 10 + + 0000000011100000000100000000 + + + + + + 67 + + + + 22 F2 10 + 00 01 + + + + + + + + +[SCTP] Successfully sent 64 bytes on stream 1 for assoc_id 903 +[RRC] [FRAME 00000][eNB][MOD 00][RNTI 43eb] received ueCapabilityInformation on UL-DCCH 1 from UE +[RRC] got UE capabilities for UE 43eb +[MAC] [eNB 0][PUSCH 7] CC_id 0 796.7 ULSCH in error in round 0, ul_cqi 152, UE_id 0, RNTI 43eb (len 63) +[RRC] [eNB 0] frame 0 subframe 0: UE rnti 43eb switching to NSA mode +[RRC] Read in 2056 bytes for uecap + + + 27 + + + + + + 111 + + + 0 + + + + 248 + + + + + 0000000000000000 + + + 0000000000000000 + + + + + + 203 + + + + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + + + + + 204 + + + + 100000000 + 100000000 + + + + + 205 + + + + + 209 + + + + 5 + 1 + + + + + + + + + 1 + + 15 + + + + + + + 11000000101010000001001001100011 + + 00 00 00 02 + + + + + + + + + + + 206 + + + + 3A 03 08 78 8D DB 80 51 81 80 01 04 0C 20 71 63 + 08 11 24 4C C1 93 67 0F A1 4A 99 3A 85 AF CC 58 + FF FF FF 95 FF EC 7F FF FF CA FF F6 3F FF FF E5 + 7F FB 1F FF FF F2 BF FD 8F FF FF F9 5F FE C7 FF + FF FC AF FF 63 FF FF FE 57 FF B1 FF FF FF 2B FF + D8 FF FF FF 95 FF EC 7F FF FF CA FF F6 3F FF FF + E5 7F FB 1F FF FF F2 BF FD 8F FF FF F9 5F FE C7 + FF FF FC AF FF 63 FF FF FE 57 FF B1 FF FF FF 2B + FF D8 FF FF FF 95 FF EC 7F FF FF CA FF F6 3F FF + FF E5 7F FB 1F FF FF F2 BF FD 8F FF FF F9 5F FE + C7 FF FF FC AF FF 63 FF FF FE 57 FF B1 FF FF FF + 2B FF D8 FF FF FF 95 FF DF F3 FF AF A2 0C 00 8C + 85 3C 10 65 3A 54 97 1F C0 68 FE 00 00 00 00 02 + 04 BD 80 00 00 08 09 DF 00 00 00 02 EE C0 0C 00 + A0 04 00 04 00 A0 06 00 48 20 0C 10 06 08 03 04 + 01 82 10 C1 08 60 84 30 42 18 20 0C 10 06 08 43 + 04 21 82 00 C1 00 60 80 30 40 18 20 0C 10 06 18 + 02 10 C3 00 42 18 60 08 43 0C 01 08 61 80 21 0C + 30 04 21 86 00 84 30 C0 10 86 10 02 18 40 08 61 + 00 21 84 00 86 10 02 18 40 08 61 00 21 84 00 86 + 10 02 18 20 0C 10 06 18 02 10 C3 00 42 18 60 08 + 43 0C 01 08 61 00 21 84 00 86 10 02 18 41 08 61 + 04 21 84 10 86 10 42 18 41 08 61 04 21 84 10 86 + 10 42 18 41 08 60 84 30 42 18 21 0C 10 86 00 61 + 00 21 84 00 86 10 02 18 40 08 61 00 21 84 00 86 + 08 43 04 21 82 00 C1 00 60 04 B4 7D 54 6C 1E 00 + 00 2E 81 8C 00 08 20 60 00 02 08 18 20 00 80 06 + 10 00 20 81 86 00 08 00 62 00 02 00 18 E0 00 80 + 06 58 00 20 01 98 00 08 00 68 00 02 00 1A 20 00 + 80 06 90 00 20 01 A6 00 08 00 6C 00 02 00 1B 20 + 00 80 06 D8 00 20 00 B8 10 00 5F 08 00 70 80 02 + 00 1C A0 00 82 07 30 00 20 01 CE 00 08 20 74 00 + 02 08 0D A1 00 0F F0 00 40 07 4C 00 10 11 82 08 + 2A 61 03 18 00 10 41 C7 00 04 04 60 82 0A 38 40 + C6 00 04 10 71 80 01 05 08 20 82 8C 10 70 80 01 + 04 1C 60 00 41 40 08 20 A3 04 1C 00 00 41 07 4C + 00 10 10 02 08 2A 61 03 00 00 10 41 C2 00 04 14 + 00 82 0A 10 41 C0 00 04 10 76 C0 01 01 08 20 82 + B6 10 30 80 01 04 1D 30 00 40 42 08 20 A9 84 0C + 20 00 41 07 1C 00 10 10 82 08 28 E1 03 08 00 10 + 43 D3 00 04 04 60 82 84 12 50 02 08 6A 61 03 18 + 00 10 50 82 4A 00 41 0D 4C 20 23 04 1C 20 00 49 + 40 08 21 A9 84 04 60 82 84 12 70 00 01 04 3D 30 + 00 40 46 08 28 41 05 00 20 86 A6 10 31 80 01 05 + 08 20 A0 04 10 D4 C2 02 30 41 C2 00 04 14 00 82 + 1A 98 40 46 08 28 41 07 00 00 10 42 D3 00 04 04 + 60 82 84 12 42 53 08 18 C0 00 82 84 12 42 53 08 + 08 C1 07 08 00 12 42 D3 00 04 04 60 82 84 10 42 + 53 08 18 C0 00 82 84 10 42 53 08 08 C1 07 08 00 + 10 42 D3 00 04 04 60 82 80 10 42 53 08 18 C0 00 + 82 80 10 42 53 08 08 C1 07 00 00 10 41 D3 00 04 + 04 60 92 0A 98 40 C6 00 04 90 F1 C0 01 01 18 20 + A1 04 14 00 82 1A 38 40 C6 00 04 14 20 82 80 10 + 43 47 08 08 C1 07 08 00 10 50 02 08 68 E1 01 18 + 20 A1 04 1C 00 00 41 0B 1C 00 10 11 82 0A 10 41 + 09 1C 20 63 00 02 0A 10 41 09 1C 20 23 04 1C 20 + 00 41 0B 18 00 12 50 82 0A 00 41 09 18 24 E1 00 + 02 0A 00 41 09 18 24 A1 04 1C 00 00 41 0B 18 00 + 10 50 82 4A 00 41 09 18 20 E1 00 02 4A 00 41 09 + 18 20 A1 04 9C 00 00 41 0B 18 00 10 50 82 0A 00 + 41 09 18 20 E1 00 02 0A 00 41 09 18 20 A1 04 1C + 00 00 41 07 18 04 12 50 82 08 28 C1 27 08 00 10 + 41 C6 00 04 14 20 92 0A 30 41 C2 01 04 90 31 80 + 41 24 2D 30 00 40 42 09 28 01 04 25 30 81 84 00 + 09 28 01 04 25 30 80 84 12 70 00 01 04 2D 30 00 + 40 42 08 28 01 04 25 30 81 84 00 08 28 01 04 25 + 30 80 84 10 70 00 01 04 1C 20 10 49 40 08 20 A1 + 04 9C 00 00 41 07 4C 00 10 10 82 48 2A 61 03 08 + 00 12 40 C2 01 04 9B B6 3F FF FF E5 7F FB 1F FF + FF F2 BF FD 8F FF FF F9 5F FE C7 FF FF FC AF FF + 63 FF FF FE 57 FF B1 FF FF FF 2B FF D8 FF FF FF + 95 FF EC 7F FF FF CA FF F6 3F FF FF E5 7F FB 1F + FF FF F2 BF FD 8F FF FF F9 5F FE C7 FF FF FC AF + FF 63 FF FF FE 57 FF B1 FF FF FF 2B FF D8 FF FF + FF 95 FF EC 7F FF FF CA FF F6 3F FF FF E5 7F FB + 1F FF FF F2 BF FD 8F FF FF F9 5F FE C7 FF FF FC + AF FF 63 FF FF FE 57 FF B1 FF FF FF 2B FF D8 FF + FF FF 95 FF EC 7F FF FF CA FF F6 3F FF FF E5 7F + FB 1F FF FF F2 BF FD 8F FF FF F9 5F FE C7 FF FF + FC AF FF 63 FF FF FE 57 FF B1 FF FF FF 2B FF D8 + FF FF FF 95 FF EC 7F FF FF CA FF F6 3F FF FF E5 + 7F FB 1F FF FF F2 BF FD 8F FF FF F9 5F FE C7 FF + FF FC AF FF 63 FF FF FE 57 FF B1 FF FF FF 2B FF + D8 FF FF FF 95 FF EC 7F FF FF CA FF F6 3F FF FF + E5 7F FB 1F FF FF F2 BF FD 8F FF FF F9 5F FE C7 + FF FF FC AF FF 63 FF FF FE 57 FF B1 FF FF FF 2B + FF D8 FF FF FF 95 FF EC 7F FF FF CA FF F6 3F FF + FF E5 7F FB 1F FF FF F2 BF FD 8F FF FF F9 5F FE + C7 FF FF FC AF FF 63 FF FF FE 57 FF B1 FF FF FF + 2B FF D8 FF FF FF 95 FF EC 7F FF FF CA FF F6 3F + FF FF E5 7F FB 1F FF FF F2 BF FD 8F FF FF F9 5F + FE C7 FF FF FC AF FF 63 FF FF FE 57 FF B1 FF FF + FF 2B FF D8 FF FF FF 95 FF EC 7F FF FF CA FF F6 + 3F FF FF E5 7F FB 1F FF FF F2 BF FD 8F FF FF F9 + 5F FE C7 FF FF FC AF FF 63 FF FF FE 57 FF B1 FF + FF FF 2B FF D8 FF FF FF 95 FF EC 7F FF FF CA FF + F6 3F FF FF E5 7F FB 1F FF FF F2 BF FD 8F FF FF + F9 5F FE C7 FF FF FC AF FF 63 FF FF FE 57 FF B1 + FF FF FF 2B FF D8 FF FF FF 95 FF EC 7F FF FF CA + FF F6 3F FF FF E5 7F FB 1F FF FF F2 BF FD 8F FF + FF F9 5F FE C7 FF FF FC AF FF 63 FF FF FE 57 FF + B1 FF FF FF 2B FF D8 FF FF FF 95 FF EC 7F FF FF + CA FF F6 3F FF FF E5 7F FB 1F FF FF F2 BF FD 8F + FF FF F9 5F FE C7 FF FF FC AF FF 63 FF FF FE 57 + FF B1 FF FF FF 2B FF B6 76 00 00 7E C4 0D 9D 80 + 00 04 7C EC 00 00 BA 00 00 00 8B C5 E2 F1 78 78 + 78 78 72 1E 1E 1E 1E 1E 1E 3F 8F C2 1E 1E 1E 1E + 1E 1E 1E 1E 1E 1E 2F 17 8B 90 F0 F0 F0 F1 78 BC + 5E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1C 8B 80 0F 74 + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 00 00 00 00 00 00 00 00 04 04 10 04 01 00 40 10 + 04 01 00 40 10 04 01 00 40 10 04 01 00 40 10 04 + 03 00 0C 00 30 00 C0 03 00 0C 00 30 00 C0 02 00 + 20 02 00 20 02 00 20 02 00 20 02 00 10 04 03 00 + 0C 00 30 00 C0 02 00 20 02 00 20 02 00 20 02 00 + 20 02 00 20 02 00 20 01 00 40 10 04 00 02 00 20 + 02 00 20 02 00 20 01 00 40 10 04 00 3E 08 02 40 + 07 CC AF 34 08 02 96 3F FF FF FF FF FF FC D2 97 + 78 A0 1F 00 08 40 13 0C 00 00 00 00 00 0A A1 34 + 91 02 02 00 05 E4 84 12 E2 80 02 6B C0 C0 04 00 + 01 04 10 40 00 28 C8 00 00 08 80 00 05 58 E1 00 + 00 00 01 4F 7E 03 02 00 00 01 40 48 07 06 0E 22 + 0C 00 02 13 60 10 73 E4 20 F0 00 82 40 31 10 00 + A0 58 9B A0 21 94 34 08 81 07 41 86 04 C0 42 54 + 41 01 00 80 06 08 1C 1C 22 03 C8 0F 00 20 1A 02 + 6E 26 F0 00 09 00 00 00 00 72 A6 80 00 80 00 02 + 0C 30 00 1A 55 30 62 00 11 C0 48 16 0C 01 C4 D0 + 00 00 00 40 04 03 40 4D 01 04 40 41 4E 9C 00 02 + 00 01 00 80 80 10 02 00 + + + + + + + + +[SCTP] Successfully sent 2161 bytes on stream 0 for assoc_id 904 +[SCTP] Found data for descriptor 95 +[SCTP] Received notification for sd 95, type 32777 +[SCTP] Found data for descriptor 95 +[SCTP] [904][95] Msg of length 371 received from port 36422, on stream 0, PPID 27 + + + 27 + + + + + + 111 + + + 0 + + + + 207 + + + 0 + + + + 210 + + + + + 213 + + + + 5 + + + + + + + + + + 11000000101010000001001011000110 + + 92 CC 30 02 + + + + + + + + + + + 211 + + + + 18 04 09 A8 44 09 92 E2 07 8E 01 90 43 7E 30 D0 + 41 E6 41 C8 54 1E 21 00 83 2B A1 6E 63 00 1A 4E + 47 C0 13 49 C4 00 00 00 26 96 18 DE 35 00 05 38 + 05 10 0D 60 1B 40 39 D2 02 68 00 01 34 E4 E1 8D + E3 2A 31 00 0D 66 66 BE E4 E0 24 BC A1 5B C2 C5 + 8F 68 9C 2E 00 50 E0 18 04 21 60 3B 00 91 19 1F + 5E 24 62 00 1A CC CD 00 03 F0 DB 00 10 1C 02 D9 + 00 92 00 20 24 04 63 2C E1 96 65 14 0F FF F8 00 + 00 00 08 70 00 41 03 08 14 30 73 70 44 30 00 00 + 80 80 1A 70 0A 20 1A C0 36 80 72 CA 80 40 FF FF + 80 00 00 00 87 00 04 10 30 81 43 07 0D C2 10 C0 + 00 08 05 90 01 01 20 23 25 61 52 C0 E1 04 16 0E + 0C 10 E1 00 71 28 1C 00 00 20 5E F4 01 00 02 00 + 00 0F 40 01 41 00 19 73 86 59 95 18 80 06 B3 33 + 5F 72 70 12 5E 50 AD E1 62 C7 B4 4E 17 00 28 70 + 6A A4 1A 80 81 04 42 0C 20 30 08 C0 03 40 43 00 + 0C 01 8A 17 B4 08 28 5E C9 07 91 A2 B3 80 00 40 + 00 7F 42 10 84 00 80 40 25 81 C2 08 2C 1C 18 21 + C2 00 E2 50 38 00 00 40 BD E8 02 00 04 00 00 1E + 80 02 82 00 70 01 01 88 00 40 A0 49 40 BC 16 00 + 60 00 + + + + + + + + +[X2AP] x2ap_eNB_decode_successfuloutcome_message! +[X2AP] X2AP Association id: 904 +322: 180409a8440992e2078e0190437e30d041e641c8541e2100832ba16e63001a4e47c01349c4000000269618de3500053805100d601b4039d20268000134e4e18de32a31000d6666bee4e024bca15bc2c58f689c2e0050e0180421603b0091191f5e2462001acccd0003f0db00101c02d9009200202404632ce19665140ffff8000000087000410308143073704430000080801a700a201ac0368072ca8040ffff8000000087000410308143070dc210c00008059001012023256152c0e104160e0c10e10071281c0000205ef401000200000f400141001973865995188006b3335f7270125e50ade162c7b44e170028706aa41a808104420c203008c0034043000c018a17b408285ec90791a2b3800040007f4210840080402581c2082c1c1821c200e25038000040bde802000400001e80028200700101880040a04940bc16006000 + + + + + + 08 81 32 5C 40 F1 C0 32 08 6F C6 1A 08 3C C8 39 + 0A 83 C4 20 10 65 74 2D CC 60 03 49 C8 F8 02 69 + 38 80 00 00 04 D2 C3 1B C6 A0 00 A7 00 A2 01 AC + 03 68 07 3A 40 4D 00 00 26 9C 9C 31 BC 65 46 20 + 01 AC CC D7 DC 9C 04 97 94 2B 78 58 B1 ED 13 85 + C0 0A 1C 03 00 84 2C 07 60 12 23 23 EB C4 8C 40 + 03 59 99 A0 00 7E 1B 60 02 03 80 5B 20 12 40 04 + 04 80 8C 65 9C 32 CC A2 81 FF FF 00 00 00 01 0E + 00 08 20 61 02 86 0E 6E 08 86 00 00 10 10 03 4E + 01 44 03 58 06 D0 0E 59 50 08 1F FF F0 00 00 00 + 10 E0 00 82 06 10 28 60 E1 B8 42 18 00 01 00 B2 + 00 20 24 04 64 AC 2A 58 1C 20 82 C1 C1 82 1C 20 + 0E 25 03 80 00 04 0B DE 80 20 00 40 00 01 E8 00 + 28 20 03 2E 70 CB 32 A3 10 00 D6 66 6B EE 4E 02 + 4B CA 15 BC 2C 58 F6 89 C2 E0 05 0E 0D 54 83 50 + 10 20 88 41 84 06 01 18 00 68 08 60 01 80 31 42 + F6 81 05 0B D9 20 F2 34 56 70 00 08 00 0F E8 42 + 10 80 10 08 04 B0 38 41 05 83 83 04 38 40 1C 4A + 07 00 00 08 17 BD 00 40 00 80 00 03 D0 00 50 40 + 0E 00 20 31 00 + + 14 09 28 17 82 C0 0C 00 + + + + +[RRC] Dumping scg_CellGroupConfig: 3090881325c40f1c032086fc61a083cc8390a83c4201065742dcc600349c8f802693880000004d2c31bc6a000a700a201ac0368073a404d0000269c9c31bc65462001acccd7dc9c0497942b7858b1ed1385c00a1c0300842c0760122323ebc48c40035999a0007e1b600203805b2012400404808c659c32cca281ffff000000010e0008206102860e6e088600001010034e0144035806d00e5950081ffff000000010e0008206102860e1b84218000100b20020240464ac2a581c2082c1c1821c200e25038000040bde802000400001e8002820032e70cb32a31000d6666bee4e024bca15bc2c58f689c2e0050e0d54835010208841840601180068086001803142f681050bd920f23456700008000fe8421080100804b038410583830438401c4a0700000817bd004000800003d00050400e00203100 +[RRC] Dumping scg_RB_Config: 81409281782c00c00 +[RRC] Dumping nr_SecondaryCellGroupConfig: 3090881325c40f1c032086fc61a083cc8390a83c4201065742dcc600349c8f802693880000004d2c31bc6a000a700a201ac0368073a404d0000269c9c31bc65462001acccd7dc9c0497942b7858b1ed1385c00a1c0300842c0760122323ebc48c40035999a0007e1b600203805b2012400404808c659c32cca281ffff000000010e0008206102860e6e088600001010034e0144035806d00e5950081ffff000000010e0008206102860e1b84218000100b20020240464ac2a581c2082c1c1821c200e25038000040bde802000400001e8002820032e70cb32a31000d6666bee4e024bca15bc2c58f689c2e0050e0d54835010208841840601180068086001803142f681050bd920f23456700008000fe8421080100804b038410583830438401c4a0700000817bd004000800003d00050400e00203100 +[RRC] Dumping nr_RadioBearerConfig1: 81409281782c00c00 +len = 336 + 22 02 8c 00 23 08 10 00 ac 24 a0 82 1e 32 04 d4 22 04 c9 71 03 c7 00 c8 21 bf 18 68 20 f3 20 e4 2a 0f 10 80 41 95 d0 b7 31 80 0d 27 23 e0 09 a4 e2 00 00 00 13 4b 0c 6f 1a 80 02 9c 02 88 06 b0 0d a0 1c e9 01 34 00 00 9a 72 70 c6 f1 95 18 80 06 b3 33 5f 72 70 12 5e 50 ad e1 62 c7 b4 4e 17 00 28 70 0c 02 10 b0 1d 80 48 8c 8f af 12 31 00 0d 66 66 80 01 f8 6d 80 08 0e 01 6c 80 49 00 10 12 02 31 96 70 cb 32 8a 07 ff fc 00 00 00 04 38 00 20 81 84 0a 18 39 b8 22 18 00 00 40 40 0d 38 05 10 0d 60 1b 40 39 65 40 20 7f ff c0 00 00 00 43 80 02 08 18 40 a1 83 86 e1 08 60 00 04 02 c8 00 80 90 11 92 b0 a9 60 70 82 0b 07 06 08 70 80 38 94 0e 00 00 10 2f 7a 00 80 01 00 00 07 a0 00 a0 80 0c b9 c3 2c ca 8c 40 03 59 99 af b9 38 09 2f 28 56 f0 b1 63 da 27 0b 80 14 38 35 52 0d 40 40 82 21 06 10 18 04 60 01 a0 21 80 06 00 c5 0b da 04 14 2f 64 83 c8 d1 59 c0 00 20 00 3f a1 08 42 00 40 20 12 c0 e1 04 16 0e 0c 10 e1 00 71 28 1c 00 00 20 5e f4 01 00 02 00 00 0f 40 01 41 00 38 00 80 c4 00 00 00 20 50 24 a0 5e 0b 00 30 00 +[RRC] sent RRC_DCCH_DATA_REQ to TASK_PDCP_ENB +[RRC] [FRAME 00000][eNB][MOD 00][RNTI 43eb] UE State = RRC_RECONFIGURED (default DRB, xid 1) +[RRC] E-RAB modification indication: nb nb_of_e_rabs 1 status 4 +[RRC] S1AP_E_RAB_MODIFICATION_IND: sending the message: nb_of_erabstobemodified 1, total e_rabs 1, index 1 + + + 50 + + + + + + 0 + + + 553648130 + + + + 8 + + + 420141 + + + + 199 + + + + + 200 + + + + 5 + + 11000000101010000001001011000110 + + 92 CC 30 02 + + + + + + + + + + + +[S1AP] Size of encoded message: 43 +[S1AP] initial context setup response: failed e_rab ID 5 +[SCTP] Successfully sent 43 bytes on stream 1 for assoc_id 903 +[SCTP] Sctp_sendmsg failed: Message too long +[GTPV1U] NW_GTP_END_MARKER +[PDCP] Handed SDU is of size 0! Ignoring... +[GTPV1U] PDCP data request failed, cause: [UE:43eb]RB is not configured! +[SCTP] Found data for descriptor 86 +[SCTP] Received notification for sd 86, type 32777 +[SCTP] Found data for descriptor 86 +[SCTP] [903][86] Msg of length 34 received from port 36412, on stream 1, PPID 18 +[S1AP] Implementation of S1AP E-RAB Modification confirm handler is pending... +[MAC] [eNB 0][PUSCH 1] CC_id 0 874.5 ULSCH in error in round 0, ul_cqi 158, UE_id 0, RNTI 43eb (len 63) +[MAC] UE rnti 43eb : in synch, PHR 40 dB DL CQI 15 PUSCH SNR 18 PUCCH SNR 15 +[X2AP] X2 has 1 process ongoing +[X2AP] X2 has 1 process ongoing +[MAC] UE rnti 43eb : in synch, PHR 40 dB DL CQI 15 PUSCH SNR 15 PUCCH SNR 16 +[RRC] UE rnti 43eb failure timer 0/8 +[PHY] prach_I0 = 0.0 dB +[PHY] max_I0 19, min_I0 12 +[MAC] [eNB 0][PUSCH 4] CC_id 0 73.2 ULSCH in error in round 0, ul_cqi 159, UE_id 0, RNTI 43eb (len 63) +[X2AP] X2 has 1 process ongoing +[MAC] [eNB 0][PUSCH 7] CC_id 0 114.3 ULSCH in error in round 0, ul_cqi 165, UE_id 0, RNTI 43eb (len 63) +[MAC] UE rnti 43eb : in synch, PHR 40 dB DL CQI 15 PUSCH SNR 13 PUCCH SNR 10 +[X2AP] X2 has 1 process ongoing +[MAC] [eNB 0][PUSCH 0] CC_id 0 218.4 ULSCH in error in round 0, ul_cqi 158, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 6] CC_id 0 226.2 ULSCH in error in round 0, ul_cqi 164, UE_id 0, RNTI 43eb (len 63) +[MAC] UE rnti 43eb : in synch, PHR 40 dB DL CQI 15 PUSCH SNR 13 PUCCH SNR 13 +[X2AP] X2 has 1 process ongoing +[X2AP] X2 has 1 process ongoing +[MAC] UE rnti 43eb : in synch, PHR 40 dB DL CQI 15 PUSCH SNR 19 PUCCH SNR 15 +[X2AP] X2 has 1 process ongoing +[MAC] UE rnti 43eb : in synch, PHR 40 dB DL CQI 15 PUSCH SNR 18 PUCCH SNR 13 +[X2AP] X2 has 1 process ongoing +[MAC] UE rnti 43eb : in synch, PHR 40 dB DL CQI 15 PUSCH SNR 13 PUCCH SNR 15 +[X2AP] X2 has 1 process ongoing +[MAC] [eNB 0][PUSCH 2] CC_id 0 753.0 ULSCH in error in round 0, ul_cqi 164, UE_id 0, RNTI 43eb (len 63) +[MAC] UE rnti 43eb : in synch, PHR 40 dB DL CQI 15 PUSCH SNR 18 PUCCH SNR 15 +[X2AP] X2 has 1 process ongoing +[X2AP] X2 has 1 process ongoing +[MAC] UE rnti 43eb : in synch, PHR 40 dB DL CQI 15 PUSCH SNR 15 PUCCH SNR 16 + + + 13 + + + + + + 0 + + + 553648130 + + + + 8 + + + 420141 + + + + 26 + + + + 27 D6 DB 4F 5E 03 07 45 0B 0B F6 22 F2 10 80 00 + 01 00 00 00 37 + + + + + 100 + + + + 22 F2 10 + + 0000000011100000000100000000 + + + + + + 67 + + + + 22 F2 10 + 00 01 + + + + + + + + +[SCTP] Successfully sent 72 bytes on stream 1 for assoc_id 903 +[SCTP] Found data for descriptor 86 +[SCTP] Received notification for sd 86, type 32777 +[SCTP] Found data for descriptor 86 +[SCTP] [903][86] Msg of length 25 received from port 36412, on stream 1, PPID 18 +[RRC] [FRAME 00000][eNB][MOD 00][RNTI 43eb] Logical Channel DL-DCCH, Generate RRCConnectionRelease (bytes 3) +[RRC] sent RRC_DCCH_DATA_REQ to TASK_PDCP_ENB +[MAC] [eNB 0][PUSCH 3] CC_id 0 927.5 ULSCH in error in round 0, ul_cqi 122, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 3] CC_id 0 928.3 ULSCH in error in round 1, ul_cqi 122, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 3] CC_id 0 929.1 ULSCH in error in round 2, ul_cqi 112, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 3] CC_id 0 929.9 ULSCH in error in round 3, ul_cqi 122, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 3] CC_id 0 930.7 ULSCH in error in round 0, ul_cqi 116, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 3] CC_id 0 931.5 ULSCH in error in round 1, ul_cqi 116, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 3] CC_id 0 932.3 ULSCH in error in round 2, ul_cqi 122, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 3] CC_id 0 933.1 ULSCH in error in round 3, ul_cqi 128, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 3] CC_id 0 933.9 ULSCH in error in round 0, ul_cqi 116, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 3] CC_id 0 934.7 ULSCH in error in round 1, ul_cqi 116, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 3] CC_id 0 935.5 ULSCH in error in round 2, ul_cqi 122, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 3] CC_id 0 936.3 ULSCH in error in round 3, ul_cqi 116, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 0] CC_id 0 936.8 ULSCH in error in round 0, ul_cqi 122, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 0] CC_id 0 937.6 ULSCH in error in round 1, ul_cqi 122, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 0] CC_id 0 938.4 ULSCH in error in round 2, ul_cqi 122, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 0] CC_id 0 939.2 ULSCH in error in round 3, ul_cqi 112, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 0] CC_id 0 940.0 ULSCH in error in round 0, ul_cqi 116, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 0] CC_id 0 940.8 ULSCH in error in round 1, ul_cqi 122, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 0] CC_id 0 941.6 ULSCH in error in round 2, ul_cqi 122, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 0] CC_id 0 942.4 ULSCH in error in round 3, ul_cqi 116, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 0] CC_id 0 943.2 ULSCH in error in round 0, ul_cqi 116, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 0] CC_id 0 944.0 ULSCH in error in round 1, ul_cqi 122, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 0] CC_id 0 944.8 ULSCH in error in round 2, ul_cqi 116, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 0] CC_id 0 945.6 ULSCH in error in round 3, ul_cqi 116, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 0] CC_id 0 946.4 ULSCH in error in round 0, ul_cqi 122, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 0] CC_id 0 947.2 ULSCH in error in round 1, ul_cqi 116, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 0] CC_id 0 948.0 ULSCH in error in round 2, ul_cqi 122, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 0] CC_id 0 948.8 ULSCH in error in round 3, ul_cqi 122, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 0] CC_id 0 949.6 ULSCH in error in round 0, ul_cqi 122, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 0] CC_id 0 950.4 ULSCH in error in round 1, ul_cqi 112, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 0] CC_id 0 951.2 ULSCH in error in round 2, ul_cqi 112, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 0] CC_id 0 952.0 ULSCH in error in round 3, ul_cqi 122, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 0] CC_id 0 952.8 ULSCH in error in round 0, ul_cqi 122, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 0] CC_id 0 953.6 ULSCH in error in round 1, ul_cqi 112, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 0] CC_id 0 954.4 ULSCH in error in round 2, ul_cqi 112, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 0] CC_id 0 955.2 ULSCH in error in round 3, ul_cqi 112, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 0] CC_id 0 956.0 ULSCH in error in round 0, ul_cqi 122, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 0] CC_id 0 956.8 ULSCH in error in round 1, ul_cqi 122, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 0] CC_id 0 957.6 ULSCH in error in round 2, ul_cqi 116, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 0] CC_id 0 958.4 ULSCH in error in round 3, ul_cqi 122, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 0] CC_id 0 959.2 ULSCH in error in round 0, ul_cqi 116, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 0] CC_id 0 960.0 ULSCH in error in round 1, ul_cqi 112, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 0] CC_id 0 960.8 ULSCH in error in round 2, ul_cqi 122, UE_id 0, RNTI 43eb (len 63) +[MAC] [eNB 0][PUSCH 0] CC_id 0 961.6 ULSCH in error in round 3, ul_cqi 116, UE_id 0, RNTI 43eb (len 63) +[MAC] UE 0 rnti 43eb: UL Failure timer 1 +[RRC] S1AP removed entry in hashtable s1ap_id2_s1ap_ids for eNB_ue_s1ap_id 420141 +[RRC] S1AP removed entry in hashtable initial_id2_s1ap_ids for ue_initial_id 1 +[S1AP] Removed UE context eNB_ue_s1ap_id 420141 +[SCTP] Successfully sent 24 bytes on stream 1 for assoc_id 903 +[RRC] Removing UE 43eb instance after UE_CONTEXT_RELEASE_Complete (ue_release_timer_rrc timeout) +[RRC] [eNB 0] Removing UE RNTI 43eb +[RRC] Put UE 43eb into freeList +[RRC] clean_eNb_dlsch dlsch[2] UE 43eb +[MAC] clean eNb uci_vars[0] UE 43eb +[MAC] clean eNb uci_vars[1] UE 43eb +[MAC] clean eNb uci_vars[2] UE 43eb +[MAC] clean eNb uci_vars[3] UE 43eb +[RRC] remove UE 43eb from ul_config_pdu_list 0/1 +[MAC] Removing UE 0 from Primary CC_id 0 (rnti 43eb) +[PDCP] remove uid is 0/0 43eb +[RRC] [FRAME 00000][eNB][MOD 00][RNTI 43eb] Removed UE context +[RRC] [release_UE_in_freeList] remove UE 43eb from freeList +[X2AP] X2 has 1 process ongoing +[SCTP] Found data for descriptor 86 +[SCTP] Received notification for sd 86, type 32777 +[PHY] prach_I0 = 0.0 dB +[PHY] max_I0 18, min_I0 12 +[X2AP] X2 has 1 process ongoing +[X2AP] X2 has 1 process ongoing +[X2AP] X2 has 1 process ongoing + \ No newline at end of file diff --git a/doc/testing_gnb_w_cots_ue_resources/oai_fr1_lab.jpg b/doc/testing_gnb_w_cots_ue_resources/oai_fr1_lab.jpg new file mode 100755 index 0000000000000000000000000000000000000000..fccbd9a8a325b26a69a5be87d22852b0b840aad9 GIT binary patch literal 93188 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%0DW0%%ifhaL{q^ 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 |v!0^Exi=fZd0F2+&XVDUknyRS;3&@Q9D7Zh7EV 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 Kdh}BM4gVj@vJqwg literal 0 HcmV?d00001 diff --git a/doc/testing_gnb_w_cots_ue_resources/oai_fr1_setup.jpg b/doc/testing_gnb_w_cots_ue_resources/oai_fr1_setup.jpg new file mode 100755 index 0000000000000000000000000000000000000000..23e3af3c89bdc98aca84f6256ab527d82d9c200d GIT binary patch literal 252726 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

H>hM4e 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 ZQfJX$c&0_Yhrow>-lB>$IE6quaZ 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≥5P+v&$dz{_lsmR$fk13E3W+T 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 literal 0 HcmV?d00001 diff --git a/doc/testing_gnb_w_cots_ue_resources/oai_fr1_setup.vsdx b/doc/testing_gnb_w_cots_ue_resources/oai_fr1_setup.vsdx new file mode 100755 index 0000000000000000000000000000000000000000..d424e04c7af285445d46de19cc83dec6028990d5 GIT binary patch literal 1291764 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 z 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

-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

V4#Ci9jUryGqP2eTI~>C>83 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%0A%?05dXEo+}(p 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 z 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%0A|PcZkc9uh*eJ3F(J?ih;XSewcaHf1#hLU0ttA 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

@{K{1YepaN7-pZ zmcHCq^Xj?$Bj0IfrcaGU9ttEKDk%SR(sY~*qu=gSKPXNPu?QatT+s_dKOe+t>OgMj zCz3t_iJQw+8sr~)!Si{C(lz^~oGnJ)Sv}=d!=qUNb>fEbC*^n=A^7Fb2o@lD(h^sC zbsi0QgqEebT;KSwD@z+=imvtZ&gsEpV>uq9;GLf!`FOf|rm{k`{E)xC5wsBe1kl8) zg}V1olyCX3HANZ|4szNC5B29CFOIJ??X!?44MQWoN=*yWQk|OHZ0DYu-LiJks)klT z`1V~w#DJTX8)F<3NAu^4YU%o6u0Ids%l5OK^QIIk530UE|4IctjTY_8IzW{)#u4RU zGFvg5{?X+?Wjm?oE!hY6HN+4u==gjJ^2`3@DevBs`=hE`<>;N>PZ#PyZNOE?QhPu4 zvffwPrIyQ_=mB2L%hmVF`|WQfwhJ0;CMm6GAkfuQxCa>7I}jH9;@$$bf4(Z%-Oj#P z0(C31DrsYV%Uz-^u%_<O|~4u=%-m1E`%9}MpfzoxV+UOVm9NJ^_gD6tjIjbLr0A+N<+ zxu_PD+ytw&g4wbXl9)|_x+Fi9D01b&N0-wGZM}~PH~$Su)zVc^kSCPpmg}(-)CPp3 zdT#8%@^+U1_E-)0O{3+2q`3N`>Vegn=qV=I9YeATIEHY8x`apHypifPN zi;pJVbjqFbB2nwOw|Joj_ewWq>wmnPek*0I>&U68+%U4X2B~R!H%qXEw;=0N0q;p6 z0%Z3YyFV48OlWAkdNMZ~AD<2!yanBsV{Slz5~KI|4ZgHoI__@qS^C;0!V{%n*mIU& z`xQ=m+&CLL1H%F@?z{0Xo{Wl`%v}o>wuzhUKeTp#zN}5Zvt`oJa$xK;QW>TF(&Awi zNs~-%6_q)|nCjD}>;h)~#aZU+$`Ma}3NHgDS?Yr;Hd%fDoh*blSf@G zK6Y`wjR03WF(!A|{Hn>J8IHSTV$?g;XJp>Vy-UpMZ;`_P9(231YN7QnHDc6Voq~-d z7uZzwnX8VUs~$i5k}{Qd6Qbgy(t&FvC}FdL(hmFg2;fG^5+6dpnB8^>B;_Mxbt)udW2i&^XsD1FrN+v#?zj4X^)9;3cfJJu z<1ckWuQtUofaq_S`&s1OCnNW(;!U_rR3Xfo}5b(O+e*D`5kB6aO zX>YbW^)#i#J?A^o=y+?x+?D-=5ZR~2Io`AJRJtkR<(gX0$_SG7ZNvaDJ?6?|5lpG$ z&A1ba{cB7dczeU^P!8#!G4%#|R5e1W|1rUL+?Ecz-k5U9$Hvs1FBp@QP{hMcTb7)Q6L zBApif`Kr6ro`%d*^>C&jUKxLY_t`fU8}(1Fe-dRYKC6VjYL#j&meE>mKKZ8R-Z2Kn z9R|GQ)UD2g>z!d6P@N}$2Fh6{j2fqnkyf?PRnK3U?{xSwDS)%8q=0 z)dM)DF}YkEQ!cZx2Lku29(UGYLoz|!^=o}qb$NU_Qo8&Vy{pW8ypqLj%=4$k6HHG$ z@ZeuqW{2HKh*Tyqle3C>eONP5ysz|2ebb?-=gNqVlu#-;FK9t-(7VOJl~jvU&LZPr zEJMMjo8YmGW8;@3#k8G8(fL~gAp!L_7QT_H+2;*Tp=z=ms-~b%cBEzmLQM~5*B2e* z+PH|)jKq*q$SAYokY~)rw~26l=ikmltBjg5zN_XP;U+o($Un=( zuJTUu$F0B+To_C%=~H3|Dahr6oJu}9pyhv3MN!1?<9)s6$8nNV5-M;cfzRpPNf3Uc zFl`9bvOdVxsnm-MczLo;59SVsOGO6&tvtCIcFsYM!++kp)v`)sNfN@CongcxxxIRLs23wb3n-9l2h;>!%o*`J+uXNxenn~GPAA~M)Oi#)ux3{d9ye%>je&aa zA_GcJzy{Yq>LK3#1gXZDRrhgz_IH4w-NC^v>ZZi7aoxm7qNvvSARcH#xlFPUtw{AX zj#;Le=_VuGnRMp|Kx9M+y?&y9(z&3u2CM=KaE&(B#V`X^ZNB@m`*MfhLME^8Jc3MM zYm_sqoJRw&VG0YTYx(==ovR`C^-siy#otf(MWzc4%oABRsmuUEjL<+%nI7jjs?psb-N1gEo{0Pruzgq+k->m9&5CF{+Y zW7u5t)da3#oPNo%=xBI=E~yZl;uB?EI#R!BfMxd4{^WX3Ha-*LFntd#+ONfZsbBB%I29_@$BDXXc$(#X>F? z%-fn*u~%mlTUI8zR93$L#tk`3vgXD6jz`()4DHwTqJE!|+lF;$;EYp)V=?x);TwPP zp^mD|5F|W|m+1il6TVF%H9dOY{@535I2oix!NL#R3a&7a(_ytOhlm|NOz6MAY z`lHX`6UQ_Z73kWC5Cf`O?5jG5+TJ+1vl1r%2|U3~2$ZCZ0wzv-EzcZkdDN(8(1)TJ zGReb-vSa5!N@+s)ij*hZ;!Ks~)9ictDR<%*qNHc_tE4OI%PE44dakfgrAre(dp&&A zx~A(`1}H!Oekxc}p1zfP>-a$)s(N>aVeno2W_eeiQ)+TT$h5K+rE)Z`@qCo%S+GJY zRXXb}o@CEYbS)d&b?5~U`5Ff)&$j#O!o0hayj6*Jsl>fa06AdhTP8MRXl6Ispq@|a zmJga-xm16uU>S^n`gb%J5wIMit^=`sHlI285V>}uUcSPb1nhXneZ}NQ0O4rpbA?wF zJ%$Y&QP@{BUN@8Ho964+Uyw8YFX&ayFu6{jYgm6;8?mVB7<3LTQ^nq?cAaEr#v$b8 zw*=fA>2eDn8mi?N+9j}AJKkN#BM|PJMZX}n2eV8 z3MO-ay<%8L-P7ShM@uj^QqMw9jqhF#pu1uq3Abq0(he(Yk2D!lifW^L-GTEL`v6Cz zx;6a{k3)iaKxm2q;rEaP= z?0a3HT23u<@ML7$L08DCQpY-8cd&Y@5}k(A4s|+|PtsZ@w)YrC99*xa$m9e%i3BdJ z@fHwgdi8t22T58gcJon*NjU9QZ;TqdF=}o9AvqSEeheVmifKW`4SS{`v|ODdlkWs2$-eofc;j9f7}jJJm049U_aQ}=!! zy+!y`rz1BewSPwwhpnDbOdgKX=KK=pWpSCz?6fC@($n!iRSayUAdhOGa;_kSDblv} z@lCp{aDS(Zw#;7^sV9bF6ik+0ctE%^{Q|0;9~dU2SiaYkWFE>*&yLQ6{?dWqTtuH; zV{UDlC70H&Rh_nTqTg{o0L9!s5ygIniY*IWDrK(2C338;D}tG{;Vi_65?n=e_lpHgjRquO5ph71<`|? zhbY&Kl3^;>6L)zfIbc6L4YtksHbZ`fN%5(;I2c4zwEC78ceu)W+}y2?9b*=YJZ15R z47o1$fnTp$u<~s1pp^PylkZ_V*3%n1E%~{JmWN_v47^GgG z#y;5e-yI)m*1|3G8PpDv47bvDD@w;8hcbQvN=8&B8UAU-U?M!#&|=&U*C!fZ8hQjd zhy$b}SFoZC>v$ns(sGr!QJzTljQ++F^fLO0hNdWn&Pbi4R7(xE*(GkDd|OL6VI&;5Zb`HpCE*;|MwU_A z-MQaNPK;P=&xDuOA5k^qj;?E;xKH6^!i3VQFJ-hP%(W8Q==p-w<9c`(>3^H`+0y&D z3fF$pw$~rvLKSZ@cBsDx8fF*Wbr!S98Ja;wZDr5>OAxVf5!t?8o|?gJdKNeJCz{=? zZ$-0S*){a{!qQ;AE$DE7V1$ z#elZ2FxB8CkLm}vb+yd3EqF(d{XWC|$t=x4G0iiF2oP5f3g{N=jMtIX%FJr`ql;U5 z<;-rHbzKT;R?{a1U%=*jUcWbyNx;AvPAJ_YzK;!gK}d`2ecYHMXd5PfTqHg@%_h62 zgS?;1;{AsEX_W(Dy~t8*1;x7%8}z>}y%Wq`>m#8&6d3Uw=eIkVeW$3)-3It;a_Kc_&~;TP-`=PYF*_!5kG>;{s5z)%!}|9HqcY3dIwQZba)9bl z!$4vbemM!evL6z4QfuYTU(q%@es7w`D9|z@d}T@SrzcE>a^f}wI$fc)rtnCFUT zDu#EH4~p7GTw;IAQMUS~C9%PWJvj@Lg0xGlYY+*c*BGTy!^LGWFR7rk{hxq^?5`$> zOJeIy_t16ph1xpHFeD;sWZGZg*m`2l6Wv*a%iEt?L#3IAx!T6Ai>iEKIkWw3lG#aW zM|qa=c@a+QqdceolFB;f4+Pqa=69sD3Vk+B_Q_s&#!WXhurykf=;JVv;0XrHQ)kpN zYp-oI3~DroD`*3i;RP#6%wz=Jiql5s_QEkGATYkFIR!#ebY48rs|+rKBTIZSQ%1xt zv57e*dHb&G(c8iWWJgFLLyG`&`Q$lmz{=iGvmQ)!A(d)4$m>~r-nd&EYTx)kZ%5)X zu<7>-&ow-}w!HjM2>1BeiIKxvnW1jq)0PN9WL0fmUk}FA4PH0{&&sUkOuSR|*9E*ED2TmH8gO z{q4sit3TGOn=vIH&_G15pKc0I3$8U)`>!bbj@~GOA_5Tr?nv5HR z(ECGI>AnMF37#3xvTk+R4^FKN!^@znQN~8vll1Ne}K|r+@T#g%c%DDpf#> ziKfeOBi5%JIw5fb!GyVLOs)4{(AFRn4tUII|At5>JnGikLp#!`H12dIwrvdje`0sB zNgl1Iom_K7`pFC&?Ui%;`9RQ_vhkMsUZ8jR-VdMhI~y*G%X*=>`}Dc+D}Id`btX$Y zk)O09Q?!B&>1~;+lp9gfhzDET7nu2UG-kR_e*NC?fzk8dVWZBoHpf+PligPT9pvj1 z&Ecdric7ljDrZ!maS||ih#y8H#O~%V;V3n*CS`a1#b4~0%P#GlRG%Egc7Eh1nE=cxz#oz}3`xu~g zkJv!^egoTV2bxQ2JA%%465`I*ykW)Pqsrc*(;|ejI5gOt-VXGwKsw05?G>9unnABa zNDP&H5-lRrPe<7t8?-1fPvW*uk)`WCvaafpng|^^46R!-tz-yV1~3(QXlMae6`q`} zQ{JE67q*+PBaJdXae6fo2$#;L*SQQQXFL6FZUnfH1AE6uFm|*;SlgN)Drs@VB#)-# z{lx5 z4ABTg#QDyz>xDyxBYh}uhnev8B%}r25t-|+iEJUa_5deLQOGXrY2%^sN%mfB>M_k% zY}~6&d{}sfwVngJ4!1#Lb>t+3d3GKOP_>_tup+(Y%9Wbfxb{lHpU-_Y>5{}mgVd&D z*EB4aB$F59dX(hQ@D~?y(Vv>Icb4C{s;A>Vzm7Jrfi(kW?sn;z)NXy+&o3QF%+lXk z3uz8NA~v+EkUvF-1G}-VsyX??r1?dyb{{%-t#f> z@}o{2tMB9Q77N6C8y5@w;p&6`^2yL+eYHhdRqF*uta+;Rc%4=3Py?1Pci||O&|B70 zuSOzx65mzRUNJXsaN1s`9b$;aUu!#rj^jMia<)V4uO{n6**xpHbL@36tySqkW4Ml^ zfY6nO&Hj@cm7135E9;AU0r36ERkLP{PGz-M%dtsP!svcc!1lpO0It5liL^}W*DI;7 zZn#0P%FNw%Ntz}chq#~xTe@)mxrYzacwA`UOkqx1O@f14%4ye&yOo}aUR=$8GXn4V zk_5`uDK}4b+Y)Mn^$h*xD6*1Wlwq0>=K9_b$wj9s2{GowgeZE5yv(}HwBO4e9dc}O zz^c~>YNApdX&?-O8l=6pl&K=g>SnebmX}P*t$uNh3UW5LcF6Q;3*c(T6aAMrI5idW zER$?}458)Q>(vpVok*k8WOq8J4p&2;WRe5$!lEW(HqRFJYERvHg{<}75YcUaUni$& zugQU?yKw+^%PKXOma`y}gs4j0Zt=&54;CQ|T>XLeAdJJLBmSf{?n6m$Rn5Fb1Q|se zTnN8g)@Vo~uCiOVEt1D_`ZDcwA8pKwY}C~)Qg&x7(rh)69*1HcliLqkkM-p+g*`>@bt*p0r`pGE`ta z2=9Sa#}4?#3CIZ1bC#Mq`HdP|{y3S9QW^M^%-yGI1${hm(;|eW=r*FepKI{cN`8k` z;nq$9!z-&#i*iH>H(n)GBN~BD-ye+zt1rF`sct6_0ORAt24Hj&2;NSBc$Ws-UMYS5 zp%?q%(e0b*vX<$wf0&tF`R;U4Rr+z!SEKB&sdsIUysy}rW*mEuAuEQbSx}k-ts%_! zkJPVc4hyYe%q&ema(|u!(?#9Svktc&0TkmreRD5SF*uo@#WILMhIi#mw5z(=ttUMJ zCchBIrBP$RlEl%g<+l`J5Y>I3a({asMN-bysIDCOW^-lScVIzZrqZsxEJH8{wxN?J zFeQr-B*<=QwPQYpSo`4@PRW~oua4K?0}~beTRt9K7tw(8JBp9^oQWi7DIR2v>O0Lk zP6Q@eCrcF^*+xm@*ODINrVr-9!}$4<=SGOXVQ2oeD>$()NVMF`sb0J~%Lik$zC{$_ z;taZKw=7syUj#0DmfKvLRNr?vwRqPpzYt#rM!$Z&?y{U@8AV3We{-Jj`@usQP66?} zAH;oF5?{uc39r4wT}!kBTnoLoY2s7P7&YRdENSizpJBltEvxVG>c`MUt88~T3mFdMmj+i>Aep-lZ31*?7bJXS?Y zzb+iVwtn#$AsdEWC--{5Ln9Za$-y$Nfyp(thfjpbm*Mnltit;mfcVx8PW{fD*Bth@ z7g;QgcF)xb&}8j4brQV|oq*G#jQxJi+i9B~)GZMXr$xPT@`G?a(@bCf)n;f-%shwm z>DLx98WhrMN15;{2I#J)U0>a zPF}}J#F!F{hIag&(l)vgDw}swjD7};85NdobI%u-G7ofGFKES-L{l6s2-=@dI4)Z($yZK=#mA4v;l+6Tv#pvp< zD(5c7SMmtEjKK_91Vv6|!&MT6k;#5aPoilT{%zkU~qm6VuM1~zx=$fnVw zm5Ym#uNfEVS6hSbVEqY<)+8wi9QpYZF|3Ol}wQ3QE&R-3H4`GLScuGq)<9I^H z0vbQg&_h0U9w+{}ib{gbe>t9QjZuHV>v=o*_}25T*NFD(TUu6+dDg+#wjUYg8!d~X zllIf<$K0R5zo~w58h59fdpx8i8Ds_v5brK4x9`9Uz9HW)jA}(!4aD{x%r`t`^*fGA zIyd18_h#N!ODC(Eay~5eMmb@Hi`MJ$?gD8!s+(VXBaaUmyq$n>qWAH7#O%~u*N$cb zB#|5#BFzFBHl*)?-l|IL0P3IERm{$`3;_OOM5>d!v%W~0OiA|-XTQ=5%gf>3*T8*3 zJPsw~bhH~$J;p(EDY=UV$_|1hoWuv2NK?Y?b_115iRi%HxMulNyS1VNyp0QB9(F6y zRa&<=Q-yoHB{`8F2{I-zB@LphfNsZ?%e0VcqCE=McUVRx5rHx(+E2RpcB!fu)yqYXI|G`)Y` zC-d&gA1^7g<+v!u@a6lsF6N~ji513B(9lqk`Ol^p9rDinYxw5B*4R*e2FwufblD6j z7-_S$WCe^1t=_4D58cscg{iQhN(PBeZww~P1WLhp6n5Jt56@xv# z`HwzGqd=Fk_S+4RbKU}lVObJ+O#We+icq+`Kp0a;qi9y*oYWJZcK#WY704r=%>WSL z&4;q2rnwu7p^{#LhO{SmVc^NSZ`uU4m_6sOW|x7i(( z|65hR)YMCi!u-vPoZgdkRVM$`rSqim^{;ima_Wt% zCj7c)U$O)E>lv+a9JpDWv(~2h-Kgjef7YMWevH1D5u-}&zL%?Dk}cUKeG4^eU$m}W znU%0}l+&?kFwtOQn6iz@scI@qP-=eYcTO6jKA4@)l?fNoT676(s^*h2TLZvlSlEz; zs@Cmbx<~|J>iN;_1*y+Enj1QT;{J1M5-NOR{6}vjEr1(*y5ABsX{J)w7B}p9iAU3k zqWF<&uR9RxTA$LgahRttgld)KY?YSOBtvX4TvdL@Zgc-|tEv2wwa%){Q3dv(ZB(4kB*wlrlWAbT>u5 z9@noP8FMTs-kSkC$q>+u)iDSSR?!go&6s~TFYF3e5J6%E(BllN`~O7cnQ8~ky5*ME zrM4{p=JqD6+FPN)y*BwD>nxMmbL(R9$eYK;f&HqDzI$eq^ zN&#K&|K?=Io3!UWZ4Lld9CT7e^6SDhl~Rk{o(x?XY}@$@;a`8FYH969K}o(B#%0k_ z5!`oc;UB{2>%GRgpR875hXRA7mzh&oszw=W{7-k8{ufKKBs8nDY~@E-FYJ}fVLXAA zZVvxI^zb7!S&^^Uoo-Mo_R6|DjhPjyz!W|lzPvE=oEg%t7m46xMX{o~CG z1gw{Ly4`8U*LT^<`A!;i$LZvm@kp;LW~;AGBEvc2gSu%P^X<|1$YC!-3y+%@TYo3c zQ~#*{_x$DqFINO}L0?`!B>7#h4*&9TO>V$m`H@Bv%FlSTapZ( zZuov8h{$;fmpkI0;O?YpN;f(A?G}g1W0@ic^;QtERh)wu@yPM;aj^7Mw1D9_f-Xi= z!R=8ZYf(K1s=bp{Wk$vhezV^Ji@(@W(p>C}$!X=$Z8%UVK%ekhlR3s@7;%KLGMj&{ zy&w3Ibv03*keo2^4`z0v?maL6!ZqE=^-J_A;tx`&B~4)X?^FC#;{Ca7iLs=>hVNd` z?x`i-_h@)ga9f#umsa{?q$JvT7eR8M|TQ=ffpIIQ}_LIZ%stR zy6%cY|B;7^0d9DOJ_)t&$!j$uX&kKe zy7nSE$U=iWvJ~0XNz^WYb*#&mM#^3USQ}7_e`=1u?#~jd$$OTU$MHL6S5JJOnLnpI ze51tUfpNsL!S|Ag^r^jm4q(F!5V!1`m0?JKcgMO+JNnV<(BdR=no_Th8 z=`+z&AojZ5u|9fmU4eF;z|&yrK0Cc&?f9;|dQ}0Oc4r?rS?wW~$SDf=qTDf^_f(7U zJKdt^AM{tqdFKw0`aKyPQ+gPyIqC#ke(yr@D{yH^9XD3b>^`Szn>zCbOdq%!$zD5y z{#JTqtsD5RwNokz0UvFw;+*%n>6)weLP5h&n%{ztusp%4Ua+S*ix8)BDOdg|>!oZ% zE8=#ZYmvhmGz07D-*wltx$(qUv>t0aU@)f-A-NPJDC6TF>>J*vXxCNQiE^pr# z$GR?T=uO03@o$-G?22rdz7{tH5^w1|IIrY}xmsC0!*^{>#lPtw+5cH~KV>?K^J%^L z`B@$V{qNf3h3Q83eE;5p7Wt}AMSBcXxED#kg^EYEuv(|?a6t37D=u6rURY~dIL)m1 zy`t7}343t@ENao2JTgAdwgu$`M-ydF?7fUaq@4!Z-SE{Y(_ESF;^F|Ob;_9Q>OfOT z3^=U#jEJ3In;(BALB_~?-_dP_=2rpnZve!~BL0VaE$>m4k8czpe`&i`pcXC!Q#`P1 z^mMM=;$@4h)9mjcF8AkG{gGB^azsHa2Zx?>i>q^~9R6kgzsd*7=LFC1&WTQR%V;z7 zuO=Is9WU`N?V^;<*i{s0y1d=EA2hT7Y}-ue)rGI%0QcJ!9ww;gCi}as z+sfhz(sCs2oJtoD?J2*?1Gd_yq2Alis{}52o{xTO)WOthlfn7_ z>!t;`t>1Ht4bT?Jxd+J;gJ5BltcWK<^wYBX6#)qWLy=qW8@A_kA~oS<0c97Jy!?bK z!Q0Ud5u1!-%k^-}oNC9z?*-dx%zKjUQp9`K)7la~!=Aqcajjmvnm*lefH#BIIuS|^ zO;w>*1);V|mGLCj>s34GWve`;goEtZ@DfD)yQM`FhXT)lt zPouZsAkDQ*u=hihNb6mTTh1zGVLtwSN1_Lvm~RJZbvR?mxpU`l6d>+@7+UbBosT52 zQkil6BMa!yz3&Ge=FU?alE8m<+FSq6fTqrEcJr?dOg50i)C%13%Hb!)_Bo0B;i5rn z6MH{^0^!0=f%!+*C+I^ zh2xRO(0VGwJLk$pYEe_8+{YmL_?K_|`YvC$Mtj-;RlN2KA#D?WG1aF2+WX6M<_pXgJCi0y8$Gg}_!ouj! z`a0>`FYfq+@wpPV3+QPs@SnA2oksQD@8Gm?JxU~ZKFTHNbe6{g~ z$#!!2lJxOrNL2H4@I&Ezo>_sa;rrxUmc<|Ybjgu2yM;lz5tjlCi?kx1<$WA!Hf#OG zm%I0+10=P({VEw5@dRJ0H++M0WB=I``-~X*qhMQ!4<==(j)uf@cWJShw{{}hj*Wtd zyDsFS?!R*hi?>MW25xuGZrOTm21z^>S*U}j#%nXnhI{8~f~x{|erhgMHg^$5vjTJ} z-}e@SwI=8C%Ty&Kd!@2`{Py^p8m1}~2Fo(eiS+^zix2WdNg`yqy{~~8L}uAo0==vA zP}X%di2iWp4d4UZhry?Z2A#ufpUv;z+_zni_`6JnoV%d2z?a8^eB)5a3%SQ&zs77N zl@ZLp$@@6*v#*o7=bAr*&!cc&Z1SmEbPP0+)eFues7f(#dQNXeZ)RPEdj2S@zvpl1H;GDFc^am`U_T)ClPth6R z>U9qO&?T6f|NVD%FLoz_l%`i0fNV>o)_w;8|Nb@Qix%8-2t4jb@_3)6=Eh%1j$~0H@M4^GF2HbtXfsH{V&VgT%k7!EHcrqN z(|yf3>kABHR{z6(Kj-V87W&pC?v?s(+>1owU(?8+%F7(51R(<}ntbbP>*ev!_fEzT zNnS5upXC$dSMXa&7nLJ!Msw=+gqyFk^L8_Y?S?z0B1`Tm%PB0kON0)nRH~@3b#({f z*@;89mP8KfwyZ-5jS;<_M({V_`93L0e!HVbMtnX!%07;|+iFN0F*@Xz$v|5BSsdZ7 z3@P!mBb$P6Q`YY=EDcO#gb05@pyFom;AFEUv)J?u{cmDhC4X2IV1||nX48(SX8-ge zx9GVFqNDbw?;-B|)^vYfE$g{Guh#m_n6g#evQ1vK+k5N9ib>Y}GBN6luYGs@<`WF- z1(G60!}){O;#Q7qy;{$@e?KnOt(^++YLAXg(TuYVy(750pKm)+%VS<9+}4*avwy?> z%=(M+N2Eb9@n_J!ObhBoMd$(A1Vj<}Ltu>f!K73B=>EK&LkPIlX8x`6_|E&a()8$W zo(XdNdG#YdXf>iG2gbIN%?(oV%jtONYuKDj+Z797rLxGwgFan79;bP+EJSAYbRxJJ z`Pk=8P&I8X{3D`mBlCp5^_+gHHPWd;DXk`FMfisg>Uf2PZ@3xt^tjMs2MBq6PKWCJ z@ruIweFwLJ885^EV)Y^iaT3IcJIB&`9^q|42QOGK;hZYQTHk|%QwLR0ZlOAlkRLO> z^cuQ#uGb+i9BoLyNcEDzM1J_bzi$R#&f~{`8 zN%O?E=715Ld~{ng!M*PS>;G|do#AZt|GTZ0s*=qN+r! zn2}Vis#Tj>wI8+jOc1sA-a-?^9uW}<{`vo2oa;KT&YN?t@8{h2=N^+~z_`qQ^v;8Lo);KYs{77Od=v*M=#XSqju*nej? zR5a9v%Ne;(bLQ4@?a&><@RHd;!;KL0N#b8tdPnScre+q|km)c92z5id?nTr+K8F*E z@sP>Km1Tta0nyx37t>vYu34Y+=VKUpZ|G5P$6m?_;O2i}d6--N!;QVPku zH5qxFB{p}{f-~Z?_Y=N)kPo9Q4`BaD^@E=fbks*YeTQB$eJ3cXOe+sKt-GgXI70u6 zve+~C@KLWw_$GO}&PHdQ1Q~oX5| zfTAU>ytd8@EWh&9e&wW3ZVRbC5*r#+r|lO;Z0j__122cR&uzax40QW;p2|e={1u&R z8K!I6OK*1BXkF3NJoTw_t|}e+!!G|y%WSNw?|HiL(3aTL#uG@nx53%x)WjDDU*2Tk z*sXdA2oX>i06b?~Iu{hE)#iHQa)O%6IyfL_dQZ;$?#BCtzTqFGXYpEk$F~U5elYv} zP)ll?EI3Hd%KpI&zQ zpsl>WP&zZe#U%pfY`z<-R-<*?J^i4T-y>+5ftl^E7_;XM?`Nq8#j-0zHw~uR3dR5uWGfFdjn~<#6~V~Q_zI`PW2Lt4 zPvEPaCd3ws|s=sw>IUPM`ZnEa}5g43zv$@{%OSW8jpX#S3dnB@T51K_NnqDQx< zLwP8iVx&^&(J8h9FtqkFv7GeN{kWw-JJVo4eL55A_&qQK0d=Z6?c@}+9^q)0?&+`F zr+r1YaV7N|+a1X&-L-Jr5E1q(-P~|2-H4i?EEp8%ZyT1G+{3~nd3Hvdr!D9wEes_&{)k3#1@v^`K=)djY0w&-SX_ zupPi&%rMj{-zi+NvSo80j%)PX{?Dn6Z{dH|h!HK|c80&9ubI3#GNN*?#7VL9p~+?> zYZoH^I63~*(B0*9zsITz!LzGiGPIjF;F;TezOQxu50C!#9A};;_1$&)$!L?y+s~c$MmL*HN%9Tac|6H=xY22>%gF!U9}q1N+!5$F~j+3y|lEdcf#S{Zw=a4iIM)p+8IuF|L4B&YS z!Kq-{_@34KX4*yEyu#y7rqUR7)nYBt=)^n9PI{Yy3)EQ;`{00{N%A1jCnrv)Y>zkn zaeRu>P`uglb-_ZQJ3QE z=s7*;?fPG(rK0BFPVd>=evymKU_e?ps87{0^*oFBJ8zlFFQOjHS7o>s0E;2yEy#7M3?N6av zq&)^e(SL+9yY;Z5nSaK`>{vaSlO7h?v7$$@PT`Md3KeEAtia4X{X+rE!(WvUfX;$F zA+Sv;rd4lk3PbSfm@*dnnXO>>w)4&%^#pv|iNfH$)}hN5U!x!3;wlz0wllnpQL{aNB{-~OTVNcNS=s*gUX))Hlnc-d!4P1W!RCcBLJ0VcIrxjSLltI3Rv+%0lv z^~iIHF7}U^NUG-Ih}sE-X(d#t3l|%qE#oDBfBr)xW<=S2?NC;KXVqco7VREa6TW}E z#7y49z~gM-XH8$QLtJ`D^^|zMDb>cAAm5jHx!E?om92zl>AG8|^uF}6)4MsB%DM9O zR)vhI5;L(BvUdqN4h))cT@^Xvp}zU*dMd567fHWZc}fTS3t^XPqP3B%=9Je_R_F4F zZL^urT8;cYA-?KCs7Fnrj&BIy8Qh;*F7JHx`e1&sG$Mb(hV0fweO}0%cV4x5q;%tG zm#73ek2psLo$7f+j7aaSKp_PN=djsBckerl&qMRhJEL;SYS$92FxugkPuNC&Dd$H&=Tx4{71qb6L#;Dvy1# zfm!EvRxI&;qJ`+dD&`%=4=5YEJ<~Pae7Yl2hv{Pq_QSE9=uwVmrU*mr{qK~@#xIgC zNW`v|4;B?R%3HN?tN@VZ%q9;3o?kMG(gw?Vmc19|(AgGY$R4xGlnnSBC%^BQb?l69 zn(`+*0XB+xQukBP-feNkXNVX<_liNli6Nl#_ChG)+k`}BI}yQ{9Qf+O@L0;8H06~qv zdvBIe_YF>5HpK0?dSiAwmMpfUYo>i)db8wg>Bcd+Bh~1m==T#1P_E* z)Pkv^b4gayow7v8@u_;vJU6WiPJRb7ckam{Nx3rDA2&h3_FC8yf;5@xl-?m^RDbF~{=1|873M3k^e5or65 z$dUANM1WqUT3a2-CI`YFMMN3(B-&Wab4R~HY}o)e(R;y?9z&`E=PiLu(chrzbh|l< zPLV6sbLa5xYM8jY9KWVZTn1WDW^h0CrRlkzCtSxLmA|xvo%Fs>|FT_oC_KB-+V$2y zZdbQF(nrbZQTc<$P{)(=ptVDmK~2OE*Vn)KUg*pzJoC=<&u6kl-M)+N`;-8D>Qt-8L&7BqJ+%dej-SrE5ld~*;Xc0;Ib{wWoR3~py4Ba4KE z=-9nUe{J9Puv5Ry=_Gel+j&QT1Iyn%l;9QgDuwv_gw#|s->b1+ScOrW3LM1@DF#~< z>}%rtGSM=B8iE`w^(ma};tIGQTVlK9X#MaMBlH)6QE4l`vw- zY+x+$Vy*XXFAua?A0Z%cVAb#&XMSmQZn6y313E8$`rd-4c3N(r$~A-6bMEboFT1c_ zeCFD_1HG9~bCIsyx)P|@HtDHw{e@D#I^UL+fuBVTyYi0nH_h0JaYMAZWQbC^q&-IM za9Cqus^tv!|5La3EX8HT=I!R?X=sBwQx~TlHncJtT60#itI}ioszZr0a80}4$+2%Qj6n6JZ&BP81Mm0f%Jnq*6MC3}I?Ukthh;zYN$K5+J zTPdv28o0<9IvpMao&8wg3QZwy`Srv}9pnLoO1kdz+>sIL@pUC!!^#+PS?QDoFig== zG@-YpgUFcobC9)ZX$pOWU!c5_ z`N-V43~g|ABE1JW&xRQ^rP|fGmJZes*L>3#lw^lSO%HsOqnGNPqu~a|?E{qg{(%y+ zx@?tw{EZn13tqwJ>!3_M#@&A!Qk;i-l~#gjWCy3@%ldaZ;VJ-!bgc8Z7J~Klgw-KSL4W@nbi5UM(&(q`V>xLrVnT6V@;DaW+}}cAEgzW17|v7Q7GLF zg6?`biBS-=Np$ZBi3JOm$9V8Pj;0sJDP>menP@wz7P9fH6y z8qcaQ9Kgzx-IVPf%f=_bm3(esN*xbR^vldFsmHJk31SSzphI)@dHBS)9qwHtdgy?1i@ zM#8(}piuWRV@%=BtWIg@GBo7xtta`njNj$jx{_&@X_($C~DL>6) z*trS?dhTVc7OcgK6TkUjd(C9tgv1K_qW1sgh5e!8PhWp5?Fc=XPywUgNyfL#q&Xwu z$j4is?Nnb{z41*NfRESyJGu01V+j1=7OSJrL<=r`T%Bc1`6#>$MY&`U${uy;|I!y3$i`?}>L+HHl{X2Rt)%(5A^=@xv44$qs2P zuU-e!0t6E-CC;v@WM`)yXSk0cKS$F6aB&haZxy?zGE@I_t-Zu5r=e|op#VfG+^Oht z6XN|JvE!sT*+yR&F7wFGn{BHG2vCwE$dZNo+FNy)I*fcNZo3W>1?VM}0f2AKcxR!V z7iV2I?S0ttpK?$oj$iPsUe_oqN<7Qn?E=Q_hrfSK;|ui-Xi%^zApTN+f&Bqq@4?(f z>xHe&_-gt0!n59S`exd1UMF~1)!tYp2=67+ed5g?^v^1PzufXk)Sb{r(~5gw^TT}C zy!{-B;fBGc5!dMJcs-L4oKZ3On}1+bIb_0vv2p1KniSL2YwObyD3jV!`iEj>0gqvT zi~9FGb`VjQH^yt8mLQ)$6GEFuFKb^&Foe!@*jx|m6uKknRi|DqH0@o z3>JXK2F>kz-Cwte%2GIo9sqqo{&$T-&EuJUHv%_#5cY*}OShWaVvnL;7?5^pf2w+o zlCPAUXAdY`ceu4m3$$`*sxDcwUb&(-!9*trtPjI;1=SY~mN|Szp!9`%{lV!M^w}SG zt0_#8Z|ULm>tNSF#b6UeLV)6qLG<4OMVij%Ew?4zLaEj1N~reSSnjgLGXD{;JTEol z&)Qp?pF?NCN22HsG&wa0P}g_o1NbKVrRUBqPlx84yzR(LKe)bUMdA}j##Y7hNSD!L zr`n3!wR5FtO~(sDuLy%GyS!z>T~o-Gt!I-p0Z$FIg!%?e*I^7|iCBVCO@q6=qtk&g zHL)0IW=F%RDsI(@{|rqJq!<-d@C@KIfQ4JTqy63n|xZOW!}69`+h>F zJcIHA@!2w$xx}M2ZazJ451>a0|H#M*`;;Z~1wMdYEs{>tMV7+M>7c&?Tqb6gZk8lvv~lt=85 zw&{kX1E3LnW%HX&+Q<>#dIGRAHj!A{p6XL61a30491N^@bNrD0F&9#^aa^XMVn~6bfo*X(!3`TG~Ebcr9|^R3Y>uob`_Qwqoz?z(8cOZQ&Pa~-AFmX)a2`z0O0 zK-$K#bYy+Rx%?pS-W4@{Q#b%$JeWyT|flUUv)oX(lci_d_b{Ni;q!!vr8=|lH2A!qZ zQs{ixrT~96?bvXXy+uu?r&Nb(mjI4od)qIk_uH;gfk^g|&JUS|C?7rEZAHaS?`J2R z{)NkNR9>vZiELB>D0TnpN!M!t)y$&tT7=EeL)@D&E<(khF|tP)IuMOpbrRuXgHX zO1G3TT)2+U(&zCXXy1Rup9qGB;J&gN+zRRM%oa^03Y;4nHS@Fx^v>GmNti0NKEp&N zB$~L@TfUqkm?`&Surfu1r+Tl4@E5^7H>eS`LNH$J)wk>Ku))&rI7m@c#m^K|u02=S zS!@?YacG=pC{fosRL)8pwdbtX8BV)KroQ7O^_kn$s2?bxT3o;47Fl$?FET#Sq82>L zWwm@=8>D1TdgHpn@b<`Ng1U(p2c?aq@3&2_Qw#;lmbedGG7p588%@A1y_d7m1VKY9zDYn1~m zS8EMhiX#8~*SD*v%vHSUI`>IYnNFONLPm^;$2rqb>)X7F#pi$?eo;PW-glwYJQ&gol1CN%LSTIMF=7wKE~ z#S&5h3FeVQe3M3TODNUhf2R(+jf_rs%3^^J1{rg6>DF6g>PwYbR9pm zl*svOf!G30Iqa>%4%|)!`L{|djV!z0N8Exe8ZElI2r4f+{Fpf~oG}2F)`f(Q+nmLM zW!U<7UxiFsM=tJKdDMn^x8%Ozx(cRXqFr$Rm7=E-$kFES77?hxd%*#J;uupOz}x56 z|K;BshZV^Q0-E3M#>aqesrD(byJiV4?1848x%2K>%vRY}So~*iYpCe(sc2Y6D7kiK z>yb4Z>6J02N6aV0GTE-*Vf~fS@o%}m5TBW`x2~&sQaf$p(Ow^L0nlr*5`pg1F7FF> zAXVC-|0r;ljjM5noEp|olBGq``Z6pq@|~hDsQ&3%6}IaiX4JR*Y9t&{kHNK2q?7FG zgeqCcj}@y87v0t>6tl0WNV>YVVU9eVm_6V0u%7xhD3YFs5{j-u;=8-$aAW@tG*vJz zK_hDPkmUsfu-Xb8#26V- z-b|*r(E00R4roMFcn(y-%HO8Re`Bl3YsL*P_(}#I3VQvc6YNdy`-7-TDcy(*(*0 z+wc=6@&$0w+AZ;xFvU}LwKzG#ZhP9=y7!3ODIeeMQvdl-gGWqL^$8EG&TM0ig&M(cm0YK&8lWXb+bqEOQ z2V7?GT4{3>>b<`aDedHI)B)ENY)BT_`(km#>>9(=RU^)mOh2hV6t{QDB!>z6aB5#vfLw-Yoq?6jKXwhjd;OHV~2jekN z?kj6_ouLmkp2z4norX+MDNw|#-|ABVp8#(%V{v;$Olf5+uf0(krHL_8YZIN^B-K`M z(iMt`!J^%UAl7Dyi3C-G0h?o+yI+}FwCx?nj5Fhs&IWI3J`dSwSz@hy=LGWpB64Jt z3yRceF2bzgZHnJ!YOcmI{TydN6g5-d8wK;sEwLijdwuZyq5qx*Dq;iOgCTIRy_4J- z1lx=5qj*|H+#{s(~etB9g4aB zoOW{oFe({41HW4%+2gh??6z9C@b$`+hnCM!3D-hLl6kJ{ABUqd-VqWTC2&c%N6Fbh zGb(8t7B}ggIXjTy@46*l0$jSDkyeyLd?l=RbJC$jXWQc0^x?X_Vg?aV`rUl4)Mr%UG0R7tKL_%Sn~^nnbkROgHA@GJ;@7RR%Ci`>wpa%{77k< z{7-VWwldDk3yNQ{8SSb=pBip1?nzSeXxhioU3L44`%e*PBiPfDlb}5?~iNuvj|&xk@`*kRG3$^jl| z@w4Xg7RyKY%}CszK*tm0j@W!-4q?8<#_J}6V0WmX93~fYJ6$uG;=0>Hc%JEZqNJP* z$^d~)%S-kyD(MXU@|#}kIlNXdn7#S1X|%oFSGqPB)__@xJngGFqPkgV^N+Tv*N@mb z$;5csMmkBTt3J=%JsdAu|25G9KNOF)yQfN5yN5JFd`#Dj_!C)`zViHeBVTYsjkaO- zU{_$b5B9X#!?q`UaL}*YPcCFmNRQjrE5(9sF z*p!VL(`>7lOmtw%t`iU9-NVfoUxM`NdCzD$+YE$!HKGTX=LHU0|J6`kk(PLD853FF zoU_zyD+HckaNrtxME&7XRy9_$CFlJQ+u+k(RlsWy`o+Qas}qh)zuDx_sC~uUBU8p9 z%Xl_xbmYFyWc!UfDp8M@`#U<;@Of)!5!y&2fix3`MV$XMYLEWomsGvq<4^U3c_E)~ zRz618yRE#XhMO0;!xWL!uPj6KA|05kSL|f->9QI%$RQ4YE-f_c0P> zqI1PVNKsLr@uq=j?|($QT#6KT&0B{F9lPI#pOh1R{!STNBdhwQyF1-v&EdLto0b%H zq~uqII-0E`(WcOr4G$%zk6hEOWOR>VYw5sSXVOUpD&BHkt4$cYcD=z&94u~cI*(GT zm#W~w6bzkqr5-^@pumYD;4o+2&Jn^R&URjWPS0=oaBBkBKtIb5w16Oar4TQ6%wUVKz!9nbm?!C)>O)%FDO65D|i0kER&@4?QNgiKk`$UX_2(p_Cr4o zxvFmmxab>*7FE&pWi=O5k)U20Pt-c@IA6i2d&v2JBZh?wDQaha14%`FXSA?W-#=)Y zr|UWX!{p=~dp36h8@Y`HB@RvyO2q3e!(!-9+Fi*b9!e(wE|#udkXW(wDyFFC<5}#z zdPb10R$Qrvs4~!}Ro<3a^9r^fXfjZ=4#?9>`4t!FsBQlPI$W5j<=Uf8zOy{36 z3QY7Yuj&bMh8(>-bnW%v1ukl!;}zChPUM}HkO$CGQuFL(yJzUuSmi!$>JORV5SQLR zM|3k1=Z#nF=ZX1UDm~#DOVW)%uK)Uum7GrWx^=ugJ}@LGG}x&)n{IA@_zmA?SJ z@6~Oj9QGS|w3QCW33;^jG~2Yeu1cR-s$}n?L8dA7kxlcXj57lymMV&E<3c-T5==zTdG#KKLEL`mROE-`Dbr$3K28E)K2z}RK^aC z1N^Yx(OpmWE9UVdD;Um*Jyx@U$}8?HL(R2sr|qbKt+7B}ID6UFvpKiFk(*LI1k_^X zh~)&*?&zu%M-tWjtE-7tp|s8_z8bvb#|=hlIXtz7?R@dw_Kwb*WF1^`_M{GTFl>=<`_+p1{* z9?d(mTO%+Bi@LVHwU9%tOPJ(c2Clgc+@3VyFM(J`x5B0@OQc8i79K^0m5x*T-BsoCv3WM@W5B+|S1cyLWC-SJSBn*32yR|qqs18k0Ql#@y$>Y4{ zC0TfhfLWaX@<|U18FsEb=WNqV-Km?_D6F9;CEqabo|lEFpAIR8qVlCqav%ybt|RB! z2JjO(0MTvlKak~dNO;CYEfYVtcIOczp8dV9VA6*W(w#Y0+sJJra(706Oo&qC^M#q{fJSU;69={B?&TGy)e^S9Cz4pUAf=UGLDRww&zUS~uN~h;D)<7>krXk+Hp{O^ z4+M;2f4*&G~F&!rW_NO_4Rm8dSg<*y%1nm2{Uz;(OC(weo%1&Ft0 z8cIHoMpV1KdPUcBw_|G|v2Pk0GFAX;>w&?f^Sq5Q>(A$B^2i#qb>fM7z$^SZ6NabY z-dSgCh)Jj9fy4Qv)=LB91BS@FNn`O%wQtb=OZLyLJf~Wt8}TiUF8${fOX3ax#r-Ke zxEx2prc$cA@1frp9J4cK1o-DNfEQT+R!G6)5TNV6eL6EI`S&7f%8cl^#6xDD&L<}4 zuCCe6-550Oopw|1+nmF0oh@Sh^XKlHeXBY03l=DrwFdA493RX8E=-n#f-2gWjOOD` zAqvd}P41L!WwLjS%S+t%$_C@WuwlZMkrI@t2mEC$6v9GZq{%eo{j93> zzmw%IyYrw0uvcN1WB4kN~{@pYmi4m6S^L^JG5tmz5`Q4Ju z^9zH70uJ5#e3{TYdZl|??m0PsO(@4*W|E2R1!D8XT8x{sOm=8q)v!C=s{VUD&rc8A z`-R3{;Jp_$uWwWj^>?DgM#s+BWgiY0t>C52@-Aw&TvXo|PYor(@nVkGv^*mT+8ijd z#thnWOu(mb_qV{&#n)YJ60~Jk%I@2&ucb4qhuukW^gv$FI^|Ld2az?Scqz2zCm9Z z_Y?T!)wxg#9t?LGIr{1PLruF);Y^)4h`Lk*SbEpvrwNYK^W7;a*C%?UVXthb z&Zb`C-=59$d9-|)==>hwsH+GTo30(%q?+hrlJS+Pi;hk>)!44bp&@z-f@WdV3$>u% zDmpa?xAYx&dxlxXU&}}_eGjjVLFYkYFJGal#{Gz&lWB|M3fOE}DfdaiwZ#5W%Y8Lv zukaeNx!SVLBZsqSwQE~_HjzD#_7N@}{*}UOpUh!#ow7=0;naVsqrtW2lLnm`DlYHA zIyJ)z^gmQnPK-tP96Q%oAkeNa21o6*J(MD7@(ypA=0-z_$5!%;K}QC z@?qjTEM|ldPIxC(bZED{_A69GtoN-P;bBj&3WapS9-KG7{FEzHD7j-g3IC?CR#=eZ zWR~)d7B8^!;~+;OhGDT&qPN33A;kQQfdK#RE-G-`idBwtb5YWfXz2czivE#VEegSy zTMiedy$$WL+IV@WQ`d|9A$eZ*R=xzD3J>NRY{7#w;-Wtrte9FRu*>Od_#8AH3>rV1 zjm2l34XDH47L2D5#y#6qX9tvKOskFX_aDKRvEJQ?oI&HjHl$c@U?UNEyHC1Wd&<3? zJt>Z03@~ZF#sulQX(VH4JbMv)xLbYYTwN^YIFomGyVPA*;!hpsi*#mwT=_TR zZ*Qapj&X@&+R)ps_?dz($9~lIsyDsAjCIxI(^{E`ekUOCP5ujo@A)S_dm`t!Fb(Wb zM$q0Dpg*57|0iCfvvp|O6B|L-iLzmp6eN!a$oD34(@yF|W1!+rbZk%K>t({dz6a^w z&ni$tNOSZ^%b`uQuzb2ET81qIofq8~Tt^cTuqh)Z$`H{^{$^bXVwT-65pisdG8CyO z#o|My1NoWdqWVM=A8wE3*1lvxZsP6p44{K<*B;;e73iVWMV{}pSU^MmR8z%kxH;G@ z96%ERukk2_P2pjPTdP%4x4Xy&?HVT~9*#Xr`1-YduNBZO+ z*(wr6_IB9(5N9o4quOHv-2~9|caUg=2=<9l_pe&aVsdO#^uEVKbIhzG3qFL>kg7%H zW8C4kK(Fm^8`YaCZ2iQu3z60`hRmI=LMtg)iajQhgb5Wl8SAEWRd&=Kqen~@8Cp}! zbdxNn{FiFYU}Z<F`EeAdDO z17NYJq6@X~^PQKN1kqTrWC_gyI}L{J-7V}`?Od}J!E0Q3oG7uo4eh-fF$e(7oJ}Ok(J8msulJl z=JzcD(D^G0i@3;BMsx)_cjt=@M0>{hF`2P8a({b@Z%m>eyL(Oub?%}m)Gi2}rnw7E z0KsEkc~qXWhRkbZ8Ek&V)uE<5;AJA?qYseFCkg;xCiF<(Iy+oUkHoWi$E9DHk$+_2 zk6s!f`%uYa?w36?Ao|ep2(xnTe{yqqa_%oAJ-Bp4#pfRX2?l$-zMqo%Jy6|0zCMqE z!pP(_6qZ;{sBJc*%lytHCHa^aefV^99wS`>pqLS#*eodqh5Cyb9|s3FWlP4Mg`(y3 zs>FQxoHBYCRJHq79&p_+@D7h2`|M^Q-&ubIq%}(=p!(i4n=_U0isul-ERxa>0?ZR6 zd%r1WRJ~vu)8eN^_9X&*xbth2#kpL?fHb3TPWTr-@lm-F7NLnO>MJP+o((#n-kJoB z7SNSh^n6UH%*9l8h3!cBq=H#48Jp<5(@1Yc{`Fxm0+X9|PH#bQY76xp>0<8}<-aYj zmandKC|-lTROGy;MAL6Z&YXUewY{a!ofzX{8ysqTSHGjCNQ%hNXK`nk!}GVe>>A5X zfVKF-cPpD1ld9Om-~4S4an`z3U=EYRFAn@`e;DJPIvYY@waX9IxYnbLf}oZfGg~!d zrj8~=XEeCg-gCt=pz8ZjN_27GbQ3gua6MD9e|p2cn%{c~*XTus!gi78dJB3A5(d+% zGZ1PdQW(rjoPI#As3@3Qvu7@wWO3(=qY)OoKA+;8>GDZ_1j3O2iE z$u&iO*h(HaKc{^X?>`}WgA-f{sgphtZp77^1Dn$aHU()~4GU|@#XkmmC|1#GwG*Dp zizwwP-J#O-xhCo^s;&ulq*853#5Ib+6I}f225VGD{8wc&_m$aqg2do9{>*e~C&R|| z-bRgIgKHlk+6z>}O(Eo1MM?Qi@!+dUHBDeVg0aqJB>dPWE=z&XavWesYFQvc2)EV$ zfYl2u0>dAJ)++=_(kDXxSCtpl)DyH7^qE;^y-H16?wz0KZMX$8pmLwXa*CT#f;UB5-@&;=`4Sv632dnn0 zlXNVZEFv?aSR-j?lJ8T+ac{zml11R{XK|`Ab*I8V26LUA*1iaw=r`sLsqBBXNKC1W zv0C-LRkqU5C0rN$^eEo{j9oDjt@>S)#0>sh==7^19HN<0nDNNnF+8!YI!02JJz74g zk~ySx4EEIGd)c{reCBBOKnLS1E+VT$frWwoA#1P*8;T1O!%Uda%F?5)*=z_woeLhLh5nV)^7u1TMj@#kx*f-$&CwuWtG0b|Oi*t-h?~7*IoYdggd<%~91Q zX-L?FGOV^Bm}Hqvd{8z8`eJ5VH!zkq|I~VpcLu_Q8uIP(EO8kB8Cx2;Cxd?*bh-}q8d5)pck%LW>Xu`Z{fdaX8*qsu#_`3S%yZh>X@ek4XexLu zA-?on&*S`={FXzBiH!4zWt&{&8<{9T#&L`~g1|6a?y7;PCq+5q0v1a#SzuuI`B8Qo z%zUr1BMUkP97SSSxINxXmIN`W=4AeQq4k`p9{ZgiF=^H;kdr}32x4_$=ddIM{>`ZY zKqBi&!poB!d8s*ZAL_L0l$zIdY~TDG?0U%fBuv%lFh~A*h7du~-zWjzDwvkKT&c=-o*>$|=}NfF5)( z@K-D1+evrfGLi{5V@}uCz_p41spqh1UX>hTy1yOp3*2s&0MGNcDrw! zi95F!VP4`mY>GQoj%%2d`c=G*rZ-PTrbD6v`xc2%E`h9j14|ZjYbEfnj!O$C?cpmX)EH4s#S*e*F4Z-HE6qmy>DUYu4VSk*h) zC4wYinj}I8K$eZvU6WFjgMlfNlCEd=&XwVYzEBU(YsXB37CFS%wNPwsl}NCwBXH6J z%c92Eqm;ZwvMhIbN-jTY3kc{RD=}*_JX3khR_LDm*jY*1J^$#((6E1DRTB@?QWQQv zi8D)|=s4SHRDa*>>=pr;k8E#@t=RUwF^9O(aXw@Qb)cC;-g@#lUal9r>#dbJk#lZ% zc+Z8gSZZ;&fOm3FV>hVbTt|y@>L+lU&rDn~PHN8c&lJ1)6MIeY9;@2P@70On)Uasu zsKph1$Cm*A%ku3*9&RyQbI}EOOkSoI@^;i+4G&X~MBA7%nf!0ip3i&>ge3#dFFwS` z=2#wjZ_IP`?|}6ilhoy1=(_%4-QvhS6yK`cpR)D6>=MNx3%iy$v}A9o!(2_`w&<{C3L%^(#ZQ$q+oo`3adq4XurmcAOO!2fx-IR<&X9W z&9~JGZ7TlWDf8yMo5OtY#3$itIC#ES*SuGCg+Yi7QGzwr{2Q+6dOpxF)scF{H;Ylk z8J>nZK~fJS=I^P(==*@Uwmi7n(L>}hS6#4;pm1^`{BqwnKsvEhYSE(Xpw3@hDejJs zfpWHVzP7~QU&7v>`2?pEVGn1p7SnbrdeezS-O9xv|4V5O7}fcPs+P@$TCtCV!`?X6 z5)^jYLW0L>opp-ZFTV3Y&BxsS`DZlbBxrEWRI$*tl|GFJJWEiv$T`z=2Mk|c-!AP5 zIcPGSca%?sTFoEZ)HVaI`?UX#KTx&wI4uUl%|2P#KVC0HPP6n{fbrYgqL>}^u44al z*C|bYoYe%MKo-9HIZ8g$4Q=Wj|k)x{`TPJ7L3xva0SE1x@J$edf9{PRs! zRyG)r;!&%#go&e&i2)|#%YKSrjqv*j2=1{Uw9mQWm`7&`Nn1z0qv~OwL|+l$)*nI6 z8dx7XsvmR>AP4`rHzlfbu1I(1Gs$!bai8dQB!x#+MZLjlhIHSkJG44wA~!EQlyDG8 z-EUhbSYQeK%9o)_JgZmMt2%R0X} zso>$Z#IPt^8+!|h6Tf=3Up@64>(n~fbAF^6jY zn?&hJthEDOP-ny#W=8ZKliIBJ}5eXHQn>C0pn|SJR9WGex={YRKB^8 zI_^iTn*VMOzX9!K=Jr;K{u_6i>kt^sQZpHsKKLb4z0i&)T>^jcQ==6-m?eI2J~TOVta(1bzn@{}$E&Kw$3-VHM6U70)|o!H<{1T1I#_*e$D~C0uD2$DXk-xZJzb8Fg2G zle}kyyszdF2GhkwXDp?Hped=KNR%eO2_T7dtv%&I8}QQ)uhu|7D0gG$jat( zvFU^4i>{o4aur$q6b}nSJy2ho8kf$woc9Nav`N9U+b) zc)IYU7-%kaaSr{um$?UCcou42$U&3UN@+IjQlN0HU5SoCZHzWzW&W|M6hRy;%wF=j z>AxXOQW?I>;(7r5>eU6IU1PfMzA?8vsPSomab7>3(b?gM}8nw--fqCz{iS?Cb}e^Q0!Pr}VhQI18b zXfIODRJZd7RA{*#E_}<2h`4CY<0w`(qIiGvfqnN*(|SI6ofab!edU8q#TqqeXJmQ4 z+hIYyRZ+<1N7|c9tFC2a9Fy18rqydja$W`dBWf6d$sfF$F*`zS7x z_GeliR1j1Xi$gi%P!~A59$;BV5F_VW>ch(7>(%eg+aHnrP6md(=Isd@|3}f8heNrz zZ~UCEN@Y7G**Q|Fi0s=Kr&SV)%Dy#(?7Lx>O13bQY{@c}knH8I5!HQw~mKOc8!>$ce zm<H)`yaLSSoh*>EZ_mYF906J0!5b7tk+s@awn}reQPxK`t#X5de#mxp*~w zINH4bR>KliAEc@CSsfE6*_x?lHj`vD5JbBSUgR}s^1m#*-`n(0EsyK%S3?-LmXF~b zbvx;;_-z;CDrAY9&u~a zL_{b9+%Fe^k4#9A4Zz?sX~xo)*i@56k6RYtRHqG%P}?E0NNX3%Ptm55$hvye0C2Wy z%@{J0=q9zREiTxXW|XLBctOt))3XU_R1+8Cx?i7i^CQy5@-5}Y<@0#cFt075h#nCY z&|^7MjLtkjdJ;5A!9H_M$BEdK8A6=}-6tcg9=edey<7>MyEHVaYJ{HC8?3*X-Ts73 zLweW;jd6a9zTPrqQv6@^rHscyfqiCsfnKvg1CvQWOYoz*@60y?D=n!>k}s|gEnJTr zF@P0SVvC||yL92Xlip>!4hxC5s}yn~c?CU8uX<^AXrYaT&UziUePL0@{-c&;Sj)kt zyCIo!`losWj`z2;PDxrzoKJh43p`VZ{yUm)^ngKJvqcteG=fiF~INR=$CfnnqP)rncemQRI zs^eL@ep8vt#R%;FhUcg}P9fVRGbHUyc|hTE*UFv4%UEV)l3yMdmE72^$)gcquIX%tvFYggZg`%1@Fwf;*64|o*MtHgM8XQyxeMtz4w`P zF#mz4EN8ObVNptJ*6Xzbhq=8MPMDZd9zCo~n#&i?h&y$5l zdoJW5RpEg+)AcIE{LDal8}myxxo2O&_O6;8C}qdl5DyzdLc{l^W!eF-&5z9H07PH< z&1|F^-u+>f5VvBp{$Qr?BUmfPtw{6o!gaEeINnvdzqDR?99Himp`AlyO*w|uZfRGD zWP_l5^pH)X@V)8w^2$C^OBkmUTqltLDXdN*_;T?6x>4jMN`~Uwqhfs#$EWxzf#}?+ z&yo~pgz97VnL%U1Gs1VcruR1=jG>N*^uM;F4NmEf{~+IMX5X7?EH7-27);Ul{V%(s zYb{}&K7k$i7OmZ20DK;?^mnLD#s^*vNB3(PfIm7Zm@(U9QLops3Hlq%xEyg2ibR;T zd1urHpEl7eQSjE2oEsmfIYy}HRqnWr8270kIv3Mp4wqGB$4uvQ+*$HSdw)d;%@kHj zlm?>J=AWNhh??yeu0yp;8jcxawMv4o@h)2XA+=<>Lt6h$=(4lX6j#i?MJlEe?V-aZ zkAWWzz|py3v{dF(n|{BFqrn~uDU3c@AB2X9ij{5JgMJk^Jodh^_V|27rnl7% z;MQo%b5bScp}AUryZ1onowXYd?I~@HNbc!zed|klW9F@b))dP3WU^mhlu~z5A(9mI z^w*rRS;ZssP7##q!;1buIo^io$DP;4M!TAZZ{&TCZrc%dH1J8_F=%*h4jtG2t&LXn z61bvc#fp)R72r*G^HvMDifrv@yBir6LY^w$YxPb%Q)bhA2b89+S>JPj?>x742KS@Y zV^hwWx&WQax3ZtvE3Fjut3DR^3tsr=xM}6jIqaP2y3Ai_!%7N5W+Er> zEIfF?HVM@4M9j*Po&I{T*yKbSQC_^n9NLc5R++@`W!ux=&(53CvM$`S)w{N5&JNgh>kKcajJb6abB+df);(w4 z|A>wXZ%3|uEa)mF#Dvj(T}EP*mANDPX!|}}z$Pu}@j^h*zKTG>IfP($?ajZmHs)|w z;J2=Oow(!9;om%Gjx@EMx^H-&6lIcJG&QiM65eS}nG|Q)DDe87b$=P;67)vft^VPu z(Jmo9dhP6W_0B<2i8OJF4JWQmUg)~ed}*-=f*+DcY|(n&6wAQzt!s1_hKs$6KCzt6A2I@@VdU~!?xx|-6Z!RWvzPCMvw6?f{*?2aR+ zqlJ>L;uZ(YuOqfH46Q(qKU7YX2p6i-H&ev+eylPDUoB5ATq#Zy4Zm&QUp(m`K{%_h ze9G^RmCh2qQp%|6I(*w|H4oAoUDn^U@!i|j^?zahJ{fNd*{{r$v@V9sqvf9;T`}KO z-Ynhgt$Ux_`d8iJmy$u@C$S*!yXY$X!-Qj>DU)ar0Er4)?U}XH&ogOY&uKBWN(xFur(2}AVtidjqYk3alYyfb*YvfmB=6k zm#=5Ev3je|QIxIl_q75-Q+Dmk+?oLU269;uPZa%@gX0rRnYNL2E zn&C7d1oG_TQV`oy5e7=`)HcD`gh8Po##0WYl30J_Ua6; zF9kLIaBEeXcO2&xY857ENoZZDVHuwa7abNKV3;-p+{Q)AMt14Q;>1omt&BH4ry$Dx z$QnDm;%8#b^niLAD=)Z20{3A%YrhrRHK28&g*Vdou^0Fu)_gs3t>eKMLaG(-s*-2| z7#qLa_?0(}nJNOYAz~fE<@wJ!(XS$8Hu@KDmhYI&d@@>m{}kB(+etAisTl}ykdt+L z0~851pKJAyf{#lJ-pJMQ;UNBwwVgD>rWjy3C$0e{Nsn@eO_1 z@LMf2<27AW^+ygkK6T#?Cw(E9Rbto$G1wB+=C3b*u! z<65@rn34R{6J$9}>?vO$J8o~pv-C(NCx!byydu}_^&_uKwT`aC%RgMLNl<@|jp9rF zE$1-u5QQG`2$Z#>#FTy$v?*u!+M7e;Q(?G!Pe{)aYvpT|X*vE|m+B5CRJS_C;4I#w z7h8r+d=A>VqC`B)ee*V9B;(tCQ~^Oj@Zd?)U#9lFZ22v2d>$?H`h~5W8g^DA;X9>Fw^!Arz8a&doX3RN4YPZ z1YEkw#Ll}K5G(uGK5Uh7dvZMv{vkH|M=YMToI~j-4}SvWIZCx$f6TfE@6ra#@dNja zm|5;=rAsMw19G1EO3Mm*!5MC82GPn1TwD1wsE9A6r{Mh)<^zh1){-S&^R-^5eXE1i zStWPA7l*dI{f_d6#D5Ebnz4M`=)?|fWfN8^Y*ywB4{!pUEtxeTK{f%E}T>sxszMUu7* zmwRzPuvr(mwZ?HBMk`X zCNy!TJ=8)=f`vBFYbYtr2I}S?ObBHD7mpBR(&bOMes!MrrSf zGX)+?&s_Izxf6yiof2F5vDbc*fK#aVo>m(w-ny_iG{&8kZ_r$CRoCUm7w~g!*@@(JPPIGwu`Kuj50% z%~xL(GVK59ir{m|UHgGk+PT&$>A)sxJ5~>$eehN!2}N7h?cuAqv~qs)8q@=S$4xv^ z*QF;`t%w)=yWqzan`?H4-(6s_v|>gNC42kbz|o254AaTwx1v=STF3vz-ZbdXQqW0O z^WUFA)m*FomGvXZG!UU*W29DinBcb@;!wvho`S4c$RsOJ-cubkmh(Lvgl?*!5oliS zBk}r(ucrS@hGXU}>}s7lKNwP9>RJj&1;cX>5KmV?AHow(9uLztGh*d*>!_o*W}}Lv&1$+octJ^c+H4Q8(>o4pI*J zNW{&7O_9HNHIE7^AFIzJF3OWJ>Ap(j3hy-=>@TZ=2ua#=|7Llk z_L}?5#=jgXW+?4A{*4x1tPVdzN?U_9PS1krKfTdjfXUM@q@S~X?EUq|r@A)x6LeO{ zv;8lze(nr|ac+?$2fEHcK~{}Hcq=$Z5lE4>E1kSMxo-=yZ;tbU8*H-OK242<#`n;te<{qP8GWc0}>*pb1O zEZWo)As#6QUIWZa6i7-w9to`jfG82V<9E zd2u1IzXu|L{-fi(aRo=w>9?Y;>U)XO371<^D8JmfcaR2R;@-?_?Q0JyCiilmf}g|u z2MmdsrQ5cRjlMk?-&zr>ob=K;LgYC+=zm6E>M9rJ#!7?79tewOsu#o#V}%iPVO?jxbJw3SU`9uL%y^!ek_64k#cPLaW+!YKu z(iIpTpGq`=hKF|*-)is}a7#Srcm?DlwLVf_IX)JvSgQ5lIz)c>mXN48=iskR0S_M_yoI`_%we|o=oC_X>@LH;+w_|1^+Sv*O*` zh7B@Thb6bd^fhYj=pI)3+&@Jiv>aL{%v0re_n=LapRZ*Y{pP@OyP?)sf8TAc?i^w( zD+JE;E{~kW==`Xl_dYE(Iwu`U=-@$m9{PTptnfH`yL3ydp9d{%pf+J}(6_$bqtZU| z)@QIdDL~+{qJ6W@#r=WrV+5%=JHG?JT@m)b(BvcUwbP3^yZ?h4BRQg<|2v8`D`Q76 zP6e!MGcY^Xq}BFFtt??Aa}DtU75u&ad;8a-BRpDwR7v@&*j7BBP zt(==buw^=uwC99gP0#;E6o*{9Db(xwm`^bO@ygWNBf^X6C%$b_iE0)6MLfX)>o&_P zc$U#&4~q5Uu2`tpeqht`(_Ih8vC+FZCdh+95gC3c zibp)pW$n%U)BnwY)sY2^l3jTRaQ>f=n<*DoV(zlTt8XE6_t2*>US|K`Bg|ynw6|ZKnelX8mK3<_9Y`z*8o+&>VRS#}6WXAi>vMPpe%@+i8WgGpkO%>SZ zs8z9*x>;jch&U@;3$qA%RdUj0KC!yeY<>H$;V;W=Z~DMN%}Gu2h{(AHyDa*{-xbn& zLCbMF@!|M7zdvFtfF9EP+w0|5Y?>Gmi_>yj=ROzH%^E;l>UQdu)=;%4f3U4*wq8gJ zXT!>I(~-Sl)#@i;w>7s}8&)-~j4(bNa+z)pU{j8^%qL!eFyi<%B%?X`;DKyDc8U!n zzTu>?tGeDLwUF!>TXV4Pe7Ks-jX5!iT@(NN5$#JhybQ=Xd5ygm$x?lAVJ2N8&m<|@h-@R`$Ug_FisgMv%PiR zL*x}Cb-q`>>V8}2yG~{DPC;{$%0gUway09c5g%W*B_z7|df9o`$LVd5Bi(ksw zThkGk`e63?gbKd%Of0+8s3nm|v|DzG>cCb%0_DL6Gs4%DqI(3| zm&p4!3zN$J^W)>Q%l_bg;HmqdW#nm(@Zo!H39gB`L{wts8H{0s4BlLe-?NUjVtcfx z0=0&@q2x?*JHIUtcxLebxIO#bM~jb;PfpV9CD2AlB1*4e`2$i$0m+Ky43wL&Pre(p z*pJjs{jX5Bv_CJTh4yd#QZx|O>j4zR9>w$CKHwfXuqMcI)VPN`!CR#%==JIoWApsPN4h#KK(b1`{)d)74K z9?88@2oV`{QN`vvy+H$WmHR(Y-F8=Gg;&8|upgnVv3Y+|vL|8p-*~Kq$Qa1{x676j zzV6^$VNXOlu~Xgq{+Iz`=y-mgm`N){0jCe@HtXPw+VYTNyH2!jPFX4zqHW*oQGKxC z?~^@7Ibt~#8AQo)>+>ihhja!zFSxjK49k~M6;oBA5D=xx=vk1e`Bp!7)$zSeY?SI` zYsX1$p0?zHPV3dX!OL-F>o=HAtS?5J=L;2N${{2ao)F~ke7`TR0#puTIbe+=mp;P8Edb4 z#w|nc9NNE<&-_-ItDWO2BH;PtlrPpypG#G-@6c2k<#m5|lC_Vo>2R$$;jLb9I+6=7 z@5?!Y2_Pl3-e^0gQjH;JL45R2VLhHLXE9s>f@)i))$;cGN29}z(wLx|W`-B9AGaUu z`QIgn;r%-FFr|)oUMs!9~2|W&u$$T zy6ion>`42R>^mpYj>Sj(Ns12Wyx}&e3zk&`Zh%StM;U#Ua~Wqthb&0qv~DsjQ4zm5O=$TJ zt%{A~ae1!7r^HXC?P$Z~jlo}&Crw3dF=|35x6ecYLKPgm9Y!{PmUQsTEKmw}@3a3G z(Rdj29dky-UKREM*)<_rLN+!Ep1d!>+*C2dsOSxR2BN}E6}0rm{B0j$BkYw)TQL^_ zd~G%t`~HiVqz~QXuPbvse0;cD;UqZ2RyKGI>1wa>E2K{i%*(1b6;iQWXB#aCW+NKO~>ZuzsxM z0sW+z@iMHs6#}dj-TG{DuR!n9_ptErjghS;V;ir=-bYAsEYD&C9~Rz`&H7a4^0Fbw zX|>IcbXn6+Hz=ir@IEYTzxC>-I_kPX?D5IAlN~5bm*d8kr$GX$lGzWqdtY-YuZ|k# z<9FkQKM=|wvAOR0%S`axx3Jsi>C#ipX>cwE_KbWDjE&EoNN+199Bj|E!Y(c-Q)gA- zSqx$X^CIPMqWBKw=#WBh)yn1h_XSA52eQ`fgEVCK9(QJR`V8LoCCRl*mrHkh`vEhc z`U#>Tf`P*dr+6$o`b7!{p3mkDP<9(%Bw6+H8a7;P3{|9%t<_2@y|bsh@SoqcncVVD zie7D-S~$P;`_e{&`CdT7s5QE+&iPJA;b25zZtWFE{k%Wq$D2HCUJkmPRiM^7r4-mn zXD?D+%z{=#Hr^F=4BjWyRJO04nZEQ~w@m_M5Za}>BiI(__b`dvYpzQ>%qgqPhmF3K zhB)W>?FH0!G>Bl0TZ;y1Qg{2)4@;nNxqFr?KE;190pn#_$90`O-5!kOy=h49&m^R9 z=tLMRk&{Wi($+|*Q`J$PW=K0>oEYI!-;r9*VdzZ@gM9}#nM<#dOZNM;Jlaw9BQCN~ z?yp1pHI7ZWINx0nV$vk8pz1c^y5L?Y5vIwS$8wHM3v-SQ+^lFSeNr1w9^@svUaz=Eb5QY-q)1C091hM=9{-@or!3kz%8H3bBXF0 zV`itqC#)Z=*6N_#vDaRTa1fgK{ZCcZcq9a2iXVn%9rkIvs-YBs&z0OA)BJGGvN?-3 z>mu{sV7b|IN`=bdXD9oOYBi^RW$(r(nlfCom9V&=435u3vcRm+DT=xvSh2J(v`s3XZ8 zZ4Ufe`&j`=nTPI9G~<1n`zX`zunQKe3N}+Tb(EfnZ{*V8-}O+^&-IXMuHhj^c0>H{ zGTuppKnLEb1|Tl65TScsMXazp#NMw%WXv(v9%Y{~rcRbfsI`xpj2G}J8PN9op#4#9 zxa-AAha*Fh{>)6t8lQly>GJCv9flONG~zs&`Jx9mya30q$a>W>fcC67P{=CN{UWqW ze>pm&!)dJd3r{On2Vwq6J!2ZP0EFU>axSim<@8L7;Jp-x$5Mp?=B$H^_PV)4ztxe2 z@BDdm7#C3IAHx9Wd}VyJK*6q=%Zg^=RQ(!F8OouT$ssX}AOg-6@-jn;j627OZ!*i)blMk_k{(+_Ar~koh+2d2v?rD zq^8|BV?6meZtB_g5VjjSihWP_o(*UvQ)48{##<}1f`t&ZoG)2_g8mk|<@6IbNH*;@ z6xz`B%dLMUcz$1zkk3rMCZqpNQ*P%E;oKC}{%?wWqeIht9wl$SP-g_|q1YBl;Ivs` zTduzvuf~t|wYW~E1Hw0eSfgApAV4zcKP)U3{Fq- zZ?gy4Ybc+ve0R6Q7z67RFEeV8pNd$X$xS5>04`0h5thVR)a)|RvepG@a9N`>?seEi zrdqkp-=yCP`8(&SX9>drgFOcKCu;o`+m`2yWs2YD znfaZQZp-3CU{`jibm3aRHO4RK!%RJYJI=`b<@nAiH{j&jjx;L`|Hs zp(`Ffng@NOWxUU^b2KX3@(Ds;f(%+0RnNQQRIxSN*f5?Z{Ie}gvRvI zo39577xwXz#gy&1;>X|eZf*O4ot*s-;g4HZ8XvAc*^;-<5le#U?#cU2XJS%?7PVL9 zNH9ryG8;P6XpFVAI7N!b_Zo7dF^su-vWVAQ38~zVntjPjeo-epPV=y3>OE^S7S8f( z$R#Zb$^w6orpqP|YV{%I+uwN2!=xa23dH&bmwI)xI81g zf-1>m$wc1sG7fG}YUgo`>{?sZ|IQ+_9o47O%guEjOkIbpfK8l&EDH`6&Q8g(ZUG9t zPPCj31yH=YtPALKVkdJuWk2yYdq^gpY=7s{G52y!BI7A)-(vq(OM((ij2?Y%BEUCziEC~t%$6lFnArL4SPAucIh{c5C zK@(qkJ@AkA5L;wsSjW~15+{ZEceghj5a+OL-tbo>C@3$3k`^QCX-K>U{o$~A-~7O) zf8?&Di%iovWx@|hX7vS_wXcsSCeOSm#BY=B7(0)@;{`CPG3!|~7Fy6B2C(NS5}$TU zS9Zz49+jetr)IaA%!Af0fWxnn;w-r-GIZgU?7O%$25rnTP zmBzS!kQ0yEm7HIf1(z$1s{5~%n0Najc3pX3k+&%%+sP*%FyXPHD~$>nl&*95)}KMd zyRz(}xg=ZB&iYF5Bpz_0{<uaODJ9!{>j1^V6}?jf zoi1%LLqhvdfmMb1|COt`$0zDO4zOe?Px(!{ol@!0CFZK$34aARIdyd}P%7Gc^OPvn zYX;=Cs#t0=RY;P?Xk+d|K*LZaQuyXa@Z;tCx->qy9dlei+- zzr5%e(z|FD8c;knXrguSM0OUr_MP7V4Zao3deZ{BI#o#7@egTGN!(>Ukg6M&S4*dX zXD)KOqF&#fixEz)K3dBYDwEBcQ86k}6$!;??M1d!jqaUA?@criT2P|u!7c)jQfBmDS-zIpqkfZu8Amp}-J39xX?H+3 z-m!CO+Yg?xzIYVFv-mOBYPF}*3Q-}je}ehPw0_ z#Q-YBxs$t}9Lzs8_WRp|x8Jc3=|^i6a%Rol4~xD}_`|9vGo{qasW+u^{qzH5$)*Uh z-TzP{di~8@DST3sP}oFRt0Do^Y()R~q3?4>ixY*}zVWM=JE%pSJCg?Ai89P3VS3;# zQ+(6r8_-YPKIR@b&%k+G_L@ff?99$#LMbQ9dR~f#f4RwQY}hLj61-4<4Fno$Vs^Yc zc_c4X@Pzl&^Z9U6i~k5qvnoAhjyAqlnByZsubRxGW`_vn9)6ho{F(0~J)dM<0FH@Bkx9;Uy$%9`=VWC%X)O#-2^rdvUiA z{eEvWnfkJwe8a~o0&qlXdpPxOw-WT&YPz$zlew1YKn%v~Ic!b9UBi(V_ZeXJt+q72 z7p;r`&bXjLb(JfpVLtmmBYZ4jIF%XCyDA{dHd~A(Dc`_& zd!#HhwIXfZ<+3Eix^6Fg=i7xdk& zraXe2B0bjqlEwoQ&NyCGo$7t!*tpiOpMh1^*0r1Z1-~sb4>Q`M)-akDRFZ2jWnUWkx`p7x zoM;)QMP6Z2=hCd4zJ>3s&UM+6k!@u*i;i>H!_DTm_5nK-ANBv0 zx6wY7fy$`%BLb)Q4t$i8cIevY|X6pYJdT&qQ{T@bRFbnDg_ zm7NaETF%cvkEDbc;r2?Fk?ZmxGyRR`o5XLSn~{%|QV!YH z%CKVT(6mATjSKri^g+GMgC*Gy4U&5q>g3>t=@{Z>XPetxx)t` zU{A6Hv=)WP!czKgBR7REj=%D;QhE>nPG}PVo>%-5HCOLk&(UM|hpl{DGtI^v(ge@# z)sEJ|ek(YOf$_OGue37{EK!XQdVY^}1lY2&fyVCatl&}e<4}3MhH`q=AE{okr$}=~ zxxEi`VZSB>*hCezThXH_=c%Y~iJtlzr}bjPZ#SQPJ*oPCpH-er8sNIaw= zpQ|2_#dw*Zx?`YD70|1ScM2ZTEcia?CG|YUfujKn@R>XXJg=}CAp^XEwgl^bOl6}( zYeF&^sRM(VS&_bj_s4iwZ-MMb>_S7dxx?a3f%b;4yE1F%Yj~mG8_9>7WX^@Z%5G4h%(IWVI!CD4J%#@*zy0mRI>*W(umy$+{S9J?aqUtA z9RgiKhe@Z~-b$jQdL=9yCPNNi9k{ICOpaG-NX79(&SK9PCO%)Vr7A-(nlgib8$G*f zP^SR7|QnASVGUs;7cU;;TT)u3i?Y1i2V97~8hnNYYRhe^s$diFF z@bA?aFd}D$4*aL0UXPj#OVyq!3>1ceg?Sf*Kqp>h)o+^X^y#G*3huMFp%|O%80D%z zo3{MR`TevB?^|6zEdm!$VuX4=ui#;Y_=GP$Lyu`D4IeU9}r>sBZ3vLuYqw>SWiY)(ZeL;5Wt(FF!Eh zcR@%-t_38zLU+Bq6ZzYP11Tz@mF`&^Da@5H2-ZL^Hxlz;|BLD!U#bmk435Q&7WU!c z106PrJ+Q-?7Pc8`tuW+YL!S`}^-c3HVf>AHz}DpfwCdS%i;T}6qp>pFJfXZoPb3dU zl^(BGu+WBBEN^XbpJR=KuwtnSBX23oqe$h3j>85e(!XLt3JZkvpqd|WTg>C zc;M^v8Q!&RG~BCJ`O0Iyp@H3GYrm2-vP@R}!7`|8o28bm?6DW4gf>I?NbdMC?Q>~u>a zAy2UXYq1MTWv=VKQ!H<~!z3~cwq?1Bj(%WDYy9r^RJ~8!-1cbmqj1z^@gBB22hQpW4`J9R;D%1YI_h{(<*$C9PR{gDR? z7d}g5|6SN*J`<9*&`i|Y^pKTI$fjR+3OF~H%p==zpDSp%1}1}LW2hD(881~R_c~6& z-Z}L=A2_Fy#``Q*wuc%R<6~>Y5h?oy=ccn}Oh|toL}&vuL5XB>D`d0}?~$m}tHi|0 z4f&NxKHhImp6tB9p8pt8YPm^WQ_Jg?ItkQ7z*fA0JK*vFY^AjT)DKACv}zSkPzsi{05gGI!ZG_Djm|y*M0vr4J%RRNQqWN&w$Sep2WO1%Cnt zn0>OyC5}}-f{#Ss9JWFg4qG7`?vvU%F@jrmgh|1@XQaJHUFS@#1l0)vl*Dk)E<3y7 z4oq*fP*Fk)E1Jp08ff&ln$EXqN%g?O1v7DaN3$e(bNyP?dSe-1fKkrA5+IWjVdxGF zl454R)TT=Uf5(4Gcy_j(3aQsk+BZ&1VMgAlHRorF4EbE*bkfZ!g3?Vd$k%%OZ27=g zg9zY%*fZIa%=?)rMp$zi@ZU1fF!e@&l+?ridY|*e^=bdUS-4?#czN5=!I=Pj=A64B zCzaY5fXAOLIo_Lg7kg_s@1QZilcnE|?U2E^+vD3FsEelT3zd<*Tgv%1mnHaPPB4pj zv7*Xqlg1Bb&lD^>KHkAMd=Q*?>*EupGFeJ~rxBiAwS@4IXdg@8>;8@llU#fj{7VM% z%xM$v?B%2J;G2N8`QWR;nrwgE%FgfZ7pyM8jUw;20ZvnNdy^6^;!EYu*h=@ZPeR+( zuA7!nX~Kw2`$HSJr@pc|TE0sDnvwn?{K%Zmf@A zaz6^19pvpNV%5+yPTVe)jaoTLL|jfUQ|EmG+fl6^6)IhPhp+Si`k`A6?2C6uZj5hTcIDKs23_}Pl}BKL(`t_GQJ*-f=z@0aoP`RCLa zv{>fmo6d9ud1XI$D5XR`+!5FY-4!CnKSurS?SQv?0I40)ceHHY`ObRWRx1sda2Jj{ zdVzRP&YjMYRldthm4G~uoN@ZsF$=oX=5{k*XX|92W~kR=l6$*b7Aq+%VlKSv+nlMb zdnc!9dsP1uSiyJ_xSHdzBe8Gi+xXOrOCcPrFrmm*S>fvFDGNB4CEa8d78v#*03T{b z!~XT2*L1!>ekaMQeKAZxvby6X4C}>nES&M5a{A!8+_;*U6BUHkNZZ%5vQ=W(|J;2K z@-XrKhhNF;Ey3BCmY$rgdImfbIiK=uCF=g7Km~uUz$pt15VsZD`GICV&><9*XaP$R zRqW_t{b!@)8i_1*TTVb83L-YYMcRN~%2-5VnHw^qSgS%qgiz=$d7Ljp3P>X4aMx1N9;i&|9TFwRdMS{1VPCB)_yiz2RSh&%P z(P|R7Cnw)K4E8!!Wu7u`WnuKjTZhbJXi#0n1VHw2Zfw9r)p zpu>i)kusoIsK0ciceb`y7PV*3!nZB;sODQ~ND*-MHj|ul?CHd1t4$8!%$u3qD3wVUeR-t>&GXBDMp{8Au)Z3#y z-Xj}a55N^3#(M-YG|T?qUNz;J&Z?JG$!O#2#1UPm7DcQW<+9iOUw*%@&^jMFkyGj+ zc%*drpxCLa9(OY=*RO|V$~x5d-&1Z#<$TyOx}^%dPw2E7GnK6a@XTLv0yz2H60A9p zAcP7(crQvU*S%0C1|Qg`ZV+|YJ7u)`DN+&6FRx;0b@#@Mnw)Q)lnidf3eZ6(%aZr3i9C3`}pjfV|qMNP5 zuA>s>t#SioJB@bmP5Fs9l`U#dr4-<&nodQNFxC?hu%zXE>p_vIiU3B=2twM!S+wu1 z9)2MVBwq&kg<`WGYFmtAoyu*B;U_a4W{|37_4=o z7J6z@e7w;@8+m!)nX#)r)f8*D#fp5d$5Pr#E+2H7&{z|b*V24}3Xrg6v|L>c1E`ut$NaSQObpLjH z_Svc5l$Y?}I)^0%dctx%;bYgutb^2?CA9;jtfF71$OOgxjhhNi2k=G(J)hbo>um9| z=g(6o$9NyeXVWcem(MjzC;M0wQ4unZOKjRGkOr(qeykIB0y6`4%b^!hCPF&71og!G zI<1(uTB~=~tG21Js^sijs)OINDn}y!+fa{)n&Q@3gRsY{vLi9xS8MY-^3T@7!>w3) z4B@JfmA`Ma`*^O_{6g{QZJ81klyfXJcr~|XWAWDdhUPy8zl>1*MHrPCxA`agi>+wW zQ6Z}pgTob(pmiG-Lvu-OR|xpM6a^gzvUi4#%>~TCR;O{5I`lhKcUV;doMBwfWwz00 zQ#dU&8_@r-qsqHWYT>5ji3M$}cYN<`$=X@b0)wDGFEBqj#{M&%wu4*I|uSVxAZ_~~2!nSJ7i;7mG!}NIPx_$o5RXnicPLN~cJ+)p@ z!dyD;zrCO%e%Ke5cR$-(Th$4|U;kdV%C987ymv_@5R#x7u%Rai)T%?Nk;hpxMrl^& z4L8&fRvA=Jee@NnMc{AqZM%U>7@hCUlHl;zO1??5{ns3P0U%plO@g^|I#92GE&WXJ z_OR6Q-u~R8+RBguQPyoc!@|4Ad{`(~?%DJoP%J@YvV)@27s#($?tz3bE+donTsQ!2 zpHAal2P*E0TU*T4Q+Ii_Jc*>LWD&p1LK)W#>jrIRVu{KhD0TGY9r$+Z6<>AuqdKD7 zVU56c*NUUPjyerymbHI>8jb9Z6RvN}=}&u=8>lk~&}w>cYK~;%{{1uJSW0wo&z~Yc z3O;aeQ_H^SCs*7Jml02t zJS4LJvV5m9CWI9WyC&qW{5cl7&QH0qd+40CR}V;sF5Xa^>E!8?>~a;g>sIu?LpBgS z)?>b<=y5VGIINT{c+4Ev;5t;To@ZDT{Mj2(t@|9yXvx`F&pWVu)Ql+9?FlfMgnq71 zXR}4{y^{)i#J?vh5+S_sHuek1vWnN`MLtEU>2*vf;qEJNUo_mg~P*NA*QS9 z?y;fXVjzY|UD5s>o%ING_nuMV-oVM)+cP&o!q7w!lKt+@_K=UVoKh80Tja)Tc^@mm zyj*H!%WesK)W&Y-Oxwp;#fPG07IPNLN7ksg`9HDlIHyULP<`X$mBi=AI3e#@t1=7z zwg02;&A*z+qP|~k6xxj&vW1VAKYK=4^?Yb)mpVqowN6;Q?>X0d@o2C z&V#ywnk?Uj{6vKGS763I-78zTg-o^|Gi*262&ngQ0&rpGHSw!SQP}qrKV@(xVa%e{ zH!Fnu-5Ob*dO=}otYlxC!x+3pB5aOLKy_`BG3$Z04^=o4;p^2ctZuzteWt+*y|x49 z`x!$WtMXF1e^@QS^v)UL*G2$)0jKuWB}WhF34(jfMBPHhCyz75Cuwge6H%-_ecOZm z0@|6O?l))=AL}>jzTKF;dM>AaCiYXF)~=lF4Tbu_rS|xS zb}I$(6PCweQr5kh5yB$_$Ght{d#Uq9(h;438RF(&2MF93T##nHCu`EUVsjyndA)VS@qVB9 zKJM-dTZ8pj;Sbyhbb$4>Rx}| z4Lm7T0*{%~NsEEKSb+T+Fs>#B9^=%Di*E``Ts8kkif3JR5R1}Pn)!g7Z`*6H*IY*l z#|LF|s>Sw`RBHzS*O>LO{>vq0717{CjlvWbX7l+2&mC*saEn*FW-?Q$ob)AJCQZdE z__vm}K)N;>F!i6$A1|_d4?nLFOccHeeaw3y3^?V3JvfT-!G?1>otq$A1FmmcMW&H? z#RU`<|y+6cJ2)Oakf0W{aDEw+9t3^>YbsJve}gDRRU6jWAaA)ME82I>RZ9zWmEz|K~l0c>OU;y z1euJi$edO$cv=8p>{1DH?saSi-fW?&spVh)IpxJ=m@m;PPJALauHp91Cow!%`q;$O z);D~}ekT;;mRE;HcG)%)}`gIByrtqL8S5bAs+^(7`1tYq1o4T0z@O5>Ps^b zCaxP|vS(3}#t)z&DLhoiBSjI&J4Fj`!A1Fn44wMH{X6>0K2woXz^>?O$b;rS4BvM0 z8)+`ZhzbVs16Eh!Ss^GnDV1KWxNPSG_d(}-<>;Ld+-ozYwU6WZ;Dl;*3@asGP zp1EGP!>t8e;W6cc2*_y-20T&fXDT8!3h5TH zv4fN zTgJ(u;%s++G*LC@Zn@X>6o`WT4`M?75`A+j+T>+_>MTyoN(F=|pf3yjFCs`Lg$QBm zWtSYFS^p0e*_!Sbggi1*3Y{lvZ=cg)zo5)WGIwe0QlS0W0at~N8EXQrBXo3cP2rJO zE1Vy1Cjux9P#JUt<2|Li&2PhIp`O*(;X@DLgSULpkC=>kY$1SQ{n}<9L)Gtu2T!90 z7}tnP`bQw(Y)+yrs3+{_2*BeQjy-=IE~_z>Z+qP5b%J2}`OJKoq`hys9zXWAS47nAD=)`y>^j+{Mlb2gDle|iTKn<1 z>BqHuUWAX??5^*DLkYVM2X6~Eqbj#whZ1kUl>Irf`LFS2GfG+Fr?53yF1y4-zuVU% zNhkI@(5?P5@ndFrGWLN!av_8Kb9{}h)X@tM&R1*M2y*|5GlfWQQVq?CkUNgbS>tjvXZlTz^)#4M0y4eW& z?vpxS1utq?j-`>f&7h4`P;~=A@1jXc+H}(BrZ?~Li zJBe4~Y1yXv{e3NnUp(RagimO`#r;pCN}lm=@D{s+S3}avk7ez?0{M*K7Cg{NvI|r} zPu+G==!M{$dZ*&h~ra-UEd6B6_wxoWB;=p}s%|@DQB>0T+8Hv-zZ5GifdLr()$A`bAS_TX|Jk*kK z-EXLRkNdt!08$p(qv9!%6cq+eqHMxvUo5KKZ?vjV<8O+!SNz=jp#W51_K6DenT|(= z`@)*w&$^8(R;Kc{PYrpEwLR**_JY0Yo_GTUUTv7(=nie^ zu|A}`)R%Ws98@l=a9yrOLY6(P&|GZ1xbR0F3N2wXNY|TydjLGlNO3WUp3?m*e9?IK)15Kt!%zn-| zh~S)`xrnuo8RnZAhR)`$e3fIpNzM%KRAt`|noUUVSK8V*?RC`zdB-L#8bXki8am(d zs}y+$IuO=jO}ny^LQD#KvS{`JT2;|HC0f-YP(+( z@e1YaPlJ54@n_=O6CQiWv1bp&XY^T1Ejzq>yEJwNUcvA^STAhcWs4O5c5Jk;e+*){I*h`)kxU#CY2<>X+Cw@}sEmNn2=qB69CbHE)Z!|IVBy zyIdHe>hX_m0e5YU@KD29yiZct1uf@}Wtmv`ws%#6$W) zS>2!=2Jp-@^~9vBnG-pRR4hrU2AYrfeJ^ttk{Z^@x<|273+r*LBR^J?rqJK`RKE+G z&G&_nG#jVy<}`?ak_da*w~!?E0Q|1c;ui_&$-AkclkFP25>eS5^v4j0pS>102tkCXz3(%EbnS{@cgTj!f;_?yGwq!5JgV?*| z0*u9Q4Q@1AqPzZ+QSDUf1&H2;32EY4-9q)I3{ErE8AAHeFpWA!>3}UgcX#zG?| zXj&mrA)edk$)B{szuN&zt|O~b4z(2s6(T~~G&t@HtxZnpg83TEhjJYnhSY6EN7%n!YXrD!Yp z&OJYm$|jl=Us->sAJSPdv~&~y;$WYJEHpz3*DW>0*cs}t@t$v3&fn$sj zFf)JS^&6q=OE2_jKQC66S4C_*k*WBT@=gcvD%e|+KN^umhI|fE#-u@2m13<|+MapQ zwDXfY6dk^DMNw64GO5R*cGnPd*Lb^UL0_hqEE;%9(u+T$Lg{U`E?z!;-RGT!>Cd0J zQgz^Ih+BJ2IGDSne)Z9aiSyXq=7$qk-n(%2^0cA^ zxT#nXu{DcI^pSf7-uRcU(~{rz2%Q;`>2SJUhR~0+=ZGi;Vx*MgP_q<=KeHZsuQIoM zAuh8I18P<33k>Q#cpJ`JU#S;{=hf;(&Ff9~Vn?=mWefCt(<+mrPQJj-)~~kam>AaL zeLUN5FWs}%2B}<-SE+@XSntMaPHIGchfUR@2FJ%r`7Y+Cq`41Uda;J6Hw($Bb$Y_8 zRmJpcBM@F0&ca7}`2*y^T7NROB|5MCoytPeZbtf5CMPain&+M{n8MPO_Xg|K(L3)L zD(shRZH#pKjgMBWZr;|xwdT&lI;k!DpwKacD7sc-kX>VxsuU#=6|Q*DV}K2-Pg zeH@rsH7k>*5moR1k$&pwy6*k!3k&Ikyp7>L>!lc^?#6!ATt$YlQ))vmEQkiKf4Mc+y^+FChQ#+qvR*QaF;rTH5d4Ax3>TN(?K`Jy z$Wp}~vcne=>BndjN3s_VwsZEKiN;%M_s8yo0yp@zLU$1{ajivVO#CfJtU~*!?`c-$@KIuW;CjR`LH|77%gDb^J#->ROvSZ|@<0mo48?3I zX_1`$!FQ%N{4;UacrRjot~+00M5Mn{KB)B}-e<*zlO#1}a=w@?tA@J)jqj=Wot|tm z;NJ7X#2`P+z+U3E!3CS@{>@l)f4rCPMAkLyKGi6-6ml&)Gu33auBVh0PE)FP?6Ba? ztELpHX)a9`8quHZKj)s}`d=5MbM8t6W|Q8^$OgAzwaOYeZ$hFkcpzUQg+(qgp6Db& zVw1;JW!Z;nh$Hs>rSqZ(MSt}r+`D||5ze?b;rHK8T<3m-{PnY=xz2}}6y|?evm%jx zO2!lKqfsH@ZvlEs{TG8kUnubCA1&*)YO7w6kLv6@Zu)EI_|S6t zpAaS%lzFAl(?Y#--$pop5L^}VFBCT?9&8a6NLhUx z0}LbH1g((oq{6hLH8#{mL+6fi+$8-wHRh`cs9Qpz&E9bdoqyt`yXq35(xf#x#ps03 zfF!h&N+oJN$j;4t=&q*k)%|ypqXhv!(W8$72X)dYPb55aHA~C?bY`Nb6I>>{7masS z@sm=vI>uV!PUT(}HjKxDu7;h+f$SBh)K#`Ao>pv!>cjKI@Z3!vN7{znTvJibKVmAft23HQ=)Py+cCzaJb`UD zGtdXr%=DNr3$M;=Ub}C<=ud&g|BStKP-(0Cul|L=5wvl|Z{4@l9l$ynBEGNp+>Y%d zjLoHjZb<}2x~~*kkHX&$>Jr>cG@?WMOIIT-m!$-)0CHjFqJMd@XTfUScslMUT#eYA z!nY0|$@&Y3kuGF!5vMQaaUMTl;=y~TtKzcOl4q_0;fY3xHq$~B^a|sH@oJo+ccR5x zKMdpw`>%qnIv=OH`J#E!Mf_YYBl=Tw5i1+lbz%>r>=v~XQ7yf_m&?L9($aVZG{ zK@a_`P=^k>46}P)xb0o}hcLW19+IM*`Z#r~Cs+or(O+Z>mjwmnSdn7?uIqc?!&$g6 z;hMFaQ2Ufte^Sd9qs#PQJZNYzT6d98_Uv-%bJE|m3Y?G2u-h|~*Sf~OBmv9hkb~;I zYpyO-O-*w2cdyD!rFpf5FRDw+;Kpg0Ox38FrFd0x&>ayCcxLXW1=c@+*zs+X9MBW` z{+-Qw>11L8u_)wfMvs!x7JW7-MX^mt&M>W>2Jyh&{K-Op$cxS6`IKIvnLso?j8jOd zcUnBx4L{LxTwU|FGw!<@(;=ykWVDR=jS^J1=|a-aT7T6(tm>vb*Y`_lATjKH#h~X+ zn8UwYg{c7M2d_b0jw;_xHjs9vY3@1Q$$4C|_R`6becMc~CA;2WwK6s!#H^HBqRsY8H9x3-w8c)}&A|6n{{Z_v4tK3w_K`+VzP^FbPM9!{q@onrVGz53u=#P?pEgse}B^#4>gW$nnu z8fVGxmlLnDBa3W+E(68kSDjkm;`g!b~<%eK?9%6TTxrTVnyR|KCS1qE&B`&?PZ z_?3jgrIr2bDkjpTWi5Y0VVdZWvwW&K#RS?v62+^5=#YNZnUY5upT*~5oj|x3JV*01 zSaIf*3LjruemzHtG$=Jz+z9EuD+m1G8nC9fN4{tg(B(5ePi&d|{Auaufz;%gJPQQ` zsR#mZH~779KzZ^-ta}pMD~j4*O1t8kS_4{s(gL6Y%ijsf4BRgtO3Q>#Y+QU zl8|t$y?T<|rxN7DwQuwn;-4(q3JA@*oTEf!oV;9hg;?e2*7#%6R8qn_$KHw3rG|(Y zy19DcEqushrpyE|;KjrvbS*Zl$5bErmnUyg3EZ%HBY1(k#^>{?>9nhKO2}-`&f!u> z5E_@`c(-e8ezdu(ECt+k&B+{ppgndbLN3Aaw~DL~TaN%eeR<0a-VN!xG<&=ezH2z5 zSbT3{J1W1Zr_N|zqUN+aj$;VKq`GAk36 z5iTl9k!_dA!;Jw!aLNW)a zId)Y2iM;*!I$82nqt!*GFNcWok95mhy8&_(5@9-?aGq1pki#ZfWEf7RdD35uzi7At z2eXi;8y~3Q+vz?QEx2x)h0k+sH z#oF&ZXtHZ~uTU5AiwerK1a+esc5DA0(3W)EgjuoMkATv$FTHWFjS;j|1NqTHgRr{&my%KLQqM~CTy6Smn{OVmhJUDPkhFLDH zs;NXr+=e*yIm}!R%I4g%?75hp9{3Ma6O`NZfrX=q^|m;i9=J@`tP__v^&S%)K`!)Z z*=ZewY`nVgjJos+71gDy8~oT7$=@N7#&1e3yq0()f(hL!`T*#Jb+JB>lx z6`yB4yOx5S51U8U)ii~qq|4~!5;w(Aoi|67Ffj8fX_E=DW(nfv8EJ8%On2&bj_&f* zH&4bcCg{6FX1l_wE&aN*mUB_9?FiaXnXuDLb)qj$+JpdhgcvN=Z=%*CI&x*Z{Hma%lLdQpB##b@%)mNj?_ryC}E-EFnPqZU6r z>U_b&H=STOK|)4@u0=hV5sqq1*m>^!ua1cG8`UnU#om*yth;x&UP_X^Q|s1$FgAT7 zWri}d24l78?egSyR7HZ{EKwfpH8hvE&6!dp-p4kL)0!`*$P^e%nS^N!0W$W_{R z0wOcLMt!=lrtSbI!%=~t78w1?WldYRf4A0(+-${ewdP6iu?GUBcviCy!INmDCx1$^ z^RsP~*`n1H4Cm9KjPIJaq`zAVUVR5&^!mY>I!_uN@v;)?-w9eZx6!3r`RI?*f_LnK zatpat>_@J&XT4o&o;~ss?=GJBhw+4F85F=)pW|#HeK(_5GX6k=pBNxWKo0t|u2@W)Mio7I!(ks!ZEz|e7HKS5>D5iuk7%-E{48Gp2zVyL> zKdwV5D(fCcRGN0rrA!Tn7R6$Hfid7eY|q+PSGcZ0uR+yB}AD~qttC#S%b zc?S1d-W3Fv=7r{@uoS5ltM}jD*|?5BN`0i2g>gi*Y;}5e>yewzV z9_aaK75z|{oUZ>2N`gE2coMj7nS-@7Yd`ha2m1bx)}3LK!`-ax8+e^?^*gA zLr{NCXE6M+tJ~vgrF9ESuC>N`0sq`Zh<|-~B+f<(sl(`uUhfcngZgz&2&-0$Pjxff zerKJnr6c*hU+-D{9Rw4CDDW!U=x~F zM5=N)O?>6Y7KqZ0)g1g5`N?@l{$DHMqEPRfTg4t;{ znj6E}(KqPB3oX2+tiL8f!^|o&k;2|*m1Hd(?>W6B`RT+AD2!eztK`j!i9Xby|CI4} z!@MWM6v2964VBm7E& z=4Vxw8>ld*qC-6Gb4OGNyY0Yz3r?rMhI2|;khF1sirQ!!q^#(E8R`cdnXJ36+55=t z?rs(?%Xk?leM;tIe`qo@qi_K?Y4ePv>S5mc#~RNle1`OhH*5$^YhI1*WzGd!6DiBK z$hX?#^(!NWQ;k^mDIHQV%;dcOM-!XuKw^3xAP^1q<^IY11NW_2PO6&2k7bL>+p&X# zx~{YBWPgQ@5&S)&oKQ^6{>f+WZf8#Y;HDrSz{B0F=r)Uv?h9F_dJ@Zjrvlp*v0;78 zc(vdk2kQHDdKw+QHBh-v1GMl>wDT8UZ?>u~yr$>ypm3c9&oqwBq)W{`T5%NN z-ksN=3uJKAj_T?`2A;s-KCy%O~|O^O2M$|gdVQw$vz+NGDhuS)_?LS8=moa*$7`(JrOtNwZ1enrQA$-?SPS3JNIkC zHqpN9QHEW{h*1HjyF-_$QA}_6>}rRO2ht+ly{=HrY9lMC>qennSyTOo8G_-=v`B}eZf0<$8h+4C%dl4*tbr5zoa@vb|sc8%VrSdj)nV ztI@nST(grbMiX6lqvWBMQt{a=xlIIqW9rZDj+6A8w3F1q+Ku;qIuadwzCBsF>NR+K z^7ZL~E=MUutV9jdgF^*rM^=g;w%I(b{f1B2Tx>u(VClMzXVkVsa6)c|i(PpPvIMTP z8)=~TqNACxZo{v)4cy0A!{cGir7xMh6n(;8hHCn#>AYbSp~8wWd>a!enPfF`Bd7xJ z6b9P(lNC{39FKu63f{9xRc^H{SZvm>DhDZIj*UEGx2j)@xNr4+jLaOAa;=UP=@zQX z7m?pv6`G52b`EJ{_8?lm(*BG_(GnUGJ+$st3{strSHw>#H90l^VV`J0y=f6JeVFH& zhE}&iwVTdsX;vqgR`iA@rd8Ne57DSU*Bb5+fj{J*{l&&(mOQdkljMm;D@_>@F2$8L zKu?z>fSzSU^sbRJ{ci%B`+0mO_M^C+&6x8Ej#k0=Y4NwwOV*^O2jQeVyur}tGw}3j z5!lL$m~2d)3U)vE-FEsryJzgn5F0wg9#+&8tEo}U(kbN{sMrM3QZmkC97%R*>sD&f zaxn8HgwrPd8~apc!p1k6h~ofeCdtwMsTx)LM#$5!o1qGhW$;bgG>(@p{SRgn-UuG2 zA5|qEWICl6x>(M}DcF>{gS(R;NOvxmXpd8EfjMu7I2ddcZnj2*Laq+HQl*{oe4gND zza`|-L+P1r&%5~@F`PAzgMU#DtNfCsKUVSF0+o?_0V;@Zr%2bS_x3A5nV4I?D;mq@d}@uTC+BYa-HhZoH#{$ zA$m0jzGGtOxrGbhimm^`iF?AmucZDbIW~0uT7!9IEP!jVT|->c+I}f2(0`4d0*8Kf zMVc?#WpdmcVklBqWi*XL(7^D$w;1g)?9J_14OWQnyXK9i!k@sz3&#>PiAv{}CmYVf z-^jkKDr$~GpKn;VIPZ;^d1(3;n#_!eR;q5naQqGSCwQp}Xr}ubDx3vj<%EaINyLhP zHstG}%#)4@mm4yrgx&x`!g=~SN`f;U))0SLHT#bevix5yYTUpct3A`*$+=G|Eu^CajTj96S{fSI~t(M06wa+q^=Z^4nAHo_AvifUPgI6Cg1T! z(}e7}$1|;Kj6BK;d4X6%2cs0?y;)_vYJ0}@bx*${`tdmv{~|q;0*=k+i1BN3gWuG& zc;z(#-g}}QdJ-<`b36TMsYPi7_24YShAbe$6Bta3B~{12u>V-2ROaFC#rT+!g1EhP zgH^cuuNsYB)f9ZHwjx{zpD~aCN|*eSmD&bCpG%pC359x;JVPX zUZ?!-P;Iac?+D?+*dE_}dfZWexvGH*XV+Cdb5*+!SXdGYD&c1I*_4s~`jmtOE6yV0 zwKcfR&-K(`{p(C%J|*w%QzgE6;p(MDZi(-8o^qℜ6Puq5`7GdSk!fKa&DWOp02T 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%0A-*Nw|>v3DhxT>)Tw^0Te^~$tl;yJJs(ygzW9P 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 literal 0 HcmV?d00001 diff --git a/doc/testing_gnb_w_cots_ue_resources/oai_gnb.log b/doc/testing_gnb_w_cots_ue_resources/oai_gnb.log new file mode 100755 index 0000000000..37b3c10516 --- /dev/null +++ b/doc/testing_gnb_w_cots_ue_resources/oai_gnb.log @@ -0,0 +1,38680 @@ +[CONFIG] get parameters from libconfig ../../../targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.mozart.slave.conf , debug flags: 0x00000000 +[CONFIG] function config_libconfig_init returned 0 +[CONFIG] config module libconfig loaded +[LIBCONFIG] config: 1/1 parameters successfully set, (1 to default value) +Send signal 35 to display resource usage... +[LIBCONFIG] log_config: 3/3 parameters successfully set, (1 to default value) +[LIBCONFIG] log_config: 52/52 parameters successfully set, (46 to default value) +[LIBCONFIG] log_config: 52/52 parameters successfully set, (52 to default value) +[LIBCONFIG] log_config: 15/15 parameters successfully set, (15 to default value) +[LIBCONFIG] log_config: 15/15 parameters successfully set, (15 to default value) +log init done +[HW] # /dev/cpu_dma_latency set to 10 us +[HW] Can't set cpu frequency +Reading in command-line options +[GNB_APP] Getting GNBSParams +[LIBCONFIG] (root): 2/2 parameters successfully set, (0 to default value) +[LIBCONFIG] THREAD_STRUCT.[0]: 2/2 parameters successfully set, (0 to default value) +[LIBCONFIG] THREAD_STRUCT.[0]: 2/2 parameters successfully set, (0 to default value) +[CONFIG] parallel_conf is set to 0 +[CONFIG] worker_conf is set to 1 +Configuration: nb_rrc_inst 1, nb_nr_L1_inst 1, nb_ru 1 +[LIBCONFIG] (root): 23/23 parameters successfully set, (19 to default value) +[LIBCONFIG] (root): 5/5 parameters successfully set, (4 to default value) +[LIBCONFIG] TTracer: 4/4 parameters successfully set, (4 to default value) +configuring for RAU/RRU +CPU Freq is 3.092986 +[TMR] Starting itti queue: TASK_UNKNOWN as task 0 +[TMR] Starting itti queue: TASK_TIMER as task 1 +[TMR] Starting itti queue: TASK_L2L1 as task 2 +[TMR] Starting itti queue: TASK_BM as task 3 +[TMR] Starting itti queue: TASK_PHY_ENB as task 4 +[TMR] Starting itti queue: TASK_MAC_ENB as task 5 +[TMR] Starting itti queue: TASK_RLC_ENB as task 6 +[TMR] Starting itti queue: TASK_RRC_ENB_NB_IoT as task 7 +[TMR] Starting itti queue: TASK_PDCP_ENB as task 8 +[TMR] Starting itti queue: TASK_DATA_FORWARDING as task 9 +[TMR] Starting itti queue: TASK_END_MARKER as task 10 +[TMR] Starting itti queue: TASK_RRC_ENB as task 11 +[TMR] Starting itti queue: TASK_RRC_GNB as task 12 +[TMR] Starting itti queue: TASK_RAL_ENB as task 13 +[TMR] Starting itti queue: TASK_S1AP as task 14 +[TMR] Starting itti queue: TASK_X2AP as task 15 +[TMR] Starting itti queue: TASK_M2AP_ENB as task 16 +[TMR] Starting itti queue: TASK_M2AP_MCE as task 17 +[TMR] Starting itti queue: TASK_M3AP as task 18 +[TMR] Starting itti queue: TASK_M3AP_MME as task 19 +[TMR] Starting itti queue: TASK_M3AP_MCE as task 20 +[TMR] Starting itti queue: TASK_SCTP as task 21 +[TMR] Starting itti queue: TASK_ENB_APP as task 22 +[TMR] Starting itti queue: TASK_GNB_APP as task 23 +[TMR] Starting itti queue: TASK_MCE_APP as task 24 +[TMR] Starting itti queue: TASK_MME_APP as task 25 +[TMR] Starting itti queue: TASK_FLEXRAN_AGENT as task 26 +[TMR] Starting itti queue: TASK_PHY_UE as task 27 +[TMR] Starting itti queue: TASK_MAC_UE as task 28 +[TMR] Starting itti queue: TASK_RLC_UE as task 29 +[TMR] Starting itti queue: TASK_PDCP_UE as task 30 +[TMR] Starting itti queue: TASK_RRC_UE as task 31 +[TMR] Starting itti queue: TASK_NAS_UE as task 32 +[TMR] Starting itti queue: TASK_RAL_UE as task 33 +[TMR] Starting itti queue: TASK_MSC as task 34 +[TMR] Starting itti queue: TASK_GTPV1_U as task 35 +[TMR] Starting itti queue: TASK_UDP as task 36 +[TMR] Starting itti queue: TASK_CU_F1 as task 37 +[TMR] Starting itti queue: TASK_DU_F1 as task 38 +[LIBCONFIG] opt: 3/3 parameters successfully set, (3 to default value) +[OPT] OPT disabled +[NETLINK] Error opening socket -1 (93:Protocol not supported) +[NETLINK] Opened socket with fd -1 +[NETLINK] Error fcntl (9:Bad file descriptor) +[HW] Version: Branch: NR_RRC_harq_hacks Abrev. Hash: 94fa9c5 Date: Fri Jun 19 18:16:53 2020 +0200 +Wait for the ITTI initialize message +[TMR] Created Posix thread TASK_L2L1 +[SCTP] Starting SCTP layer +[TMR] Created Posix thread TASK_SCTP +[LIBCONFIG] eNBs.[0]: 1/1 parameters successfully set, (1 to default value) +[LIBCONFIG] gNBs.[0]: 1/1 parameters successfully set, (0 to default value) +[TMR] Created Posix thread TASK_X2AP +[UDP] Initializing UDP task interface +[UDP] Initializing UDP task interface: DONE +[TMR] Created Posix thread TASK_UDP +[TMR] Created Posix thread TASK_GTPV1_U +[GTPV1U] Initializing GTPU stack 0x17ce250 +[PHY] gNB_app_task() Task ready initialize structures +[TMR] Created Posix thread TASK_GNB_APP +[NR_RRC] Creating NR RRC gNB Task +[NR_PHY] RC.gNB = 0x7f518c0008c0 +[LIBCONFIG] L1s.[0]: 24/24 parameters successfully set, (22 to default value) +[NR_PHY] RC.gNB[0] = 0x7f51a2f08010 +[NR_RRC] Entering main loop of NR_RRC message task +[TMR] Created Posix thread TASK_RRC_GNB +Initializing northbound interface for L1 +[PHY] l1_north_init_gNB() RC.nb_nr_L1_inst:1 +[PHY] Installing callbacks for IF_Module - UL_indication +[MAC] Allocating shared L1/L2 interface structure for instance 0 @ 0x7f518c001970 +[PHY] l1_north_init_gNB() RC.gNB[0] installing callbacks +[LIBCONFIG] MACRLCs.[0]: 20/20 parameters successfully set, (17 to default value) +[MAC] [MAIN] Init function start:nb_nr_macrlc_inst=1 +NFAPI MODE:MONOLITHIC +START MAIN THREADS +RC.nb_nr_L1_inst:1 +Initializing gNB threads single_thread_flag:1 wait_for_sync:0 +[PHY] gNB L1 structure RC.gNB allocated @ 0x7f518c0008c0 +[PHY] [lte-softmodem.c] gNB structure RC.gNB[0] allocated @ 0x7f51a2f08010 +[PHY] Initializing gNB 0 single_thread_flag:1 +[PHY] Initializing gNB 0 +[PHY] Registering with MAC interface module (before 0x7f518c001970) +[PHY] Installing callbacks for IF_Module - UL_indication +[PHY] Registering with MAC interface module (after 0x7f518c001970) +[PHY] Setting indication lists +[PHY] [nr-softmodem.c] gNB structure allocated +wait_gNBs() +Waiting for gNB L1 instances to all get configured ... sleeping 50ms (nb_nr_sL1_inst 1) +[PDCP] PDCP layer has been initialized +[PHY] Installing callbacks for IF_Module - UL_indication +[PHY] gNB_app_task() RC.nb_nr_L1_inst:1 +[PHY] l1_north_init_gNB() RC.nb_nr_L1_inst:1 +[PHY] Installing callbacks for IF_Module - UL_indication +[PHY] l1_north_init_gNB() RC.gNB[0] installing callbacks +[GNB_APP] Allocating gNB_RRC_INST for 1 instances +[PHY] gNB_app_task() RC.nb_nr_inst:1 RC.nrrrc:0x7f518c002860 +[PHY] gNB_app_task() Creating RRC instance RC.nrrrc[0]:0x7f518c002ad0 (1 of 1) +[LIBCONFIG] (root): 2/2 parameters successfully set, (0 to default value) +[LIBCONFIG] gNBs.[0]: 14/14 parameters successfully set, (8 to default value) +[LIBCONFIG] gNBs.[0].servingCellConfigCommon.[0]: 155/155 parameters successfully set, (83 to default value) +[RRC] Read in ServingCellConfigCommon (PhysCellId 0, ABSFREQSSB 641272, DLBand 78, ABSFREQPOINTA 640000, DLBW 106,RACH_TargetReceivedPower -100 +Checking element 15 : 4294967295 +removing pdsch_TimeDomainAllocationList element 15 +List size now 15 +Checking element 14 : 4294967295 +removing pdsch_TimeDomainAllocationList element 14 +List size now 14 +Checking element 13 : 4294967295 +removing pdsch_TimeDomainAllocationList element 13 +List size now 13 +Checking element 12 : 4294967295 +removing pdsch_TimeDomainAllocationList element 12 +List size now 12 +Checking element 11 : 4294967295 +removing pdsch_TimeDomainAllocationList element 11 +List size now 11 +Checking element 10 : 4294967295 +removing pdsch_TimeDomainAllocationList element 10 +List size now 10 +Checking element 9 : 4294967295 +removing pdsch_TimeDomainAllocationList element 9 +List size now 9 +Checking element 8 : 4294967295 +removing pdsch_TimeDomainAllocationList element 8 +List size now 8 +Checking element 7 : 4294967295 +removing pdsch_TimeDomainAllocationList element 7 +List size now 7 +Checking element 6 : 4294967295 +removing pdsch_TimeDomainAllocationList element 6 +List size now 6 +Checking element 5 : 4294967295 +removing pdsch_TimeDomainAllocationList element 5 +List size now 5 +Checking element 4 : 4294967295 +removing pdsch_TimeDomainAllocationList element 4 +List size now 4 +Checking element 3 : 0 +Checking element 2 : 0 +Checking element 1 : 0 +Checking element 0 : 0 +NRRRC 0: Southbound Transport local_mac +[LIBCONFIG] gNBs.[0].plmn_list.[0]: 3/3 parameters successfully set, (0 to default value) +SSB SCO 31 +pdsch_AntennaPorts 1 +[GNB_APP] Sending configuration message to NR_RRC task +[X2AP] X2AP enabled +[X2AP] GNB_ID: 0 +[LIBCONFIG] (root): 2/2 parameters successfully set, (0 to default value) +[NR_RRC] Received message NRRRC_CONFIGURATION_REQ +[NR_RRC] [gNB 0] Received NRRRC_CONFIGURATION_REQ : 0x7f518c00407c +[NR_RRC] [FRAME 00000][eNB][MOD 00][RNTI 0] Init... +[LIBCONFIG] gNBs.[0]: 14/14 parameters successfully set, (8 to default value) +[LIBCONFIG] gNBs.[0].plmn_list.[0]: 3/3 parameters successfully set, (0 to default value) +[LIBCONFIG] gNBs.[0].target_enb_x2_ip_address.[0]: 3/3 parameters successfully set, (0 to default value) +[LIBCONFIG] gNBs.[0]: 2/2 parameters successfully set, (0 to default value) +[LIBCONFIG] gNBs.[0].SCTP: 2/2 parameters successfully set, (0 to default value) +[NR_RRC] [FRAME 00000][eNB][MOD 00][RNTI 0] Checking release +[LIBCONFIG] gNBs.[0].NETWORK_INTERFACES: 7/7 parameters successfully set, (0 to default value) +[GTPV1U] Configuring GTPu +[LIBCONFIG] (root): 2/2 parameters successfully set, (0 to default value) +[NR_RRC] Done init_NR_SI +[LIBCONFIG] gNBs.[0].NETWORK_INTERFACES: 3/3 parameters successfully set, (0 to default value) +[MAC] Configuring common parameters from NR ServingCellConfig +[PHY] config_common() dl_BandwidthP:40 +[GTPV1U] Configuring GTPu address : 192.168.18.198 -> c612a8c0 +[PHY] Computing dl_frequency (pointA 640000 => 3600000000 (dlmin 3300000, nr_bandtable[27].N_OFFs_DL 620000)) +[PHY] config_common() dl_BandwidthP:40 +[GNB_APP] [gNB 0] gNB_app_register for instance 0 +[GTPV1U] Tx UDP_INIT IP addr 192.168.18.198 (868) +[PHY] Computing dl_frequency (pointA 640000 => 3600000000 (dlmin 3300000, nr_bandtable[27].N_OFFs_DL 620000)) +[PHY] Scanning band 1, dl_min 2110000, ul_min 1920000 +[PHY] Scanning band 2, dl_min 1930000, ul_min 1850000 +[PHY] Scanning band 3, dl_min 1805000, ul_min 1710000 +[PHY] Scanning band 5, dl_min 869000, ul_min 824000 +[PHY] Scanning band 7, dl_min 2620000, ul_min 2500000 +[UDP] Initializing UDP for local address 192.168.18.198 with port 2152 +[PHY] Scanning band 8, dl_min 925000, ul_min 880000 +[PHY] Scanning band 12, dl_min 728000, ul_min 698000 +[PHY] Scanning band 20, dl_min 791000, ul_min 832000 +[PHY] Scanning band 25, dl_min 1930000, ul_min 1850000 +[PHY] Scanning band 28, dl_min 758000, ul_min 703000 +[PHY] Scanning band 34, dl_min 2010000, ul_min 2010000 +[PHY] Scanning band 38, dl_min 2570000, ul_min 2570000 +[PHY] Scanning band 39, dl_min 1880000, ul_min 1880000 +[PHY] Scanning band 40, dl_min 2300000, ul_min 2300000 +[PHY] Scanning band 41, dl_min 2496000, ul_min 2496000 +[PHY] Scanning band 41, dl_min 2496000, ul_min 2496000 +[PHY] Scanning band 50, dl_min 1432000, ul_min 1432000 +[PHY] Scanning band 51, dl_min 1427000, ul_min 1427000 +[PHY] Scanning band 66, dl_min 2110000, ul_min 1710000 +[PHY] Scanning band 70, dl_min 1995000, ul_min 1695000 +[PHY] Scanning band 71, dl_min 617000, ul_min 663000 +[PHY] Scanning band 74, dl_min 1475000, ul_min 1427000 +[PHY] Scanning band 75, dl_min 1432000, ul_min 0 +[PHY] Scanning band 76, dl_min 1427000, ul_min 0 +[PHY] Scanning band 77, dl_min 3300000, ul_min 3300000 +[PHY] Scanning band 77, dl_min 3300000, ul_min 3300000 +[PHY] Scanning band 78, dl_min 3300000, ul_min 3300000 +[PHY] Scanning band 78, dl_min 3300000, ul_min 3300000 +[PHY] Scanning band 79, dl_min 4400000, ul_min 4400000 +[PHY] Scanning band 79, dl_min 4400000, ul_min 4400000 +[PHY] Scanning band 80, dl_min 0, ul_min 1710000 +[PHY] Scanning band 81, dl_min 0, ul_min 860000 +[PHY] Scanning band 82, dl_min 0, ul_min 832000 +[PHY] Scanning band 83, dl_min 0, ul_min 703000 +[PHY] Scanning band 84, dl_min 0, ul_min 1920000 +[PHY] Scanning band 86, dl_min 0, ul_min 1710000 +[PHY] Scanning band 257, dl_min 26500000, ul_min 26500000 +[PHY] Scanning band 257, dl_min 26500000, ul_min 26500000 +[PHY] Scanning band 258, dl_min 24250000, ul_min 24250000 +[PHY] Scanning band 258, dl_min 24250000, ul_min 24250000 +[PHY] Scanning band 260, dl_min 37000000, ul_min 37000000 +[PHY] Scanning band 260, dl_min 37000000, ul_min 37000000 +[PHY] Scanning band 261, dl_min 27500000, ul_min 27500000 +[PHY] Scanning band 261, dl_min 27500000, ul_min 27500000 +[PHY] DL frequency 3600000000: band 78, frame_type 1, UL frequency 3600000000 + found_sequences 16 +[MAC] Set TX/RX antenna number to 1 (num ssb 1: 80000000,0) +[MAC] Setting TDD configuration period to 6 +[PHY] TDD has been properly configurated +[MAC] rrc_mac_config_req_gNB() /home/eurecom/panos/NR_RRC_harq_hacks/openairinterface5g/openair2/LAYER2/NR_MAC_gNB/config.c:345 RC.nrmac[Mod_idP]->if_inst->NR_PHY_config_req:0x60f680 +[PHY] Scanning band 1, dl_min 2110000, ul_min 1920000 +[PHY] Scanning band 2, dl_min 1930000, ul_min 1850000 +[PHY] Scanning band 3, dl_min 1805000, ul_min 1710000 +[PHY] Scanning band 5, dl_min 869000, ul_min 824000 +[PHY] Scanning band 7, dl_min 2620000, ul_min 2500000 +[PHY] Scanning band 8, dl_min 925000, ul_min 880000 +[PHY] Scanning band 12, dl_min 728000, ul_min 698000 +[PHY] Scanning band 20, dl_min 791000, ul_min 832000 +[PHY] Scanning band 25, dl_min 1930000, ul_min 1850000 +[PHY] Scanning band 28, dl_min 758000, ul_min 703000 +[PHY] Scanning band 34, dl_min 2010000, ul_min 2010000 +[PHY] Scanning band 38, dl_min 2570000, ul_min 2570000 +[PHY] Scanning band 39, dl_min 1880000, ul_min 1880000 +[PHY] Scanning band 40, dl_min 2300000, ul_min 2300000 +[PHY] Scanning band 41, dl_min 2496000, ul_min 2496000 +[PHY] Scanning band 41, dl_min 2496000, ul_min 2496000 +[PHY] Scanning band 50, dl_min 1432000, ul_min 1432000 +[PHY] Scanning band 51, dl_min 1427000, ul_min 1427000 +[PHY] Scanning band 66, dl_min 2110000, ul_min 1710000 +[PHY] Scanning band 70, dl_min 1995000, ul_min 1695000 +[PHY] Scanning band 71, dl_min 617000, ul_min 663000 +[PHY] Scanning band 74, dl_min 1475000, ul_min 1427000 +[PHY] Scanning band 75, dl_min 1432000, ul_min 0 +[PHY] Scanning band 76, dl_min 1427000, ul_min 0 +[PHY] Scanning band 77, dl_min 3300000, ul_min 3300000 +[PHY] Scanning band 77, dl_min 3300000, ul_min 3300000 +[PHY] Scanning band 78, dl_min 3300000, ul_min 3300000 +[PHY] Scanning band 78, dl_min 3300000, ul_min 3300000 +[PHY] Scanning band 79, dl_min 4400000, ul_min 4400000 +[PHY] Scanning band 79, dl_min 4400000, ul_min 4400000 +[PHY] Scanning band 80, dl_min 0, ul_min 1710000 +[PHY] Scanning band 81, dl_min 0, ul_min 860000 +[PHY] Scanning band 82, dl_min 0, ul_min 832000 +[PHY] Scanning band 83, dl_min 0, ul_min 703000 +[PHY] Scanning band 84, dl_min 0, ul_min 1920000 +[PHY] Scanning band 86, dl_min 0, ul_min 1710000 +[PHY] Scanning band 257, dl_min 26500000, ul_min 26500000 +[PHY] Scanning band 257, dl_min 26500000, ul_min 26500000 +[PHY] Scanning band 258, dl_min 24250000, ul_min 24250000 +[PHY] Scanning band 258, dl_min 24250000, ul_min 24250000 +[PHY] Scanning band 260, dl_min 37000000, ul_min 37000000 +[PHY] Scanning band 260, dl_min 37000000, ul_min 37000000 +[PHY] Scanning band 261, dl_min 27500000, ul_min 27500000 +[PHY] Scanning band 261, dl_min 27500000, ul_min 27500000 +[PHY] DL frequency 3619080000: band 78, frame_type 1, UL frequency 3619080000 +[PHY] Configuring MIB for instance 0, : (Nid_cell 0,DL freq 3619080000, UL freq 3619080000) +[PHY] Initializing frame parms for mu 1, N_RB 106, Ncp 0 +[X2AP] Registered new eNB[0] and home eNB id 3584 +[X2AP] eNB[0] eNB id 3584 acting as a listner (server) +[SCTP] Received SCTP_INIT_MSG_MULTI_REQ +[UDP] Inserting new descriptor for task 35, sd 85 +[UDP] Initializing UDP for local address 192.168.18.198 with port 2152: DONE +[PHY] gNB 0 configured +[NR_RRC] [FRAME 00000][eNB][MOD 00][RNTI 0] gNB:OPENAIR NR RRC IN.... +[SCTP] Creating new listen socket on port 36422 with +[SCTP] ipv4 addresses: +[SCTP] - 192.168.18.198 +[X2AP] eNB[0] eNB id 3584 acting as an initiator (client) +[SCTP] Converted ipv4 address 192.168.18.199 to network type +[SCTP] sctp_connectx SUCCESS, used 1 addresses assoc_id 136 +[SCTP] Inserted new descriptor for sd 87 in list, nb elements 2, assoc_id 136 +[SCTP] Found data for descriptor 87 +[SCTP] Received notification for sd 87, type 32769 +[SCTP] Client association changed: 0 +[SCTP] ---------------------- +[SCTP] Peer addresses: +[SCTP] - [192.168.18.199] +[SCTP] ---------------------- +[SCTP] ---------------------- +[SCTP] SCTP Status: +[SCTP] assoc id .....: 136 +[SCTP] state ........: 4 +[SCTP] instrms ......: 32 +[SCTP] outstrms .....: 32 +[SCTP] fragmentation : 1452 +[SCTP] pending data .: 0 +[SCTP] unack data ...: 0 +[SCTP] rwnd .........: 106496 +[SCTP] peer info : +[SCTP] state ....: 2 +[SCTP] cwnd .....: 4380 +[SCTP] srtt .....: 0 +[SCTP] rto ......: 3000 +[SCTP] mtu ......: 1500 +[SCTP] ---------------------- +[SCTP] Comm up notified for sd 87, assigned assoc_id 136 +here comes the tree (instance 0): +--------------------------------------------- +----------------------- +eNB id 0 (null) +state 1 +nextstream 0 +in_streams 0 out_streams 0 +cnx_id 1 assoc_id -1 +--------------------------------------------- +here comes the tree (instance 0): +--------------------------------------------- +----------------------- +eNB id 0 (null) +state 1 +nextstream 0 +in_streams 0 out_streams 0 +cnx_id 1 assoc_id -1 +--------------------------------------------- +here comes the tree (instance 0): +--------------------------------------------- +----------------------- +eNB id 0 (null) +state 1 +nextstream 0 +in_streams 0 out_streams 0 +cnx_id 1 assoc_id -1 +--------------------------------------------- +here comes the tree (instance 0): +--------------------------------------------- +----------------------- +eNB id 0 (null) +state 1 +nextstream 0 +in_streams 32 out_streams 32 +cnx_id 1 assoc_id 136 +--------------------------------------------- +[X2AP] 3584 -> 00000e +[X2AP] TAC: 25744 -> 006490 + + + 36 + + + + + + 244 + + + + + + 252 + + + + 22 F2 10 + + + 00000000000000000000111000000000 + + + + + + + 253 + + + + + + 0 + + 22 F2 10 + + 000000000000000000000000111000000000 + + + 00 64 90 + + 22 F2 10 + + + + + 0 + + + 1 + + + 80 + + + + + + + + + + + + 00 + + + + + + + + + + + + + + +[SCTP] Successfully sent 66 bytes on stream 0 for assoc_id 136 +[SCTP] Found data for descriptor 87 +[SCTP] Received notification for sd 87, type 32777 +[SCTP] Found data for descriptor 87 +[SCTP] [136][87] Msg of length 53 received from port 36422, on stream 0, PPID 27 + + + 36 + + + + + + 246 + + + + + + 21 + + + + 22 F2 10 + + + 00000000111000000001 + + + + + + + 250 + + + + + + 0 + + 22 F2 10 + + 0000000011100000000100000000 + + + 00 01 + + 22 F2 10 + + + + 21350 + 3350 + + + + + + + + + + + + + + + + + + +[X2AP] x2ap_eNB_decode_successfuloutcome_message! +gNB L1 are configured +About to Init RU threads RC.nb_RU:1 +Initializing RU threads +configuring RU from file +[LIBCONFIG] RUs.[0]: 27/27 parameters successfully set, (17 to default value) +Set RU mask to 1 +Creating RC.ru[0]:0x3ae67d0 +Setting function for RU 0 to gNodeB_3GPP +[PHY] number of L1 instances 1, number of RU 1, number of CPU cores 10 +[PHY] DJP - delete code above this /home/eurecom/panos/NR_RRC_harq_hacks/openairinterface5g/executables/nr-ru.c:2251 +[PHY] Copying frame parms from gNB in RC to gNB 0 in ru 0 and frame_parms in ru +configuring ru_id 0 (start_rf 0x5b7120) +[PHY] Starting ru_thread 0 +[PHY] Initializing RU proc 0 (,synch_to_ext_device), +[PHY] Starting RU 0 (,synch_to_ext_device), +[PHY] Initializing frame parms for mu 1, N_RB 106, Ncp 0 +[PHY] fp->scs=30000 +[PHY] fp->ofdm_symbol_size=1536 +[PHY] fp->nb_prefix_samples0=132 +[PHY] fp->nb_prefix_samples=108 +[PHY] fp->slots_per_subframe=2 +[PHY] fp->samples_per_subframe_wCP=43008 +[PHY] init_RU_proc() DJP - added creation of pthread_prach +[PHY] fp->samples_per_frame_wCP=430080 +[PHY] fp->samples_per_subframe=46080 +[PHY] fp->samples_per_frame=460800 +[PHY] fp->dl_CarrierFreq=3619080000 +[PHY] fp->ul_CarrierFreq=3619080000 +channel 0, Setting tx_gain offset 0.000000, rx_gain offset 114.000000, tx_freq 3619080000.000000, rx_freq 3619080000.000000 +[PHY] Initializing RU signal buffers (if_south local RF) nb_tx 1 +[PHY] [INIT] common.txdata[0] = 0x7f5198339040 (1843200 bytes) +[PHY] nb_tx 1 +[PHY] rxdata_7_5kHz[0] 0x7f51980c1040 for RU 0 +[PHY] init feptx thread 0 +[PHY] [INIT] common.txdata_BF= 0x7f517c000aa0 (8 bytes) +[PHY] txdataF_BF[0] 0x7f51a2e9c040 for RU 0 +[PHY] init feptx thread 1 +wait RUs +[PHY] Waiting for RUs to be configured ... RC.ru_mask:01 +[PHY] rxdataF[0] 0x7f51a2e47040 for RU 0 +[PHY] [INIT] nr_phy_init_RU() RC.nb_nr_L1_inst:1 +[LIBCONFIG] device.recplay: 7/7 parameters successfully set, (7 to default value) +[LIBCONFIG] device: 1/1 parameters successfully set, (1 to default value) +[LIBCONFIG] loader: 2/2 parameters successfully set, (2 to default value) +[LIBCONFIG] loader.oai_device: 2/2 parameters successfully set, (1 to default value) +[LOADER] library liboai_device.so successfully loaded +[HW] UHD version 3.15.0.0-0-gaea0e2de (3.15.0) +[HW] Found USRP b200 +Found USRP b200 +[PHY] ru_thread_prach() RACH waiting for RU to be configured +[HW] Time source set neither in usrp_args nor on command line, using default! +[HW] cal 0: freq 3500000000.000000, offset 44.000000, diff 119080000.000000 +[HW] cal 1: freq 2660000000.000000, offset 49.800000, diff 959080000.000000 +[HW] cal 2: freq 2300000000.000000, offset 51.000000, diff 1319080000.000000 +[HW] cal 3: freq 1880000000.000000, offset 53.000000, diff 1739080000.000000 +[HW] cal 4: freq 816000000.000000, offset 57.000000, diff 2803080000.000000 +[HW] RX Gain 0 114.000000 (44.000000) => 70.000000 (max 76.000000) +[HW] USRP TX_GAIN:89.75 gain_range:89.75 tx_gain:0.00 +[HW] Actual master clock: 46.080000MHz... +[HW] Actual clock source internal... +[HW] Actual time source internal... +[PHY] ru_thread_prach() RACH waiting for RU to be configured +[HW] RF board max packet size 1916, size for 100µs jitter 4608 +[HW] rx_max_num_samps 1916 +[HW] RX Channel 0 +[HW] Actual RX sample rate: 46.080000MSps... +[HW] Actual RX frequency: 3.619080GHz... +[HW] Actual RX gain: 70.000000... +[HW] Actual RX bandwidth: 40.000000M... +[HW] Actual RX antenna: RX2... +[HW] TX Channel 0 +[HW] Actual TX sample rate: 46.080000MSps... +[HW] Actual TX frequency: 3.619080GHz... +[HW] Actual TX gain: 89.750000... +[HW] Actual TX bandwidth: 40.000000M... +[HW] Actual TX antenna: TX/RX... +[HW] Actual TX packet size: 1916 +[HW] Device timestamp: 2.171687... +[HW] [RAU] has loaded USRP B200 device. +setup_RU_buffers: frame_parms = 0x7f51a2ec7010 +[PHY] RU 0 Setting N_TA_offset to 600 samples (factor 1.500000, UL Freq 3600000, N_RB 106) +[PHY] Signaling main thread that RU 0 is ready +waiting for sync (ru_thread,-1/0xf53a58,0x18e6f00,0x17ccc40) +RC.ru_mask:00 +[PHY] RUs configured +ALL RUs READY! +RC.nb_RU:1 +ALL RUs ready - init gNBs +Not NFAPI mode - call init_eNB_afterRU() +[PHY] init_eNB_afterRU() RC.nb_nr_inst:1 +[PHY] RC.nb_nr_CC[inst:0]:0x7f51a2f08010 +[PHY] [gNB 0] phy_init_nr_gNB() About to wait for gNB to be configured +[LIBCONFIG] loader.dfts: 2/2 parameters successfully set, (1 to default value) +[LOADER] library libdfts.so successfully loaded +init_scrambling_luts: s 0 (1) ((1,1),(1,1),(1,1),(1,1)) +init_scrambling_luts: s 1 (-1) ((-1,1),(1,1),(1,1),(1,1)) +init_scrambling_luts: s 2 (1) ((1,-1),(1,1),(1,1),(1,1)) +init_scrambling_luts: s 3 (-1) ((-1,-1),(1,1),(1,1),(1,1)) +init_scrambling_luts: s 4 (1) ((1,1),(-1,1),(1,1),(1,1)) +init_scrambling_luts: s 5 (-1) ((-1,1),(-1,1),(1,1),(1,1)) +init_scrambling_luts: s 6 (1) ((1,-1),(-1,1),(1,1),(1,1)) +init_scrambling_luts: s 7 (-1) ((-1,-1),(-1,1),(1,1),(1,1)) +init_scrambling_luts: s 8 (1) ((1,1),(1,-1),(1,1),(1,1)) +init_scrambling_luts: s 9 (-1) ((-1,1),(1,-1),(1,1),(1,1)) +init_scrambling_luts: s a (1) ((1,-1),(1,-1),(1,1),(1,1)) +init_scrambling_luts: s b (-1) ((-1,-1),(1,-1),(1,1),(1,1)) +init_scrambling_luts: s c (1) ((1,1),(-1,-1),(1,1),(1,1)) +init_scrambling_luts: s d (-1) ((-1,1),(-1,-1),(1,1),(1,1)) +init_scrambling_luts: s e (1) ((1,-1),(-1,-1),(1,1),(1,1)) +init_scrambling_luts: s f (-1) ((-1,-1),(-1,-1),(1,1),(1,1)) +init_scrambling_luts: s 10 (1) ((1,1),(1,1),(-1,1),(1,1)) +init_scrambling_luts: s 11 (-1) ((-1,1),(1,1),(-1,1),(1,1)) +init_scrambling_luts: s 12 (1) ((1,-1),(1,1),(-1,1),(1,1)) +init_scrambling_luts: s 13 (-1) ((-1,-1),(1,1),(-1,1),(1,1)) +init_scrambling_luts: s 14 (1) ((1,1),(-1,1),(-1,1),(1,1)) +init_scrambling_luts: s 15 (-1) ((-1,1),(-1,1),(-1,1),(1,1)) +init_scrambling_luts: s 16 (1) ((1,-1),(-1,1),(-1,1),(1,1)) +init_scrambling_luts: s 17 (-1) ((-1,-1),(-1,1),(-1,1),(1,1)) +init_scrambling_luts: s 18 (1) ((1,1),(1,-1),(-1,1),(1,1)) +init_scrambling_luts: s 19 (-1) ((-1,1),(1,-1),(-1,1),(1,1)) +init_scrambling_luts: s 1a (1) ((1,-1),(1,-1),(-1,1),(1,1)) +init_scrambling_luts: s 1b (-1) ((-1,-1),(1,-1),(-1,1),(1,1)) +init_scrambling_luts: s 1c (1) ((1,1),(-1,-1),(-1,1),(1,1)) +init_scrambling_luts: s 1d (-1) ((-1,1),(-1,-1),(-1,1),(1,1)) +init_scrambling_luts: s 1e (1) ((1,-1),(-1,-1),(-1,1),(1,1)) +init_scrambling_luts: s 1f (-1) ((-1,-1),(-1,-1),(-1,1),(1,1)) +init_scrambling_luts: s 20 (1) ((1,1),(1,1),(1,-1),(1,1)) +init_scrambling_luts: s 21 (-1) ((-1,1),(1,1),(1,-1),(1,1)) +init_scrambling_luts: s 22 (1) ((1,-1),(1,1),(1,-1),(1,1)) +init_scrambling_luts: s 23 (-1) ((-1,-1),(1,1),(1,-1),(1,1)) +init_scrambling_luts: s 24 (1) ((1,1),(-1,1),(1,-1),(1,1)) +init_scrambling_luts: s 25 (-1) ((-1,1),(-1,1),(1,-1),(1,1)) +init_scrambling_luts: s 26 (1) ((1,-1),(-1,1),(1,-1),(1,1)) +init_scrambling_luts: s 27 (-1) ((-1,-1),(-1,1),(1,-1),(1,1)) +init_scrambling_luts: s 28 (1) ((1,1),(1,-1),(1,-1),(1,1)) +init_scrambling_luts: s 29 (-1) ((-1,1),(1,-1),(1,-1),(1,1)) +init_scrambling_luts: s 2a (1) ((1,-1),(1,-1),(1,-1),(1,1)) +init_scrambling_luts: s 2b (-1) ((-1,-1),(1,-1),(1,-1),(1,1)) +init_scrambling_luts: s 2c (1) ((1,1),(-1,-1),(1,-1),(1,1)) +init_scrambling_luts: s 2d (-1) ((-1,1),(-1,-1),(1,-1),(1,1)) +init_scrambling_luts: s 2e (1) ((1,-1),(-1,-1),(1,-1),(1,1)) +init_scrambling_luts: s 2f (-1) ((-1,-1),(-1,-1),(1,-1),(1,1)) +init_scrambling_luts: s 30 (1) ((1,1),(1,1),(-1,-1),(1,1)) +init_scrambling_luts: s 31 (-1) ((-1,1),(1,1),(-1,-1),(1,1)) +init_scrambling_luts: s 32 (1) ((1,-1),(1,1),(-1,-1),(1,1)) +init_scrambling_luts: s 33 (-1) ((-1,-1),(1,1),(-1,-1),(1,1)) +init_scrambling_luts: s 34 (1) ((1,1),(-1,1),(-1,-1),(1,1)) +init_scrambling_luts: s 35 (-1) ((-1,1),(-1,1),(-1,-1),(1,1)) +init_scrambling_luts: s 36 (1) ((1,-1),(-1,1),(-1,-1),(1,1)) +init_scrambling_luts: s 37 (-1) ((-1,-1),(-1,1),(-1,-1),(1,1)) +init_scrambling_luts: s 38 (1) ((1,1),(1,-1),(-1,-1),(1,1)) +init_scrambling_luts: s 39 (-1) ((-1,1),(1,-1),(-1,-1),(1,1)) +init_scrambling_luts: s 3a (1) ((1,-1),(1,-1),(-1,-1),(1,1)) +init_scrambling_luts: s 3b (-1) ((-1,-1),(1,-1),(-1,-1),(1,1)) +init_scrambling_luts: s 3c (1) ((1,1),(-1,-1),(-1,-1),(1,1)) +init_scrambling_luts: s 3d (-1) ((-1,1),(-1,-1),(-1,-1),(1,1)) +init_scrambling_luts: s 3e (1) ((1,-1),(-1,-1),(-1,-1),(1,1)) +init_scrambling_luts: s 3f (-1) ((-1,-1),(-1,-1),(-1,-1),(1,1)) +init_scrambling_luts: s 40 (1) ((1,1),(1,1),(1,1),(-1,1)) +init_scrambling_luts: s 41 (-1) ((-1,1),(1,1),(1,1),(-1,1)) +init_scrambling_luts: s 42 (1) ((1,-1),(1,1),(1,1),(-1,1)) +init_scrambling_luts: s 43 (-1) ((-1,-1),(1,1),(1,1),(-1,1)) +init_scrambling_luts: s 44 (1) ((1,1),(-1,1),(1,1),(-1,1)) +init_scrambling_luts: s 45 (-1) ((-1,1),(-1,1),(1,1),(-1,1)) +init_scrambling_luts: s 46 (1) ((1,-1),(-1,1),(1,1),(-1,1)) +init_scrambling_luts: s 47 (-1) ((-1,-1),(-1,1),(1,1),(-1,1)) +init_scrambling_luts: s 48 (1) ((1,1),(1,-1),(1,1),(-1,1)) +init_scrambling_luts: s 49 (-1) ((-1,1),(1,-1),(1,1),(-1,1)) +init_scrambling_luts: s 4a (1) ((1,-1),(1,-1),(1,1),(-1,1)) +init_scrambling_luts: s 4b (-1) ((-1,-1),(1,-1),(1,1),(-1,1)) +init_scrambling_luts: s 4c (1) ((1,1),(-1,-1),(1,1),(-1,1)) +init_scrambling_luts: s 4d (-1) ((-1,1),(-1,-1),(1,1),(-1,1)) +init_scrambling_luts: s 4e (1) ((1,-1),(-1,-1),(1,1),(-1,1)) +init_scrambling_luts: s 4f (-1) ((-1,-1),(-1,-1),(1,1),(-1,1)) +init_scrambling_luts: s 50 (1) ((1,1),(1,1),(-1,1),(-1,1)) +init_scrambling_luts: s 51 (-1) ((-1,1),(1,1),(-1,1),(-1,1)) +init_scrambling_luts: s 52 (1) ((1,-1),(1,1),(-1,1),(-1,1)) +init_scrambling_luts: s 53 (-1) ((-1,-1),(1,1),(-1,1),(-1,1)) +init_scrambling_luts: s 54 (1) ((1,1),(-1,1),(-1,1),(-1,1)) +init_scrambling_luts: s 55 (-1) ((-1,1),(-1,1),(-1,1),(-1,1)) +init_scrambling_luts: s 56 (1) ((1,-1),(-1,1),(-1,1),(-1,1)) +init_scrambling_luts: s 57 (-1) ((-1,-1),(-1,1),(-1,1),(-1,1)) +init_scrambling_luts: s 58 (1) ((1,1),(1,-1),(-1,1),(-1,1)) +init_scrambling_luts: s 59 (-1) ((-1,1),(1,-1),(-1,1),(-1,1)) +init_scrambling_luts: s 5a (1) ((1,-1),(1,-1),(-1,1),(-1,1)) +init_scrambling_luts: s 5b (-1) ((-1,-1),(1,-1),(-1,1),(-1,1)) +init_scrambling_luts: s 5c (1) ((1,1),(-1,-1),(-1,1),(-1,1)) +init_scrambling_luts: s 5d (-1) ((-1,1),(-1,-1),(-1,1),(-1,1)) +init_scrambling_luts: s 5e (1) ((1,-1),(-1,-1),(-1,1),(-1,1)) +init_scrambling_luts: s 5f (-1) ((-1,-1),(-1,-1),(-1,1),(-1,1)) +init_scrambling_luts: s 60 (1) ((1,1),(1,1),(1,-1),(-1,1)) +init_scrambling_luts: s 61 (-1) ((-1,1),(1,1),(1,-1),(-1,1)) +init_scrambling_luts: s 62 (1) ((1,-1),(1,1),(1,-1),(-1,1)) +init_scrambling_luts: s 63 (-1) ((-1,-1),(1,1),(1,-1),(-1,1)) +init_scrambling_luts: s 64 (1) ((1,1),(-1,1),(1,-1),(-1,1)) +init_scrambling_luts: s 65 (-1) ((-1,1),(-1,1),(1,-1),(-1,1)) +init_scrambling_luts: s 66 (1) ((1,-1),(-1,1),(1,-1),(-1,1)) +init_scrambling_luts: s 67 (-1) ((-1,-1),(-1,1),(1,-1),(-1,1)) +init_scrambling_luts: s 68 (1) ((1,1),(1,-1),(1,-1),(-1,1)) +init_scrambling_luts: s 69 (-1) ((-1,1),(1,-1),(1,-1),(-1,1)) +init_scrambling_luts: s 6a (1) ((1,-1),(1,-1),(1,-1),(-1,1)) +init_scrambling_luts: s 6b (-1) ((-1,-1),(1,-1),(1,-1),(-1,1)) +init_scrambling_luts: s 6c (1) ((1,1),(-1,-1),(1,-1),(-1,1)) +init_scrambling_luts: s 6d (-1) ((-1,1),(-1,-1),(1,-1),(-1,1)) +init_scrambling_luts: s 6e (1) ((1,-1),(-1,-1),(1,-1),(-1,1)) +init_scrambling_luts: s 6f (-1) ((-1,-1),(-1,-1),(1,-1),(-1,1)) +init_scrambling_luts: s 70 (1) ((1,1),(1,1),(-1,-1),(-1,1)) +init_scrambling_luts: s 71 (-1) ((-1,1),(1,1),(-1,-1),(-1,1)) +init_scrambling_luts: s 72 (1) ((1,-1),(1,1),(-1,-1),(-1,1)) +init_scrambling_luts: s 73 (-1) ((-1,-1),(1,1),(-1,-1),(-1,1)) +init_scrambling_luts: s 74 (1) ((1,1),(-1,1),(-1,-1),(-1,1)) +init_scrambling_luts: s 75 (-1) ((-1,1),(-1,1),(-1,-1),(-1,1)) +init_scrambling_luts: s 76 (1) ((1,-1),(-1,1),(-1,-1),(-1,1)) +init_scrambling_luts: s 77 (-1) ((-1,-1),(-1,1),(-1,-1),(-1,1)) +init_scrambling_luts: s 78 (1) ((1,1),(1,-1),(-1,-1),(-1,1)) +init_scrambling_luts: s 79 (-1) ((-1,1),(1,-1),(-1,-1),(-1,1)) +init_scrambling_luts: s 7a (1) ((1,-1),(1,-1),(-1,-1),(-1,1)) +init_scrambling_luts: s 7b (-1) ((-1,-1),(1,-1),(-1,-1),(-1,1)) +init_scrambling_luts: s 7c (1) ((1,1),(-1,-1),(-1,-1),(-1,1)) +init_scrambling_luts: s 7d (-1) ((-1,1),(-1,-1),(-1,-1),(-1,1)) +init_scrambling_luts: s 7e (1) ((1,-1),(-1,-1),(-1,-1),(-1,1)) +init_scrambling_luts: s 7f (-1) ((-1,-1),(-1,-1),(-1,-1),(-1,1)) +init_scrambling_luts: s 80 (1) ((1,1),(1,1),(1,1),(1,-1)) +init_scrambling_luts: s 81 (-1) ((-1,1),(1,1),(1,1),(1,-1)) +init_scrambling_luts: s 82 (1) ((1,-1),(1,1),(1,1),(1,-1)) +init_scrambling_luts: s 83 (-1) ((-1,-1),(1,1),(1,1),(1,-1)) +init_scrambling_luts: s 84 (1) ((1,1),(-1,1),(1,1),(1,-1)) +init_scrambling_luts: s 85 (-1) ((-1,1),(-1,1),(1,1),(1,-1)) +init_scrambling_luts: s 86 (1) ((1,-1),(-1,1),(1,1),(1,-1)) +init_scrambling_luts: s 87 (-1) ((-1,-1),(-1,1),(1,1),(1,-1)) +init_scrambling_luts: s 88 (1) ((1,1),(1,-1),(1,1),(1,-1)) +init_scrambling_luts: s 89 (-1) ((-1,1),(1,-1),(1,1),(1,-1)) +init_scrambling_luts: s 8a (1) ((1,-1),(1,-1),(1,1),(1,-1)) +init_scrambling_luts: s 8b (-1) ((-1,-1),(1,-1),(1,1),(1,-1)) +init_scrambling_luts: s 8c (1) ((1,1),(-1,-1),(1,1),(1,-1)) +init_scrambling_luts: s 8d (-1) ((-1,1),(-1,-1),(1,1),(1,-1)) +init_scrambling_luts: s 8e (1) ((1,-1),(-1,-1),(1,1),(1,-1)) +init_scrambling_luts: s 8f (-1) ((-1,-1),(-1,-1),(1,1),(1,-1)) +init_scrambling_luts: s 90 (1) ((1,1),(1,1),(-1,1),(1,-1)) +init_scrambling_luts: s 91 (-1) ((-1,1),(1,1),(-1,1),(1,-1)) +init_scrambling_luts: s 92 (1) ((1,-1),(1,1),(-1,1),(1,-1)) +init_scrambling_luts: s 93 (-1) ((-1,-1),(1,1),(-1,1),(1,-1)) +init_scrambling_luts: s 94 (1) ((1,1),(-1,1),(-1,1),(1,-1)) +init_scrambling_luts: s 95 (-1) ((-1,1),(-1,1),(-1,1),(1,-1)) +init_scrambling_luts: s 96 (1) ((1,-1),(-1,1),(-1,1),(1,-1)) +init_scrambling_luts: s 97 (-1) ((-1,-1),(-1,1),(-1,1),(1,-1)) +init_scrambling_luts: s 98 (1) ((1,1),(1,-1),(-1,1),(1,-1)) +init_scrambling_luts: s 99 (-1) ((-1,1),(1,-1),(-1,1),(1,-1)) +init_scrambling_luts: s 9a (1) ((1,-1),(1,-1),(-1,1),(1,-1)) +init_scrambling_luts: s 9b (-1) ((-1,-1),(1,-1),(-1,1),(1,-1)) +init_scrambling_luts: s 9c (1) ((1,1),(-1,-1),(-1,1),(1,-1)) +init_scrambling_luts: s 9d (-1) ((-1,1),(-1,-1),(-1,1),(1,-1)) +init_scrambling_luts: s 9e (1) ((1,-1),(-1,-1),(-1,1),(1,-1)) +init_scrambling_luts: s 9f (-1) ((-1,-1),(-1,-1),(-1,1),(1,-1)) +init_scrambling_luts: s a0 (1) ((1,1),(1,1),(1,-1),(1,-1)) +init_scrambling_luts: s a1 (-1) ((-1,1),(1,1),(1,-1),(1,-1)) +init_scrambling_luts: s a2 (1) ((1,-1),(1,1),(1,-1),(1,-1)) +init_scrambling_luts: s a3 (-1) ((-1,-1),(1,1),(1,-1),(1,-1)) +init_scrambling_luts: s a4 (1) ((1,1),(-1,1),(1,-1),(1,-1)) +init_scrambling_luts: s a5 (-1) ((-1,1),(-1,1),(1,-1),(1,-1)) +init_scrambling_luts: s a6 (1) ((1,-1),(-1,1),(1,-1),(1,-1)) +init_scrambling_luts: s a7 (-1) ((-1,-1),(-1,1),(1,-1),(1,-1)) +init_scrambling_luts: s a8 (1) ((1,1),(1,-1),(1,-1),(1,-1)) +init_scrambling_luts: s a9 (-1) ((-1,1),(1,-1),(1,-1),(1,-1)) +init_scrambling_luts: s aa (1) ((1,-1),(1,-1),(1,-1),(1,-1)) +init_scrambling_luts: s ab (-1) ((-1,-1),(1,-1),(1,-1),(1,-1)) +init_scrambling_luts: s ac (1) ((1,1),(-1,-1),(1,-1),(1,-1)) +init_scrambling_luts: s ad (-1) ((-1,1),(-1,-1),(1,-1),(1,-1)) +init_scrambling_luts: s ae (1) ((1,-1),(-1,-1),(1,-1),(1,-1)) +init_scrambling_luts: s af (-1) ((-1,-1),(-1,-1),(1,-1),(1,-1)) +init_scrambling_luts: s b0 (1) ((1,1),(1,1),(-1,-1),(1,-1)) +init_scrambling_luts: s b1 (-1) ((-1,1),(1,1),(-1,-1),(1,-1)) +init_scrambling_luts: s b2 (1) ((1,-1),(1,1),(-1,-1),(1,-1)) +init_scrambling_luts: s b3 (-1) ((-1,-1),(1,1),(-1,-1),(1,-1)) +init_scrambling_luts: s b4 (1) ((1,1),(-1,1),(-1,-1),(1,-1)) +init_scrambling_luts: s b5 (-1) ((-1,1),(-1,1),(-1,-1),(1,-1)) +init_scrambling_luts: s b6 (1) ((1,-1),(-1,1),(-1,-1),(1,-1)) +init_scrambling_luts: s b7 (-1) ((-1,-1),(-1,1),(-1,-1),(1,-1)) +init_scrambling_luts: s b8 (1) ((1,1),(1,-1),(-1,-1),(1,-1)) +init_scrambling_luts: s b9 (-1) ((-1,1),(1,-1),(-1,-1),(1,-1)) +init_scrambling_luts: s ba (1) ((1,-1),(1,-1),(-1,-1),(1,-1)) +init_scrambling_luts: s bb (-1) ((-1,-1),(1,-1),(-1,-1),(1,-1)) +init_scrambling_luts: s bc (1) ((1,1),(-1,-1),(-1,-1),(1,-1)) +init_scrambling_luts: s bd (-1) ((-1,1),(-1,-1),(-1,-1),(1,-1)) +init_scrambling_luts: s be (1) ((1,-1),(-1,-1),(-1,-1),(1,-1)) +init_scrambling_luts: s bf (-1) ((-1,-1),(-1,-1),(-1,-1),(1,-1)) +init_scrambling_luts: s c0 (1) ((1,1),(1,1),(1,1),(-1,-1)) +init_scrambling_luts: s c1 (-1) ((-1,1),(1,1),(1,1),(-1,-1)) +init_scrambling_luts: s c2 (1) ((1,-1),(1,1),(1,1),(-1,-1)) +init_scrambling_luts: s c3 (-1) ((-1,-1),(1,1),(1,1),(-1,-1)) +init_scrambling_luts: s c4 (1) ((1,1),(-1,1),(1,1),(-1,-1)) +init_scrambling_luts: s c5 (-1) ((-1,1),(-1,1),(1,1),(-1,-1)) +init_scrambling_luts: s c6 (1) ((1,-1),(-1,1),(1,1),(-1,-1)) +init_scrambling_luts: s c7 (-1) ((-1,-1),(-1,1),(1,1),(-1,-1)) +init_scrambling_luts: s c8 (1) ((1,1),(1,-1),(1,1),(-1,-1)) +init_scrambling_luts: s c9 (-1) ((-1,1),(1,-1),(1,1),(-1,-1)) +init_scrambling_luts: s ca (1) ((1,-1),(1,-1),(1,1),(-1,-1)) +init_scrambling_luts: s cb (-1) ((-1,-1),(1,-1),(1,1),(-1,-1)) +init_scrambling_luts: s cc (1) ((1,1),(-1,-1),(1,1),(-1,-1)) +init_scrambling_luts: s cd (-1) ((-1,1),(-1,-1),(1,1),(-1,-1)) +init_scrambling_luts: s ce (1) ((1,-1),(-1,-1),(1,1),(-1,-1)) +init_scrambling_luts: s cf (-1) ((-1,-1),(-1,-1),(1,1),(-1,-1)) +init_scrambling_luts: s d0 (1) ((1,1),(1,1),(-1,1),(-1,-1)) +init_scrambling_luts: s d1 (-1) ((-1,1),(1,1),(-1,1),(-1,-1)) +init_scrambling_luts: s d2 (1) ((1,-1),(1,1),(-1,1),(-1,-1)) +init_scrambling_luts: s d3 (-1) ((-1,-1),(1,1),(-1,1),(-1,-1)) +init_scrambling_luts: s d4 (1) ((1,1),(-1,1),(-1,1),(-1,-1)) +init_scrambling_luts: s d5 (-1) ((-1,1),(-1,1),(-1,1),(-1,-1)) +init_scrambling_luts: s d6 (1) ((1,-1),(-1,1),(-1,1),(-1,-1)) +init_scrambling_luts: s d7 (-1) ((-1,-1),(-1,1),(-1,1),(-1,-1)) +init_scrambling_luts: s d8 (1) ((1,1),(1,-1),(-1,1),(-1,-1)) +init_scrambling_luts: s d9 (-1) ((-1,1),(1,-1),(-1,1),(-1,-1)) +init_scrambling_luts: s da (1) ((1,-1),(1,-1),(-1,1),(-1,-1)) +init_scrambling_luts: s db (-1) ((-1,-1),(1,-1),(-1,1),(-1,-1)) +init_scrambling_luts: s dc (1) ((1,1),(-1,-1),(-1,1),(-1,-1)) +init_scrambling_luts: s dd (-1) ((-1,1),(-1,-1),(-1,1),(-1,-1)) +init_scrambling_luts: s de (1) ((1,-1),(-1,-1),(-1,1),(-1,-1)) +init_scrambling_luts: s df (-1) ((-1,-1),(-1,-1),(-1,1),(-1,-1)) +init_scrambling_luts: s e0 (1) ((1,1),(1,1),(1,-1),(-1,-1)) +init_scrambling_luts: s e1 (-1) ((-1,1),(1,1),(1,-1),(-1,-1)) +init_scrambling_luts: s e2 (1) ((1,-1),(1,1),(1,-1),(-1,-1)) +init_scrambling_luts: s e3 (-1) ((-1,-1),(1,1),(1,-1),(-1,-1)) +init_scrambling_luts: s e4 (1) ((1,1),(-1,1),(1,-1),(-1,-1)) +init_scrambling_luts: s e5 (-1) ((-1,1),(-1,1),(1,-1),(-1,-1)) +init_scrambling_luts: s e6 (1) ((1,-1),(-1,1),(1,-1),(-1,-1)) +init_scrambling_luts: s e7 (-1) ((-1,-1),(-1,1),(1,-1),(-1,-1)) +init_scrambling_luts: s e8 (1) ((1,1),(1,-1),(1,-1),(-1,-1)) +init_scrambling_luts: s e9 (-1) ((-1,1),(1,-1),(1,-1),(-1,-1)) +init_scrambling_luts: s ea (1) ((1,-1),(1,-1),(1,-1),(-1,-1)) +init_scrambling_luts: s eb (-1) ((-1,-1),(1,-1),(1,-1),(-1,-1)) +init_scrambling_luts: s ec (1) ((1,1),(-1,-1),(1,-1),(-1,-1)) +init_scrambling_luts: s ed (-1) ((-1,1),(-1,-1),(1,-1),(-1,-1)) +init_scrambling_luts: s ee (1) ((1,-1),(-1,-1),(1,-1),(-1,-1)) +init_scrambling_luts: s ef (-1) ((-1,-1),(-1,-1),(1,-1),(-1,-1)) +init_scrambling_luts: s f0 (1) ((1,1),(1,1),(-1,-1),(-1,-1)) +init_scrambling_luts: s f1 (-1) ((-1,1),(1,1),(-1,-1),(-1,-1)) +init_scrambling_luts: s f2 (1) ((1,-1),(1,1),(-1,-1),(-1,-1)) +init_scrambling_luts: s f3 (-1) ((-1,-1),(1,1),(-1,-1),(-1,-1)) +init_scrambling_luts: s f4 (1) ((1,1),(-1,1),(-1,-1),(-1,-1)) +init_scrambling_luts: s f5 (-1) ((-1,1),(-1,1),(-1,-1),(-1,-1)) +init_scrambling_luts: s f6 (1) ((1,-1),(-1,1),(-1,-1),(-1,-1)) +init_scrambling_luts: s f7 (-1) ((-1,-1),(-1,1),(-1,-1),(-1,-1)) +init_scrambling_luts: s f8 (1) ((1,1),(1,-1),(-1,-1),(-1,-1)) +init_scrambling_luts: s f9 (-1) ((-1,1),(1,-1),(-1,-1),(-1,-1)) +init_scrambling_luts: s fa (1) ((1,-1),(1,-1),(-1,-1),(-1,-1)) +init_scrambling_luts: s fb (-1) ((-1,-1),(1,-1),(-1,-1),(-1,-1)) +init_scrambling_luts: s fc (1) ((1,1),(-1,-1),(-1,-1),(-1,-1)) +init_scrambling_luts: s fd (-1) ((-1,1),(-1,-1),(-1,-1),(-1,-1)) +init_scrambling_luts: s fe (1) ((1,-1),(-1,-1),(-1,-1),(-1,-1)) +init_scrambling_luts: s ff (-1) ((-1,-1),(-1,-1),(-1,-1),(-1,-1)) +in 0, out 0 +in 1, out ffffffff +in 2, out 4ba5a933 +in 3, out b45a56cc +in 4, out 7d910e5a +in 5, out 826ef1a5 +in 6, out 3634a769 +in 7, out c9cb5896 +[LIBCONFIG] loader.ldpc: 2/2 parameters successfully set, (1 to default value) +[LOADER] library libldpc.so successfully loaded +[PHY] Initialise nr transport +[PHY] Allocating Transport Channel Buffers for PUCCH 0/2 +[PHY] Allocating Transport Channel Buffers for PUCCH 1/2 +[PHY] Allocating Transport Channel Buffers for DLSCH 0/2 +[PHY] Allocating Transport Channel Buffers for DLSCH 1/2 +[PHY] Allocating Transport Channel Buffer for ULSCH, UE 0 +[PHY] Allocating Transport Channel Buffer for ULSCH, UE 1 +Before ULSCH init : 0x3f4b300 +ULSCH_id 0 : 0x3f4b300 +ULSCH_id 0 (before rx antenna alloc) : 0x3f4b300 +ULSCH_id 0 (before llr alloc) : 0x3f4b300 +ULSCH_id 0 (after llr alloc) : 0x3f4b300 +ULSCH_id 1 : 0x3f4b300 +ULSCH_id 1 (before rx antenna alloc) : 0x3f4b300 +ULSCH_id 1 (before llr alloc) : 0x3f4b300 +ULSCH_id 1 (after llr alloc) : 0x3f4b300 +After ULSCH init : 0x3f4b300 +[PHY] Mapping RX ports from 1 RUs to gNB 0 +[PHY] gNB->num_RU:1 +[PHY] Attaching RU 0 antenna 0 to gNB antenna 0 +[PHY] Initializing gNB processes instance:0 CC_id 0 +[PHY] gNB->single_thread_flag:1 +ALL RUs ready - ALL gNBs ready +Sending sync to all threads +About to call end_configmodule() from main() /home/eurecom/panos/NR_RRC_harq_hacks/openairinterface5g/executables/nr-softmodem.c:983 +[CONFIG] calling config module end function... +got sync (ru_thread) +[CONFIG] free 398 config value pointers +Called end_configmodule() from main() /home/eurecom/panos/NR_RRC_harq_hacks/openairinterface5g/executables/nr-softmodem.c:985 +TYPE TO TERMINATE +Entering ITTI signals handler +[HW] Time in secs now: 112963128 +[HW] Time in secs last pps: 80717015 +[PHY] RU 0 rf device ready +[PHY] RU 0 no asynch_south interface +initializing tx write thread +end of tx write thread +[PHY] tx write thread ready +[MAC] Frame 8, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] [gNB 0] Frame 8 : MIB->BCH CC_id 0, Received 3 bytes +[PHY] ru_thread_prach() RACH waiting for RU to be configured +[PHY] ru_thread_prach() RU configured - RACH processing thread running +[MAC] Frame 16, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] [gNB 0] Frame 16 : MIB->BCH CC_id 0, Received 3 bytes +[MAC] Frame 24, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] [gNB 0] Frame 24 : MIB->BCH CC_id 0, Received 3 bytes +[MAC] Frame 32, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] [gNB 0] Frame 32 : MIB->BCH CC_id 0, Received 3 bytes +[MAC] Frame 40, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] [gNB 0] Frame 40 : MIB->BCH CC_id 0, Received 3 bytes +[MAC] Frame 48, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] [gNB 0] Frame 48 : MIB->BCH CC_id 0, Received 3 bytes +[MAC] Frame 56, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] [gNB 0] Frame 56 : MIB->BCH CC_id 0, Received 3 bytes +[MAC] Frame 64, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] [gNB 0] Frame 64 : MIB->BCH CC_id 0, Received 3 bytes +[MAC] Frame 72, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] [gNB 0] Frame 72 : MIB->BCH CC_id 0, Received 3 bytes +[MAC] Frame 80, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 88, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 96, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 104, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 112, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 120, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 128, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 136, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 144, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 152, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 160, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 168, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 176, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 184, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 192, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 200, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 208, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 216, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 224, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 232, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 240, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 248, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 256, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 264, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 272, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 280, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 288, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 296, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 304, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 312, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 320, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 328, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 336, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 344, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 352, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 360, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 368, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 376, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 384, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 392, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 400, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 408, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 416, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 424, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 432, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 440, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 448, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 456, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 464, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 472, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 480, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 488, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 496, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 504, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 512, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 520, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 528, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 536, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 544, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 552, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 560, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 568, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 576, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 584, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 592, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 600, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 608, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 616, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 624, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 632, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 640, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 648, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 656, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 664, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 672, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 680, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 688, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 696, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 704, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 712, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 720, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 728, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 736, slot 0: Adding BCH PDU in position 0 (length 3) +[SCTP] Found data for descriptor 87 +[SCTP] [136][87] Msg of length 2161 received from port 36422, on stream 0, PPID 27 + + + 27 + + + + + + 111 + + + 0 + + + + 248 + + + + + 0000000000000000 + + + 0000000000000000 + + + + + + 203 + + + + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + + + + + 204 + + + + 100000000 + 100000000 + + + + + 205 + + + + + 209 + + + + 5 + 1 + + + + + + + + + 1 + + 15 + + + + + + + 11000000101010000001001001100011 + + 00 00 00 02 + + + + + + + + + + + 206 + + + + 3A 03 08 78 8D DB 80 51 81 80 01 04 0C 20 71 63 + 08 11 24 4C C1 93 67 0F A1 4A 99 3A 85 AF CC 58 + FF FF FF 95 FF EC 7F FF FF CA FF F6 3F FF FF E5 + 7F FB 1F FF FF F2 BF FD 8F FF FF F9 5F FE C7 FF + FF FC AF FF 63 FF FF FE 57 FF B1 FF FF FF 2B FF + D8 FF FF FF 95 FF EC 7F FF FF CA FF F6 3F FF FF + E5 7F FB 1F FF FF F2 BF FD 8F FF FF F9 5F FE C7 + FF FF FC AF FF 63 FF FF FE 57 FF B1 FF FF FF 2B + FF D8 FF FF FF 95 FF EC 7F FF FF CA FF F6 3F FF + FF E5 7F FB 1F FF FF F2 BF FD 8F FF FF F9 5F FE + C7 FF FF FC AF FF 63 FF FF FE 57 FF B1 FF FF FF + 2B FF D8 FF FF FF 95 FF DF F3 FF AF A2 0C 00 8C + 85 3C 10 65 3A 54 97 1F C0 68 FE 00 00 00 00 02 + 04 BD 80 00 00 08 09 DF 00 00 00 02 EE C0 0C 00 + A0 04 00 04 00 A0 06 00 48 20 0C 10 06 08 03 04 + 01 82 10 C1 08 60 84 30 42 18 20 0C 10 06 08 43 + 04 21 82 00 C1 00 60 80 30 40 18 20 0C 10 06 18 + 02 10 C3 00 42 18 60 08 43 0C 01 08 61 80 21 0C + 30 04 21 86 00 84 30 C0 10 86 10 02 18 40 08 61 + 00 21 84 00 86 10 02 18 40 08 61 00 21 84 00 86 + 10 02 18 20 0C 10 06 18 02 10 C3 00 42 18 60 08 + 43 0C 01 08 61 00 21 84 00 86 10 02 18 41 08 61 + 04 21 84 10 86 10 42 18 41 08 61 04 21 84 10 86 + 10 42 18 41 08 60 84 30 42 18 21 0C 10 86 00 61 + 00 21 84 00 86 10 02 18 40 08 61 00 21 84 00 86 + 08 43 04 21 82 00 C1 00 60 04 B4 7D 54 6C 1E 00 + 00 2E 81 8C 00 08 20 60 00 02 08 18 20 00 80 06 + 10 00 20 81 86 00 08 00 62 00 02 00 18 E0 00 80 + 06 58 00 20 01 98 00 08 00 68 00 02 00 1A 20 00 + 80 06 90 00 20 01 A6 00 08 00 6C 00 02 00 1B 20 + 00 80 06 D8 00 20 00 B8 10 00 5F 08 00 70 80 02 + 00 1C A0 00 82 07 30 00 20 01 CE 00 08 20 74 00 + 02 08 0D A1 00 0F F0 00 40 07 4C 00 10 11 82 08 + 2A 61 03 18 00 10 41 C7 00 04 04 60 82 0A 38 40 + C6 00 04 10 71 80 01 05 08 20 82 8C 10 70 80 01 + 04 1C 60 00 41 40 08 20 A3 04 1C 00 00 41 07 4C + 00 10 10 02 08 2A 61 03 00 00 10 41 C2 00 04 14 + 00 82 0A 10 41 C0 00 04 10 76 C0 01 01 08 20 82 + B6 10 30 80 01 04 1D 30 00 40 42 08 20 A9 84 0C + 20 00 41 07 1C 00 10 10 82 08 28 E1 03 08 00 10 + 43 D3 00 04 04 60 82 84 12 50 02 08 6A 61 03 18 + 00 10 50 82 4A 00 41 0D 4C 20 23 04 1C 20 00 49 + 40 08 21 A9 84 04 60 82 84 12 70 00 01 04 3D 30 + 00 40 46 08 28 41 05 00 20 86 A6 10 31 80 01 05 + 08 20 A0 04 10 D4 C2 02 30 41 C2 00 04 14 00 82 + 1A 98 40 46 08 28 41 07 00 00 10 42 D3 00 04 04 + 60 82 84 12 42 53 08 18 C0 00 82 84 12 42 53 08 + 08 C1 07 08 00 12 42 D3 00 04 04 60 82 84 10 42 + 53 08 18 C0 00 82 84 10 42 53 08 08 C1 07 08 00 + 10 42 D3 00 04 04 60 82 80 10 42 53 08 18 C0 00 + 82 80 10 42 53 08 08 C1 07 00 00 10 41 D3 00 04 + 04 60 92 0A 98 40 C6 00 04 90 F1 C0 01 01 18 20 + A1 04 14 00 82 1A 38 40 C6 00 04 14 20 82 80 10 + 43 47 08 08 C1 07 08 00 10 50 02 08 68 E1 01 18 + 20 A1 04 1C 00 00 41 0B 1C 00 10 11 82 0A 10 41 + 09 1C 20 63 00 02 0A 10 41 09 1C 20 23 04 1C 20 + 00 41 0B 18 00 12 50 82 0A 00 41 09 18 24 E1 00 + 02 0A 00 41 09 18 24 A1 04 1C 00 00 41 0B 18 00 + 10 50 82 4A 00 41 09 18 20 E1 00 02 4A 00 41 09 + 18 20 A1 04 9C 00 00 41 0B 18 00 10 50 82 0A 00 + 41 09 18 20 E1 00 02 0A 00 41 09 18 20 A1 04 1C + 00 00 41 07 18 04 12 50 82 08 28 C1 27 08 00 10 + 41 C6 00 04 14 20 92 0A 30 41 C2 01 04 90 31 80 + 41 24 2D 30 00 40 42 09 28 01 04 25 30 81 84 00 + 09 28 01 04 25 30 80 84 12 70 00 01 04 2D 30 00 + 40 42 08 28 01 04 25 30 81 84 00 08 28 01 04 25 + 30 80 84 10 70 00 01 04 1C 20 10 49 40 08 20 A1 + 04 9C 00 00 41 07 4C 00 10 10 82 48 2A 61 03 08 + 00 12 40 C2 01 04 9B B6 3F FF FF E5 7F FB 1F FF + FF F2 BF FD 8F FF FF F9 5F FE C7 FF FF FC AF FF + 63 FF FF FE 57 FF B1 FF FF FF 2B FF D8 FF FF FF + 95 FF EC 7F FF FF CA FF F6 3F FF FF E5 7F FB 1F + FF FF F2 BF FD 8F FF FF F9 5F FE C7 FF FF FC AF + FF 63 FF FF FE 57 FF B1 FF FF FF 2B FF D8 FF FF + FF 95 FF EC 7F FF FF CA FF F6 3F FF FF E5 7F FB + 1F FF FF F2 BF FD 8F FF FF F9 5F FE C7 FF FF FC + AF FF 63 FF FF FE 57 FF B1 FF FF FF 2B FF D8 FF + FF FF 95 FF EC 7F FF FF CA FF F6 3F FF FF E5 7F + FB 1F FF FF F2 BF FD 8F FF FF F9 5F FE C7 FF FF + FC AF FF 63 FF FF FE 57 FF B1 FF FF FF 2B FF D8 + FF FF FF 95 FF EC 7F FF FF CA FF F6 3F FF FF E5 + 7F FB 1F FF FF F2 BF FD 8F FF FF F9 5F FE C7 FF + FF FC AF FF 63 FF FF FE 57 FF B1 FF FF FF 2B FF + D8 FF FF FF 95 FF EC 7F FF FF CA FF F6 3F FF FF + E5 7F FB 1F FF FF F2 BF FD 8F FF FF F9 5F FE C7 + FF FF FC AF FF 63 FF FF FE 57 FF B1 FF FF FF 2B + FF D8 FF FF FF 95 FF EC 7F FF FF CA FF F6 3F FF + FF E5 7F FB 1F FF FF F2 BF FD 8F FF FF F9 5F FE + C7 FF FF FC AF FF 63 FF FF FE 57 FF B1 FF FF FF + 2B FF D8 FF FF FF 95 FF EC 7F FF FF CA FF F6 3F + FF FF E5 7F FB 1F FF FF F2 BF FD 8F FF FF F9 5F + FE C7 FF FF FC AF FF 63 FF FF FE 57 FF B1 FF FF + FF 2B FF D8 FF FF FF 95 FF EC 7F FF FF CA FF F6 + 3F FF FF E5 7F FB 1F FF FF F2 BF FD 8F FF FF F9 + 5F FE C7 FF FF FC AF FF 63 FF FF FE 57 FF B1 FF + FF FF 2B FF D8 FF FF FF 95 FF EC 7F FF FF CA FF + F6 3F FF FF E5 7F FB 1F FF FF F2 BF FD 8F FF FF + F9 5F FE C7 FF FF FC AF FF 63 FF FF FE 57 FF B1 + FF FF FF 2B FF D8 FF FF FF 95 FF EC 7F FF FF CA + FF F6 3F FF FF E5 7F FB 1F FF FF F2 BF FD 8F FF + FF F9 5F FE C7 FF FF FC AF FF 63 FF FF FE 57 FF + B1 FF FF FF 2B FF D8 FF FF FF 95 FF EC 7F FF FF + CA FF F6 3F FF FF E5 7F FB 1F FF FF F2 BF FD 8F + FF FF F9 5F FE C7 FF FF FC AF FF 63 FF FF FE 57 + FF B1 FF FF FF 2B FF B6 76 00 00 7E C4 0D 9D 80 + 00 04 7C EC 00 00 BA 00 00 00 8B C5 E2 F1 78 78 + 78 78 72 1E 1E 1E 1E 1E 1E 3F 8F C2 1E 1E 1E 1E + 1E 1E 1E 1E 1E 1E 2F 17 8B 90 F0 F0 F0 F1 78 BC + 5E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1C 8B 80 0F 74 + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 00 00 00 00 00 00 00 00 04 04 10 04 01 00 40 10 + 04 01 00 40 10 04 01 00 40 10 04 01 00 40 10 04 + 03 00 0C 00 30 00 C0 03 00 0C 00 30 00 C0 02 00 + 20 02 00 20 02 00 20 02 00 20 02 00 10 04 03 00 + 0C 00 30 00 C0 02 00 20 02 00 20 02 00 20 02 00 + 20 02 00 20 02 00 20 01 00 40 10 04 00 02 00 20 + 02 00 20 02 00 20 01 00 40 10 04 00 3E 08 02 40 + 07 CC AF 34 08 02 96 3F FF FF FF FF FF FC D2 97 + 78 A0 1F 00 08 40 13 0C 00 00 00 00 00 0A A1 34 + 91 02 02 00 05 E4 84 12 E2 80 02 6B C0 C0 04 00 + 01 04 10 40 00 28 C8 00 00 08 80 00 05 58 E1 00 + 00 00 01 4F 7E 03 02 00 00 01 40 48 07 06 0E 22 + 0C 00 02 13 60 10 73 E4 20 F0 00 82 40 31 10 00 + A0 58 9B A0 21 94 34 08 81 07 41 86 04 C0 42 54 + 41 01 00 80 06 08 1C 1C 22 03 C8 0F 00 20 1A 02 + 6E 26 F0 00 09 00 00 00 00 72 A6 80 00 80 00 02 + 0C 30 00 1A 55 30 62 00 11 C0 48 16 0C 01 C4 D0 + 00 00 00 40 04 03 40 4D 01 04 40 41 4E 9C 00 02 + 00 01 00 80 80 10 02 00 + + + + + + + + +[X2AP] X2AP_ProcedureCode_id_sgNBAdditionPreparation message! +[X2AP] X2AP Association id: 136 +[RRC] x2u tunnel: index 0 target sgw ip 192.168.18.99 length 32 gtp teid 0 +[NR_RRC] Received message X2AP_ENDC_SGNB_ADDITION_REQ +[NR_RRC] Received ENDC sgNB addition request from X2AP + + + + + 1 + + + + + + + + DD B8 05 18 18 00 10 40 C2 07 16 30 81 12 44 CC + 19 36 70 FA 14 A9 93 A8 5A FC C5 8F FF FF F9 5F + FE C7 FF FF FC AF FF 63 FF FF FE 57 FF B1 FF FF + FF 2B FF D8 FF FF FF 95 FF EC 7F FF FF CA FF F6 + 3F FF FF E5 7F FB 1F FF FF F2 BF FD 8F FF FF F9 + 5F FE C7 FF FF FC AF FF 63 FF FF FE 57 FF B1 FF + FF FF 2B FF D8 FF FF FF 95 FF EC 7F FF FF CA FF + F6 3F FF FF E5 7F FB 1F FF FF F2 BF FD 8F FF FF + F9 5F FE C7 FF FF FC AF FF 63 FF FF FE 57 FF B1 + FF FF FF 2B FF D8 FF FF FF 95 FF EC 7F FF FF CA + FF F6 3F FF FF E5 7F FB 1F FF FF F2 BF FD 8F FF + FF F9 5F FD FF 3F FA FA 20 C0 08 C8 53 C1 06 53 + A5 49 71 FC 06 8F E0 00 00 00 00 20 4B D8 00 00 + 00 80 9D F0 00 00 00 2E EC 00 C0 0A 00 40 00 40 + 0A 00 60 04 82 00 C1 00 60 80 30 40 18 21 0C 10 + 86 08 43 04 21 82 00 C1 00 60 84 30 42 18 20 0C + 10 06 08 03 04 01 82 00 C1 00 61 80 21 0C 30 04 + 21 86 00 84 30 C0 10 86 18 02 10 C3 00 42 18 60 + 08 43 0C 01 08 61 00 21 84 00 86 10 02 18 40 08 + 61 00 21 84 00 86 10 02 18 40 08 61 00 21 82 00 + C1 00 61 80 21 0C 30 04 21 86 00 84 30 C0 10 86 + 10 02 18 40 08 61 00 21 84 10 86 10 42 18 41 08 + 61 04 21 84 10 86 10 42 18 41 08 61 04 21 84 10 + 86 08 43 04 21 82 10 C1 08 60 06 10 02 18 40 08 + 61 00 21 84 00 86 10 02 18 40 08 60 84 30 42 18 + 20 0C 10 06 00 4B 47 D5 46 C1 E0 00 02 E8 18 C0 + 00 82 06 00 00 20 81 82 00 08 00 61 00 02 08 18 + 60 00 80 06 20 00 20 01 8E 00 08 00 65 80 02 00 + 19 80 00 80 06 80 00 20 01 A2 00 08 00 69 00 02 + 00 1A 60 00 80 06 C0 00 20 01 B2 00 08 00 6D 80 + 02 00 0B 81 00 05 F0 80 07 08 00 20 01 CA 00 08 + 20 73 00 02 00 1C E0 00 82 07 40 00 20 80 DA 10 + 00 FF 00 04 00 74 C0 01 01 18 20 82 A6 10 31 80 + 01 04 1C 70 00 40 46 08 20 A3 84 0C 60 00 41 07 + 18 00 10 50 82 08 28 C1 07 08 00 10 41 C6 00 04 + 14 00 82 0A 30 41 C0 00 04 10 74 C0 01 01 00 20 + 82 A6 10 30 00 01 04 1C 20 00 41 40 08 20 A1 04 + 1C 00 00 41 07 6C 00 10 10 82 08 2B 61 03 08 00 + 10 41 D3 00 04 04 20 82 0A 98 40 C2 00 04 10 71 + C0 01 01 08 20 82 8E 10 30 80 01 04 3D 30 00 40 + 46 08 28 41 25 00 20 86 A6 10 31 80 01 05 08 24 + A0 04 10 D4 C2 02 30 41 C2 00 04 94 00 82 1A 98 + 40 46 08 28 41 27 00 00 10 43 D3 00 04 04 60 82 + 84 10 50 02 08 6A 61 03 18 00 10 50 82 0A 00 41 + 0D 4C 20 23 04 1C 20 00 41 40 08 21 A9 84 04 60 + 82 84 10 70 00 01 04 2D 30 00 40 46 08 28 41 24 + 25 30 81 8C 00 08 28 41 24 25 30 80 8C 10 70 80 + 01 24 2D 30 00 40 46 08 28 41 04 25 30 81 8C 00 + 08 28 41 04 25 30 80 8C 10 70 80 01 04 2D 30 00 + 40 46 08 28 01 04 25 30 81 8C 00 08 28 01 04 25 + 30 80 8C 10 70 00 01 04 1D 30 00 40 46 09 20 A9 + 84 0C 60 00 49 0F 1C 00 10 11 82 0A 10 41 40 08 + 21 A3 84 0C 60 00 41 42 08 28 01 04 34 70 80 8C + 10 70 80 01 05 00 20 86 8E 10 11 82 0A 10 41 C0 + 00 04 10 B1 C0 01 01 18 20 A1 04 10 91 C2 06 30 + 00 20 A1 04 10 91 C2 02 30 41 C2 00 04 10 B1 80 + 01 25 08 20 A0 04 10 91 82 4E 10 00 20 A0 04 10 + 91 82 4A 10 41 C0 00 04 10 B1 80 01 05 08 24 A0 + 04 10 91 82 0E 10 00 24 A0 04 10 91 82 0A 10 49 + C0 00 04 10 B1 80 01 05 08 20 A0 04 10 91 82 0E + 10 00 20 A0 04 10 91 82 0A 10 41 C0 00 04 10 71 + 80 41 25 08 20 82 8C 12 70 80 01 04 1C 60 00 41 + 42 09 20 A3 04 1C 20 10 49 03 18 04 12 42 D3 00 + 04 04 20 92 80 10 42 53 08 18 40 00 92 80 10 42 + 53 08 08 41 27 00 00 10 42 D3 00 04 04 20 82 80 + 10 42 53 08 18 40 00 82 80 10 42 53 08 08 41 07 + 00 00 10 41 C2 01 04 94 00 82 0A 10 49 C0 00 04 + 10 74 C0 01 01 08 24 82 A6 10 30 80 01 24 0C 20 + 10 49 BB 63 FF FF FE 57 FF B1 FF FF FF 2B FF D8 + FF FF FF 95 FF EC 7F FF FF CA FF F6 3F FF FF E5 + 7F FB 1F FF FF F2 BF FD 8F FF FF F9 5F FE C7 FF + FF FC AF FF 63 FF FF FE 57 FF B1 FF FF FF 2B FF + D8 FF FF FF 95 FF EC 7F FF FF CA FF F6 3F FF FF + E5 7F FB 1F FF FF F2 BF FD 8F FF FF F9 5F FE C7 + FF FF FC AF FF 63 FF FF FE 57 FF B1 FF FF FF 2B + FF D8 FF FF FF 95 FF EC 7F FF FF CA FF F6 3F FF + FF E5 7F FB 1F FF FF F2 BF FD 8F FF FF F9 5F FE + C7 FF FF FC AF FF 63 FF FF FE 57 FF B1 FF FF FF + 2B FF D8 FF FF FF 95 FF EC 7F FF FF CA FF F6 3F + FF FF E5 7F FB 1F FF FF F2 BF FD 8F FF FF F9 5F + FE C7 FF FF FC AF FF 63 FF FF FE 57 FF B1 FF FF + FF 2B FF D8 FF FF FF 95 FF EC 7F FF FF CA FF F6 + 3F FF FF E5 7F FB 1F FF FF F2 BF FD 8F FF FF F9 + 5F FE C7 FF FF FC AF FF 63 FF FF FE 57 FF B1 FF + FF FF 2B FF D8 FF FF FF 95 FF EC 7F FF FF CA FF + F6 3F FF FF E5 7F FB 1F FF FF F2 BF FD 8F FF FF + F9 5F FE C7 FF FF FC AF FF 63 FF FF FE 57 FF B1 + FF FF FF 2B FF D8 FF FF FF 95 FF EC 7F FF FF CA + FF F6 3F FF FF E5 7F FB 1F FF FF F2 BF FD 8F FF + FF F9 5F FE C7 FF FF FC AF FF 63 FF FF FE 57 FF + B1 FF FF FF 2B FF D8 FF FF FF 95 FF EC 7F FF FF + CA FF F6 3F FF FF E5 7F FB 1F FF FF F2 BF FD 8F + FF FF F9 5F FE C7 FF FF FC AF FF 63 FF FF FE 57 + FF B1 FF FF FF 2B FF D8 FF FF FF 95 FF EC 7F FF + FF CA FF F6 3F FF FF E5 7F FB 1F FF FF F2 BF FD + 8F FF FF F9 5F FE C7 FF FF FC AF FF 63 FF FF FE + 57 FF B1 FF FF FF 2B FF D8 FF FF FF 95 FF EC 7F + FF FF CA FF F6 3F FF FF E5 7F FB 1F FF FF F2 BF + FD 8F FF FF F9 5F FE C7 FF FF FC AF FF 63 FF FF + FE 57 FF B1 FF FF FF 2B FF D8 FF FF FF 95 FF EC + 7F FF FF CA FF F6 3F FF FF E5 7F FB 1F FF FF F2 + BF FD 8F FF FF F9 5F FE C7 FF FF FC AF FF 63 FF + FF FE 57 FF B1 FF FF FF 2B FF D8 FF FF FF 95 FF + EC 7F FF FF CA FF F6 3F FF FF E5 7F FB 1F FF FF + F2 BF FB 67 60 00 07 EC 40 D9 D8 00 00 47 CE C0 + 00 0B A0 00 00 08 BC 5E 2F 17 87 87 87 87 21 E1 + E1 E1 E1 E1 E3 F8 FC 21 E1 E1 E1 E1 E1 E1 E1 E1 + E1 E2 F1 78 B9 0F 0F 0F 0F 17 8B C5 E1 E1 E1 E1 + E1 E1 E1 E1 E1 E1 E1 C8 B8 00 F7 40 00 00 00 00 + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 00 00 00 00 40 41 00 40 10 04 01 00 40 10 04 01 + 00 40 10 04 01 00 40 10 04 01 00 40 30 00 C0 03 + 00 0C 00 30 00 C0 03 00 0C 00 20 02 00 20 02 00 + 20 02 00 20 02 00 20 01 00 40 30 00 C0 03 00 0C + 00 20 02 00 20 02 00 20 02 00 20 02 00 20 02 00 + 20 02 00 10 04 01 00 40 00 20 02 00 20 02 00 20 + 02 00 10 04 01 00 40 03 E0 80 24 00 7C CA F3 40 + 80 29 63 FF FF FF FF FF FF CD 29 77 8A 01 F0 00 + 84 01 30 C0 00 00 00 00 00 AA 13 49 10 20 20 00 + 5E 48 41 2E 28 00 26 BC 0C 00 40 00 10 41 04 00 + 02 8C 80 00 00 88 00 00 + + + + + + E1 00 00 00 01 4F 7E 03 02 00 00 01 40 48 07 06 + 0E 22 0C 00 02 13 60 10 73 E4 20 F0 00 82 40 31 + 10 00 A0 58 9B A0 21 94 34 08 81 07 41 86 04 C0 + 42 54 41 01 00 80 06 08 1C 1C 22 03 C8 0F 00 20 + 1A 02 6E 26 F0 00 09 00 00 00 00 72 A6 80 00 80 + 00 02 0C 30 00 1A 55 30 + + + + + + 01 1C 04 81 60 C0 1C 4D 00 00 00 04 00 40 34 04 + D0 10 44 04 14 E9 C0 00 20 00 10 08 08 01 00 20 + + + + + + + + + + +[NR_RRC] Returning new UE context at 0x7f5188003980 + + 1 + + + 4 + + 1 + + + + + + + + + + + + + + + + + + + + + 1 + + + 1 + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + 20 + + + + 1 + + + 0 + + + 641272 + + 78 + + 640000 + + + 0 + + 106 + + + + + + 6366 + + + + + 0 + 0 + + + + + + + 0 + + 40 + + + 0 + + 53 + + + 0 + + 54 + + + 0 + + 57 + + + + + + + + + + 78 + + + + 0 + + 106 + + + 20 + + + + 6366 + + + + + + 98 + + 0 + 13 + -100 + + + + + + + + + 19 + + 1 + + + + + + + + + + + 2 + + 55 + + + 2 + + 69 + + + 7 + + 52 + + + 1 + -90 + + + + + 0 + + 40 + -90 + + + + + + + + 10000000 + + + + + + + + + + 7 + 6 + 2 + 4 + + + -25 + + 9195 + + + + + + + 98 + + 0 + 13 + -100 + + + + + + + + + + 0 + 63 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + 28875 + + + + + + 1 + + 111111111111111100000000000000000000000000000 + + 1 + + + + + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + + + + + 1 + 1 + + + + + 11000000000000 + + + + + + + + + + + + + + + + + 1 + + + + + + + 0 + + 40 + + + 0 + + 53 + + + 0 + + 54 + + + 0 + + 57 + + + + + + + + + + + 1 + + 111111111111111100000000000000000000000000000 + + 1 + + + + + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + + + + + + 2 + 1 + + + + + 11000000000000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + 1 + + + + + + + + + + + + + + + + 0 + 0 + + + + + + 0 + + 0 + + + + + + + + 1 + + + + + + + 0 + + 0 + + + + 1 + 2 + + + + + -80 + + + + + 0 + + + + 0 + 0 + + + + 2 + + + + 0 + 0 + + 61 + 0 + 0 + + + + + + + 40 + + + 0 + + + + + + + + + + 1 + + + 28875 + + + + + + 98 + + 0 + 13 + -100 + + + + + + + + + 19 + + 1 + + + + + + + + + + + 2 + + 55 + + + 2 + + 69 + + + 7 + + 52 + + + 1 + -90 + + + + + 0 + + 40 + -90 + + + + + + + + + 0 + + 1 + 2 + + + + 1 + + 3 + 4 + + + + + + 1 + 48 + + + 0 + 1 + 13 + + + + + 2 + 48 + + + 0 + 1 + 12 + + + + + 3 + 40 + + + 16 + 1 + 13 + + + + + 4 + 40 + + + 16 + 1 + 12 + + + + + + + + + + + 2 + 3 + 4 + 5 + 6 + 7 + 0 + 0 + + + + 1 + + 0 + + 0 + 1 + + + + + 0 + 0 + 0 + 0 + 0 + + + 1 + 0 + + + + + 0 + + 0 + + + + + + + + + + + + + + + + + + + + 0 + 0 + + + + + + 0 + + 0 + + + + + + + + 1 + + + + + + + 0 + + 0 + + + + 1 + 2 + + + + + -80 + + + + + 0 + + + + 0 + 0 + + + + 2 + + + + 0 + 0 + + 61 + 0 + 0 + + + + + + + 40 + + + 0 + + + + + + + + + + 1 + + + + + 2 + + + + 0 + + + + + + + + 5 + + 1 + + + + + + + + + + + + + + + + + + + + +[RRC] Dumping NR_RRCReconfiguration message (309 bytes) +0881325c40f1c032086fc61a083cc8390a83c4201065742dcc600349c8f802693880000004d2c31bc6a000a700a201ac0368073a404d0000269c9c31bc65462001acccd7dc9c0497942b7858b1ed1385c00a1c0300842c0760122323ebc48c40035999a0007e1b600203805b2012400404808c659c32cca281ffff000000010e0008206102860e6e088600001010034e0144035806d00e5950081ffff000000010e0008206102860e1b84218000100b20020240464ac2a581c2082c1c1821c200e25038000040bde802000400001e8002820032e70cb32a31000d6666bee4e024bca15bc2c58f689c2e0050e0d54835010208841840601180068086001803142f681050bd920f23456700008000fe8421080100804b038410583830438401c4a0700000817bd004000800003d00050400e00203100 +[RRC] Dumping scg_RB_Config message (8 bytes) +1409281782c00c00 +[RRC] S1-U tunnel: index 0 target sgw ip 192.168.18.99 length 32 gtp teid 2 +[GTPV1U] Configured GTPu address : c612a8c0 +[GTPV1U] Copied to create_tunnel_resp tunnel: index 0 target gNB ip 192.168.18.198 length 4 gtp teid 2462855170 +[RRC] [FRAME 00000][eNB][MOD 00][RNTI 23eb] rrc_eNB_process_GTPV1U_CREATE_TUNNEL_RESP tunnel (2462855170, 2462855170) bearer UE context index 0, msg index 0, id 5, gtp addr len 4 +[RRC] S1-U create_tunnel_resp tunnel: index 0 target gNB ip 192.168.18.198 length 4 gtp teid 2462855170 +[RRC] X2AP sGNB Addition Request: index 0 target gNB ip 192.168.18.198 length 32 gtp teid 2462855170 +[MAC] [gNB 0] Adding UE with rnti 23eb (next avail 0, num_UEs 0) +[MAC] gNB 0] Add NR UE_id 0 : rnti 23eb +[PHY] Added new UE_id 0/23eb with initial secondaryCellGroup + + + 27 + + + + + + 111 + + + 0 + + + + 207 + + + 0 + + + + 210 + + + + + 213 + + + + 5 + + + + + + + + + + 11000000101010000001001011000110 + + 92 CC 30 02 + + + + + + + + + + + 211 + + + + 18 04 09 A8 44 09 92 E2 07 8E 01 90 43 7E 30 D0 + 41 E6 41 C8 54 1E 21 00 83 2B A1 6E 63 00 1A 4E + 47 C0 13 49 C4 00 00 00 26 96 18 DE 35 00 05 38 + 05 10 0D 60 1B 40 39 D2 02 68 00 01 34 E4 E1 8D + E3 2A 31 00 0D 66 66 BE E4 E0 24 BC A1 5B C2 C5 + 8F 68 9C 2E 00 50 E0 18 04 21 60 3B 00 91 19 1F + 5E 24 62 00 1A CC CD 00 03 F0 DB 00 10 1C 02 D9 + 00 92 00 20 24 04 63 2C E1 96 65 14 0F FF F8 00 + 00 00 08 70 00 41 03 08 14 30 73 70 44 30 00 00 + 80 80 1A 70 0A 20 1A C0 36 80 72 CA 80 40 FF FF + 80 00 00 00 87 00 04 10 30 81 43 07 0D C2 10 C0 + 00 08 05 90 01 01 20 23 25 61 52 C0 E1 04 16 0E + 0C 10 E1 00 71 28 1C 00 00 20 5E F4 01 00 02 00 + 00 0F 40 01 41 00 19 73 86 59 95 18 80 06 B3 33 + 5F 72 70 12 5E 50 AD E1 62 C7 B4 4E 17 00 28 70 + 6A A4 1A 80 81 04 42 0C 20 30 08 C0 03 40 43 00 + 0C 01 8A 17 B4 08 28 5E C9 07 91 A2 B3 80 00 40 + 00 7F 42 10 84 00 80 40 25 81 C2 08 2C 1C 18 21 + C2 00 E2 50 38 00 00 40 BD E8 02 00 04 00 00 1E + 80 02 82 00 70 01 01 88 00 40 A0 49 40 BC 16 00 + 60 00 + + + + + + + + +[X2AP] Received elements for X2AP_ENDC_SGNB_ADDITION_REQ_ACK +[SCTP] Successfully sent 371 bytes on stream 0 for assoc_id 136 +[MAC] Frame 744, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] Frame 752, slot 0: Adding BCH PDU in position 0 (length 3) +[PHY] [gNB 0][RAPROC] Frame 751, slot 19 Initiating RA procedure with preamble 63, energy 35.7 dB, delay 6 +[MAC] [gNB 0][RAPROC] CC_id 0 Frame 751, Slot 19 Initiating RA procedure for preamble index 63 +[MAC] [gNB 0][RAPROC] CC_id 0 Frame 751 Activating Msg2 generation in frame 752, slot 7 using RA rnti 10b +[MAC] [gNB 0] [RAPROC] CC_id 0 Frame 752, slotP 7: Generating RAR DCI, state 1 +[MAC] [RAPROC] DCI type 1 payload: freq_alloc 120 (0,6,24), time_alloc 3, vrb to prb 0, mcs 0 tb_scaling 0 +[MAC] Frame 752: Subframe 7 : Adding common DL DCI for RA_RNTI 10b +[MAC] Frame 752, Subframe 7: Setting Msg3 reception for Frame 752 Subframe 17 +[PHY] ULSCH received ok +[MAC] [gNB 0][RAPROC] PUSCH with TC_RNTI c497 received correctly and UE_id 0 is now 5G connected +[MAC] In nr_schedule_uss_dlsch_phytest frame 753 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 753 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 753 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 753 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 753 slot 8 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 754 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 754 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 754 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 754 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 754 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 754 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 754 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 754 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 754 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 755 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 755 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 755 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 755 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 755 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 755 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 755 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 755 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 755 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 756 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 756 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 756 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 756 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 756 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 756 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 756 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 756 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 756 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 757 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 757 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 757 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[SCTP] Found data for descriptor 87 +[SCTP] Received notification for sd 87, type 32777 +[MAC] In nr_schedule_uss_dlsch_phytest frame 757 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 757 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 757 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 757 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 757 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 757 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 758 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 758 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 758 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 758 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 758 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 758 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 758 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 758 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 758 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 759 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 759 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 759 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 759 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 759 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 759 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 759 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 759 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 759 slot 9 +PUCCH 0 : maxpos 3 +[MAC] Frame 760, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 760 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 760 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 760 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 760 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 760 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 760 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 760 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 760 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 760 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 761 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 761 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 761 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 761 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 761 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 761 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 761 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 761 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 761 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 762 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 762 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 762 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 762 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 762 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 762 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 762 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 762 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 762 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 763 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 763 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 763 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 763 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 763 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 763 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 763 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 763 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 763 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 764 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 764 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 764 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 764 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 764 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 764 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 764 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 764 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 764 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 765 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 765 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 765 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 765 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 765 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 765 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 765 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 765 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 765 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 766 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 766 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 766 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 766 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 766 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 766 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 766 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 766 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 766 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 767 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 767 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 767 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 767 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 767 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 767 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 767 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 767 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 767 slot 9 +PUCCH 0 : maxpos 1 +[MAC] Frame 768, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 768 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 768 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 768 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 768 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 768 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 768 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 768 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 768 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 768 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 769 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 769 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 769 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 769 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 769 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 769 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 769 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 769 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 769 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 770 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 770 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 770 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 770 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 770 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 770 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 770 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 770 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 770 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 771 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 771 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 771 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 771 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 771 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 771 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 771 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 771 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 771 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 772 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 772 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 772 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 772 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 772 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 772 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 772 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 772 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 772 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 773 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 773 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 773 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 773 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 773 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 773 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 773 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 773 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 773 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 774 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 774 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 774 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 774 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 774 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 774 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 774 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 774 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 774 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 775 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 775 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 775 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 775 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 775 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 775 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 775 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 775 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 775 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 776, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 776 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 776 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 776 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 776 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 776 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 776 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 776 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 776 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 776 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 777 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 777 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 777 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 777 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 777 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 777 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 777 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 777 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 777 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 778 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 778 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 778 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 778 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 778 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 778 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 778 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 778 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 778 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 779 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 779 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 779 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 779 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 779 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 779 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 779 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 779 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 779 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 780 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 780 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 780 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 780 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 780 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 780 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 780 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 780 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 780 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 781 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 781 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 781 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 781 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 781 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 781 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 781 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 781 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 781 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 782 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 782 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 782 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 782 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 782 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 782 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 782 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 782 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 782 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 783 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 783 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 783 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 783 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 783 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 783 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 783 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 783 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 783 slot 9 +PUCCH 0 : maxpos 1 +[MAC] Frame 784, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 784 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 784 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 784 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 784 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 784 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 784 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 784 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 784 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 784 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 785 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 785 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 785 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 785 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 785 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 785 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 785 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 785 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 785 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 786 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 786 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 786 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 786 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 786 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 786 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 786 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 786 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 786 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 787 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 787 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 787 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 787 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 787 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 787 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 787 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 787 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 787 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 788 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 788 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 788 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 788 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 788 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 788 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 788 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 788 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 788 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 789 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 789 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 789 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 789 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 789 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 789 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 789 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 789 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 789 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 790 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 790 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 790 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 790 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 790 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 790 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 790 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 790 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 790 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 791 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 791 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 791 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 791 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 791 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 791 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 791 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 791 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 791 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 792, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 792 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 792 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 792 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 792 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 792 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 792 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 792 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 792 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 792 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 793 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 793 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 793 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 793 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 793 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 793 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 793 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 793 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 793 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 794 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 794 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 794 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 794 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 794 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 794 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 794 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 794 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 794 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 795 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 795 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 795 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 795 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 795 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 795 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 795 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 795 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 795 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 796 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 796 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 796 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 796 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 796 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 796 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 796 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 796 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 796 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 797 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 797 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 797 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 797 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 797 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 797 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 797 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 797 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 797 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 798 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 798 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 798 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 798 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 798 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 798 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 798 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 798 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 798 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 799 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 799 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 799 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 799 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 799 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 799 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 799 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 799 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 799 slot 9 +PUCCH 0 : maxpos 1 +[MAC] Frame 800, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 800 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 800 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 800 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 800 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 800 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 800 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 800 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 800 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 800 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 801 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 801 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 801 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 801 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 801 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 801 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 801 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 801 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 801 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 802 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 802 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 802 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 802 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 802 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 802 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 802 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 802 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 802 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 803 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 803 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 803 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 803 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 803 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 803 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 803 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 803 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 803 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 804 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 804 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 804 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 804 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 804 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 804 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 804 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 804 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 804 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 805 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 805 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 805 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 805 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 805 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 805 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 805 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 805 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 805 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 806 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 806 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 806 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 806 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 806 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 806 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 806 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 806 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 806 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 807 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 807 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 807 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 807 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 807 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 807 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 807 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 807 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 807 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 808, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 808 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 808 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 808 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 808 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 808 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 808 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 808 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 808 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 808 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 809 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 809 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 809 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 809 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 809 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 809 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 809 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 809 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 809 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 810 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 810 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 810 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 810 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 810 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 810 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 810 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 810 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 810 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 811 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 811 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 811 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 811 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 811 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 811 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 811 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 811 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 811 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 812 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 812 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 812 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 812 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 812 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 812 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 812 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 812 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 812 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 813 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 813 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 813 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 813 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 813 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 813 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 813 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 813 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 813 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 814 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 814 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 814 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 814 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 814 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 814 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 814 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 814 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 814 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 815 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 815 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 815 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 815 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 815 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 815 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 815 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 815 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 815 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 816, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 816 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 816 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 816 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 816 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 816 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 816 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 816 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 816 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 816 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 817 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 817 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 817 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 817 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 817 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 817 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 817 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 817 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 817 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 818 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 818 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 818 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 818 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 818 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 818 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 818 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 818 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 818 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 819 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 819 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 819 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 819 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 819 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 819 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 819 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 819 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 819 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 820 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 820 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 820 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 820 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 820 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 820 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 820 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 820 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 820 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 821 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 821 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 821 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 821 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 821 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 821 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 821 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 821 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 821 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 822 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 822 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 822 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 822 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 822 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 822 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 822 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 822 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 822 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 823 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 823 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 823 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 823 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 823 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 823 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 823 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 823 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 823 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 824, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 824 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 824 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 824 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 824 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 824 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 824 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 824 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 824 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 824 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 825 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 825 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 825 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 825 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 825 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 825 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 825 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 825 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 825 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 826 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 826 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 826 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 826 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 826 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 826 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 826 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 826 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 826 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 827 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 827 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 827 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 827 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 827 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 827 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 827 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 827 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 827 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 828 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 828 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 828 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 828 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 828 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 828 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 828 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 828 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 828 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 829 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 829 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 829 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 829 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 829 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 829 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 829 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 829 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 829 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 830 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 830 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 830 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 830 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 830 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 830 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 830 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 830 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 830 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 831 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 831 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 831 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 831 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 831 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 831 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 831 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 831 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 831 slot 9 +PUCCH 0 : maxpos 1 +[MAC] Frame 832, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 832 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 832 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 832 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 832 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 832 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 832 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 832 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 832 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 832 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 833 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 833 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 833 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 833 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 833 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 833 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 833 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 833 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 833 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 834 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 834 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 834 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 834 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 834 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 834 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 834 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 834 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 834 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 835 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 835 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 835 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 835 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 835 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 835 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 835 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 835 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 835 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 836 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 836 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 836 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 836 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 836 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 836 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 836 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 836 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 836 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 837 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 837 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 837 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 837 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 837 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 837 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 837 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 837 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 837 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 838 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 838 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 838 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 838 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 838 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 838 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 838 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 838 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 838 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 839 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 839 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 839 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 839 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 839 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 839 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 839 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 839 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 839 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 840, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 840 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 840 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 840 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 840 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 840 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 840 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 840 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 840 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 840 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 841 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 841 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 841 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 841 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 841 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 841 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 841 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 841 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 841 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 842 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 842 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 842 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 842 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 842 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 842 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 842 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 842 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 842 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 843 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 843 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 843 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 843 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 843 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 843 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 843 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 843 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 843 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 844 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 844 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 844 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 844 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 844 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 844 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 844 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 844 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 844 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 845 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 845 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 845 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 845 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 845 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 845 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 845 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 845 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 845 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 846 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 846 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 846 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 846 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 846 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 846 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 846 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 846 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 846 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 847 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 847 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 847 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 847 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 847 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 847 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 847 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 847 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 847 slot 9 +PUCCH 0 : maxpos 1 +[MAC] Frame 848, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 848 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 848 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 848 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 848 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 848 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 848 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 848 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 848 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 848 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 849 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 849 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 849 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 849 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 849 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 849 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 849 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 849 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 849 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 850 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 850 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 850 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 850 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 850 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 850 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 850 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 850 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 850 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 851 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 851 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 851 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 851 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 851 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 851 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 851 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 851 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 851 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 852 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 852 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 852 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 852 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 852 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 852 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 852 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 852 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 852 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 853 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 853 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 853 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 853 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 853 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 853 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 853 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 853 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 853 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 854 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 854 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 854 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 854 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 854 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 854 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 854 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 854 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 854 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 855 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 855 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 855 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 855 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 855 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 855 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 855 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 855 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 855 slot 9 +PUCCH 0 : maxpos 3 +[MAC] Frame 856, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 856 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 856 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 856 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 856 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 856 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 856 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 856 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 856 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 856 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 857 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 857 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 857 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 857 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 857 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 857 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 857 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 857 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 857 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 858 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 858 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 858 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 858 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 858 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 858 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 858 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 858 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 858 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 859 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 859 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 859 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 859 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 859 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 859 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 859 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 859 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 859 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 860 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 860 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 860 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 860 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 860 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 860 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 860 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 860 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 860 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 861 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 861 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 861 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 861 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 861 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 861 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 861 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 861 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 861 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 862 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 862 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 862 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 862 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 862 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 862 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 862 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 862 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 862 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 863 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 863 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 863 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 863 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 863 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 863 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 863 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 863 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 863 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 864, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 864 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 864 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 864 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 864 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 864 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 864 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 864 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 864 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 864 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 865 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 865 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 865 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 865 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 865 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 865 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 865 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 865 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 865 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 866 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 866 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 866 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 866 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 866 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 866 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 866 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 866 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 866 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 867 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 867 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 867 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 867 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 867 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 867 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 867 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 867 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 867 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 868 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 868 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 868 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 868 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 868 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 868 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 868 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 868 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 868 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 869 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 869 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 869 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 869 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 869 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 869 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 869 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 869 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 869 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 870 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 870 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 870 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 870 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 870 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 870 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 870 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 870 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 870 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 871 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 871 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 871 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 871 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 871 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 871 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 871 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 871 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 871 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 872, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 872 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 872 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 872 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 872 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 872 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 872 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 872 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 872 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 872 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 873 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 873 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 873 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 873 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 873 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 873 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 873 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 873 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 873 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 874 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 874 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 874 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 874 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 874 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 874 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 874 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 874 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 874 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 875 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 875 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 875 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 875 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 875 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 875 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 875 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 875 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 875 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 876 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 876 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 876 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 876 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 876 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 876 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 876 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 876 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 876 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 877 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 877 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 877 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 877 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 877 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 877 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 877 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 877 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 877 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 878 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 878 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 878 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 878 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 878 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 878 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 878 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 878 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 878 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 879 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 879 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 879 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 879 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 879 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 879 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 879 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 879 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 879 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 880, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 880 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 880 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 880 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 880 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 880 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 880 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 880 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 880 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 880 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 881 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 881 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 881 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 881 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 881 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 881 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 881 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 881 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 881 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 882 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 882 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 882 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 882 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 882 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 882 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 882 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 882 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 882 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 883 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 883 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 883 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 883 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 883 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 883 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 883 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 883 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 883 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 884 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 884 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 884 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 884 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 884 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 884 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 884 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 884 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 884 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 885 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 885 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 885 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 885 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 885 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 885 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 885 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 885 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 885 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 886 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 886 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 886 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 886 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 886 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 886 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 886 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 886 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 886 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 887 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 887 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 887 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 887 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 887 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 887 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 887 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 887 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 887 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 888, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 888 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 888 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 888 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 888 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 888 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 888 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 888 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 888 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 888 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 889 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 889 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 889 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 889 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 889 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 889 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 889 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 889 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 889 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 890 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 890 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 890 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 890 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 890 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 890 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 890 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 890 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 890 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 891 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 891 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 891 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 891 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 891 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 891 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 891 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 891 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 891 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 892 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 892 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 892 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 892 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 892 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 892 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 892 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 892 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 892 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 893 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 893 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 893 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 893 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 893 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 893 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 893 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 893 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 893 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 894 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 894 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 894 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 894 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 894 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 894 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 894 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 894 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 894 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 895 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 895 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 895 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 895 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 895 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 895 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 895 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 895 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 895 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 896, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 896 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 896 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 896 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 896 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 896 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 896 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 896 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 896 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 896 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 897 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 897 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 897 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 897 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 897 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 897 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 897 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 897 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 897 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 898 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 898 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 898 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 898 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 898 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 898 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 898 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 898 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 898 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 899 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 899 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 899 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 899 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 899 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 899 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 899 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 899 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 899 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 900 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 900 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 900 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 900 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 900 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 900 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 900 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 900 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 900 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 901 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 901 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 901 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 901 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 901 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 901 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 901 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 901 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 901 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 902 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 902 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 902 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 902 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 902 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 902 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 902 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 902 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 902 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 903 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 903 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 903 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 903 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 903 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 903 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 903 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 903 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 903 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 904, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 904 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 904 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 904 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 904 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 904 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 904 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 904 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 904 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 904 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 905 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 905 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 905 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 905 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 905 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 905 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 905 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 905 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 905 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 906 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 906 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 906 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 906 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 906 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 906 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 906 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 906 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 906 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 907 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 907 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 907 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 907 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 907 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 907 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 907 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 907 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 907 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 908 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 908 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 908 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 908 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 908 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 908 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 908 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 908 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 908 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 909 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 909 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 909 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 909 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 909 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 909 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 909 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 909 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 909 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 910 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 910 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 910 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 910 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 910 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 910 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 910 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 910 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 910 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 911 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 911 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 911 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 911 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 911 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 911 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 911 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 911 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 911 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 912, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 912 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 912 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 912 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 912 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 912 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 912 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 912 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 912 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 912 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 913 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 913 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 913 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 913 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 913 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 913 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 913 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 913 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 913 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 914 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 914 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 914 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 914 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 914 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 914 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 914 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 914 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 914 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 915 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 915 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 915 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 915 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 915 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 915 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 915 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 915 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 915 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 916 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 916 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 916 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 916 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 916 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 916 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 916 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 916 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 916 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 917 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 917 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 917 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 917 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 917 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 917 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 917 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 917 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 917 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 918 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 918 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 918 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 918 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 918 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 918 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 918 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 918 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 918 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 919 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 919 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 919 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 919 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 919 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 919 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 919 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 919 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 919 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 920, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 920 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 920 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 920 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 920 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 920 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 920 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 920 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 920 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 920 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 921 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 921 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 921 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 921 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 921 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 921 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 921 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 921 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 921 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 922 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 922 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 922 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 922 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 922 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 922 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 922 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 922 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 922 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 923 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 923 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 923 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 923 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 923 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 923 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 923 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 923 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 923 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 924 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 924 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 924 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 924 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 924 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 924 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 924 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 924 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 924 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 925 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 925 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 925 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 925 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 925 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 925 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 925 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 925 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 925 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 926 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 926 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 926 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 926 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 926 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 926 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 926 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 926 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 926 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 927 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 927 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 927 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 927 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 927 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 927 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 927 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 927 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 927 slot 9 +PUCCH 0 : maxpos 3 +[MAC] Frame 928, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 928 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 928 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 928 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 928 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 928 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 928 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 928 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 928 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 928 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 929 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 929 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 929 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 929 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 929 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 929 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 929 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 929 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 929 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 930 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 930 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 930 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 930 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 930 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 930 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 930 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 930 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 930 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 931 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 931 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 931 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 931 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 931 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 931 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 931 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 931 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 931 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 932 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 932 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 932 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 932 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 932 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 932 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 932 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 932 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 932 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 933 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 933 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 933 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 933 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 933 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 933 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 933 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 933 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 933 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 934 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 934 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 934 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 934 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 934 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 934 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 934 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 934 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 934 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 935 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 935 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 935 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 935 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 935 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 935 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 935 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 935 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 935 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 936, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 936 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 936 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 936 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 936 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 936 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 936 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 936 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 936 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 936 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 937 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 937 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 937 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 937 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 937 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 937 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 937 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 937 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 937 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 938 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 938 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 938 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 938 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 938 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 938 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 938 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 938 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 938 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 939 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 939 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 939 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 939 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 939 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 939 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 939 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 939 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 939 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 940 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 940 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 940 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 940 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 940 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 940 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 940 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 940 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 940 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 941 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 941 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 941 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 941 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 941 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 941 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 941 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 941 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 941 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 942 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 942 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 942 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 942 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 942 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 942 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 942 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 942 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 942 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 943 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 943 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 943 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 943 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 943 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 943 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 943 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 943 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 943 slot 9 +PUCCH 0 : maxpos 1 +[MAC] Frame 944, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 944 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 944 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 944 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 944 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 944 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 944 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 944 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 944 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 944 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 945 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 945 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 945 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 945 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 945 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 945 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 945 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 945 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 945 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 946 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 946 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 946 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 946 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 946 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 946 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 946 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 946 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 946 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 947 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 947 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 947 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 947 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 947 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 947 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 947 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 947 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 947 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 948 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 948 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 948 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 948 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 948 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 948 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 948 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 948 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 948 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 949 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 949 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 949 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 949 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 949 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 949 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 949 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 949 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 949 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 950 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 950 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 950 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 950 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 950 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 950 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 950 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 950 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 950 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 951 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 951 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 951 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 951 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 951 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 951 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 951 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 951 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 951 slot 9 +PUCCH 0 : maxpos 1 +[MAC] Frame 952, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 952 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 952 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 952 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 952 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 952 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 952 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 952 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 952 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 952 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 953 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 953 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 953 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 953 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 953 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 953 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 953 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 953 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 953 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 954 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 954 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 954 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 954 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 954 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 954 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 954 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 954 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 954 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 955 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 955 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 955 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 955 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 955 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 955 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 955 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 955 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 955 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 956 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 956 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 956 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 956 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 956 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 956 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 956 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 956 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 956 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 957 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 957 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 957 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 957 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 957 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 957 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 957 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 957 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 957 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 958 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 958 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 958 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 958 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 958 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 958 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 958 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 958 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 958 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 959 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 959 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 959 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 959 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 959 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 959 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 959 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 959 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 959 slot 9 +PUCCH 0 : maxpos 3 +[MAC] Frame 960, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 960 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 960 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 960 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 960 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 960 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 960 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 960 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 960 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 960 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 961 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 961 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 961 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 961 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 961 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 961 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 961 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 961 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 961 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 962 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 962 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 962 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 962 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 962 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 962 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 962 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 962 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 962 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 963 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 963 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 963 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 963 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 963 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 963 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 963 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 963 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 963 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 964 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 964 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 964 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 964 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 964 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 964 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 964 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 964 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 964 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 965 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 965 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 965 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 965 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 965 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 965 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 965 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 965 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 965 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 966 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 966 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 966 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 966 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 966 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 966 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 966 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 966 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 966 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 967 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 967 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 967 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 967 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 967 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 967 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 967 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 967 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 967 slot 9 +PUCCH 0 : maxpos 3 +[MAC] Frame 968, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 968 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 968 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 968 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 968 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 968 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 968 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 968 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 968 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 968 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 969 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 969 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 969 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 969 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 969 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 969 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 969 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 969 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 969 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 970 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 970 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 970 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 970 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 970 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 970 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 970 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 970 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 970 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 971 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 971 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 971 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 971 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 971 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 971 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 971 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 971 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 971 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 972 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 972 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 972 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 972 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 972 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 972 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 972 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 972 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 972 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 973 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 973 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 973 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 973 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 973 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 973 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 973 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 973 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 973 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 974 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 974 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 974 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 974 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 974 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 974 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 974 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 974 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 974 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 975 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 975 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 975 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 975 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 975 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 975 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 975 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 975 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 975 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 976, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 976 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 976 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 976 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 976 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 976 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 976 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 976 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 976 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 976 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 977 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 977 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 977 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 977 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 977 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 977 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 977 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 977 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 977 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 978 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 978 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 978 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 978 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 978 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 978 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 978 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 978 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 978 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 979 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 979 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 979 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 979 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 979 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 979 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 979 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 979 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 979 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 980 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 980 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 980 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 980 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 980 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 980 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 980 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 980 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 980 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 981 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 981 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 981 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 981 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 981 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 981 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 981 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 981 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 981 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 982 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 982 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 982 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 982 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 982 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 982 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 982 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 982 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 982 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 983 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 983 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 983 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 983 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 983 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 983 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 983 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 983 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 983 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 984, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 984 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 984 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 984 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 984 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 984 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 984 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 984 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 984 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 984 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 985 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 985 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 985 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 985 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 985 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 985 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 985 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 985 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 985 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 986 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 986 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 986 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 986 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 986 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 986 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 986 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 986 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 986 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 987 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 987 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 987 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 987 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 987 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 987 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 987 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 987 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 987 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 988 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 988 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 988 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 988 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 988 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 988 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 988 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 988 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 988 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 989 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 989 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 989 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 989 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 989 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 989 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 989 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 989 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 989 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 990 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 990 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 990 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 990 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 990 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 990 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 990 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 990 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 990 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 991 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 991 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 991 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 991 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 991 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 991 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 991 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 991 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 991 slot 9 +PUCCH 0 : maxpos 1 +[MAC] Frame 992, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 992 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 992 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 992 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 992 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 992 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 992 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 992 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 992 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 992 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 993 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 993 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 993 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 993 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 993 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 993 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 993 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 993 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 993 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 994 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 994 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 994 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 994 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 994 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 994 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 994 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 994 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 994 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 995 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 995 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 995 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 995 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 995 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 995 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 995 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 995 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 995 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 996 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 996 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 996 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 996 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 996 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 996 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 996 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 996 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 996 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 997 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 997 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 997 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 997 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 997 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 997 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 997 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 997 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 997 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 998 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 998 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 998 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 998 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 998 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 998 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 998 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 998 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 998 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 999 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 999 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 999 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 999 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 999 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 999 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 999 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 999 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 999 slot 9 +PUCCH 0 : maxpos 3 +[MAC] Frame 1000, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 1000 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1000 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1000 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1000 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1000 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1000 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1000 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 1000 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 1000 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1001 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1001 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1001 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1001 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1001 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1001 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1001 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 1001 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 1001 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1002 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1002 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1002 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1002 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1002 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1002 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1002 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 1002 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 1002 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1003 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1003 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1003 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1003 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1003 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1003 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1003 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 1003 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 1003 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1004 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1004 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1004 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1004 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1004 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1004 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1004 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 1004 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 1004 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1005 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1005 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1005 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1005 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1005 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1005 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1005 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 1005 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 1005 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1006 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1006 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1006 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1006 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1006 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1006 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1006 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 1006 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 1006 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1007 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1007 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1007 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1007 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1007 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1007 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1007 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 1007 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 1007 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 1008, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 1008 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1008 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1008 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1008 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1008 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1008 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1008 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 1008 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 1008 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1009 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1009 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1009 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1009 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1009 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1009 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1009 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 1009 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 1009 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1010 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1010 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1010 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1010 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1010 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1010 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1010 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 1010 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 1010 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1011 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1011 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1011 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1011 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1011 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1011 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1011 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 1011 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 1011 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1012 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1012 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1012 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1012 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1012 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1012 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1012 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 1012 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 1012 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1013 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1013 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1013 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1013 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1013 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1013 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1013 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 1013 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 1013 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1014 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1014 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1014 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1014 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1014 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1014 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1014 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 1014 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 1014 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1015 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1015 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1015 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1015 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1015 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1015 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1015 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 1015 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 1015 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 1016, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 1016 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1016 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1016 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1016 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1016 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1016 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1016 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 1016 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 1016 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1017 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1017 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1017 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1017 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1017 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1017 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1017 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 1017 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 1017 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1018 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1018 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1018 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1018 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1018 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1018 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1018 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 1018 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 1018 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1019 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1019 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1019 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1019 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1019 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1019 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1019 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 1019 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 1019 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1020 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1020 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1020 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1020 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1020 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1020 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1020 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 1020 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 1020 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1021 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1021 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1021 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1021 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1021 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1021 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1021 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 1021 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 1021 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1022 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1022 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1022 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1022 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1022 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1022 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1022 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 1022 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 1022 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1023 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1023 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1023 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1023 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1023 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1023 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1023 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 1023 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 1023 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 0, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] [gNB 0] Frame 0 : MIB->BCH CC_id 0, Received 3 bytes +[MAC] In nr_schedule_uss_dlsch_phytest frame 0 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 0 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 0 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 0 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 0 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 0 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 0 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 0 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 0 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 1 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 1 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 2 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 2 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 2 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 2 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 2 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 2 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 2 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 2 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 2 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 3 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 3 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 3 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 3 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 3 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 3 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 3 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 3 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 3 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 4 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 4 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 4 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 4 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 4 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 4 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 4 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 4 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 4 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 5 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 5 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 5 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 5 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 5 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 5 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 5 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 5 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 5 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 6 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 6 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 6 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 6 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 6 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 6 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 6 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 6 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 6 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 7 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 7 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 7 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 7 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 7 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 7 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 7 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 7 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 7 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 8, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] [gNB 0] Frame 8 : MIB->BCH CC_id 0, Received 3 bytes +[MAC] In nr_schedule_uss_dlsch_phytest frame 8 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 8 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 8 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 8 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 8 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 8 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 8 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 8 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 8 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 9 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 9 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 9 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 9 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 9 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 9 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 9 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 9 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 9 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 10 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 10 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 10 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 10 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 10 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 10 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 10 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 10 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 10 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 11 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 11 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 11 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 11 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 11 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 11 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 11 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 11 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 11 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 12 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 12 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 12 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 12 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 12 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 12 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 12 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 12 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 12 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 13 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 13 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 13 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 13 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 13 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 13 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 13 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 13 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 13 slot 9 +[0mPUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 14 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 14 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 14 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 14 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 14 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 14 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 14 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 14 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 14 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 15 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 15 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 15 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 15 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 15 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 15 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 15 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 15 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 15 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 16, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] [gNB 0] Frame 16 : MIB->BCH CC_id 0, Received 3 bytes +[MAC] In nr_schedule_uss_dlsch_phytest frame 16 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 16 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 16 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 16 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 16 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 16 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 16 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 16 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 16 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 17 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 17 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 17 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 17 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 17 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 17 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 17 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 17 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 17 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 18 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 18 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 18 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 18 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 18 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 18 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 18 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 18 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 18 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 19 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 19 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 19 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 19 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 19 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 19 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 19 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 19 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 19 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 20 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 20 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 20 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 20 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 20 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 20 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 20 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 20 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 20 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 21 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 21 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 21 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 21 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 21 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 21 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 21 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 21 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 21 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 22 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 22 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 22 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 22 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 22 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 22 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 22 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 22 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 22 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 23 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 23 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 23 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 23 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 23 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 23 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 23 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 23 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 23 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 24, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] [gNB 0] Frame 24 : MIB->BCH CC_id 0, Received 3 bytes +[MAC] In nr_schedule_uss_dlsch_phytest frame 24 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 24 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 24 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 24 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 24 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 24 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 24 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 24 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 24 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 25 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 25 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 25 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 25 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 25 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 25 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 25 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 25 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 25 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 26 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 26 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 26 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 26 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 26 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 26 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 26 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 26 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 26 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 27 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 27 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 27 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 27 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 27 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 27 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 27 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 27 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 27 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 28 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 28 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 28 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 28 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 28 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 28 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 28 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 28 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 28 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 29 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 29 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 29 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 29 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 29 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 29 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 29 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 29 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 29 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 30 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 30 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 30 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 30 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 30 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 30 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 30 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 30 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 30 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 31 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 31 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 31 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 31 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 31 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 31 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 31 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 31 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 31 slot 9 +PUCCH 0 : maxpos 1 +[MAC] Frame 32, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] [gNB 0] Frame 32 : MIB->BCH CC_id 0, Received 3 bytes +[MAC] In nr_schedule_uss_dlsch_phytest frame 32 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 32 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 32 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 32 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 32 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 32 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 32 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 32 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 32 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 33 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 33 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 33 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 33 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 33 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 33 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 33 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 33 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 33 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 34 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 34 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 34 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 34 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 34 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 34 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 34 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 34 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 34 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 35 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 35 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 35 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 35 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 35 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 35 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 35 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 35 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 35 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 36 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 36 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 36 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 36 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 36 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 36 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 36 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 36 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 36 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 37 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 37 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 37 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 37 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 37 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 37 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 37 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 37 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 37 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 38 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 38 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 38 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 38 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 38 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 38 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 38 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 38 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 38 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 39 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 39 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 39 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 39 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 39 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 39 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 39 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 39 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 39 slot 9 +PUCCH 0 : maxpos 3 +[MAC] Frame 40, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] [gNB 0] Frame 40 : MIB->BCH CC_id 0, Received 3 bytes +[MAC] In nr_schedule_uss_dlsch_phytest frame 40 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 40 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 40 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 40 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 40 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 40 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 40 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 40 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 40 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 41 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 41 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 41 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 41 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 41 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 41 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 41 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 41 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 41 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 42 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 42 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 42 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 42 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 42 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 42 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 42 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 42 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 42 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 43 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 43 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 43 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 43 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 43 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 43 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 43 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 43 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 43 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 44 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 44 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 44 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 44 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 44 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 44 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 44 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 44 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 44 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 45 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 45 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 45 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 45 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 45 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 45 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 45 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 45 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 45 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 46 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 46 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 46 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 46 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 46 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 46 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 46 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 46 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 46 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 47 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 47 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 47 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 47 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 47 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 47 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 47 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 47 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 47 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 48, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] [gNB 0] Frame 48 : MIB->BCH CC_id 0, Received 3 bytes +[MAC] In nr_schedule_uss_dlsch_phytest frame 48 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 48 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 48 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 48 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 48 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 48 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 48 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 48 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 48 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 49 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 49 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 49 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 49 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 49 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 49 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 49 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 49 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 49 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 50 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 50 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 50 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 50 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 50 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 50 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 50 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 50 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 50 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 51 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 51 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 51 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 51 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 51 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 51 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 51 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 51 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 51 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 52 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 52 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 52 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 52 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 52 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 52 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 52 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 52 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 52 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 53 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 53 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 53 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 53 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 53 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 53 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 53 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 53 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 53 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 54 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 54 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 54 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 54 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 54 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 54 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 54 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 54 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 54 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 55 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 55 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 55 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 55 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 55 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 55 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 55 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 55 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 55 slot 9 +PUCCH 0 : maxpos 3 +[MAC] Frame 56, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] [gNB 0] Frame 56 : MIB->BCH CC_id 0, Received 3 bytes +[MAC] In nr_schedule_uss_dlsch_phytest frame 56 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 56 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 56 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 56 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 56 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 56 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 56 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 56 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 56 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 57 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 57 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 57 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 57 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 57 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 57 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 57 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 57 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 57 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 58 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 58 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 58 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 58 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 58 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 58 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 58 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 58 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 58 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 59 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 59 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 59 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 59 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 59 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 59 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 59 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 59 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 59 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 60 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 60 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 60 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 60 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 60 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 60 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 60 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 60 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 60 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 61 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 61 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 61 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 61 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 61 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 61 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 61 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 61 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 61 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 62 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 62 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 62 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 62 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 62 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 62 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 62 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 62 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 62 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 63 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 63 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 63 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 63 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 63 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 63 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 63 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 63 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 63 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 64, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] [gNB 0] Frame 64 : MIB->BCH CC_id 0, Received 3 bytes +[MAC] In nr_schedule_uss_dlsch_phytest frame 64 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 64 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 64 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 64 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 64 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 64 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 64 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 64 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 64 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 65 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 65 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 65 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 65 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 65 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 65 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 65 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 65 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 65 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 66 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 66 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 66 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 66 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 66 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 66 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 66 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 66 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 66 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 67 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 67 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 67 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 67 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 67 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 67 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 67 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 67 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 67 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 68 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 68 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 68 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 68 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 68 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 68 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 68 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 68 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 68 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 69 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 69 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 69 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 69 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 69 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 69 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 69 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 69 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 69 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 70 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 70 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 70 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 70 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 70 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 70 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 70 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 70 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 70 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 71 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 71 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 71 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 71 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 71 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 71 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 71 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 71 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 71 slot 9 +PUCCH 0 : maxpos 3 +[MAC] Frame 72, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] [gNB 0] Frame 72 : MIB->BCH CC_id 0, Received 3 bytes +[MAC] In nr_schedule_uss_dlsch_phytest frame 72 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 72 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 72 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 72 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 72 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 72 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 72 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 72 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 72 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 73 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 73 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 73 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 73 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 73 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 73 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 73 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 73 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 73 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 74 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 74 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 74 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 74 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 74 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 74 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 74 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 74 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 74 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 75 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 75 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 75 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 75 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 75 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 75 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 75 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 75 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 75 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 76 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 76 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 76 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 76 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 76 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 76 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 76 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 76 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 76 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 77 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 77 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 77 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 77 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 77 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 77 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 77 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 77 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 77 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 78 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 78 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 78 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 78 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 78 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 78 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 78 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 78 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 78 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 79 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 79 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 79 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 79 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 79 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 79 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 79 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 79 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 79 slot 9 +PUCCH 0 : maxpos 3 +[MAC] Frame 80, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 80 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 80 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 80 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 80 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 80 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 80 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 80 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 80 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 80 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 81 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 81 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 81 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 81 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 81 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 81 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 81 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 81 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 81 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 82 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 82 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 82 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 82 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 82 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 82 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 82 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 82 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 82 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 83 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 83 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 83 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 83 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 83 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 83 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 83 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 83 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 83 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 84 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 84 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 84 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 84 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 84 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 84 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 84 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 84 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 84 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 85 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 85 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 85 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 85 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 85 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 85 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 85 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 85 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 85 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 86 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 86 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 86 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 86 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 86 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 86 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 86 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 86 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 86 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 87 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 87 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 87 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 87 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 87 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 87 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 87 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 87 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 87 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 88, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 88 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 88 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 88 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 88 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 88 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 88 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 88 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 88 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 88 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 89 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 89 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 89 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 89 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 89 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 89 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 89 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 89 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 89 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 90 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 90 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 90 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 90 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 90 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 90 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 90 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 90 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 90 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 91 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 91 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 91 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 91 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 91 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 91 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 91 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 91 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 91 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 92 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 92 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 92 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 92 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 92 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 92 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 92 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 92 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 92 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 93 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 93 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 93 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 93 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 93 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 93 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 93 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 93 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 93 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 94 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 94 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 94 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 94 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 94 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 94 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 94 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 94 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 94 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 95 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 95 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 95 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 95 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 95 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 95 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 95 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 95 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 95 slot 9 +PUCCH 0 : maxpos 1 +[MAC] Frame 96, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 96 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 96 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 96 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 96 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 96 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 96 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 96 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 96 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 96 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 97 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 97 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 97 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 97 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 97 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 97 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 97 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 97 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 97 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 98 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 98 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 98 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 98 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 98 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 98 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 98 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 98 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 98 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 99 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 99 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 99 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 99 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 99 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 99 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 99 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 99 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 99 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 100 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 100 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 100 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 100 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 100 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 100 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 100 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 100 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 100 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 101 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 101 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 101 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 101 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 101 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 101 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 101 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 101 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 101 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 102 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 102 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 102 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 102 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 102 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 102 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 102 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 102 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 102 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 103 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 103 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 103 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 103 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 103 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 103 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 103 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 103 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 103 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 104, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 104 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 104 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 104 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 104 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 104 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 104 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 104 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 104 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 104 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 105 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 105 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 105 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 105 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 105 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 105 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 105 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 105 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 105 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 106 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 106 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 106 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 106 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 106 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 106 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 106 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 106 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 106 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 107 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 107 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 107 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 107 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 107 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 107 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 107 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 107 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 107 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 108 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 108 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 108 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 108 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 108 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 108 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 108 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 108 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 108 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 109 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 109 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 109 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 109 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 109 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 109 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 109 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 109 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 109 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 110 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 110 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 110 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 110 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 110 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 110 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 110 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 110 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 110 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 111 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 111 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 111 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 111 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 111 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 111 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 111 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 111 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 111 slot 9 +PUCCH 0 : maxpos 3 +[MAC] Frame 112, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 112 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 112 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 112 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 112 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 112 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 112 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 112 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 112 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 112 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 113 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 113 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 113 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 113 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 113 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 113 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 113 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 113 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 113 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 114 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 114 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 114 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 114 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 114 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 114 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 114 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 114 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 114 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 115 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 115 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 115 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 115 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 115 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 115 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 115 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 115 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 115 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 116 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 116 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 116 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 116 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 116 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 116 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 116 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 116 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 116 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 117 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 117 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 117 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 117 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 117 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 117 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 117 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 117 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 117 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 118 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 118 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 118 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 118 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 118 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 118 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 118 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 118 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 118 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 119 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 119 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 119 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 119 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 119 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 119 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 119 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 119 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 119 slot 9 +PUCCH 0 : maxpos 3 +[MAC] Frame 120, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 120 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 120 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 120 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 120 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 120 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 120 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 120 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 120 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 120 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 121 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 121 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 121 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 121 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 121 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 121 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 121 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 121 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 121 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 122 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 122 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 122 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 122 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 122 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 122 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 122 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 122 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 122 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 123 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 123 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 123 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 123 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 123 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 123 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 123 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 123 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 123 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 124 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 124 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 124 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 124 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 124 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 124 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 124 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 124 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 124 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 125 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 125 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 125 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 125 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 125 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 125 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 125 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 125 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 125 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 126 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 126 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 126 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 126 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 126 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 126 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 126 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 126 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 126 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 127 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 127 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 127 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 127 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 127 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 127 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 127 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 127 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 127 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 128, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 128 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 128 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 128 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 128 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 128 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 128 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 128 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 128 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 128 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 129 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 129 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 129 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 129 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 129 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 129 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 129 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 129 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 129 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 130 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 130 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 130 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 130 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 130 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 130 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 130 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 130 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 130 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 131 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 131 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 131 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 131 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 131 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 131 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 131 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 131 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 131 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 132 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 132 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 132 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 132 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 132 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 132 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 132 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 132 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 132 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 133 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 133 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 133 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 133 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 133 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 133 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 133 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 133 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 133 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 134 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 134 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 134 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 134 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 134 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 134 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 134 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 134 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 134 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 135 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 135 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 135 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 135 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 135 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 135 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 135 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 135 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 135 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 136, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 136 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 136 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 136 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 136 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 136 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 136 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 136 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 136 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 136 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 137 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 137 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 137 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 137 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 137 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 137 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 137 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 137 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 137 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 138 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 138 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 138 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 138 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 138 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 138 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 138 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 138 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 138 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 139 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 139 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 139 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 139 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 139 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 139 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 139 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 139 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 139 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 140 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 140 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 140 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 140 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 140 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 140 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 140 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 140 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 140 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 141 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 141 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 141 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 141 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 141 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 141 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 141 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 141 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 141 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 142 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 142 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 142 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 142 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 142 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 142 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 142 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 142 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 142 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 143 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 143 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 143 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 143 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 143 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 143 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 143 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 143 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 143 slot 9 +PUCCH 0 : maxpos 3 +[MAC] Frame 144, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 144 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 144 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 144 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 144 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 144 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 144 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 144 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 144 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 144 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 145 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 145 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 145 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 145 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 145 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 145 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 145 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 145 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 145 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 146 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 146 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 146 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 146 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 146 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 146 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 146 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 146 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 146 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 147 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 147 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 147 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 147 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 147 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 147 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 147 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 147 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 147 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 148 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 148 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 148 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 148 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 148 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 148 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 148 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 148 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 148 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 149 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 149 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 149 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 149 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 149 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 149 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 149 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 149 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 149 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 150 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 150 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 150 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 150 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 150 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 150 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 150 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 150 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 150 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 151 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 151 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 151 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 151 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 151 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 151 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 151 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 151 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 151 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 152, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 152 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 152 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 152 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 152 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 152 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 152 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 152 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 152 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 152 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 153 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 153 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 153 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 153 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 153 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 153 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 153 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 153 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 153 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 154 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 154 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 154 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 154 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 154 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 154 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 154 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 154 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 154 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 155 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 155 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 155 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 155 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 155 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 155 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 155 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 155 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 155 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 156 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 156 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 156 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 156 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 156 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 156 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 156 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 156 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 156 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 157 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 157 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 157 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 157 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 157 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 157 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 157 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 157 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 157 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 158 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 158 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 158 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 158 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 158 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 158 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 158 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 158 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 158 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 159 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 159 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 159 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 159 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 159 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 159 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 159 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 159 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 159 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 160, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 160 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 160 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 160 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 160 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 160 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 160 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 160 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 160 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 160 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 161 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 161 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 161 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 161 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 161 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 161 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 161 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 161 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 161 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 162 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 162 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 162 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 162 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 162 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 162 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 162 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 162 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 162 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 163 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 163 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 163 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 163 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 163 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 163 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 163 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 163 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 163 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 164 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 164 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 164 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 164 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 164 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 164 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 164 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 164 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 164 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 165 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 165 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 165 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 165 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 165 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 165 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 165 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 165 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 165 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 166 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 166 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 166 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 166 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 166 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 166 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 166 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 166 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 166 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 167 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 167 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 167 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 167 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 167 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 167 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 167 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 167 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 167 slot 9 +PUCCH 0 : maxpos 1 +[MAC] Frame 168, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 168 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 168 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 168 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 168 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 168 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 168 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 168 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 168 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 168 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 169 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 169 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 169 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 169 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 169 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 169 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 169 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 169 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 169 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 170 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 170 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 170 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 170 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 170 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 170 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 170 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 170 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 170 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 171 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 171 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 171 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 171 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 171 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 171 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 171 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 171 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 171 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 172 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 172 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 172 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 172 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 172 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 172 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 172 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 172 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 172 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 173 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 173 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 173 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 173 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 173 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 173 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 173 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 173 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 173 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 174 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 174 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 174 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 174 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 174 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 174 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 174 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 174 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 174 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 175 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 175 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 175 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 175 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 175 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 175 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 175 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 175 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 175 slot 9 +PUCCH 0 : maxpos 3 +[MAC] Frame 176, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 176 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 176 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 176 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 176 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 176 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 176 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 176 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 176 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 176 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 177 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 177 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 177 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 177 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 177 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 177 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 177 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 177 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 177 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 178 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 178 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 178 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 178 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 178 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 178 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 178 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 178 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 178 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 179 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 179 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 179 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 179 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 179 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 179 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 179 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 179 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 179 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 180 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 180 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 180 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 180 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 180 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 180 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 180 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 180 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 180 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 181 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 181 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 181 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 181 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 181 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 181 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 181 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 181 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 181 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 182 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 182 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 182 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 182 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 182 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 182 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 182 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 182 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 182 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 183 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 183 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 183 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 183 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 183 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 183 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 183 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 183 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 183 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 184, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 184 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 184 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 184 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 184 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 184 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 184 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 184 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 184 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 184 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 185 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 185 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 185 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 185 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 185 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 185 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 185 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 185 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 185 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 186 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 186 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 186 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 186 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 186 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 186 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 186 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 186 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 186 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 187 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 187 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 187 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 187 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 187 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 187 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 187 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 187 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 187 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 188 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 188 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 188 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 188 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 188 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 188 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 188 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 188 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 188 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 189 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 189 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 189 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 189 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 189 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 189 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 189 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 189 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 189 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 190 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 190 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 190 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 190 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 190 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 190 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 190 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 190 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 190 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 191 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 191 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 191 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 191 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 191 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 191 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 191 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 191 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 191 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 192, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 192 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 192 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 192 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 192 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 192 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 192 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 192 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 192 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 192 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 193 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 193 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 193 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 193 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 193 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 193 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 193 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 193 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 193 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 194 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 194 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 194 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 194 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 194 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 194 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 194 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 194 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 194 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 195 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 195 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 195 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 195 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 195 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 195 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 195 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 195 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 195 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 196 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 196 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 196 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 196 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 196 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 196 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 196 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 196 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 196 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 197 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 197 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 197 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 197 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 197 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 197 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 197 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 197 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 197 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 198 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 198 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 198 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 198 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 198 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 198 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 198 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 198 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 198 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 199 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 199 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 199 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 199 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 199 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 199 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 199 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 199 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 199 slot 9 +PUCCH 0 : maxpos 3 +[MAC] Frame 200, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 200 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 200 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 200 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 200 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 200 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 200 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 200 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 200 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 200 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 201 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 201 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 201 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 201 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 201 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 201 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 201 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 201 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 201 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 202 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 202 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 202 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 202 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 202 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 202 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 202 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 202 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 202 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 203 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 203 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 203 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 203 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 203 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 203 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 203 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 203 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 203 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 204 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 204 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 204 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 204 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 204 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 204 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 204 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 204 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 204 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 205 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 205 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 205 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 205 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 205 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 205 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 205 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 205 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 205 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 206 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 206 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 206 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 206 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 206 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 206 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 206 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 206 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 206 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 207 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 207 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 207 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 207 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 207 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 207 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 207 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 207 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 207 slot 9 +PUCCH 0 : maxpos 3 +[MAC] Frame 208, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 208 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 208 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 208 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 208 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 208 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 208 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 208 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 208 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 208 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 209 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 209 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 209 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 209 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 209 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 209 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 209 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 209 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 209 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 210 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 210 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 210 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 210 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 210 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 210 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 210 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 210 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 210 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 211 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 211 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 211 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 211 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 211 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 211 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 211 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 211 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 211 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 212 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 212 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 212 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 212 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 212 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 212 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 212 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 212 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 212 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 213 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 213 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 213 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 213 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 213 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 213 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 213 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 213 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 213 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 214 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 214 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 214 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 214 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 214 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 214 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 214 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 214 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 214 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 215 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 215 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 215 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 215 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 215 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 215 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 215 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 215 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 215 slot 9 +PUCCH 0 : maxpos 1 +[MAC] Frame 216, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 216 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 216 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 216 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 216 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 216 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 216 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 216 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 216 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 216 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 217 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 217 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 217 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 217 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 217 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 217 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 217 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 217 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 217 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 218 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 218 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 218 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 218 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 218 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 218 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 218 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 218 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 218 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 219 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 219 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 219 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 219 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 219 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 219 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 219 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 219 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 219 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 220 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 220 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 220 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 220 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 220 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 220 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 220 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 220 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 220 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 221 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 221 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 221 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 221 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 221 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 221 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 221 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 221 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 221 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 222 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 222 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 222 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 222 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 222 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 222 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 222 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 222 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 222 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 223 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 223 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 223 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 223 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 223 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 223 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 223 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 223 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 223 slot 9 +PUCCH 0 : maxpos 3 +[MAC] Frame 224, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 224 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 224 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 224 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 224 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 224 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 224 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 224 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 224 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 224 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 225 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 225 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 225 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 225 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 225 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 225 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 225 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 225 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 225 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 226 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 226 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 226 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 226 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 226 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 226 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 226 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 226 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 226 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 227 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 227 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 227 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 227 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 227 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 227 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 227 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 227 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 227 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 228 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 228 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 228 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 228 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 228 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 228 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 228 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 228 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 228 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 229 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 229 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 229 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 229 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 229 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 229 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 229 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 229 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 229 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 230 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 230 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 230 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 230 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 230 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 230 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 230 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 230 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 230 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 231 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 231 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 231 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 231 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 231 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 231 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 231 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 231 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 231 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 232, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 232 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 232 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 232 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 232 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 232 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 232 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 232 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 232 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 232 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 233 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 233 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 233 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 233 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 233 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 233 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 233 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 233 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 233 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 234 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 234 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 234 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 234 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 234 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 234 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 234 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 234 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 234 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 235 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 235 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 235 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 235 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 235 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 235 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 235 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 235 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 235 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 236 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 236 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 236 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 236 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 236 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 236 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 236 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 236 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 236 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 237 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 237 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 237 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 237 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 237 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 237 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 237 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 237 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 237 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 238 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 238 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 238 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 238 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 238 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 238 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 238 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 238 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 238 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 239 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 239 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 239 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 239 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 239 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 239 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 239 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 239 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 239 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 240, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 240 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 240 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 240 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 240 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 240 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 240 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 240 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 240 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 240 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 241 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 241 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 241 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 241 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 241 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 241 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 241 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 241 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 241 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 242 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 242 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 242 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 242 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 242 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 242 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 242 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 242 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 242 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 243 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 243 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 243 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 243 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 243 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 243 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 243 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 243 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 243 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 244 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 244 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 244 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 244 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 244 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 244 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 244 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 244 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 244 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 245 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 245 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 245 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 245 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 245 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 245 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 245 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 245 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 245 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 246 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 246 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 246 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 246 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 246 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 246 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 246 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 246 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 246 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 247 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 247 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 247 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 247 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 247 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 247 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 247 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 247 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 247 slot 9 +PUCCH 0 : maxpos 3 +[MAC] Frame 248, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 248 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 248 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 248 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 248 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 248 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 248 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 248 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 248 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 248 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 249 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 249 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 249 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 249 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 249 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 249 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 249 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 249 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 249 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 250 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 250 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 250 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 250 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 250 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 250 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 250 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 250 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 250 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 251 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 251 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 251 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 251 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 251 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 251 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 251 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 251 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 251 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 252 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 252 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 252 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 252 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 252 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 252 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 252 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 252 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 252 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 253 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 253 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 253 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 253 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 253 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 253 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 253 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 253 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 253 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 254 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 254 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 254 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 254 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 254 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 254 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 254 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 254 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 254 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 255 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 255 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 255 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 255 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 255 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 255 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 255 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 255 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 255 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 256, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 256 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 256 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 256 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 256 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 256 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 256 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 256 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 256 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 256 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 257 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 257 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 257 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 257 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 257 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 257 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 257 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 257 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 257 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 258 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 258 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 258 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 258 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 258 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 258 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 258 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 258 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 258 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 259 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 259 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 259 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 259 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 259 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 259 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 259 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 259 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 259 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 260 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 260 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 260 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 260 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 260 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 260 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 260 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 260 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 260 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 261 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 261 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 261 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 261 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 261 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 261 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 261 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 261 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 261 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 262 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 262 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 262 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 262 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 262 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 262 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 262 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 262 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 262 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 263 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 263 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 263 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 263 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 263 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 263 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 263 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 263 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 263 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 264, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 264 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 264 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 264 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 264 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 264 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 264 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 264 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 264 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 264 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 265 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 265 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 265 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 265 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 265 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 265 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 265 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 265 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 265 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 266 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 266 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 266 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 266 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 266 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 266 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 266 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 266 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 266 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 267 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 267 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 267 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 267 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 267 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 267 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 267 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 267 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 267 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 268 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 268 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 268 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 268 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 268 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 268 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 268 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 268 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 268 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 269 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 269 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 269 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 269 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 269 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 269 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 269 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 269 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 269 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 270 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 270 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 270 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 270 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 270 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 270 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 270 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 270 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 270 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 271 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 271 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 271 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 271 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 271 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 271 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 271 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 271 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 271 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 272, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 272 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 272 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 272 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 272 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 272 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 272 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 272 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 272 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 272 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 273 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 273 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 273 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 273 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 273 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 273 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 273 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 273 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 273 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 274 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 274 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 274 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 274 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 274 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 274 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 274 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 274 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 274 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 275 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 275 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 275 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 275 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 275 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 275 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 275 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 275 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 275 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 276 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 276 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 276 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 276 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 276 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 276 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 276 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 276 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 276 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 277 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 277 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 277 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 277 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 277 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 277 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 277 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 277 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 277 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 278 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 278 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 278 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 278 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 278 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 278 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 278 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 278 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 278 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 279 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 279 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 279 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 279 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 279 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 279 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 279 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 279 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 279 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 280, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 280 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 280 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 280 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 280 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 280 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 280 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 280 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 280 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 280 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 281 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 281 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 281 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 281 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 281 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 281 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 281 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 281 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 281 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 282 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 282 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 282 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 282 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 282 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 282 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 282 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 282 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 282 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 283 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 283 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 283 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 283 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 283 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 283 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 283 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 283 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 283 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 284 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 284 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 284 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 284 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 284 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 284 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 284 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 284 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 284 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 285 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 285 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 285 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 285 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 285 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 285 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 285 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 285 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 285 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 286 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 286 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 286 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 286 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 286 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 286 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 286 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 286 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 286 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 287 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 287 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 287 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 287 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 287 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 287 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 287 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 287 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 287 slot 9 +PUCCH 0 : maxpos 1 +[MAC] Frame 288, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 288 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 288 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 288 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 288 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 288 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 288 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 288 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 288 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 288 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 289 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 289 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 289 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 289 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 289 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 289 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 289 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 289 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 289 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 290 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 290 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 290 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 290 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 290 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 290 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 290 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 290 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 290 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 291 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 291 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 291 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 291 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 291 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 291 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 291 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 291 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 291 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 292 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 292 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 292 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 292 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 292 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 292 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 292 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 292 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 292 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 293 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 293 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 293 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 293 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 293 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 293 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 293 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 293 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 293 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 294 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 294 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 294 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 294 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 294 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 294 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 294 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 294 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 294 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 295 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 295 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 295 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 295 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 295 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 295 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 295 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 295 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 295 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 296, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 296 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 296 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 296 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 296 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 296 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 296 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 296 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 296 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 296 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 297 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 297 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 297 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 297 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 297 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 297 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 297 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 297 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 297 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 298 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 298 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 298 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 298 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 298 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 298 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 298 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 298 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 298 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 299 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 299 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 299 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 299 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 299 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 299 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 299 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 299 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 299 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 300 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 300 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 300 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 300 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 300 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 300 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 300 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 300 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 300 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 301 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 301 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 301 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 301 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 301 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 301 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 301 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 301 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 301 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 302 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 302 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 302 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 302 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 302 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 302 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 302 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 302 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 302 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 303 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 303 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 303 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 303 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 303 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 303 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 303 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 303 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 303 slot 9 +PUCCH 0 : maxpos 3 +[MAC] Frame 304, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 304 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 304 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 304 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 304 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 304 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 304 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 304 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 304 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 304 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 305 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 305 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 305 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 305 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 305 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 305 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 305 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 305 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 305 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 306 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 306 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 306 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 306 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 306 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 306 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 306 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 306 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 306 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 307 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 307 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 307 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 307 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 307 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 307 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 307 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 307 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 307 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 308 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 308 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 308 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 308 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 308 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 308 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 308 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 308 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 308 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 309 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 309 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 309 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 309 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 309 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 309 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 309 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 309 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 309 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 310 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 310 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 310 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 310 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 310 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 310 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 310 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 310 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 310 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 311 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 311 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 311 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 311 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 311 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 311 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 311 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 311 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 311 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 312, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 312 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 312 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 312 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 312 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 312 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 312 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 312 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 312 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 312 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 313 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 313 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 313 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 313 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 313 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 313 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 313 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 313 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 313 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 314 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 314 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 314 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 314 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 314 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 314 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 314 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 314 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 314 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 315 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 315 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 315 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 315 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 315 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 315 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 315 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 315 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 315 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 316 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 316 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 316 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 316 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 316 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 316 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 316 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 316 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 316 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 317 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 317 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 317 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 317 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 317 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 317 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 317 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 317 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 317 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 318 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 318 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 318 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 318 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 318 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 318 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 318 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 318 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 318 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 319 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 319 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 319 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 319 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 319 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 319 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 319 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 319 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 319 slot 9 +PUCCH 0 : maxpos 3 +[MAC] Frame 320, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 320 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 320 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 320 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 320 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 320 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 320 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 320 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 320 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 320 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 321 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 321 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 321 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 321 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 321 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 321 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 321 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 321 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 321 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 322 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 322 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 322 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 322 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 322 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 322 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 322 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 322 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 322 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 323 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 323 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 323 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 323 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 323 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 323 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 323 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 323 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 323 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 324 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 324 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 324 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 324 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 324 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 324 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 324 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 324 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 324 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 325 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 325 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 325 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 325 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 325 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 325 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 325 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 325 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 325 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 326 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 326 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 326 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 326 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 326 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 326 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 326 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 326 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 326 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 327 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 327 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 327 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 327 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 327 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 327 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 327 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 327 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 327 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 328, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 328 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 328 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 328 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 328 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 328 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 328 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 328 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 328 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 328 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 329 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 329 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 329 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 329 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 329 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 329 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 329 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 329 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 329 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 330 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 330 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 330 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 330 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 330 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 330 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 330 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 330 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 330 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 331 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 331 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 331 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 331 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 331 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 331 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 331 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 331 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 331 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 332 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 332 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 332 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 332 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 332 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 332 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 332 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 332 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 332 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 333 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 333 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 333 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 333 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 333 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 333 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 333 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 333 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 333 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 334 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 334 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 334 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 334 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 334 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 334 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 334 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 334 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 334 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 335 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 335 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 335 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 335 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 335 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 335 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 335 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 335 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 335 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 336, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 336 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 336 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 336 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 336 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 336 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 336 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 336 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 336 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 336 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 337 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 337 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 337 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 337 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 337 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 337 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 337 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 337 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 337 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 338 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 338 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 338 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 338 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 338 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 338 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 338 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 338 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 338 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 339 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 339 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 339 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 339 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 339 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 339 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 339 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 339 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 339 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 340 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 340 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 340 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 340 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 340 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 340 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 340 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 340 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 340 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 341 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 341 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 341 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 341 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 341 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 341 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 341 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 341 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 341 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 342 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 342 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 342 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 342 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 342 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 342 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 342 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 342 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 342 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 343 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 343 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 343 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 343 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 343 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 343 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 343 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 343 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 343 slot 9 +PUCCH 0 : maxpos 3 +[MAC] Frame 344, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 344 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 344 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 344 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 344 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 344 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 344 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 344 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 344 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 344 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 345 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 345 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 345 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 345 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 345 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 345 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 345 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 345 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 345 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 346 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 346 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 346 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 346 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 346 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 346 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 346 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 346 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 346 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 347 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 347 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 347 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 347 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 347 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 347 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 347 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 347 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 347 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 348 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 348 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 348 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 348 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 348 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 348 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 348 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 348 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 348 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 349 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 349 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 349 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 349 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 349 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 349 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 349 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 349 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 349 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 350 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 350 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 350 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 350 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 350 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 350 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 350 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 350 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 350 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 351 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 351 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 351 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 351 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 351 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 351 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 351 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 351 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 351 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 352, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 352 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 352 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 352 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 352 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 352 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 352 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 352 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 352 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 352 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 353 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 353 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 353 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 353 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 353 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 353 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 353 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 353 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 353 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 354 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 354 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 354 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 354 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 354 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 354 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 354 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 354 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 354 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 355 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 355 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 355 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 355 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 355 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 355 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 355 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 355 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 355 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 356 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 356 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 356 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 356 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 356 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 356 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 356 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 356 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 356 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 357 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 357 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 357 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 357 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 357 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 357 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 357 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 357 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 357 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 358 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 358 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 358 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 358 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 358 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 358 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 358 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 358 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 358 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 359 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 359 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 359 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 359 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 359 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 359 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 359 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 359 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 359 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 360, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 360 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 360 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 360 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 360 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 360 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 360 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 360 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 360 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 360 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 361 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 361 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 361 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 361 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 361 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 361 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 361 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 361 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 361 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 362 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 362 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 362 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 362 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 362 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 362 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 362 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 362 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 362 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 363 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 363 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 363 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 363 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 363 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 363 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 363 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 363 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 363 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 364 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 364 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 364 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 364 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 364 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 364 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 364 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 364 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 364 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 365 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 365 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 365 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 365 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 365 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 365 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 365 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 365 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 365 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 366 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 366 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 366 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 366 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 366 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 366 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 366 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 366 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 366 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 367 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 367 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 367 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 367 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 367 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 367 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 367 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 367 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 367 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 368, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 368 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 368 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 368 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 368 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 368 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 368 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 368 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 368 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 368 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 369 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 369 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 369 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 369 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 369 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 369 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 369 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 369 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 369 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 370 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 370 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 370 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 370 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 370 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 370 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 370 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 370 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 370 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 371 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 371 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 371 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 371 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 371 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 371 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 371 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 371 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 371 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 372 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 372 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 372 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 372 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 372 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 372 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 372 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 372 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 372 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 373 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 373 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 373 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 373 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 373 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 373 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 373 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 373 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 373 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 374 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 374 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 374 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 374 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 374 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 374 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 374 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 374 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 374 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 375 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 375 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 375 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 375 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 375 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 375 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 375 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 375 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 375 slot 9 +PUCCH 0 : maxpos 1 +[MAC] Frame 376, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 376 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 376 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 376 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 376 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 376 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 376 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 376 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 376 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 376 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 377 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 377 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 377 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 377 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 377 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 377 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 377 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 377 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 377 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 378 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 378 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 378 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 378 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 378 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 378 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 378 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 378 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 378 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 379 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 379 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 379 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 379 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 379 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 379 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 379 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 379 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 379 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 380 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 380 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 380 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 380 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 380 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 380 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 380 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 380 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 380 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 381 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 381 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 381 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 381 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 381 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 381 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 381 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 381 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 381 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 382 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 382 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 382 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 382 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 382 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 382 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 382 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 382 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 382 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 383 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 383 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 383 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 383 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 383 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 383 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 383 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 383 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 383 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 384, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 384 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 384 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 384 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 384 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 384 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 384 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 384 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 384 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 384 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 385 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 385 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 385 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 385 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 385 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 385 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 385 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 385 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 385 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 386 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 386 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 386 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 386 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 386 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 386 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 386 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 386 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 386 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 387 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 387 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 387 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 387 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 387 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 387 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 387 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 387 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 387 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 388 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 388 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 388 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 388 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 388 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 388 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 388 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 388 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 388 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 389 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 389 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 389 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 389 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 389 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 389 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 389 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 389 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 389 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 390 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 390 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 390 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 390 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 390 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 390 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 390 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 390 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 390 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 391 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 391 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 391 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 391 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 391 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 391 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 391 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 391 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 391 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 392, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 392 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 392 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 392 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 392 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 392 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 392 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 392 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 392 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 392 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 393 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 393 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 393 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 393 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 393 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 393 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 393 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 393 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 393 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 394 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 394 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 394 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 394 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 394 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 394 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 394 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 394 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 394 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 395 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 395 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 395 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 395 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 395 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 395 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 395 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 395 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 395 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 396 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 396 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 396 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 396 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 396 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 396 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 396 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 396 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 396 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 397 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 397 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 397 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 397 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 397 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 397 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 397 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 397 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 397 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 398 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 398 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 398 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 398 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 398 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 398 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 398 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 398 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 398 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 399 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 399 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 399 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 399 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 399 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 399 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 399 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 399 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 399 slot 9 +PUCCH 0 : maxpos 3 +[MAC] Frame 400, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 400 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 400 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 400 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 400 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 400 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 400 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 400 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 400 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 400 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 401 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 401 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 401 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 401 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 401 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 401 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 401 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 401 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 401 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 402 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 402 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 402 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 402 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 402 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 402 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 402 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 402 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 402 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 403 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 403 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 403 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 403 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 403 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 403 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 403 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 403 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 403 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 404 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 404 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 404 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 404 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 404 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 404 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 404 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 404 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 404 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 405 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 405 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 405 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 405 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 405 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 405 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 405 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 405 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 405 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 406 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 406 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 406 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 406 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 406 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 406 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 406 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 406 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 406 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 407 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 407 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 407 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 407 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 407 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 407 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 407 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 407 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 407 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 408, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 408 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 408 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 408 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 408 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 408 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 408 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 408 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 408 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 408 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 409 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 409 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 409 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 409 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 409 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 409 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 409 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 409 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 409 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 410 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 410 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 410 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 410 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 410 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 410 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 410 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 410 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 410 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 411 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 411 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 411 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 411 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 411 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 411 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 411 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 411 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 411 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 412 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 412 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 412 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 412 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 412 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 412 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 412 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 412 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 412 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 413 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 413 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 413 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 413 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 413 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 413 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 413 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 413 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 413 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 414 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 414 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 414 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 414 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 414 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 414 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 414 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 414 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 414 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 415 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 415 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 415 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 415 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 415 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 415 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 415 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 415 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 415 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 416, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 416 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 416 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 416 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 416 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 416 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 416 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 416 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 416 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 416 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 417 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 417 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 417 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 417 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 417 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 417 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 417 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 417 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 417 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 418 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 418 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 418 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 418 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 418 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 418 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 418 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 418 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 418 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 419 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 419 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 419 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 419 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 419 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 419 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 419 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 419 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 419 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 420 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 420 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 420 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 420 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 420 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 420 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 420 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 420 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 420 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 421 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 421 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 421 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 421 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 421 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 421 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 421 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 421 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 421 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 422 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 422 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 422 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 422 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 422 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 422 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 422 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 422 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 422 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 423 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 423 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 423 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 423 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 423 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 423 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 423 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 423 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 423 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 424, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 424 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 424 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 424 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 424 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 424 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 424 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 424 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 424 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 424 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 425 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 425 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 425 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 425 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 425 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 425 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 425 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 425 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 425 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 426 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 426 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 426 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 426 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 426 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 426 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 426 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 426 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 426 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 427 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 427 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 427 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 427 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 427 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 427 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 427 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 427 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 427 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 428 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 428 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 428 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 428 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 428 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 428 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 428 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 428 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 428 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 429 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 429 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 429 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 429 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 429 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 429 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 429 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 429 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 429 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 430 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 430 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 430 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 430 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 430 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 430 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 430 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 430 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 430 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 431 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 431 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 431 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 431 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 431 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 431 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 431 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 431 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 431 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 432, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 432 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 432 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 432 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 432 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 432 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 432 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 432 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 432 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 432 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 433 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 433 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 433 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 433 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 433 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 433 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 433 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 433 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 433 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 434 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 434 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 434 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 434 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 434 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 434 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 434 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 434 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 434 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 435 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 435 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 435 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 435 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 435 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 435 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 435 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 435 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 435 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 436 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 436 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 436 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 436 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 436 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 436 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 436 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 436 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 436 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 437 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 437 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 437 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 437 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 437 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 437 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 437 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 437 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 437 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 438 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 438 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 438 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 438 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 438 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 438 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 438 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 438 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 438 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 439 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 439 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 439 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 439 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 439 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 439 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 439 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 439 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 439 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 440, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 440 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 440 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 440 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 440 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 440 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 440 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 440 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 440 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 440 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 441 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 441 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 441 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 441 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 441 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 441 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 441 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 441 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 441 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 442 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 442 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 442 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 442 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 442 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 442 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 442 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 442 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 442 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 443 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 443 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 443 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 443 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 443 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 443 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 443 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 443 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 443 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 444 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 444 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 444 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 444 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 444 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 444 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 444 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 444 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 444 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 445 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 445 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 445 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 445 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 445 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 445 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 445 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 445 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 445 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 446 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 446 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 446 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 446 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 446 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 446 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 446 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 446 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 446 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 447 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 447 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 447 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 447 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 447 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 447 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 447 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 447 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 447 slot 9 +PUCCH 0 : maxpos 3 +[MAC] Frame 448, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 448 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 448 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 448 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 448 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 448 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 448 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 448 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 448 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 448 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 449 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 449 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 449 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 449 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 449 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 449 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 449 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 449 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 449 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 450 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 450 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 450 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 450 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 450 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 450 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 450 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 450 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 450 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 451 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 451 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 451 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 451 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 451 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 451 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 451 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 451 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 451 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 452 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 452 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 452 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 452 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 452 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 452 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 452 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 452 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 452 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 453 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 453 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 453 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 453 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 453 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 453 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 453 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 453 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 453 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 454 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 454 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 454 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 454 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 454 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 454 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 454 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 454 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 454 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 455 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 455 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 455 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 455 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 455 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 455 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 455 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 455 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 455 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 456, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 456 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 456 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 456 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 456 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 456 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 456 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 456 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 456 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 456 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 457 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 457 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 457 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 457 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 457 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 457 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 457 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 457 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 457 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 458 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 458 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 458 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 458 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 458 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 458 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 458 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 458 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 458 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 459 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 459 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 459 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 459 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 459 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 459 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 459 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 459 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 459 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 460 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 460 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 460 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 460 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 460 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 460 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 460 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 460 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 460 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 461 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 461 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 461 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 461 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 461 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 461 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 461 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 461 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 461 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 462 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 462 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 462 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 462 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 462 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 462 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 462 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 462 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 462 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 463 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 463 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 463 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 463 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 463 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 463 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 463 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 463 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 463 slot 9 +PUCCH 0 : maxpos 3 +[MAC] Frame 464, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 464 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 464 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 464 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 464 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 464 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 464 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 464 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 464 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 464 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 465 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 465 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 465 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 465 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 465 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 465 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 465 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 465 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 465 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 466 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 466 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 466 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 466 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 466 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 466 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 466 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 466 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 466 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 467 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 467 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 467 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 467 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 467 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 467 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 467 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 467 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 467 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 468 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 468 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 468 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 468 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 468 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 468 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 468 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 468 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 468 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 469 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 469 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 469 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 469 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 469 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 469 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 469 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 469 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 469 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 470 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 470 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 470 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 470 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 470 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 470 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 470 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 470 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 470 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 471 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 471 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 471 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 471 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 471 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 471 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 471 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 471 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 471 slot 9 +PUCCH 0 : maxpos 1 +[MAC] Frame 472, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 472 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 472 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 472 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 472 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 472 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 472 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 472 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 472 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 472 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 473 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 473 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 473 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 473 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 473 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 473 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 473 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 473 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 473 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 474 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 474 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 474 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 474 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 474 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 474 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 474 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 474 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 474 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 475 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 475 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 475 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 475 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 475 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 475 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 475 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 475 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 475 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 476 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 476 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 476 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 476 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 476 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 476 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 476 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 476 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 476 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 477 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 477 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 477 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 477 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 477 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 477 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 477 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 477 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 477 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 478 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 478 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 478 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 478 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 478 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 478 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 478 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 478 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 478 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 479 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 479 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 479 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 479 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 479 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 479 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 479 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 479 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 479 slot 9 +PUCCH 0 : maxpos 1 +[MAC] Frame 480, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 480 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 480 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 480 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 480 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 480 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 480 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 480 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 480 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 480 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 481 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 481 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 481 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 481 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 481 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 481 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 481 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 481 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 481 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 482 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 482 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 482 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 482 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 482 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 482 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 482 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 482 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 482 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 483 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 483 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 483 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 483 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 483 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 483 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 483 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 483 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 483 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 484 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 484 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 484 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 484 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 484 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 484 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 484 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 484 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 484 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 485 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 485 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 485 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 485 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 485 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 485 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 485 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 485 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 485 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 486 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 486 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 486 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 486 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 486 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 486 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 486 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 486 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 486 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 487 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 487 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 487 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 487 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 487 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 487 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 487 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 487 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 487 slot 9 +PUCCH 0 : maxpos 1 +[MAC] Frame 488, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 488 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 488 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 488 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 488 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 488 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 488 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 488 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 488 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 488 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 489 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 489 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 489 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 489 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 489 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 489 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 489 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 489 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 489 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 490 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 490 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 490 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 490 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 490 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 490 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 490 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 490 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 490 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 491 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 491 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 491 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 491 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 491 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 491 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 491 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 491 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 491 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 492 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 492 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 492 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 492 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 492 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 492 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 492 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 492 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 492 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 493 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 493 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 493 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 493 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 493 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 493 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 493 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 493 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 493 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 494 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 494 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 494 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 494 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 494 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 494 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 494 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 494 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 494 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 495 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 495 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 495 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 495 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 495 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 495 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 495 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 495 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 495 slot 9 +PUCCH 0 : maxpos 3 +[MAC] Frame 496, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 496 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 496 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 496 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 496 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 496 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 496 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 496 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 496 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 496 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 497 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 497 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 497 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 497 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 497 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 497 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 497 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 497 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 497 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 498 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 498 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 498 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 498 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 498 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 498 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 498 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 498 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 498 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 499 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 499 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 499 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 499 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 499 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 499 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 499 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 499 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 499 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 500 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 500 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 500 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 500 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 500 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 500 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 500 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 500 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 500 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 501 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 501 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 501 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 501 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 501 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 501 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 501 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 501 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 501 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 502 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 502 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 502 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 502 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 502 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 502 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 502 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 502 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 502 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 503 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 503 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 503 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 503 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 503 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 503 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 503 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 503 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 503 slot 9 +PUCCH 0 : maxpos 3 +[MAC] Frame 504, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 504 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 504 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 504 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 504 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 504 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 504 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 504 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 504 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 504 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 505 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 505 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 505 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 505 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 505 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 505 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 505 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 505 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 505 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 506 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 506 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 506 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 506 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 506 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 506 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 506 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 506 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 506 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 507 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 507 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 507 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 507 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 507 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 507 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 507 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 507 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 507 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 508 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 508 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 508 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 508 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 508 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 508 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 508 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 508 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 508 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 509 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 509 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 509 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 509 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 509 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 509 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 509 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 509 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 509 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 510 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 510 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 510 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 510 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 510 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 510 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 510 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 510 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 510 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 511 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 511 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 511 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 511 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 511 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 511 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 511 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 511 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 511 slot 9 +PUCCH 0 : maxpos 1 +[MAC] Frame 512, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 512 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 512 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 512 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 512 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 512 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 512 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 512 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 512 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 512 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 513 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 513 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 513 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 513 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 513 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 513 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 513 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 513 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 513 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 514 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 514 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 514 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 514 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 514 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 514 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 514 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 514 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 514 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 515 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 515 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 515 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 515 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 515 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 515 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 515 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 515 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 515 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 516 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 516 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 516 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 516 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 516 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 516 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 516 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 516 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 516 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 517 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 517 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 517 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 517 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 517 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 517 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 517 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 517 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 517 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 518 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 518 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 518 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 518 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 518 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 518 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 518 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 518 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 518 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 519 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 519 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 519 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 519 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 519 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 519 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 519 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 519 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 519 slot 9 +PUCCH 0 : maxpos 1 +[MAC] Frame 520, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 520 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 520 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 520 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 520 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 520 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 520 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 520 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 520 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 520 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 521 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 521 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 521 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 521 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 521 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 521 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 521 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 521 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 521 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 522 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 522 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 522 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 522 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 522 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 522 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 522 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 522 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 522 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 523 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 523 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 523 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 523 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 523 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 523 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 523 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 523 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 523 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 524 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 524 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 524 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 524 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 524 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 524 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 524 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 524 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 524 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 525 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 525 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 525 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 525 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 525 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 525 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 525 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 525 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 525 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 526 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 526 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 526 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 526 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 526 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 526 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 526 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 526 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 526 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 527 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 527 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 527 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 527 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 527 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 527 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 527 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 527 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 527 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 528, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 528 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 528 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 528 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 528 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 528 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 528 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 528 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 528 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 528 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 529 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 529 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 529 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 529 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 529 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 529 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 529 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 529 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 529 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 530 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 530 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 530 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 530 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 530 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 530 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 530 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 530 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 530 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 531 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 531 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 531 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 531 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 531 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 531 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 531 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 531 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 531 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 532 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 532 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 532 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 532 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 532 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 532 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 532 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 532 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 532 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 533 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 533 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 533 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 533 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 533 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 533 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 533 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 533 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 533 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 534 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 534 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 534 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 534 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 534 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 534 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 534 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 534 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 534 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 535 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 535 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 535 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 535 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 535 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 535 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 535 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 535 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 535 slot 9 +PUCCH 0 : maxpos 1 +[MAC] Frame 536, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 536 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 536 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 536 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 536 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 536 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 536 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 536 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 536 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 536 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 537 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 537 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 537 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 537 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 537 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 537 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 537 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 537 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 537 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 538 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 538 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 538 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 538 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 538 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 538 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 538 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 538 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 538 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 539 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 539 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 539 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 539 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 539 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 539 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 539 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 539 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 539 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 540 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 540 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 540 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 540 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 540 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 540 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 540 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 540 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 540 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 541 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 541 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 541 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 541 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 541 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 541 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 541 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 541 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 541 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 542 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 542 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 542 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 542 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 542 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 542 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 542 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 542 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 542 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 543 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 543 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 543 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 543 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 543 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 543 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 543 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 543 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 543 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 544, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 544 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 544 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 544 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 544 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 544 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 544 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 544 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 544 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 544 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 545 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 545 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 545 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 545 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 545 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 545 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 545 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 545 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 545 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 546 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 546 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 546 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 546 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 546 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 546 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 546 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 546 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 546 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 547 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 547 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 547 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 547 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 547 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 547 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 547 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 547 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 547 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 548 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 548 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 548 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 548 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 548 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 548 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 548 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 548 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 548 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 549 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 549 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 549 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 549 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 549 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 549 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 549 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 549 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 549 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 550 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 550 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 550 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 550 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 550 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 550 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 550 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 550 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 550 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 551 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 551 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 551 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 551 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 551 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 551 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 551 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 551 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 551 slot 9 +PUCCH 0 : maxpos 1 +[MAC] Frame 552, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 552 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 552 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 552 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 552 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 552 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 552 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 552 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 552 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 552 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 553 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 553 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 553 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 553 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 553 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 553 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 553 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 553 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 553 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 554 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 554 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 554 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 554 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 554 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 554 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 554 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 554 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 554 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 555 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 555 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 555 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 555 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 555 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 555 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 555 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 555 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 555 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 556 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 556 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 556 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 556 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 556 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 556 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 556 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 556 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 556 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 557 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 557 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 557 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 557 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 557 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 557 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 557 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 557 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 557 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 558 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 558 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 558 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 558 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 558 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 558 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 558 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 558 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 558 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 559 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 559 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 559 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 559 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 559 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 559 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 559 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 559 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 559 slot 9 +PUCCH 0 : maxpos 1 +[MAC] Frame 560, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 560 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 560 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 560 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 560 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 560 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 560 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 560 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 560 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 560 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 561 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 561 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 561 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 561 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 561 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 561 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 561 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 561 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 561 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 562 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 562 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 562 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 562 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 562 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 562 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 562 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 562 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 562 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 563 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 563 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 563 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 563 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 563 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 563 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 563 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 563 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 563 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 564 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 564 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 564 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 564 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 564 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 564 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 564 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 564 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 564 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 565 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 565 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 565 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 565 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 565 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 565 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 565 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 565 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 565 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 566 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 566 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 566 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 566 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 566 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 566 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 566 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 566 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 566 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 567 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 567 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 567 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 567 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 567 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 567 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 567 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 567 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 567 slot 9 +PUCCH 0 : maxpos 1 +[MAC] Frame 568, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 568 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 568 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 568 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 568 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 568 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 568 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 568 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 568 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 568 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 569 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 569 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 569 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 569 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 569 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 569 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 569 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 569 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 569 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 570 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 570 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 570 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 570 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 570 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 570 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 570 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 570 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 570 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 571 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 571 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 571 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 571 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 571 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 571 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 571 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 571 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 571 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 572 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 572 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 572 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 572 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 572 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 572 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 572 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 572 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 572 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 573 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 573 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 573 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 573 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 573 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 573 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 573 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 573 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 573 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 574 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 574 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 574 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 574 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 574 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 574 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 574 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 574 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 574 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 575 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 575 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 575 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 575 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 575 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 575 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 575 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 575 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 575 slot 9 +PUCCH 0 : maxpos 3 +[MAC] Frame 576, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 576 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 576 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 576 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 576 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 576 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 576 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 576 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 576 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 576 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 577 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 577 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 577 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 577 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 577 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 577 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 577 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 577 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 577 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 578 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 578 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 578 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 578 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 578 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 578 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 578 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 578 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 578 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 579 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 579 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 579 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 579 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 579 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 579 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 579 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 579 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 579 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 580 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 580 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 580 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 580 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 580 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 580 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 580 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 580 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 580 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 581 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 581 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 581 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 581 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 581 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 581 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 581 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 581 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 581 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 582 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 582 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 582 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 582 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 582 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 582 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 582 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 582 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 582 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 583 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 583 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 583 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 583 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 583 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 583 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 583 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 583 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 583 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 584, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 584 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 584 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 584 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 584 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 584 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 584 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 584 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 584 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 584 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 585 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 585 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 585 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 585 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 585 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 585 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 585 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 585 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 585 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 586 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 586 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 586 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 586 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 586 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 586 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 586 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 586 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 586 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 587 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 587 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 587 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 587 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 587 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 587 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 587 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 587 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 587 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 588 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 588 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 588 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 588 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 588 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 588 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 588 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 588 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 588 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 589 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 589 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 589 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 589 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 589 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 589 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 589 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 589 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 589 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 590 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 590 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 590 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 590 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 590 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 590 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 590 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 590 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 590 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 591 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 591 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 591 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 591 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 591 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 591 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 591 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 591 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 591 slot 9 +PUCCH 0 : maxpos 1 +[MAC] Frame 592, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 592 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 592 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 592 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 592 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 592 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 592 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 592 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 592 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 592 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 593 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 593 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 593 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 593 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 593 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 593 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 593 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 593 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 593 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 594 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 594 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 594 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 594 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 594 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 594 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 594 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 594 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 594 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 595 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 595 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 595 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 595 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 595 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 595 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 595 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 595 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 595 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 596 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 596 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 596 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 596 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 596 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 596 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 596 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 596 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 596 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 597 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 597 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 597 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 597 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 597 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 597 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 597 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 597 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 597 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 598 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 598 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 598 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 598 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 598 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 598 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 598 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 598 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 598 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 599 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 599 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 599 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 599 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 599 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 599 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 599 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 599 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 599 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 600, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 600 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 600 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 600 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 600 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 600 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 600 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 600 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 600 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 600 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 601 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 601 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 601 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 601 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 601 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 601 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 601 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 601 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 601 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 602 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 602 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 602 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 602 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 602 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 602 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 602 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 602 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 602 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 603 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 603 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 603 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 603 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 603 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 603 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 603 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 603 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 603 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 604 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 604 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 604 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 604 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 604 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 604 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 604 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 604 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 604 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 605 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 605 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 605 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 605 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 605 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 605 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 605 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 605 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 605 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 606 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 606 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 606 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 606 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 606 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 606 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 606 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 606 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 606 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 607 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 607 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 607 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 607 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 607 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 607 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 607 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 607 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 607 slot 9 +PUCCH 0 : maxpos 3 +[MAC] Frame 608, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 608 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 608 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 608 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 608 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 608 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 608 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 608 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 608 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 608 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 609 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 609 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 609 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 609 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 609 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 609 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 609 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 609 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 609 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 610 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 610 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 610 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 610 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 610 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 610 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 610 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 610 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 610 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 611 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 611 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 611 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 611 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 611 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 611 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 611 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 611 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 611 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 612 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 612 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 612 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 612 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 612 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 612 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 612 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 612 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 612 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 613 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 613 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 613 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 613 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 613 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 613 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 613 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 613 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 613 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 614 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 614 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 614 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 614 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 614 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 614 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 614 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 614 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 614 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 615 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 615 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 615 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 615 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 615 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 615 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 615 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 615 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 615 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 616, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 616 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 616 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 616 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 616 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 616 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 616 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 616 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 616 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 616 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 617 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 617 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 617 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 617 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 617 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 617 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 617 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 617 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 617 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 618 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 618 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 618 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 618 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 618 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 618 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 618 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 618 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 618 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 619 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 619 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 619 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 619 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 619 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 619 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 619 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 619 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 619 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 620 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 620 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 620 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 620 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 620 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 620 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 620 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 620 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 620 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 621 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 621 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 621 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 621 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 621 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 621 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 621 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 621 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 621 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 622 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 622 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 622 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 622 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 622 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 622 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 622 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 622 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 622 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 623 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 623 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 623 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 623 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 623 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 623 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 623 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 623 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 623 slot 9 +PUCCH 0 : maxpos 3 +[MAC] Frame 624, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 624 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 624 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 624 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 624 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 624 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 624 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 624 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 624 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 624 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 625 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 625 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 625 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 625 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 625 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 625 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 625 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 625 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 625 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 626 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 626 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 626 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 626 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 626 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 626 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 626 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 626 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 626 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 627 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 627 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 627 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 627 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 627 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 627 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 627 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 627 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 627 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 628 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 628 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 628 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 628 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 628 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 628 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 628 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 628 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 628 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 629 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 629 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 629 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 629 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 629 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 629 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 629 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 629 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 629 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 630 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 630 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 630 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 630 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 630 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 630 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 630 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 630 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 630 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 631 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 631 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 631 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 631 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 631 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 631 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 631 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 631 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 631 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 632, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 632 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 632 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 632 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 632 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 632 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 632 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 632 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 632 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 632 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 633 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 633 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 633 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 633 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 633 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 633 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 633 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 633 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 633 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 634 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 634 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 634 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 634 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 634 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 634 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 634 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 634 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 634 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 635 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 635 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 635 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 635 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 635 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 635 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 635 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 635 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 635 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 636 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 636 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 636 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 636 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 636 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 636 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 636 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 636 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 636 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 637 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 637 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 637 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 637 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 637 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 637 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 637 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 637 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 637 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 638 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 638 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 638 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 638 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 638 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 638 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 638 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 638 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 638 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 639 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 639 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 639 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 639 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 639 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 639 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 639 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 639 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 639 slot 9 +PUCCH 0 : maxpos 1 +[MAC] Frame 640, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 640 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 640 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 640 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 640 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 640 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 640 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 640 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 640 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 640 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 641 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 641 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 641 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 641 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 641 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 641 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 641 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 641 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 641 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 642 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 642 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 642 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 642 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 642 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 642 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 642 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 642 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 642 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 643 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 643 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 643 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 643 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 643 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 643 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 643 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 643 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 643 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 644 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 644 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 644 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 644 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 644 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 644 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 644 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 644 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 644 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 645 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 645 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 645 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 645 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 645 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 645 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 645 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 645 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 645 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 646 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 646 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 646 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 646 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 646 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 646 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 646 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 646 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 646 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 647 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 647 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 647 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 647 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 647 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 647 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 647 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 647 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 647 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 648, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 648 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 648 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 648 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 648 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 648 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 648 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 648 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 648 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 648 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 649 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 649 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 649 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 649 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 649 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 649 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 649 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 649 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 649 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 650 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 650 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 650 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 650 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 650 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 650 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 650 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 650 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 650 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 651 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 651 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 651 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 651 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 651 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 651 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 651 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 651 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 651 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 652 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 652 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 652 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 652 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 652 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 652 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 652 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 652 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 652 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 653 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 653 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 653 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 653 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 653 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 653 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 653 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 653 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 653 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 654 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 654 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 654 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 654 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 654 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 654 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 654 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 654 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 654 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 655 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 655 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 655 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 655 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 655 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 655 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 655 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 655 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 655 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 656, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 656 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 656 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 656 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 656 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 656 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 656 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 656 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 656 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 656 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 657 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 657 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 657 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 657 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 657 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 657 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 657 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 657 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 657 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 658 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 658 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 658 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 658 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 658 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 658 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 658 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 658 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 658 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 659 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 659 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 659 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 659 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 659 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 659 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 659 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 659 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 659 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 660 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 660 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 660 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 660 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 660 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 660 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 660 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 660 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 660 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 661 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 661 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 661 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 661 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 661 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 661 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 661 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 661 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 661 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 662 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 662 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 662 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 662 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 662 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 662 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 662 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 662 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 662 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 663 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 663 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 663 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 663 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 663 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 663 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 663 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 663 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 663 slot 9 +PUCCH 0 : maxpos 1 +[MAC] Frame 664, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 664 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 664 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 664 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 664 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 664 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 664 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 664 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 664 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 664 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 665 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 665 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 665 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 665 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 665 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 665 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 665 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 665 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 665 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 666 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 666 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 666 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 666 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 666 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 666 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 666 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 666 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 666 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 667 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 667 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 667 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 667 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 667 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 667 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 667 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 667 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 667 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 668 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 668 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 668 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 668 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 668 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 668 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 668 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 668 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 668 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 669 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 669 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 669 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 669 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 669 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 669 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 669 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 669 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 669 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 670 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 670 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 670 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 670 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 670 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 670 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 670 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 670 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 670 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 671 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 671 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 671 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 671 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 671 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 671 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 671 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 671 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 671 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 672, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 672 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 672 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 672 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 672 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 672 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 672 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 672 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 672 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 672 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 673 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 673 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 673 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 673 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 673 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 673 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 673 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 673 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 673 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 674 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 674 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 674 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 674 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 674 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 674 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 674 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 674 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 674 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 675 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 675 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 675 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 675 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 675 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 675 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 675 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 675 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 675 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 676 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 676 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 676 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 676 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 676 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 676 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 676 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 676 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 676 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 677 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 677 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 677 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 677 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 677 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 677 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 677 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 677 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 677 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 678 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 678 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 678 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 678 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 678 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 678 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 678 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 678 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 678 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 679 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 679 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 679 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 679 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 679 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 679 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 679 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 679 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 679 slot 9 +PUCCH 0 : maxpos 1 +[MAC] Frame 680, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 680 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 680 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 680 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 680 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 680 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 680 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 680 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 680 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 680 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 681 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 681 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 681 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 681 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 681 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 681 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 681 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 681 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 681 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 682 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 682 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 682 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 682 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 682 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 682 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 682 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 682 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 682 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 683 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 683 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 683 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 683 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 683 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 683 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 683 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 683 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 683 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 684 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 684 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 684 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 684 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 684 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 684 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 684 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 684 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 684 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 685 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 685 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 685 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 685 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 685 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 685 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 685 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 685 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 685 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 686 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 686 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 686 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 686 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 686 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 686 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 686 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 686 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 686 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 687 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 687 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 687 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 687 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 687 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 687 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 687 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 687 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 687 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 688, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 688 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 688 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 688 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 688 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 688 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 688 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 688 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 688 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 688 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 689 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 689 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 689 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 689 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 689 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 689 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 689 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 689 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 689 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 690 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 690 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 690 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 690 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 690 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 690 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 690 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 690 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 690 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 691 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 691 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 691 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 691 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 691 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 691 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 691 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 691 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 691 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 692 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 692 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 692 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 692 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 692 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 692 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 692 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 692 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 692 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 693 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 693 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 693 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 693 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 693 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 693 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 693 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 693 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 693 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 694 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 694 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 694 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 694 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 694 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 694 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 694 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 694 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 694 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 695 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 695 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 695 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 695 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 695 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 695 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 695 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 695 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 695 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 696, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 696 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 696 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 696 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 696 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 696 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 696 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 696 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 696 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 696 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 697 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 697 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 697 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 697 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 697 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 697 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 697 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 697 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 697 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 698 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 698 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 698 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 698 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 698 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 698 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 698 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 698 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 698 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 699 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 699 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 699 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 699 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 699 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 699 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 699 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 699 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 699 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 700 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 700 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 700 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 700 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 700 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 700 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 700 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 700 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 700 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 701 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 701 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 701 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 701 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 701 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 701 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 701 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 701 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 701 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 702 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 702 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 702 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 702 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 702 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 702 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 702 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 702 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 702 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 703 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 703 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 703 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 703 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 703 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 703 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 703 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 703 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 703 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 704, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 704 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 704 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 704 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 704 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 704 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 704 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 704 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 704 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 704 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 705 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 705 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 705 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 705 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 705 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 705 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 705 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 705 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 705 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 706 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 706 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 706 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 706 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 706 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 706 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 706 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 706 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 706 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 707 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 707 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 707 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 707 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 707 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 707 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 707 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 707 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 707 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 708 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 708 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 708 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 708 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 708 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 708 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 708 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 708 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 708 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 709 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 709 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 709 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 709 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 709 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 709 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 709 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 709 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 709 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 710 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 710 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 710 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 710 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 710 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 710 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 710 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 710 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 710 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 711 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 711 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 711 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 711 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 711 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 711 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 711 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 711 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 711 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 712, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 712 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 712 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 712 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 712 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 712 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 712 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 712 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 712 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 712 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 713 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 713 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 713 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 713 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 713 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 713 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 713 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 713 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 713 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 714 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 714 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 714 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 714 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 714 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 714 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 714 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 714 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 714 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 715 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 715 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 715 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 715 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 715 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 715 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 715 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 715 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 715 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 716 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 716 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 716 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 716 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 716 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 716 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 716 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 716 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 716 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 717 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 717 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 717 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 717 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 717 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 717 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 717 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 717 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 717 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 718 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 718 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 718 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 718 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 718 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 718 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 718 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 718 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 718 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 719 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 719 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 719 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 719 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 719 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 719 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 719 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 719 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 719 slot 9 +PUCCH 0 : maxpos 1 +[MAC] Frame 720, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 720 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 720 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 720 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 720 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 720 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 720 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 720 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 720 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 720 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 721 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 721 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 721 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 721 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 721 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 721 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 721 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 721 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 721 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 722 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 722 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 722 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 722 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 722 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 722 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 722 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 722 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 722 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 723 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 723 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 723 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 723 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 723 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 723 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 723 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 723 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 723 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 724 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 724 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 724 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 724 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 724 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 724 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 724 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 724 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 724 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 725 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 725 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 725 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 725 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 725 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 725 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 725 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 725 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 725 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 726 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 726 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 726 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 726 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 726 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 726 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 726 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 726 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 726 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 727 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 727 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 727 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 727 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 727 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 727 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 727 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 727 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 727 slot 9 +PUCCH 0 : maxpos 3 +[MAC] Frame 728, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 728 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 728 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 728 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 728 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 728 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 728 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 728 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 728 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 728 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 729 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 729 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 729 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 729 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 729 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 729 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 729 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 729 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 729 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 730 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 730 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 730 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 730 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 730 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 730 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 730 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 730 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 730 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 731 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 731 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 731 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 731 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 731 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 731 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 731 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 731 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 731 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 732 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 732 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 732 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 732 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 732 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 732 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 732 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 732 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 732 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 733 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 733 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 733 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 733 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 733 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 733 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 733 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 733 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 733 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 734 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 734 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 734 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 734 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 734 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 734 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 734 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 734 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 734 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 735 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 735 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 735 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 735 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 735 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 735 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 735 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 735 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 735 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 736, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 736 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 736 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 736 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 736 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 736 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 736 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 736 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 736 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 736 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 737 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 737 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 737 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 737 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 737 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 737 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 737 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 737 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 737 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 738 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 738 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 738 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 738 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 738 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 738 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 738 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 738 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 738 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 739 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 739 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 739 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 739 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 739 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 739 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 739 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 739 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 739 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 740 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 740 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 740 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 740 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 740 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 740 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 740 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 740 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 740 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 741 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 741 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 741 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 741 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 741 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 741 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 741 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 741 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 741 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 742 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 742 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 742 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 742 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 742 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 742 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 742 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 742 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 742 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 743 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 743 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 743 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 743 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 743 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 743 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 743 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 743 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 743 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 744, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 744 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 744 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 744 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 744 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 744 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 744 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 744 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 744 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 744 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 745 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 745 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 745 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 745 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 745 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 745 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 745 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 745 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 745 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 746 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 746 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 746 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 746 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 746 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 746 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 746 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 746 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 746 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 747 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 747 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 747 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 747 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 747 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 747 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 747 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 747 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 747 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 748 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 748 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 748 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 748 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 748 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 748 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 748 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 748 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 748 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 749 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 749 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 749 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 749 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 749 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 749 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 749 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 749 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 749 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 750 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 750 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 750 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 750 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 750 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 750 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 750 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 750 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 750 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 751 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 751 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 751 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 751 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 751 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 751 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 751 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 751 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 751 slot 9 +PUCCH 0 : maxpos 3 +[MAC] Frame 752, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 752 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 752 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 752 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 752 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 752 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 752 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 752 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 752 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 752 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 753 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 753 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 753 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 753 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 753 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 753 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 753 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 753 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 753 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 754 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 754 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 754 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 754 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 754 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 754 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 754 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 754 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 754 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 755 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 755 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 755 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 755 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 755 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 755 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 755 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 755 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 755 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 756 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 756 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 756 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 756 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 756 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 756 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 756 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 756 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 756 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 757 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 757 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 757 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 757 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 757 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 757 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 757 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 757 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 757 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 758 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 758 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 758 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 758 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 758 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 758 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 758 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 758 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 758 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 759 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 759 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 759 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 759 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 759 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 759 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 759 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 759 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 759 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 760, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 760 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 760 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 760 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 760 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 760 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 760 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 760 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 760 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 760 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 761 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 761 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 761 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 761 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 761 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 761 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 761 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 761 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 761 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 762 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 762 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 762 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 762 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 762 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 762 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 762 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 762 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 762 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 763 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 763 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 763 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 763 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 763 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 763 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 763 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 763 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 763 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 764 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 764 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 764 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 764 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 764 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 764 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 764 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 764 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 764 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 765 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 765 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 765 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 765 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 765 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 765 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 765 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 765 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 765 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 766 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 766 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 766 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 766 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 766 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 766 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 766 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 766 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 766 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 767 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 767 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 767 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 767 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 767 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 767 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 767 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 767 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 767 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 768, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 768 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 768 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 768 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 768 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 768 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 768 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 768 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 768 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 768 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 769 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 769 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 769 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 769 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 769 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 769 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 769 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 769 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 769 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 770 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 770 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 770 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 770 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 770 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 770 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 770 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 770 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 770 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 771 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 771 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 771 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 771 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 771 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 771 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 771 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 771 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 771 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 772 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 772 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 772 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 772 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 772 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 772 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 772 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 772 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 772 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 773 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 773 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 773 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 773 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 773 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 773 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 773 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 773 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 773 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 774 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 774 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 774 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 774 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 774 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 774 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 774 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 774 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 774 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 775 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 775 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 775 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 775 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 775 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 775 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 775 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 775 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 775 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 776, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 776 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 776 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 776 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 776 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 776 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 776 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 776 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 776 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 776 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 777 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 777 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 777 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 777 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 777 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 777 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 777 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 777 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 777 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 778 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 778 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 778 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 778 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 778 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 778 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 778 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 778 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 778 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 779 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 779 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 779 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 779 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 779 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 779 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 779 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 779 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 779 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 780 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 780 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 780 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 780 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 780 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 780 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 780 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 780 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 780 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 781 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 781 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 781 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 781 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 781 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 781 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 781 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 781 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 781 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 782 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 782 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 782 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 782 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 782 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 782 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 782 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 782 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 782 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 783 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 783 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 783 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 783 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 783 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 783 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 783 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 783 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 783 slot 9 +PUCCH 0 : maxpos 1 +[MAC] Frame 784, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 784 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 784 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 784 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 784 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 784 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 784 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 784 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 784 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 784 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 785 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 785 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 785 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 785 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 785 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 785 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 785 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 785 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 785 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 786 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 786 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 786 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 786 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 786 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 786 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 786 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 786 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 786 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 787 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 787 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 787 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 787 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 787 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 787 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 787 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 787 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 787 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 788 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 788 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 788 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 788 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 788 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 788 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 788 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 788 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 788 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 789 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 789 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 789 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 789 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 789 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 789 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 789 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 789 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 789 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 790 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 790 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 790 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 790 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 790 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 790 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 790 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 790 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 790 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 791 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 791 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 791 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 791 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 791 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 791 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 791 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 791 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 791 slot 9 +PUCCH 0 : maxpos 3 +[MAC] Frame 792, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 792 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 792 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 792 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 792 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 792 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 792 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 792 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 792 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 792 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 793 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 793 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 793 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 793 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 793 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 793 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 793 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 793 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 793 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 794 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 794 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 794 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 794 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 794 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 794 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 794 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 794 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 794 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 795 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 795 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 795 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 795 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 795 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 795 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 795 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 795 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 795 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 796 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 796 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 796 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 796 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 796 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 796 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 796 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 796 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 796 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 797 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 797 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 797 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 797 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 797 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 797 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 797 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 797 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 797 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 798 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 798 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 798 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 798 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 798 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 798 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 798 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 798 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 798 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 799 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 799 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 799 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 799 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 799 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 799 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 799 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 799 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 799 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 800, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 800 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 800 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 800 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 800 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 800 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 800 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 800 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 800 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 800 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 801 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 801 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 801 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 801 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 801 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 801 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 801 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 801 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 801 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 802 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 802 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 802 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 802 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 802 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 802 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 802 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 802 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 802 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 803 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 803 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 803 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 803 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 803 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 803 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 803 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 803 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 803 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 804 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 804 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 804 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 804 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 804 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 804 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 804 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 804 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 804 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 805 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 805 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 805 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 805 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 805 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 805 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 805 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 805 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 805 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 806 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 806 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 806 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 806 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 806 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 806 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 806 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 806 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 806 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 807 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 807 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 807 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 807 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 807 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 807 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 807 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 807 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 807 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 808, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 808 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 808 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 808 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 808 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 808 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 808 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 808 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 808 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 808 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 809 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 809 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 809 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 809 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 809 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 809 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 809 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 809 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 809 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 810 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 810 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 810 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 810 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 810 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 810 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 810 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 810 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 810 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 811 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 811 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 811 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 811 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 811 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 811 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 811 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 811 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 811 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 812 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 812 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 812 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 812 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 812 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 812 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 812 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 812 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 812 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 813 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 813 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 813 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 813 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 813 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 813 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 813 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 813 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 813 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 814 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 814 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 814 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 814 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 814 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 814 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 814 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 814 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 814 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 815 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 815 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 815 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 815 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 815 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 815 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 815 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 815 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 815 slot 9 +PUCCH 0 : maxpos 1 +[MAC] Frame 816, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 816 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 816 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 816 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 816 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 816 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 816 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 816 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 816 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 816 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 817 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 817 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 817 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 817 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 817 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 817 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 817 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 817 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 817 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 818 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 818 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 818 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 818 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 818 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 818 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 818 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 818 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 818 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 819 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 819 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 819 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 819 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 819 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 819 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 819 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 819 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 819 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 820 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 820 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 820 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 820 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 820 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 820 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 820 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 820 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 820 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 821 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 821 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 821 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 821 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 821 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 821 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 821 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 821 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 821 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 822 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 822 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 822 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 822 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 822 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 822 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 822 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 822 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 822 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 823 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 823 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 823 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 823 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 823 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 823 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 823 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 823 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 823 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 824, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 824 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 824 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 824 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 824 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 824 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 824 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 824 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 824 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 824 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 825 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 825 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 825 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 825 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 825 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 825 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 825 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 825 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 825 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 826 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 826 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 826 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 826 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 826 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 826 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 826 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 826 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 826 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 827 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 827 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 827 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 827 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 827 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 827 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 827 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 827 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 827 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 828 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 828 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 828 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 828 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 828 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 828 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 828 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 828 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 828 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 829 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 829 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 829 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 829 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 829 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 829 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 829 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 829 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 829 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 830 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 830 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 830 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 830 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 830 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 830 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 830 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 830 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 830 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 831 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 831 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 831 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 831 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 831 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 831 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 831 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 831 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 831 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 832, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 832 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 832 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 832 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 832 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 832 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 832 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 832 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 832 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 832 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 833 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 833 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 833 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 833 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 833 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 833 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 833 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 833 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 833 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 834 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 834 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 834 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 834 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 834 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 834 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 834 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 834 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 834 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 835 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 835 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 835 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 835 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 835 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 835 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 835 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 835 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 835 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 836 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 836 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 836 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 836 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 836 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 836 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 836 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 836 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 836 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 837 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 837 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 837 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 837 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 837 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 837 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 837 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 837 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 837 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 838 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 838 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 838 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 838 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 838 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 838 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 838 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 838 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 838 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 839 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 839 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 839 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 839 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 839 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 839 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 839 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 839 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 839 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 840, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 840 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 840 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 840 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 840 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 840 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 840 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 840 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 840 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 840 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 841 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 841 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 841 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 841 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 841 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 841 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 841 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 841 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 841 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 842 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 842 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 842 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 842 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 842 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 842 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 842 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 842 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 842 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 843 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 843 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 843 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 843 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 843 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 843 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 843 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 843 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 843 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 844 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 844 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 844 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 844 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 844 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 844 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 844 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 844 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 844 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 845 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 845 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 845 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 845 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 845 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 845 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 845 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 845 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 845 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 846 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 846 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 846 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 846 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 846 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 846 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 846 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 846 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 846 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 847 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 847 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 847 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 847 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 847 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 847 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 847 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 847 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 847 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 848, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 848 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 848 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 848 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 848 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 848 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 848 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 848 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 848 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 848 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 849 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 849 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 849 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 849 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 849 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 849 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 849 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 849 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 849 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 850 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 850 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 850 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 850 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 850 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 850 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 850 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 850 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 850 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 851 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 851 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 851 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 851 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 851 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 851 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 851 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 851 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 851 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 852 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 852 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 852 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 852 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 852 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 852 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 852 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 852 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 852 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 853 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 853 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 853 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 853 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 853 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 853 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 853 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 853 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 853 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 854 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 854 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 854 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 854 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 854 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 854 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 854 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 854 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 854 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 855 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 855 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 855 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 855 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 855 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 855 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 855 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 855 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 855 slot 9 +PUCCH 0 : maxpos 3 +[MAC] Frame 856, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 856 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 856 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 856 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 856 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 856 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 856 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 856 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 856 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 856 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 857 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 857 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 857 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 857 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 857 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 857 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 857 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 857 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 857 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 858 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 858 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 858 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 858 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 858 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 858 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 858 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 858 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 858 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 859 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 859 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 859 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 859 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 859 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 859 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 859 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 859 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 859 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 860 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 860 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 860 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 860 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 860 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 860 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 860 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 860 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 860 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 861 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 861 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 861 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 861 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 861 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 861 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 861 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 861 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 861 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 862 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 862 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 862 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 862 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 862 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 862 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 862 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 862 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 862 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 863 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 863 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 863 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 863 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 863 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 863 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 863 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 863 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 863 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 864, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 864 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 864 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 864 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 864 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 864 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 864 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 864 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 864 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 864 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 865 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 865 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 865 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 865 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 865 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 865 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 865 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 865 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 865 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 866 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 866 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 866 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 866 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 866 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 866 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 866 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 866 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 866 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 867 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 867 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 867 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 867 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 867 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 867 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 867 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 867 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 867 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 868 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 868 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 868 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 868 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 868 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 868 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 868 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 868 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 868 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 869 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 869 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 869 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 869 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 869 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 869 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 869 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 869 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 869 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 870 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 870 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 870 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 870 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 870 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 870 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 870 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 870 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 870 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 871 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 871 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 871 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 871 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 871 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 871 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 871 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 871 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 871 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 872, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 872 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 872 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 872 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 872 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 872 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 872 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 872 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 872 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 872 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 873 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 873 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 873 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 873 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 873 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 873 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 873 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 873 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 873 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 874 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 874 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 874 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 874 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 874 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 874 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 874 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 874 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 874 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 875 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 875 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 875 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 875 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 875 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 875 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 875 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 875 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 875 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 876 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 876 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 876 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 876 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 876 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 876 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 876 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 876 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 876 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 877 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 877 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 877 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 877 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 877 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 877 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 877 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 877 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 877 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 878 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 878 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 878 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 878 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 878 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 878 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 878 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 878 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 878 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 879 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 879 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 879 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 879 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 879 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 879 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 879 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 879 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 879 slot 9 +PUCCH 0 : maxpos 3 +[MAC] Frame 880, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 880 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 880 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 880 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 880 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 880 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 880 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 880 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 880 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 880 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 881 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 881 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 881 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 881 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 881 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 881 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 881 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 881 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 881 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 882 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 882 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 882 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 882 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 882 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 882 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 882 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 882 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 882 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 883 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 883 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 883 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 883 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 883 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 883 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 883 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 883 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 883 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 884 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 884 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 884 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 884 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 884 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 884 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 884 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 884 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 884 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 885 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 885 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 885 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 885 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 885 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 885 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 885 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 885 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 885 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 886 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 886 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 886 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 886 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 886 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 886 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 886 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 886 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 886 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 887 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 887 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 887 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 887 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 887 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 887 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 887 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 887 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 887 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 888, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 888 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 888 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 888 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 888 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 888 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 888 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 888 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 888 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 888 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 889 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 889 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 889 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 889 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 889 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 889 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 889 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 889 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 889 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 890 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 890 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 890 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 890 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 890 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 890 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 890 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 890 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 890 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 891 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 891 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 891 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 891 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 891 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 891 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 891 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 891 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 891 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 892 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 892 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 892 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 892 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 892 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 892 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 892 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 892 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 892 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 893 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 893 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 893 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 893 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 893 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 893 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 893 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 893 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 893 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 894 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 894 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 894 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 894 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 894 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 894 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 894 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 894 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 894 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 895 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 895 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 895 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 895 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 895 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 895 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 895 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 895 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 895 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 896, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 896 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 896 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 896 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 896 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 896 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 896 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 896 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 896 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 896 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 897 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 897 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 897 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 897 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 897 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 897 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 897 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 897 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 897 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 898 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 898 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 898 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 898 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 898 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 898 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 898 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 898 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 898 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 899 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 899 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 899 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 899 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 899 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 899 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 899 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 899 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 899 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 900 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 900 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 900 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 900 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 900 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 900 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 900 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 900 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 900 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 901 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 901 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 901 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 901 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 901 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 901 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 901 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 901 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 901 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 902 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 902 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 902 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 902 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 902 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 902 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 902 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 902 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 902 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 903 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 903 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 903 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 903 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 903 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 903 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 903 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 903 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 903 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 904, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 904 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 904 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 904 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 904 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 904 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 904 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 904 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 904 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 904 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 905 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 905 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 905 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 905 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 905 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 905 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 905 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 905 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 905 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 906 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 906 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 906 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 906 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 906 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 906 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 906 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 906 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 906 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 907 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 907 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 907 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 907 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 907 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 907 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 907 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 907 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 907 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 908 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 908 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 908 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 908 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 908 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 908 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 908 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 908 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 908 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 909 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 909 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 909 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 909 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 909 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 909 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 909 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 909 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 909 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 910 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 910 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 910 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 910 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 910 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 910 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 910 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 910 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 910 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 911 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 911 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 911 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 911 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 911 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 911 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 911 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 911 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 911 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 912, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 912 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 912 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 912 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 912 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 912 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 912 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 912 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 912 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 912 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 913 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 913 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 913 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 913 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 913 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 913 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 913 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 913 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 913 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 914 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 914 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 914 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 914 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 914 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 914 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 914 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 914 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 914 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 915 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 915 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 915 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 915 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 915 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 915 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 915 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 915 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 915 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 916 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 916 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 916 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 916 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 916 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 916 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 916 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 916 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 916 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 917 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 917 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 917 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 917 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 917 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 917 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 917 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 917 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 917 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 918 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 918 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 918 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 918 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 918 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 918 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 918 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 918 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 918 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 919 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 919 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 919 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 919 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 919 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 919 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 919 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 919 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 919 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 920, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 920 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 920 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 920 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 920 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 920 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 920 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 920 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 920 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 920 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 921 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 921 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 921 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 921 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 921 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 921 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 921 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 921 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 921 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 922 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 922 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 922 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 922 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 922 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 922 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 922 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 922 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 922 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 923 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 923 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 923 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 923 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 923 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 923 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 923 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 923 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 923 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 924 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 924 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 924 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 924 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 924 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 924 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 924 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 924 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 924 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 925 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 925 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 925 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 925 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 925 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 925 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 925 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 925 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 925 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 926 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 926 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 926 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 926 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 926 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 926 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 926 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 926 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 926 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 927 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 927 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 927 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 927 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 927 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 927 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 927 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 927 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 927 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 928, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 928 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 928 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 928 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 928 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 928 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 928 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 928 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 928 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 928 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 929 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 929 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 929 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 929 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 929 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 929 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 929 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 929 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 929 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 930 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 930 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 930 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 930 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 930 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 930 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 930 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 930 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 930 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 931 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 931 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 931 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 931 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 931 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 931 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 931 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 931 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 931 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 932 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 932 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 932 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 932 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 932 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 932 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 932 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 932 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 932 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 933 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 933 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 933 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 933 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 933 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 933 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 933 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 933 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 933 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 934 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 934 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 934 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 934 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 934 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 934 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 934 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 934 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 934 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 935 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 935 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 935 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 935 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 935 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 935 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 935 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 935 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 935 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 936, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 936 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 936 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 936 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 936 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 936 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 936 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 936 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 936 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 936 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 937 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 937 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 937 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 937 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 937 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 937 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 937 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 937 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 937 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 938 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 938 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 938 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 938 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 938 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 938 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 938 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 938 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 938 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 939 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 939 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 939 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 939 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 939 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 939 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 939 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 939 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 939 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 940 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 940 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 940 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 940 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 940 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 940 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 940 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 940 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 940 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 941 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 941 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 941 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 941 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 941 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 941 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 941 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 941 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 941 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 942 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 942 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 942 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 942 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 942 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 942 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 942 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 942 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 942 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 943 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 943 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 943 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 943 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 943 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 943 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 943 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 943 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 943 slot 9 +PUCCH 0 : maxpos 3 +[MAC] Frame 944, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 944 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 944 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 944 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 944 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 944 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 944 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 944 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 944 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 944 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 945 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 945 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 945 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 945 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 945 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 945 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 945 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 945 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 945 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 946 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 946 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 946 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 946 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 946 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 946 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 946 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 946 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 946 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 947 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 947 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 947 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 947 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 947 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 947 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 947 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 947 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 947 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 948 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 948 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 948 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 948 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 948 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 948 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 948 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 948 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 948 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 949 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 949 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 949 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 949 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 949 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 949 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 949 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 949 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 949 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 950 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 950 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 950 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 950 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 950 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 950 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 950 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 950 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 950 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 951 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 951 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 951 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 951 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 951 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 951 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 951 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 951 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 951 slot 9 +PUCCH 0 : maxpos 1 +[MAC] Frame 952, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 952 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 952 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 952 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 952 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 952 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 952 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 952 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 952 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 952 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 953 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 953 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 953 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 953 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 953 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 953 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 953 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 953 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 953 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 954 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 954 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 954 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 954 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 954 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 954 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 954 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 954 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 954 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 955 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 955 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 955 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 955 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 955 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 955 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 955 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 955 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 955 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 956 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 956 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 956 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 956 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 956 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 956 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 956 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 956 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 956 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 957 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 957 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 957 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 957 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 957 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 957 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 957 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 957 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 957 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 958 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 958 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 958 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 958 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 958 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 958 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 958 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 958 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 958 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 959 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 959 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 959 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 959 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 959 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 959 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 959 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 959 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 959 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 960, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 960 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 960 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 960 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 960 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 960 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 960 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 960 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 960 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 960 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 961 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 961 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 961 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 961 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 961 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 961 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 961 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 961 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 961 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 962 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 962 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 962 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 962 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 962 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 962 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 962 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 962 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 962 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 963 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 963 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 963 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 963 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 963 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 963 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 963 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 963 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 963 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 964 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 964 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 964 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 964 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 964 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 964 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 964 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 964 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 964 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 965 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 965 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 965 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 965 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 965 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 965 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 965 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 965 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 965 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 966 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 966 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 966 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 966 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 966 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 966 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 966 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 966 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 966 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 967 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 967 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 967 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 967 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 967 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 967 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 967 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 967 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 967 slot 9 +PUCCH 0 : maxpos 3 +[MAC] Frame 968, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 968 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 968 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 968 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 968 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 968 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 968 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 968 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 968 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 968 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 969 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 969 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 969 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 969 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 969 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 969 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 969 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 969 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 969 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 970 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 970 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 970 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 970 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 970 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 970 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 970 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 970 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 970 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 971 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 971 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 971 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 971 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 971 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 971 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 971 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 971 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 971 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 972 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 972 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 972 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 972 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 972 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 972 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 972 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 972 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 972 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 973 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 973 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 973 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 973 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 973 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 973 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 973 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 973 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 973 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 974 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 974 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 974 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 974 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 974 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 974 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 974 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 974 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 974 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 975 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 975 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 975 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 975 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 975 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 975 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 975 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 975 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 975 slot 9 +PUCCH 0 : maxpos 1 +[MAC] Frame 976, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 976 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 976 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 976 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 976 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 976 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 976 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 976 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 976 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 976 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 977 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 977 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 977 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 977 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 977 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 977 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 977 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 977 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 977 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 978 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 978 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 978 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 978 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 978 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 978 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 978 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 978 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 978 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 979 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 979 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 979 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 979 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 979 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 979 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 979 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 979 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 979 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 980 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 980 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 980 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 980 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 980 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 980 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 980 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 980 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 980 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 981 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 981 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 981 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 981 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 981 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 981 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 981 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 981 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 981 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 982 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 982 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 982 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 982 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 982 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 982 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 982 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 982 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 982 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 983 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 983 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 983 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 983 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 983 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 983 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 983 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 983 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 983 slot 9 +PUCCH 0 : maxpos 1 +[MAC] Frame 984, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 984 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 984 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 984 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 984 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 984 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 984 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 984 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 984 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 984 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 985 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 985 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 985 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 985 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 985 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 985 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 985 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 985 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 985 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 986 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 986 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 986 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 986 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 986 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 986 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 986 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 986 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 986 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 987 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 987 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 987 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 987 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 987 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 987 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 987 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 987 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 987 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 988 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 988 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 988 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 988 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 988 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 988 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 988 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 988 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 988 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 989 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 989 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 989 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 989 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 989 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 989 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 989 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 989 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 989 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 990 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 990 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 990 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 990 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 990 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 990 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 990 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 990 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 990 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 991 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 991 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 991 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 991 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 991 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 991 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 991 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 991 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 991 slot 9 +PUCCH 0 : maxpos 1 +[MAC] Frame 992, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 992 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 992 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 992 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 992 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 992 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 992 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 992 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 992 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 992 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 993 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 993 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 993 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 993 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 993 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 993 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 993 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 993 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 993 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 994 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 994 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 994 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 994 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 994 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 994 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 994 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 994 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 994 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 995 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 995 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 995 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 995 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 995 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 995 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 995 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 995 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 995 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 996 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 996 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 996 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 996 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 996 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 996 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 996 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 996 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 996 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 997 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 997 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 997 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 997 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 997 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 997 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 997 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 997 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 997 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 998 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 998 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 998 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 998 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 998 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 998 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 998 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 998 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 998 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 999 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 999 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 999 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 999 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 999 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 999 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 999 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 999 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 999 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 1000, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 1000 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1000 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1000 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1000 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1000 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1000 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1000 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 1000 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 1000 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1001 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1001 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1001 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1001 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1001 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1001 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1001 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 1001 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 1001 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1002 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1002 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1002 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1002 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1002 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1002 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1002 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 1002 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 1002 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1003 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1003 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1003 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1003 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1003 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1003 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1003 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 1003 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 1003 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1004 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1004 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1004 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1004 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1004 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1004 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1004 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 1004 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 1004 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1005 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1005 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1005 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1005 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1005 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1005 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1005 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 1005 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 1005 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1006 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1006 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1006 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1006 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1006 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1006 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1006 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 1006 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 1006 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1007 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1007 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1007 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1007 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1007 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1007 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1007 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 1007 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 1007 slot 9 +PUCCH 0 : maxpos 1 +[MAC] Frame 1008, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 1008 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1008 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1008 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1008 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1008 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1008 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1008 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 1008 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 1008 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1009 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1009 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1009 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1009 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1009 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1009 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1009 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 1009 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 1009 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1010 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1010 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1010 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1010 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1010 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1010 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1010 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 1010 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 1010 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1011 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1011 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1011 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1011 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1011 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1011 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1011 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 1011 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 1011 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1012 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1012 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1012 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1012 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1012 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1012 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1012 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 1012 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 1012 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1013 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1013 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1013 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1013 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1013 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1013 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1013 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 1013 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 1013 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1014 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1014 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1014 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1014 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1014 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1014 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1014 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 1014 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 1014 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1015 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1015 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1015 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1015 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1015 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1015 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1015 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 1015 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 1015 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 1016, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 1016 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1016 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1016 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1016 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1016 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1016 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1016 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 1016 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 1016 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1017 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1017 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1017 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1017 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1017 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1017 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1017 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 1017 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 1017 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1018 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1018 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1018 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1018 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1018 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1018 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1018 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 1018 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 1018 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1019 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1019 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1019 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1019 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1019 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1019 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1019 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 1019 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 1019 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1020 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1020 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1020 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1020 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1020 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1020 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1020 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 1020 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 1020 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1021 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1021 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1021 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1021 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1021 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1021 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1021 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 1021 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 1021 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1022 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1022 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1022 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1022 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1022 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1022 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1022 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 1022 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 1022 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1023 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1023 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1023 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1023 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1023 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1023 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1023 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 1023 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 1023 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 0, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] [gNB 0] Frame 0 : MIB->BCH CC_id 0, Received 3 bytes +[MAC] In nr_schedule_uss_dlsch_phytest frame 0 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 0 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 0 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 0 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 0 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 0 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 0 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 0 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 0 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 1 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 1 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 1 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 1 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 2 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 2 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 2 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 2 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 2 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 2 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 2 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 2 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 2 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 3 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 3 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 3 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 3 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 3 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 3 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 3 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 3 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 3 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 4 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 4 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 4 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 4 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 4 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 4 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 4 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 4 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 4 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 5 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 5 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 5 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 5 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 5 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 5 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 5 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 5 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 5 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 6 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 6 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 6 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 6 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 6 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 6 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 6 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 6 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 6 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 7 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 7 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 7 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 7 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 7 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 7 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 7 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 7 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 7 slot 9 +PUCCH 0 : maxpos 1 +[MAC] Frame 8, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] [gNB 0] Frame 8 : MIB->BCH CC_id 0, Received 3 bytes +[MAC] In nr_schedule_uss_dlsch_phytest frame 8 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 8 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 8 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 8 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 8 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 8 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 8 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 8 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 8 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 9 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 9 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 9 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 9 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 9 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 9 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 9 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 9 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 9 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 10 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 10 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 10 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 10 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 10 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 10 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 10 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 10 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 10 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 11 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 11 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 11 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 11 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 11 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 11 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 11 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 11 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 11 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 12 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 12 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 12 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 12 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 12 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 12 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 12 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 12 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 12 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 13 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 13 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 13 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 13 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 13 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 13 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 13 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 13 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 13 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 14 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 14 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 14 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 14 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 14 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 14 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 14 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 14 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 14 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 15 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 15 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 15 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 15 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 15 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 15 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 15 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 15 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 15 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 16, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] [gNB 0] Frame 16 : MIB->BCH CC_id 0, Received 3 bytes +[MAC] In nr_schedule_uss_dlsch_phytest frame 16 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 16 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 16 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 16 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 16 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 16 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 16 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 16 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 16 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 17 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 17 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 17 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 17 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 17 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 17 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 17 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 17 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 17 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 18 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 18 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 18 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 18 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 18 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 18 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 18 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 18 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 18 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 19 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 19 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 19 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 19 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 19 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 19 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 19 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 19 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 19 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 20 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 20 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 20 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 20 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 20 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 20 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 20 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 20 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 20 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 21 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 21 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 21 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 21 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 21 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 21 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 21 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 21 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 21 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 22 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 22 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 22 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 22 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 22 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 22 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 22 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 22 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 22 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 23 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 23 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 23 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 23 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 23 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 23 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 23 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 23 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 23 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 24, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] [gNB 0] Frame 24 : MIB->BCH CC_id 0, Received 3 bytes +[MAC] In nr_schedule_uss_dlsch_phytest frame 24 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 24 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 24 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 24 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 24 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 24 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 24 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 24 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 24 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 25 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 25 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 25 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 25 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 25 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 25 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 25 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 25 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 25 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 26 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 26 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 26 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 26 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 26 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 26 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 26 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 26 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 26 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 27 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 27 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 27 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 27 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 27 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 27 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 27 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 27 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 27 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 28 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 28 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 28 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 28 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 28 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 28 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 28 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 28 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 28 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 29 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 29 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 29 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 29 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 29 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 29 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 29 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 29 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 29 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 30 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 30 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 30 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 30 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 30 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 30 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 30 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 30 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 30 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 31 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 31 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 31 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 31 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 31 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 31 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 31 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 31 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 31 slot 9 +PUCCH 0 : maxpos 1 +[MAC] Frame 32, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] [gNB 0] Frame 32 : MIB->BCH CC_id 0, Received 3 bytes +[MAC] In nr_schedule_uss_dlsch_phytest frame 32 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 32 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 32 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 32 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 32 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 32 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 32 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 32 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 32 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 33 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 33 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 33 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 33 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 33 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 33 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 33 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 33 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 33 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 34 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 34 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 34 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 34 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 34 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 34 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 34 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 34 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 34 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 35 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 35 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 35 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 35 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 35 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 35 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 35 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 35 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 35 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 36 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 36 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 36 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 36 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 36 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 36 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 36 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 36 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 36 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 37 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 37 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 37 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 37 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 37 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 37 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 37 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 37 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 37 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 38 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 38 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 38 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 38 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 38 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 38 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 38 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 38 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 38 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 39 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 39 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 39 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 39 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 39 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 39 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 39 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 39 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 39 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 40, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] [gNB 0] Frame 40 : MIB->BCH CC_id 0, Received 3 bytes +[MAC] In nr_schedule_uss_dlsch_phytest frame 40 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 40 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 40 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 40 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 40 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 40 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 40 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 40 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 40 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 41 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 41 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 41 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 41 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 41 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 41 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 41 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 41 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 41 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 42 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 42 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 42 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 42 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 42 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 42 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 42 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 42 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 42 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 43 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 43 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 43 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 43 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 43 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 43 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 43 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 43 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 43 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 44 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 44 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 44 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 44 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 44 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 44 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 44 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 44 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 44 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 45 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 45 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 45 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 45 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 45 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 45 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 45 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 45 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 45 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 46 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 46 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 46 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 46 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 46 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 46 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 46 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 46 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 46 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 47 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 47 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 47 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 47 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 47 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 47 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 47 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 47 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 47 slot 9 +PUCCH 0 : maxpos 3 +[MAC] Frame 48, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] [gNB 0] Frame 48 : MIB->BCH CC_id 0, Received 3 bytes +[MAC] In nr_schedule_uss_dlsch_phytest frame 48 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 48 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 48 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 48 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 48 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 48 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 48 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 48 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 48 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 49 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 49 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 49 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 49 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 49 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 49 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 49 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 49 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 49 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 50 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 50 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 50 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 50 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 50 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 50 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 50 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 50 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 50 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 51 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 51 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 51 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 51 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 51 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 51 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 51 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 51 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 51 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 52 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 52 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 52 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 52 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 52 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 52 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 52 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 52 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 52 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 53 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 53 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 53 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 53 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 53 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 53 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 53 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 53 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 53 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 54 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 54 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 54 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 54 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 54 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 54 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 54 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 54 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 54 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 55 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 55 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 55 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 55 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 55 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 55 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 55 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 55 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 55 slot 9 +PUCCH 0 : maxpos 1 +[MAC] Frame 56, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] [gNB 0] Frame 56 : MIB->BCH CC_id 0, Received 3 bytes +[MAC] In nr_schedule_uss_dlsch_phytest frame 56 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 56 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 56 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 56 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 56 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 56 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 56 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 56 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 56 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 57 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 57 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 57 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 57 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 57 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 57 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 57 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 57 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 57 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 58 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 58 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 58 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 58 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 58 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 58 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 58 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 58 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 58 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 59 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 59 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 59 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 59 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 59 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 59 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 59 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 59 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 59 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 60 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 60 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 60 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 60 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 60 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 60 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 60 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 60 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 60 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 61 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 61 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 61 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 61 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 61 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 61 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 61 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 61 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 61 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 62 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 62 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 62 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 62 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 62 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 62 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 62 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 62 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 62 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 63 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 63 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 63 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 63 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 63 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 63 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 63 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 63 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 63 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 64, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] [gNB 0] Frame 64 : MIB->BCH CC_id 0, Received 3 bytes +[MAC] In nr_schedule_uss_dlsch_phytest frame 64 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 64 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 64 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 64 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 64 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 64 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 64 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 64 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 64 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 65 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 65 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 65 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 65 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 65 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 65 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 65 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 65 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 65 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 66 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 66 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 66 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 66 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 66 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 66 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 66 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 66 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 66 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 67 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 67 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 67 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 67 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 67 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 67 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 67 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 67 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 67 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 68 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 68 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 68 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 68 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 68 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 68 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 68 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 68 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 68 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 69 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 69 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 69 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 69 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 69 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 69 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 69 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 69 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 69 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 70 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 70 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 70 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 70 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 70 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 70 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 70 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 70 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 70 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 71 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 71 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 71 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 71 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 71 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 71 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 71 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 71 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 71 slot 9 +PUCCH 0 : maxpos 3 +[MAC] Frame 72, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] [gNB 0] Frame 72 : MIB->BCH CC_id 0, Received 3 bytes +[MAC] In nr_schedule_uss_dlsch_phytest frame 72 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 72 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 72 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 72 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 72 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 72 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 72 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 72 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 72 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 73 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 73 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 73 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 73 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 73 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 73 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 73 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 73 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 73 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 74 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 74 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 74 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 74 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 74 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 74 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 74 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 74 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 74 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 75 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 75 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 75 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 75 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 75 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 75 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 75 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 75 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 75 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 76 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 76 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 76 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 76 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 76 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 76 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 76 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 76 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 76 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 77 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 77 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 77 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 77 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 77 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 77 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 77 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 77 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 77 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 78 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 78 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 78 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 78 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 78 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 78 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 78 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 78 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 78 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 79 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 79 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 79 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 79 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 79 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 79 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 79 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 79 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 79 slot 9 +PUCCH 0 : maxpos 1 +[MAC] Frame 80, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 80 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 80 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 80 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 80 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 80 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 80 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 80 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 80 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 80 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 81 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 81 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 81 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 81 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 81 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 81 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 81 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 81 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 81 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 82 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 82 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 82 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 82 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 82 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 82 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 82 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 82 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 82 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 83 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 83 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 83 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 83 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 83 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 83 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 83 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 83 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 83 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 84 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 84 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 84 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 84 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 84 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 84 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 84 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 84 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 84 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 85 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 85 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 85 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 85 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 85 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 85 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 85 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 85 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 85 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 86 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 86 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 86 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 86 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 86 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 86 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 86 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 86 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 86 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 87 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 87 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 87 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 87 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 87 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 87 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 87 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 87 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 87 slot 9 +PUCCH 0 : maxpos 3 +[MAC] Frame 88, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 88 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 88 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 88 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 88 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 88 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 88 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 88 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 88 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 88 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 89 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 89 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 89 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 89 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 89 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 89 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 89 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 89 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 89 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 90 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 90 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 90 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 90 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 90 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 90 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 90 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 90 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 90 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 91 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 91 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 91 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 91 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 91 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 91 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 91 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 91 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 91 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 92 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 92 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 92 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 92 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 92 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 92 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 92 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 92 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 92 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 93 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 93 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 93 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 93 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 93 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 93 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 93 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 93 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 93 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 94 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 94 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 94 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 94 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 94 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 94 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 94 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 94 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 94 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 95 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 95 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 95 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 95 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 95 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 95 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 95 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 95 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 95 slot 9 +PUCCH 0 : maxpos 3 +[MAC] Frame 96, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 96 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 96 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 96 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 96 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 96 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 96 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 96 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 96 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 96 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 97 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 97 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 97 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 97 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 97 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 97 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 97 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 97 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 97 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 98 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 98 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 98 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 98 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 98 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 98 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 98 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 98 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 98 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 99 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 99 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 99 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 99 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 99 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 99 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 99 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 99 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 99 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 100 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 100 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 100 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 100 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 100 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 100 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 100 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 100 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 100 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 101 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 101 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 101 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 101 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 101 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 101 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 101 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 101 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 101 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 102 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 102 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 102 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 102 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 102 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 102 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 102 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 102 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 102 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 103 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 103 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 103 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 103 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 103 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 103 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 103 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 103 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 103 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 104, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 104 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 104 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 104 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 104 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 104 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 104 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 104 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 104 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 104 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 105 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 105 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 105 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 105 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 105 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 105 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 105 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 105 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 105 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 106 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 106 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 106 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 106 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 106 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 106 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 106 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 106 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 106 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 107 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 107 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 107 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 107 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 107 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 107 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 107 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 107 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 107 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 108 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 108 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 108 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 108 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 108 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 108 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 108 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 108 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 108 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 109 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 109 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 109 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 109 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 109 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 109 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 109 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 109 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 109 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 110 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 110 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 110 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 110 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 110 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 110 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 110 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 110 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 110 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 111 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 111 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 111 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 111 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 111 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 111 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 111 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 111 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 111 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 112, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 112 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 112 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 112 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 112 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 112 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 112 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 112 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 112 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 112 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 113 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 113 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 113 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 113 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 113 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 113 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 113 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 113 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 113 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 114 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 114 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 114 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 114 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 114 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 114 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 114 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 114 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 114 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 115 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 115 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 115 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 115 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 115 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 115 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 115 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 115 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 115 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 116 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 116 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 116 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 116 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 116 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 116 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 116 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 116 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 116 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 117 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 117 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 117 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 117 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 117 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 117 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 117 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 117 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 117 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 118 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 118 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 118 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 118 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 118 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 118 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 118 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 118 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 118 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 119 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 119 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 119 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 119 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 119 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 119 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 119 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 119 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 119 slot 9 +PUCCH 0 : maxpos 3 +[MAC] Frame 120, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 120 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 120 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 120 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 120 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 120 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 120 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 120 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 120 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 120 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 121 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 121 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 121 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 121 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 121 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 121 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 121 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 121 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 121 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 122 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 122 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 122 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 122 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 122 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 122 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 122 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 122 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 122 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 123 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 123 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 123 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 123 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 123 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 123 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 123 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 123 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 123 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 124 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 124 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 124 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 124 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 124 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 124 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 124 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 124 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 124 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 125 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 125 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 125 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 125 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 125 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 125 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 125 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 125 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 125 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 126 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 126 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 126 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 126 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 126 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 126 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 126 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 126 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 126 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 127 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 127 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 127 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 127 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 127 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 127 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 127 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 127 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 127 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 128, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 128 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 128 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 128 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 128 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 128 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 128 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 128 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 128 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 128 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 129 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 129 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 129 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 129 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 129 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 129 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 129 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 129 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 129 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 130 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 130 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 130 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 130 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 130 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 130 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 130 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 130 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 130 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 131 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 131 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 131 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 131 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 131 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 131 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 131 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 131 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 131 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 132 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 132 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 132 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 132 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 132 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 132 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 132 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 132 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 132 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 133 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 133 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 133 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 133 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 133 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 133 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 133 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 133 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 133 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 134 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 134 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 134 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 134 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 134 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 134 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 134 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 134 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 134 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 135 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 135 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 135 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 135 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 135 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 135 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 135 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 135 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 135 slot 9 +PUCCH 0 : maxpos 3 +[MAC] Frame 136, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 136 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 136 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 136 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 136 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 136 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 136 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 136 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 136 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 136 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 137 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 137 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 137 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 137 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 137 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 137 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 137 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 137 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 137 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 138 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 138 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 138 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 138 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 138 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 138 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 138 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 138 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 138 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 139 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 139 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 139 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 139 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 139 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 139 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 139 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 139 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 139 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 140 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 140 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 140 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 140 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 140 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 140 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 140 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 140 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 140 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 141 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 141 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 141 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 141 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 141 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 141 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 141 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 141 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 141 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 142 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 142 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 142 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 142 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 142 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 142 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 142 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 142 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 142 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 143 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 143 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 143 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 143 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 143 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 143 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 143 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 143 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 143 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 144, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 144 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 144 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 144 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 144 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 144 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 144 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 144 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 144 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 144 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 145 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 145 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 145 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 145 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 145 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 145 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 145 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 145 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 145 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 146 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 146 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 146 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 146 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 146 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 146 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 146 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 146 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 146 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 147 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 147 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 147 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 147 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 147 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 147 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 147 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 147 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 147 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 148 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 148 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 148 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 148 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 148 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 148 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 148 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 148 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 148 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 149 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 149 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 149 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 149 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 149 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 149 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 149 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 149 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 149 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 150 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 150 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 150 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 150 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 150 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 150 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 150 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 150 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 150 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 151 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 151 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 151 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 151 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 151 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 151 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 151 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 151 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 151 slot 9 +PUCCH 0 : maxpos 1 +[MAC] Frame 152, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 152 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 152 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 152 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 152 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 152 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 152 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 152 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 152 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 152 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 153 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 153 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 153 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 153 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 153 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 153 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 153 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 153 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 153 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 154 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 154 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 154 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 154 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 154 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 154 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 154 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 154 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 154 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 155 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 155 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 155 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 155 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 155 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 155 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 155 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 155 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 155 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 156 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 156 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 156 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 156 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 156 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 156 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 156 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 156 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 156 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 157 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 157 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 157 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 157 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 157 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 157 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 157 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 157 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 157 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 158 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 158 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 158 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 158 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 158 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 158 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 158 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 158 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 158 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 159 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 159 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 159 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 159 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 159 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 159 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 159 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 159 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 159 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 160, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 160 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 160 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 160 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 160 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 160 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 160 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 160 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 160 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 160 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 161 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 161 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 161 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 161 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 161 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 161 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 161 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 161 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 161 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 162 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 162 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 162 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 162 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 162 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 162 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 162 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 162 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 162 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 163 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 163 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 163 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 163 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 163 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 163 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 163 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 163 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 163 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 164 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 164 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 164 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 164 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 164 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 164 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 164 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 164 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 164 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 165 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 165 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 165 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 165 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 165 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 165 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 165 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 165 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 165 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 166 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 166 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 166 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 166 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 166 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 166 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 166 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 166 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 166 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 167 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 167 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 167 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 167 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 167 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 167 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 167 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 167 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 167 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 168, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 168 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 168 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 168 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 168 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 168 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 168 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 168 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 168 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 168 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 169 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 169 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 169 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 169 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 169 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 169 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 169 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 169 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 169 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 170 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 170 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 170 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 170 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 170 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 170 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 170 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 170 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 170 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 171 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 171 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 171 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 171 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 171 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 171 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 171 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 171 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 171 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 172 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 172 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 172 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 172 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 172 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 172 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 172 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 172 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 172 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 173 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 173 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 173 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 173 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 173 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 173 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 173 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 173 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 173 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 174 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 174 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 174 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 174 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 174 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 174 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 174 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 174 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 174 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 175 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 175 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 175 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 175 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 175 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 175 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 175 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 175 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 175 slot 9 +PUCCH 0 : maxpos 3 +[MAC] Frame 176, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 176 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 176 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 176 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 176 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 176 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 176 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 176 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 176 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 176 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 177 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 177 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 177 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 177 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 177 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 177 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 177 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 177 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 177 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 178 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 178 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 178 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 178 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 178 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 178 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 178 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 178 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 178 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 179 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 179 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 179 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 179 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 179 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 179 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 179 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 179 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 179 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 180 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 180 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 180 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 180 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 180 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 180 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 180 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 180 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 180 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 181 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 181 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 181 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 181 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 181 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 181 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 181 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 181 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 181 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 182 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 182 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 182 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 182 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 182 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 182 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 182 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 182 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 182 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 183 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 183 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 183 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 183 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 183 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 183 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 183 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 183 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 183 slot 9 +PUCCH 0 : maxpos 2 +[MAC] Frame 184, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 184 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 184 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 184 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 184 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 184 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 184 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 184 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 184 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 184 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 185 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 185 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 185 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 185 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 185 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 185 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 185 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 185 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 185 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 186 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 186 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 186 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 186 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 186 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 186 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 186 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 186 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 186 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 187 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 187 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 187 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 187 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 187 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 187 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 187 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 187 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 187 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 188 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 188 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 188 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 188 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 188 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 188 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 188 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 188 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 188 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 189 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 189 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 189 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 189 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 189 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 189 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 189 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 189 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 189 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 190 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 190 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 190 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 190 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 190 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 190 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 190 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 190 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 190 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 191 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 191 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 191 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 191 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 191 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 191 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 191 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 191 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 191 slot 9 +PUCCH 0 : maxpos 1 +[MAC] Frame 192, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 192 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 192 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 192 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 192 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 192 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 192 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 192 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 192 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 192 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 193 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 193 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 193 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 193 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 193 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 193 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 193 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 193 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 193 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 194 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 194 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 194 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 194 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 194 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 194 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 194 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 194 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 194 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 195 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 195 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 195 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 195 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 195 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 195 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 195 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 195 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 195 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 196 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 196 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 196 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 196 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 196 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 196 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 196 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 196 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 196 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 197 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 197 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 197 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 197 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 197 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 197 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 197 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 197 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 197 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 198 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 198 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 198 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 198 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 198 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 198 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 198 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 198 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 198 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 199 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 199 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 199 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 199 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 199 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 199 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 199 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 199 slot 8 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 199 slot 9 +PUCCH 0 : maxpos 0 +[MAC] Frame 200, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 200 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 200 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 200 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 200 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 200 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 200 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 200 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 200 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 200 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 201 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 201 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 201 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 201 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 201 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 201 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 201 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 201 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 201 slot 9 +PUCCH 0 : maxpos 1 +[MAC] In nr_schedule_uss_dlsch_phytest frame 202 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 202 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 202 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 202 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 202 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 202 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 202 slot 7 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 202 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 202 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 203 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 203 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 203 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 203 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 203 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 203 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 203 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 203 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 203 slot 9 +PUCCH 0 : maxpos 3 +[MAC] In nr_schedule_uss_dlsch_phytest frame 204 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 204 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 204 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 204 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 204 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 204 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 204 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 204 slot 8 +PUCCH 0 : maxpos 0 +[MAC] Scheduling pucch reception for frame 204 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 205 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 205 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 205 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 205 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 205 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 205 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 205 slot 7 +PUCCH 0 : maxpos 3 +[MAC] Scheduling pucch reception for frame 205 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 205 slot 9 +PUCCH 0 : maxpos 2 +[MAC] In nr_schedule_uss_dlsch_phytest frame 206 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 206 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 206 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 206 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 206 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 206 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 2 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 206 slot 7 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 206 slot 8 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 206 slot 9 +PUCCH 0 : maxpos 0 +[MAC] In nr_schedule_uss_dlsch_phytest frame 207 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 207 slot 2 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 207 slot 3 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 207 slot 4 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 0 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 207 slot 5 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] In nr_schedule_uss_dlsch_phytest frame 207 slot 6 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 0 rv 3 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[MAC] Scheduling pucch reception for frame 207 slot 7 +PUCCH 0 : maxpos 1 +[MAC] Scheduling pucch reception for frame 207 slot 8 +PUCCH 0 : maxpos 2 +[MAC] Scheduling pucch reception for frame 207 slot 9 +PUCCH 0 : maxpos 3 +[MAC] Frame 208, slot 0: Adding BCH PDU in position 0 (length 3) +[MAC] In nr_schedule_uss_dlsch_phytest frame 208 slot 1 +[MAC] [gNB scheduler phytest] DCI type 1 payload: freq_alloc 211 (0,106,106), time_alloc 2, vrb to prb 0, mcs 9 tb_scaling 0 ndi 1 rv 1 +[SCTP] Found data for descriptor 87 +[MAC] DLSCH PDU: start PRB 0 n_PRB 106 startSymbolAndLength 54 start symbol 1 nb_symbols 12 nb_layers 1 nb_codewords 1 mcs 9 TBS: 2433 +[SCTP] Received notification for sd 87, type 32773 +here comes the tree (instance 0): +--------------------------------------------- +----------------------- +eNB id 3585 (null) +state 1 +nextstream 0 +in_streams 32 out_streams 32 +cnx_id 1 assoc_id 136 +--------------------------------------------- +[X2AP] x2ap_enb_data_p not NULL and sctp state not SCTP_STATE_ESTABLISHED, what to do? +Linux signal Aborted... +/home/eurecom/panos/NR_RRC_harq_hacks/openairinterface5g/executables/softmodem-common.c:187 signal_handler() Exiting OAI softmodem: softmodem starting exit procedure + +Exiting ru_thread diff --git a/executables/main-fs6.c b/executables/main-fs6.c index ffa44bd978..c4a0d85b34 100644 --- a/executables/main-fs6.c +++ b/executables/main-fs6.c @@ -401,7 +401,7 @@ void sendFs6Ul(PHY_VARS_eNB *eNB, int UE_id, int harq_pid, int segmentID, int16_ hULUE(newUDPheader)->O_ACK=eNB->ulsch[UE_id]->harq_processes[harq_pid]->O_ACK; memcpy(hULUE(newUDPheader)->o_ACK, eNB->ulsch[UE_id]->harq_processes[harq_pid]->o_ACK, sizeof(eNB->ulsch[UE_id]->harq_processes[harq_pid]->o_ACK)); - hULUE(newUDPheader)->ta=lte_est_timing_advance_pusch(eNB, UE_id); + hULUE(newUDPheader)->ta=lte_est_timing_advance_pusch(&eNB->frame_parms, eNB->pusch_vars[UE_id]->drs_ch_estimates_time); hULUE(newUDPheader)->segment=segmentID; memcpy(hULUE(newUDPheader)->o, eNB->ulsch[UE_id]->harq_processes[harq_pid]->o, sizeof(eNB->ulsch[UE_id]->harq_processes[harq_pid]->o)); @@ -917,7 +917,7 @@ void phy_procedures_eNB_TX_fromsplit(uint8_t *bufferZone, int nbBlocks, PHY_VARS if (NFAPI_MODE==NFAPI_MONOLITHIC || NFAPI_MODE==NFAPI_MODE_PNF) { if (is_pmch_subframe(frame,subframe,fp)) { - pmch_procedures(eNB,proc); + pmch_procedures(eNB,proc,0); } else { // this is not a pmch subframe, so generate PSS/SSS/PBCH common_signal_procedures(eNB,frame, subframe); diff --git a/executables/main-ocp.c b/executables/main-ocp.c index 97a6343bda..ad12ed1fd8 100644 --- a/executables/main-ocp.c +++ b/executables/main-ocp.c @@ -81,6 +81,7 @@ int32_t uplink_frequency_offset[MAX_NUM_CCs][4]; int split73; char * split73_config; int split73; +int usrp_tx_thread = 0; static void *ru_thread( void *param ); void kill_RU_proc(RU_t *ru) { @@ -1123,9 +1124,6 @@ int restart_L1L2(module_id_t enb_id) { sync_var = -1; pthread_mutex_unlock(&sync_mutex); RC.ru_mask |= (1 << ru->idx); - /* copy the changed frame parameters to the RU */ - /* TODO this should be done for all RUs associated to this eNB */ - memcpy(&ru->frame_parms, &RC.eNB[enb_id][0]->frame_parms, sizeof(LTE_DL_FRAME_PARMS)); /* reset the list of connected UEs in the MAC, since in this process with * loose all UEs (have to reconnect) */ init_UE_info(&RC.mac[enb_id]->UE_info); @@ -1153,6 +1151,7 @@ int restart_L1L2(module_id_t enb_id) { } int main ( int argc, char **argv ) { + //mtrace(); int i; int CC_id = 0; int node_type = ngran_eNB; @@ -1166,6 +1165,7 @@ int main ( int argc, char **argv ) { T_Config_Init(); #endif configure_linux(); + set_softmodem_sighandler(); cpuf=get_cpu_freq_GHz(); set_taus_seed (0); @@ -1346,7 +1346,7 @@ int main ( int argc, char **argv ) { // end of CI modifications //getchar(); if(IS_SOFTMODEM_DOFORMS) - load_softscope("enb"); + load_softscope("enb", NULL); itti_wait_tasks_end(); oai_exit=1; diff --git a/executables/nr-gnb.c b/executables/nr-gnb.c index 2fc8c8688f..f64c5a8455 100644 --- a/executables/nr-gnb.c +++ b/executables/nr-gnb.c @@ -47,7 +47,7 @@ #include "SCHED/sched_eNB.h" #include "SCHED_NR/sched_nr.h" #include "SCHED_NR/fapi_nr_l1.h" -#include "PHY/LTE_TRANSPORT/transport_proto.h" +#include "PHY/NR_TRANSPORT/nr_transport_proto.h" #undef MALLOC //there are two conflicting definitions, so we better make sure we don't use it at all //#undef FRAME_LENGTH_COMPLEX_SAMPLES //there are two conflicting definitions, so we better make sure we don't use it at all @@ -61,7 +61,6 @@ #include "PHY/phy_extern.h" - #include "LAYER2/NR_MAC_COMMON/nr_mac_extern.h" #include "RRC/LTE/rrc_extern.h" #include "PHY_INTERFACE/phy_interface.h" @@ -164,14 +163,14 @@ static inline int rxtx(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx, int frame_t /*if (gNB->UL_INFO.rx_ind.rx_indication_body.number_of_pdus|| gNB->UL_INFO.harq_ind.harq_indication_body.number_of_harqs || gNB->UL_INFO.crc_ind.crc_indication_body.number_of_crcs || - gNB->UL_INFO.rach_ind.rach_indication_body.number_of_preambles || + gNB->UL_INFO.rach_ind.number_of_pdus || gNB->UL_INFO.cqi_ind.number_of_cqis ) { - LOG_D(PHY, "UL_info[rx_ind:%05d:%d harqs:%05d:%d crcs:%05d:%d preambles:%05d:%d cqis:%d] RX:%04d%d TX:%04d%d \n", + LOG_D(PHY, "UL_info[rx_ind:%05d:%d harqs:%05d:%d crcs:%05d:%d rach_pdus:%0d.%d:%d cqis:%d] RX:%04d%d TX:%04d%d \n", NFAPI_SFNSF2DEC(gNB->UL_INFO.rx_ind.sfn_sf), gNB->UL_INFO.rx_ind.rx_indication_body.number_of_pdus, NFAPI_SFNSF2DEC(gNB->UL_INFO.harq_ind.sfn_sf), gNB->UL_INFO.harq_ind.harq_indication_body.number_of_harqs, NFAPI_SFNSF2DEC(gNB->UL_INFO.crc_ind.sfn_sf), gNB->UL_INFO.crc_ind.crc_indication_body.number_of_crcs, - NFAPI_SFNSF2DEC(gNB->UL_INFO.rach_ind.sfn_sf), gNB->UL_INFO.rach_ind.rach_indication_body.number_of_preambles, + gNB->UL_INFO.rach_ind.sfn, gNB->UL_INFO.rach_ind.slot,gNB->UL_INFO.rach_ind.number_of_pdus, gNB->UL_INFO.cqi_ind.number_of_cqis, frame_rx, slot_rx, frame_tx, slot_tx); @@ -204,6 +203,13 @@ static inline int rxtx(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx, int frame_t if (rx_slot_type == NR_UPLINK_SLOT || rx_slot_type == NR_MIXED_SLOT) { // UE-specific RX processing for subframe n // TODO: check if this is correct for PARALLEL_RU_L1_TRX_SPLIT + + // Do PRACH RU processing + int prach_id=find_nr_prach(gNB,frame_rx,slot_rx,0,SEARCH_EXIST); + if (prach_id>=0) { + L1_nr_prach_procedures(gNB,frame_rx,slot_rx,&gNB->prach_vars.list[prach_id].pdu); + gNB->prach_vars.list[prach_id].frame=-1; + } phy_procedures_gNB_uespec_RX(gNB, frame_rx, slot_rx); } @@ -959,12 +965,14 @@ void init_gNB(int single_thread_flag,int wait_for_sync) { gNB->if_inst->NR_PHY_config_req = nr_phy_config_request; memset((void *)&gNB->UL_INFO,0,sizeof(gNB->UL_INFO)); LOG_I(PHY,"Setting indication lists\n"); + gNB->UL_INFO.rx_ind.pdu_list = gNB->rx_pdu_list; gNB->UL_INFO.crc_ind.crc_list = gNB->crc_pdu_list; /*gNB->UL_INFO.sr_ind.sr_indication_body.sr_pdu_list = gNB->sr_pdu_list; gNB->UL_INFO.harq_ind.harq_indication_body.harq_pdu_list = gNB->harq_pdu_list; gNB->UL_INFO.cqi_ind.cqi_pdu_list = gNB->cqi_pdu_list; gNB->UL_INFO.cqi_ind.cqi_raw_pdu_list = gNB->cqi_raw_pdu_list;*/ + gNB->prach_energy_counter = 0; } diff --git a/executables/nr-ru.c b/executables/nr-ru.c index b7c1c8a930..c30c402810 100644 --- a/executables/nr-ru.c +++ b/executables/nr-ru.c @@ -51,6 +51,7 @@ #include "PHY/defs_nr_common.h" #include "PHY/phy_extern.h" #include "PHY/LTE_TRANSPORT/transport_proto.h" +#include "PHY/NR_TRANSPORT/nr_transport_proto.h" #include "PHY/INIT/phy_init.h" #include "SCHED/sched_eNB.h" #include "SCHED_NR/sched_nr.h" @@ -118,6 +119,7 @@ uint16_t sl_ahead; extern int emulate_rf; extern int numerology; +extern int usrp_tx_thread; /*************************************************************/ /* Functions to attach and configure RRU */ @@ -179,6 +181,17 @@ int attach_rru(RU_t *ru) ((RRU_config_t *)&rru_config_msg.msg[0])->prach_ConfigIndex[0]); AssertFatal((ru->ifdevice.trx_ctlsend_func(&ru->ifdevice,&rru_config_msg,rru_config_msg.len)!=-1), "RU %d failed send configuration to remote radio\n",ru->idx); + + if ((len = ru->ifdevice.trx_ctlrecv_func(&ru->ifdevice, + &rru_config_msg, + msg_len))<0) { + LOG_I(PHY,"Waiting for RRU %d\n",ru->idx); + } else if (rru_config_msg.type == RRU_config_ok) { + LOG_I(PHY, "RRU_config_ok received\n"); + } else { + LOG_E(PHY,"Received incorrect message %d from RRU %d\n",rru_config_msg.type,ru->idx); + } + return 0; } @@ -290,7 +303,7 @@ void fh_if5_south_out(RU_t *ru, int frame, int slot, uint64_t timestamp) // southbound IF4p5 fronthaul void fh_if4p5_south_out(RU_t *ru, int frame, int slot, uint64_t timestamp) { - nfapi_nr_config_request_scf_t *cfg = &ru->gNB_list[0]->gNB_config; + nfapi_nr_config_request_scf_t *cfg = &ru->config; if (ru == RC.ru[0]) VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_TRX_TST, ru->proc.timestamp_tx&0xffffffff ); LOG_D(PHY,"Sending IF4p5 for frame %d subframe %d\n",ru->proc.frame_tx,ru->proc.tti_tx); @@ -501,7 +514,7 @@ void fh_if5_north_asynch_in(RU_t *ru,int *frame,int *slot) { void fh_if4p5_north_asynch_in(RU_t *ru,int *frame,int *slot) { NR_DL_FRAME_PARMS *fp = ru->nr_frame_parms; - nfapi_nr_config_request_scf_t *cfg = &ru->gNB_list[0]->gNB_config; + nfapi_nr_config_request_scf_t *cfg = &ru->config; RU_proc_t *proc = &ru->proc; uint16_t packet_type; uint32_t symbol_number,symbol_mask,symbol_mask_full=0; @@ -698,7 +711,7 @@ void rx_rf(RU_t *ru,int *frame,int *slot) { void tx_rf(RU_t *ru,int frame,int slot, uint64_t timestamp) { RU_proc_t *proc = &ru->proc; NR_DL_FRAME_PARMS *fp = ru->nr_frame_parms; - nfapi_nr_config_request_scf_t *cfg = &ru->gNB_list[0]->gNB_config; + nfapi_nr_config_request_scf_t *cfg = &ru->config; void *txp[ru->nb_tx]; unsigned int txs; int i,txsymb; @@ -771,8 +784,8 @@ void tx_rf(RU_t *ru,int frame,int slot, uint64_t timestamp) { siglen+sf_extension, ru->nb_tx, flags); - LOG_D(PHY,"[TXPATH] RU %d tx_rf, writing to TS %llu, frame %d, unwrapped_frame %d, slot %d\n",ru->idx, - (long long unsigned int)timestamp,frame,proc->frame_tx_unwrap,slot); + LOG_D(PHY,"[TXPATH] RU %d tx_rf, writing to TS %llu, frame %d, unwrapped_frame %d, slot %di, returned %d\n",ru->idx, + (long long unsigned int)timestamp,frame,proc->frame_tx_unwrap,slot, txs); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_WRITE, 0 ); //AssertFatal(txs == 0,"trx write function error %d\n", txs); } @@ -790,7 +803,7 @@ void *ru_thread_asynch_rxtx( void *param ) { static int ru_thread_asynch_rxtx_status; RU_t *ru = (RU_t *)param; RU_proc_t *proc = &ru->proc; - nfapi_nr_config_request_scf_t *cfg = &ru->gNB_list[0]->gNB_config; + nfapi_nr_config_request_scf_t *cfg = &ru->config; int slot=0, frame=0; // wait for top-level synchronization and do one acquisition to get timestamp for setting frame/subframe wait_sync("ru_thread_asynch_rxtx"); @@ -1035,11 +1048,11 @@ int wakeup_prach_ru(RU_t *ru) { void fill_rf_config(RU_t *ru, char *rf_config_file) { int i; NR_DL_FRAME_PARMS *fp = ru->nr_frame_parms; - nfapi_nr_config_request_scf_t *gNB_config = &ru->gNB_list[0]->gNB_config; //tmp index + nfapi_nr_config_request_scf_t *config = &ru->config; //tmp index openair0_config_t *cfg = &ru->openair0_cfg; - int mu = gNB_config->ssb_config.scs_common.value; - int N_RB = gNB_config->carrier_config.dl_grid_size[gNB_config->ssb_config.scs_common.value].value; - N_RB = 106; // TODO: hard coding (change later) + int mu = config->ssb_config.scs_common.value; + int N_RB = config->carrier_config.dl_grid_size[config->ssb_config.scs_common.value].value; + if (mu == NR_MU_0) { //or if LTE if(N_RB == 100) { if (fp->threequarter_fs) { @@ -1123,7 +1136,7 @@ void fill_rf_config(RU_t *ru, char *rf_config_file) { AssertFatal(0 == 1,"Numerology %d not supported for the moment\n",mu); } - if (gNB_config->cell_config.frame_duplex_type.value==TDD) + if (config->cell_config.frame_duplex_type.value==TDD) cfg->duplex_mode = duplex_mode_TDD; else //FDD cfg->duplex_mode = duplex_mode_FDD; @@ -1162,7 +1175,7 @@ int setup_RU_buffers(RU_t *ru) { int card,ant; //uint16_t N_TA_offset = 0; NR_DL_FRAME_PARMS *frame_parms; - //nfapi_nr_config_request_t *gNB_config = ru->gNB_list[0]->gNB_config; //tmp index + nfapi_nr_config_request_scf_t *config = &ru->config; if (ru) { frame_parms = ru->nr_frame_parms; @@ -1171,12 +1184,54 @@ int setup_RU_buffers(RU_t *ru) { printf("ru pointer is NULL\n"); return(-1); } + int mu = config->ssb_config.scs_common.value; + int N_RB = config->carrier_config.dl_grid_size[config->ssb_config.scs_common.value].value; - /* if (frame_parms->frame_type == TDD) { - if (frame_parms->N_RB_DL == 100) ru->N_TA_offset = 624; - else if (frame_parms->N_RB_DL == 50) ru->N_TA_offset = 624/2; - else if (frame_parms->N_RB_DL == 25) ru->N_TA_offset = 624/4; - } */ + + if (config->cell_config.frame_duplex_type.value == TDD) { + int N_TA_offset = config->carrier_config.uplink_frequency.value < 6000000 ? 400 : 431; // reference samples for 25600Tc @ 30.72 Ms/s for FR1, same @ 61.44 Ms/s for FR2 + + double factor=1; + + switch (mu) { + case 0: //15 kHz scs + AssertFatal(N_TA_offset == 400,"scs_common 15kHz only for FR1\n"); + if (N_RB <= 25) factor = .25; // 7.68 Ms/s + else if (N_RB <=50) factor = .5; // 15.36 Ms/s + else if (N_RB <=75) factor = 1.0; // 30.72 Ms/s + else if (N_RB <=100) factor = 1.0; // 30.72 Ms/s + else AssertFatal(1==0,"Too many PRBS for mu=0\n"); + break; + case 1: //30 kHz sc + AssertFatal(N_TA_offset == 400,"scs_common 30kHz only for FR1\n"); + if (N_RB <= 106) factor = 2.0; // 61.44 Ms/s + else if (N_RB <= 275) factor = 4.0; // 122.88 Ms/s + break; + case 2: //60 kHz scs + AssertFatal(1==0,"scs_common should not be 60 kHz\n"); + break; + case 3: //120 kHz scs + AssertFatal(N_TA_offset == 431,"scs_common 120kHz only for FR2\n"); + break; + case 4: //240 kHz scs + AssertFatal(1==0,"scs_common should not be 60 kHz\n"); + if (N_RB <= 32) factor = 1.0; // 61.44 Ms/s + else if (N_RB <= 66) factor = 2.0; // 122.88 Ms/s + else AssertFatal(1==0,"N_RB %d is too big for curretn FR2 implementation\n",N_RB); + break; + + if (N_RB == 100) ru->N_TA_offset = 624; + else if (N_RB == 50) ru->N_TA_offset = 624/2; + else if (N_RB == 25) ru->N_TA_offset = 624/4; + } + if (frame_parms->threequarter_fs == 1) factor = factor*.75; + ru->N_TA_offset = (int)(N_TA_offset * factor); + LOG_I(PHY,"RU %d Setting N_TA_offset to %d samples (factor %f, UL Freq %d, N_RB %d)\n",ru->idx,ru->N_TA_offset,factor, + config->carrier_config.uplink_frequency.value, N_RB); + } + else ru->N_TA_offset = 0; + + if (ru->openair0_cfg.mmapped_dma == 1) { // replace RX signal buffers with mmaped HW versions for (i=0; inb_rx; i++) { @@ -1389,7 +1444,7 @@ void *ru_thread( void *param ) { int i = 0; int aa; - nfapi_nr_config_request_scf_t *cfg = &ru->gNB_list[0]->gNB_config; + nfapi_nr_config_request_scf_t *cfg = &ru->config; // set default return value ru_thread_status = 0; @@ -1399,9 +1454,11 @@ void *ru_thread( void *param ) { LOG_I(PHY,"Starting RU %d (%s,%s),\n",ru->idx,NB_functions[ru->function],NB_timing[ru->if_timing]); + memcpy((void*)&ru->config,(void*)&RC.gNB[0]->gNB_config,sizeof(ru->config)); + if(emulate_rf) { fill_rf_config(ru,ru->rf_config_file); - nr_init_frame_parms(&ru->gNB_list[0]->gNB_config, fp); + nr_init_frame_parms(&ru->config, fp); nr_dump_frame_parms(fp); nr_phy_init_RU(ru); @@ -1422,7 +1479,7 @@ void *ru_thread( void *param ) { } if (ru->if_south == LOCAL_RF) { // configure RF parameters only - nr_init_frame_parms(&ru->gNB_list[0]->gNB_config, fp); + nr_init_frame_parms(&ru->config, fp); nr_dump_frame_parms(fp); fill_rf_config(ru,ru->rf_config_file); nr_phy_init_RU(ru); @@ -1466,12 +1523,14 @@ void *ru_thread( void *param ) { if ((ru->is_slave) && (ru->if_south == LOCAL_RF)) do_ru_synch(ru); // start trx write thread - if (ru->start_write_thread){ - if(ru->start_write_thread(ru) != 0){ - LOG_E(HW,"Could not start tx write thread\n"); - } - else{ - LOG_I(PHY,"tx write thread ready\n"); + if(usrp_tx_thread == 1){ + if (ru->start_write_thread){ + if(ru->start_write_thread(ru) != 0){ + LOG_E(HW,"Could not start tx write thread\n"); + } + else{ + LOG_I(PHY,"tx write thread ready\n"); + } } } } @@ -1524,7 +1583,8 @@ void *ru_thread( void *param ) { if (slot_type == NR_UPLINK_SLOT || slot_type == NR_MIXED_SLOT) { //if (proc->tti_rx==8) { - if (ru->feprx) ru->feprx(ru,proc->tti_rx); + if (ru->feprx) { + ru->feprx(ru,proc->tti_rx); //LOG_M("rxdata.m","rxs",ru->common.rxdata[0],1228800,1,1); LOG_D(PHY,"RU proc: frame_rx = %d, tti_rx = %d\n", proc->frame_rx, proc->tti_rx); @@ -1533,6 +1593,18 @@ void *ru_thread( void *param ) { for (aa=0;aanb_rx;aa++) memcpy((void*)RC.gNB[0]->common_vars.rxdataF[aa], (void*)ru->common.rxdataF[aa], fp->symbols_per_slot*fp->ofdm_symbol_size*sizeof(int32_t)); + + // Do PRACH RU processing + int prach_id=find_nr_prach_ru(ru,proc->frame_rx,proc->tti_rx,SEARCH_EXIST); + if (prach_id>=0) { + rx_nr_prach_ru(ru, + ru->prach_list[prach_id].fmt, + ru->prach_list[prach_id].numRA, + ru->prach_list[prach_id].prachStartSymbol, + proc->frame_rx,proc->tti_rx); + free_nr_ru_prach_entry(ru,prach_id); + } + } } // At this point, all information for subframe has been received on FH interface @@ -1904,7 +1976,7 @@ void configure_ru(int idx, RU_t *ru = RC.ru[idx]; RRU_config_t *config = (RRU_config_t *)arg; RRU_capabilities_t *capabilities = (RRU_capabilities_t *)arg; - nfapi_nr_config_request_scf_t *gNB_config = &ru->gNB_list[0]->gNB_config; + nfapi_nr_config_request_scf_t *cfg = &ru->config; int ret; LOG_I(PHY, "Received capabilities from RRU %d\n",idx); @@ -1927,15 +1999,15 @@ void configure_ru(int idx, //config->tdd_config_S[0] = ru->nr_frame_parms->tdd_config_S; config->att_tx[0] = ru->att_tx; config->att_rx[0] = ru->att_rx; - config->N_RB_DL[0] = gNB_config->carrier_config.dl_grid_size[gNB_config->ssb_config.scs_common.value].value; - config->N_RB_UL[0] = gNB_config->carrier_config.dl_grid_size[gNB_config->ssb_config.scs_common.value].value; + config->N_RB_DL[0] = cfg->carrier_config.dl_grid_size[cfg->ssb_config.scs_common.value].value; + config->N_RB_UL[0] = cfg->carrier_config.dl_grid_size[cfg->ssb_config.scs_common.value].value; config->threequarter_fs[0] = ru->nr_frame_parms->threequarter_fs; /* if (ru->if_south==REMOTE_IF4p5) { config->prach_FreqOffset[0] = ru->nr_frame_parms->prach_config_common.prach_ConfigInfo.prach_FreqOffset; config->prach_ConfigIndex[0] = ru->nr_frame_parms->prach_config_common.prach_ConfigInfo.prach_ConfigIndex; LOG_I(PHY,"REMOTE_IF4p5: prach_FrequOffset %d, prach_ConfigIndex %d\n", config->prach_FreqOffset[0],config->prach_ConfigIndex[0]);*/ - nr_init_frame_parms(&ru->gNB_list[0]->gNB_config, ru->nr_frame_parms); + nr_init_frame_parms(&ru->config, ru->nr_frame_parms); nr_phy_init_RU(ru); } @@ -1943,23 +2015,23 @@ void configure_rru(int idx, void *arg) { RRU_config_t *config = (RRU_config_t *)arg; RU_t *ru = RC.ru[idx]; - nfapi_nr_config_request_scf_t *gNB_config = &ru->gNB_list[0]->gNB_config; + nfapi_nr_config_request_scf_t *cfg = &ru->config; ru->nr_frame_parms->nr_band = config->band_list[0]; ru->nr_frame_parms->dl_CarrierFreq = config->tx_freq[0]; ru->nr_frame_parms->ul_CarrierFreq = config->rx_freq[0]; if (ru->nr_frame_parms->dl_CarrierFreq == ru->nr_frame_parms->ul_CarrierFreq) { - gNB_config->cell_config.frame_duplex_type.value = TDD; + cfg->cell_config.frame_duplex_type.value = TDD; //ru->nr_frame_parms->tdd_config = config->tdd_config[0]; //ru->nr_frame_parms->tdd_config_S = config->tdd_config_S[0]; } else - gNB_config->cell_config.frame_duplex_type.value = FDD; + cfg->cell_config.frame_duplex_type.value = FDD; ru->att_tx = config->att_tx[0]; ru->att_rx = config->att_rx[0]; - int mu = gNB_config->ssb_config.scs_common.value; - gNB_config->carrier_config.dl_grid_size[mu].value = config->N_RB_DL[0]; - gNB_config->carrier_config.dl_grid_size[mu].value = config->N_RB_UL[0]; + int mu = cfg->ssb_config.scs_common.value; + cfg->carrier_config.dl_grid_size[mu].value = config->N_RB_DL[0]; + cfg->carrier_config.dl_grid_size[mu].value = config->N_RB_UL[0]; ru->nr_frame_parms->threequarter_fs = config->threequarter_fs[0]; //ru->nr_frame_parms->pdsch_config_common.referenceSignalPower = ru->max_pdschReferenceSignalPower-config->att_tx[0]; @@ -1974,7 +2046,7 @@ void configure_rru(int idx, } fill_rf_config(ru,ru->rf_config_file); - nr_init_frame_parms(&ru->gNB_list[0]->gNB_config, ru->nr_frame_parms); + nr_init_frame_parms(&ru->config, ru->nr_frame_parms); nr_phy_init_RU(ru); } @@ -2073,26 +2145,29 @@ void set_function_spec_param(RU_t *ru) { ru->fh_north_out = NULL; // no outgoing fronthaul to north ru->nr_start_if = NULL; // no if interface ru->rfdevice.host_type = RAU_HOST; + + // FK this here looks messed up. The following lines should be part of the if (ru->function == gNodeB_3GPP), shouldn't they? + + ru->fh_south_in = rx_rf; // local synchronous RF RX + ru->fh_south_out = tx_rf; // local synchronous RF TX + ru->start_rf = start_rf; // need to start the local RF interface + ru->stop_rf = stop_rf; + ru->start_write_thread = start_write_thread; // starting RF TX in different thread + printf("configuring ru_id %u (start_rf %p)\n", ru->idx, start_rf); } - ru->fh_south_in = rx_rf; // local synchronous RF RX - ru->fh_south_out = tx_rf; // local synchronous RF TX - ru->start_rf = start_rf; // need to start the local RF interface - ru->stop_rf = stop_rf; - ru->start_write_thread = start_write_thread; // starting RF TX in different thread - printf("configuring ru_id %u (start_rf %p)\n", ru->idx, start_rf); /* - if (ru->function == gNodeB_3GPP) { // configure RF parameters only for 3GPP eNodeB, we need to get them from RAU otherwise - fill_rf_config(ru,rf_config_file); - init_frame_parms(&ru->frame_parms,1); - nr_phy_init_RU(ru); - } + printf("configuring ru_id %u (start_rf %p)\n", ru->idx, start_rf); + fill_rf_config(ru,rf_config_file); + init_frame_parms(&ru->frame_parms,1); + nr_phy_init_RU(ru); - ret = openair0_device_load(&ru->rfdevice,&ru->openair0_cfg); - if (setup_RU_buffers(ru)!=0) { - printf("Exiting, cannot initialize RU Buffers\n"); - exit(-1); - }*/ + ret = openair0_device_load(&ru->rfdevice,&ru->openair0_cfg); + if (setup_RU_buffers(ru)!=0) { + printf("Exiting, cannot initialize RU Buffers\n"); + exit(-1); + } + */ break; case REMOTE_IF5: // the remote unit is IF5 RRU @@ -2145,6 +2220,15 @@ void set_function_spec_param(RU_t *ru) { exit(-1); } + if (ru->ifdevice.get_internal_parameter != NULL) { + void *t = ru->ifdevice.get_internal_parameter("fh_if4p5_south_in"); + if (t != NULL) + ru->fh_south_in = t; + t = ru->ifdevice.get_internal_parameter("fh_if4p5_south_out"); + if (t != NULL) + ru->fh_south_out = t; + } + malloc_IF4p5_buffer(ru); break; diff --git a/executables/nr-softmodem-common.h b/executables/nr-softmodem-common.h index ccb3f28d98..c968fee7b6 100644 --- a/executables/nr-softmodem-common.h +++ b/executables/nr-softmodem-common.h @@ -57,6 +57,7 @@ #define CONFIG_HLP_DLSHIFT "dynamic shift for LLR compuation for TM3/4 (default 0)\n" #define CONFIG_HLP_UELOOP "get softmodem (UE) to loop through memory instead of acquiring from HW\n" #define CONFIG_HLP_PHYTST "test UE phy layer, mac disabled\n" +#define CONFIG_HLP_DORA "test gNB and UE with RA procedures\n" #define CONFIG_HLP_DMAMAP "sets flag for improved EXMIMO UE performance\n" #define CONFIG_HLP_EXCCLK "tells hardware to use a clock reference (0:internal(default), 1:external, 2:gpsdo)\n" #define CONFIG_HLP_USIM "use XOR autentication algo in case of test usim mode\n" @@ -89,6 +90,7 @@ #define CONFIG_HLP_EMULATE_RF "Emulated RF enabled(disable by defult)\n" #define CONFIG_HLP_PARALLEL_CMD "three config for level of parallelism 'PARALLEL_SINGLE_THREAD', 'PARALLEL_RU_L1_SPLIT', or 'PARALLEL_RU_L1_TRX_SPLIT'\n" #define CONFIG_HLP_WORKER_CMD "two option for worker 'WORKER_DISABLE' or 'WORKER_ENABLE'\n" +#define CONFIG_HLP_USRP_THREAD "having extra thead for usrp tx\n" #define CONFIG_HLP_DISABLNBIOT "disable nb-iot, even if defined in config\n" #define CONFIG_HLP_USRP_ARGS "set the arguments to identify USRP (same syntax as in UHD)\n" @@ -143,6 +145,10 @@ extern int sync_var; extern int transmission_mode; extern double cpuf; +extern int emulate_rf; +extern int numerology; +extern int usrp_tx_thread; + extern volatile int start_eNB; extern volatile int start_UE; diff --git a/executables/nr-softmodem.c b/executables/nr-softmodem.c index bbde800501..7f80c3b82a 100644 --- a/executables/nr-softmodem.c +++ b/executables/nr-softmodem.c @@ -75,7 +75,7 @@ unsigned short config_frames[4] = {2,9,11,13}; #include "system.h" #include - +#include "PHY/TOOLS/phy_scope_interface.h" #include "PHY/TOOLS/nr_phy_scope.h" #include "stats.h" #include "nr-softmodem.h" @@ -84,9 +84,6 @@ unsigned short config_frames[4] = {2,9,11,13}; #include "NB_IoT_interface.h" #include "x2ap_eNB.h" -short nr_mod_table[NR_MOD_TABLE_SIZE_SHORT] = {0,0,16384,16384,-16384,-16384,16384,16384,16384,-16384,-16384,16384,-16384,-16384,7327,7327,7327,21981,21981,7327,21981,21981,7327,-7327,7327,-21981,21981,-7327,21981,-21981,-7327,7327,-7327,21981,-21981,7327,-21981,21981,-7327,-7327,-7327,-21981,-21981,-7327,-21981,-21981,10726,10726,10726,3576,3576,10726,3576,3576,10726,17876,10726,25027,3576,17876,3576,25027,17876,10726,17876,3576,25027,10726,25027,3576,17876,17876,17876,25027,25027,17876,25027,25027,10726,-10726,10726,-3576,3576,-10726,3576,-3576,10726,-17876,10726,-25027,3576,-17876,3576,-25027,17876,-10726,17876,-3576,25027,-10726,25027,-3576,17876,-17876,17876,-25027,25027,-17876,25027,-25027,-10726,10726,-10726,3576,-3576,10726,-3576,3576,-10726,17876,-10726,25027,-3576,17876,-3576,25027,-17876,10726,-17876,3576,-25027,10726,-25027,3576,-17876,17876,-17876,25027,-25027,17876,-25027,25027,-10726,-10726,-10726,-3576,-3576,-10726,-3576,-3576,-10726,-17876,-10726,-25027,-3576,-17876,-3576,-25027,-17876,-10726,-17876,-3576,-25027,-10726,-25027,-3576,-17876,-17876,-17876,-25027,-25027,-17876,-25027,-25027,8886,8886,8886,12439,12439,8886,12439,12439,8886,5332,8886,1778,12439,5332,12439,1778,5332,8886,5332,12439,1778,8886,1778,12439,5332,5332,5332,1778,1778,5332,1778,1778,8886,19547,8886,15993,12439,19547,12439,15993,8886,23101,8886,26655,12439,23101,12439,26655,5332,19547,5332,15993,1778,19547,1778,15993,5332,23101,5332,26655,1778,23101,1778,26655,19547,8886,19547,12439,15993,8886,15993,12439,19547,5332,19547,1778,15993,5332,15993,1778,23101,8886,23101,12439,26655,8886,26655,12439,23101,5332,23101,1778,26655,5332,26655,1778,19547,19547,19547,15993,15993,19547,15993,15993,19547,23101,19547,26655,15993,23101,15993,26655,23101,19547,23101,15993,26655,19547,26655,15993,23101,23101,23101,26655,26655,23101,26655,26655,8886,-8886,8886,-12439,12439,-8886,12439,-12439,8886,-5332,8886,-1778,12439,-5332,12439,-1778,5332,-8886,5332,-12439,1778,-8886,1778,-12439,5332,-5332,5332,-1778,1778,-5332,1778,-1778,8886,-19547,8886,-15993,12439,-19547,12439,-15993,8886,-23101,8886,-26655,12439,-23101,12439,-26655,5332,-19547,5332,-15993,1778,-19547,1778,-15993,5332,-23101,5332,-26655,1778,-23101,1778,-26655,19547,-8886,19547,-12439,15993,-8886,15993,-12439,19547,-5332,19547,-1778,15993,-5332,15993,-1778,23101,-8886,23101,-12439,26655,-8886,26655,-12439,23101,-5332,23101,-1778,26655,-5332,26655,-1778,19547,-19547,19547,-15993,15993,-19547,15993,-15993,19547,-23101,19547,-26655,15993,-23101,15993,-26655,23101,-19547,23101,-15993,26655,-19547,26655,-15993,23101,-23101,23101,-26655,26655,-23101,26655,-26655,-8886,8886,-8886,12439,-12439,8886,-12439,12439,-8886,5332,-8886,1778,-12439,5332,-12439,1778,-5332,8886,-5332,12439,-1778,8886,-1778,12439,-5332,5332,-5332,1778,-1778,5332,-1778,1778,-8886,19547,-8886,15993,-12439,19547,-12439,15993,-8886,23101,-8886,26655,-12439,23101,-12439,26655,-5332,19547,-5332,15993,-1778,19547,-1778,15993,-5332,23101,-5332,26655,-1778,23101,-1778,26655,-19547,8886,-19547,12439,-15993,8886,-15993,12439,-19547,5332,-19547,1778,-15993,5332,-15993,1778,-23101,8886,-23101,12439,-26655,8886,-26655,12439,-23101,5332,-23101,1778,-26655,5332,-26655,1778,-19547,19547,-19547,15993,-15993,19547,-15993,15993,-19547,23101,-19547,26655,-15993,23101,-15993,26655,-23101,19547,-23101,15993,-26655,19547,-26655,15993,-23101,23101,-23101,26655,-26655,23101,-26655,26655,-8886,-8886,-8886,-12439,-12439,-8886,-12439,-12439,-8886,-5332,-8886,-1778,-12439,-5332,-12439,-1778,-5332,-8886,-5332,-12439,-1778,-8886,-1778,-12439,-5332,-5332,-5332,-1778,-1778,-5332,-1778,-1778,-8886,-19547,-8886,-15993,-12439,-19547,-12439,-15993,-8886,-23101,-8886,-26655,-12439,-23101,-12439,-26655,-5332,-19547,-5332,-15993,-1778,-19547,-1778,-15993,-5332,-23101,-5332,-26655,-1778,-23101,-1778,-26655,-19547,-8886,-19547,-12439,-15993,-8886,-15993,-12439,-19547,-5332,-19547,-1778,-15993,-5332,-15993,-1778,-23101,-8886,-23101,-12439,-26655,-8886,-26655,-12439,-23101,-5332,-23101,-1778,-26655,-5332,-26655,-1778,-19547,-19547,-19547,-15993,-15993,-19547,-15993,-15993,-19547,-23101,-19547,-26655,-15993,-23101,-15993,-26655,-23101,-19547,-23101,-15993,-26655,-19547,-26655,-15993,-23101,-23101,-23101,-26655,-26655,-23101,-26655,-26655}; - - pthread_cond_t nfapi_sync_cond; pthread_mutex_t nfapi_sync_mutex; int nfapi_sync_var=-1; //!< protected by mutex \ref nfapi_sync_mutex @@ -156,7 +153,6 @@ char channels[128] = "0"; int rx_input_level_dBm; -uint32_t do_forms=0; int otg_enabled; //int number_of_cards = 1; @@ -178,10 +174,12 @@ extern void reset_opp_meas(void); extern void print_opp_meas(void); extern void init_eNB_afterRU(void); +extern void *udp_eNB_task(void *args_p); int transmission_mode=1; int emulate_rf = 0; int numerology = 0; +int usrp_tx_thread = 0; static char *parallel_config = NULL; @@ -384,10 +382,10 @@ int create_gNB_tasks(uint32_t gnb_nb) { if (gnb_nb > 0) { /* Last task to create, others task must be ready before its start */ - if (itti_create_task (TASK_GNB_APP, gNB_app_task, NULL) < 0) { + /*if (itti_create_task (TASK_GNB_APP, gNB_app_task, NULL) < 0) { LOG_E(GNB_APP, "Create task for gNB APP failed\n"); return -1; - } + }*/ if(itti_create_task(TASK_SCTP, sctp_eNB_task, NULL) < 0){ LOG_E(SCTP, "Create task for SCTP failed\n"); return -1; @@ -402,35 +400,39 @@ int create_gNB_tasks(uint32_t gnb_nb) { } } - /* - if (EPC_MODE_ENABLED) { - if (gnb_nb > 0) { - if (itti_create_task (TASK_SCTP, sctp_eNB_task, NULL) < 0) { - LOG_E(SCTP, "Create task for SCTP failed\n"); - return -1; - } + if (EPC_MODE_ENABLED && (get_softmodem_params()->phy_test==0 && get_softmodem_params()->do_ra==0)) { + if (gnb_nb > 0) { + /*if (itti_create_task (TASK_SCTP, sctp_eNB_task, NULL) < 0) { + LOG_E(SCTP, "Create task for SCTP failed\n"); + return -1; + } - if (itti_create_task (TASK_S1AP, s1ap_eNB_task, NULL) < 0) { - LOG_E(S1AP, "Create task for S1AP failed\n"); - return -1; - } - if(!emulate_rf){ - if (itti_create_task (TASK_UDP, udp_eNB_task, NULL) < 0) { - LOG_E(UDP_, "Create task for UDP failed\n"); - return -1; - } - } + if (itti_create_task (TASK_S1AP, s1ap_eNB_task, NULL) < 0) { + LOG_E(S1AP, "Create task for S1AP failed\n"); + return -1; + }*/ - if (itti_create_task (TASK_GTPV1_U, >pv1u_eNB_task, NULL) < 0) { - LOG_E(GTPU, "Create task for GTPV1U failed\n"); - return -1; - } + + if(!emulate_rf){ + if (itti_create_task (TASK_UDP, udp_eNB_task, NULL) < 0) { + LOG_E(UDP_, "Create task for UDP failed\n"); + return -1; } + } + if (itti_create_task (TASK_GTPV1_U, >pv1u_gNB_task, NULL) < 0) { + LOG_E(GTPU, "Create task for GTPV1U failed\n"); + return -1; + } } - */ + } + if (gnb_nb > 0) { + if (itti_create_task (TASK_GNB_APP, gNB_app_task, NULL) < 0) { + LOG_E(GNB_APP, "Create task for gNB APP failed\n"); + return -1; + } LOG_I(NR_RRC,"Creating NR RRC gNB Task\n"); if (itti_create_task (TASK_RRC_GNB, rrc_gnb_task, NULL) < 0) { @@ -448,7 +450,11 @@ static void get_options(void) { paramdef_t cmdline_params[] = CMDLINE_PARAMS_DESC_GNB ; + CONFIG_SETRTFLAG(CONFIG_NOEXITONHELP); + get_common_options(SOFTMODEM_GNB_BIT ); config_process_cmdline( cmdline_params,sizeof(cmdline_params)/sizeof(paramdef_t),NULL); + CONFIG_CLEARRTFLAG(CONFIG_NOEXITONHELP); + @@ -717,9 +723,6 @@ int restart_L1L2(module_id_t gnb_id) { RC.ru_mask |= (1 << ru->idx); - /* copy the changed frame parameters to the RU */ - /* TODO this should be done for all RUs associated to this gNB */ - memcpy(&ru->nr_frame_parms, &RC.gNB[gnb_id]->frame_parms, sizeof(NR_DL_FRAME_PARMS)); set_function_spec_param(RC.ru[gnb_id]); LOG_I(GNB_APP, "attempting to create ITTI tasks\n"); // No more rrc thread, as many race conditions are hidden behind @@ -812,7 +815,6 @@ int main( int argc, char **argv ) configure_linux(); printf("Reading in command-line options\n"); get_options (); - get_common_options(SOFTMODEM_GNB_BIT ); if (CONFIG_ISFLAGSET(CONFIG_ABORT) ) { fprintf(stderr,"Getting configuration failed\n"); @@ -820,6 +822,10 @@ int main( int argc, char **argv ) } openair0_cfg[0].threequarter_fs = threequarter_fs; + EPC_MODE_ENABLED = !IS_SOFTMODEM_NOS1; //!get_softmodem_params()->phy_test; + + if (get_softmodem_params()->do_ra) + AssertFatal(get_softmodem_params()->phy_test == 0,"RA and phy_test are mutually exclusive\n"); #if T_TRACER T_Config_Init(); @@ -950,12 +956,14 @@ if(!IS_SOFTMODEM_NOS1) printf("RC.nb_RU:%d\n", RC.nb_RU); // once all RUs are ready initialize the rest of the gNBs ((dependence on final RU parameters after configuration) printf("ALL RUs ready - init gNBs\n"); - - if (do_forms==1) { + if(IS_SOFTMODEM_DOFORMS) { + scopeParms_t p; p.argc=&argc; p.argv=argv; - startScope(&p); + p.gNB=RC.gNB[0]; + p.ru=RC.ru[0]; + load_softscope("nr",&p); } if (nfapi_mode != 1 && nfapi_mode != 2) { diff --git a/executables/nr-softmodem.h b/executables/nr-softmodem.h index 27e3ba1e3e..d6cfe6b906 100644 --- a/executables/nr-softmodem.h +++ b/executables/nr-softmodem.h @@ -19,21 +19,13 @@ /*----------------------------------------------------------------------------------------------------------------------------------------------------------------------*/ #define CMDLINE_PARAMS_DESC_GNB { \ {"mmapped-dma", CONFIG_HLP_DMAMAP, PARAMFLAG_BOOL, uptr:&mmapped_dma, defintval:0, TYPE_INT, 0}, \ - {"wait-for-sync", NULL, PARAMFLAG_BOOL, iptr:&wait_for_sync, defintval:0, TYPE_INT, 0}, \ {"single-thread-disable", CONFIG_HLP_NOSNGLT, PARAMFLAG_BOOL, iptr:&single_thread_flag, defintval:1, TYPE_INT, 0}, \ {"A" , CONFIG_HLP_TADV, 0, uptr:&timing_advance, defintval:0, TYPE_UINT, 0}, \ - {"C" , CONFIG_HLP_DLF, 0, u64ptr:&(downlink_frequency[0][0]), defuintval:DEFAULT_DLF, TYPE_UINT64, 0}, \ - {"a" , CONFIG_HLP_CHOFF, 0, iptr:&chain_offset, defintval:0, TYPE_INT, 0}, \ - {"d" , CONFIG_HLP_SOFTS, PARAMFLAG_BOOL, uptr:(uint32_t *)&do_forms, defintval:0, TYPE_INT8, 0}, \ {"E" , CONFIG_HLP_TQFS, PARAMFLAG_BOOL, i8ptr:&threequarter_fs, defintval:0, TYPE_INT8, 0}, \ {"K" , CONFIG_HLP_ITTIL, PARAMFLAG_NOFREE, strptr:&itti_dump_file, defstrval:"/tmp/itti.dump", TYPE_STRING, 0}, \ {"m" , CONFIG_HLP_DLMCS, 0, uptr:&target_dl_mcs, defintval:0, TYPE_UINT, 0}, \ {"t" , CONFIG_HLP_ULMCS, 0, uptr:&target_ul_mcs, defintval:0, TYPE_UINT, 0}, \ - {"q" , CONFIG_HLP_STMON, PARAMFLAG_BOOL, iptr:&opp_enabled, defintval:0, TYPE_INT, 0}, \ - {"numerology" , CONFIG_HLP_NUMEROLOGY, PARAMFLAG_BOOL, iptr:&numerology, defintval:0, TYPE_INT, 0}, \ - {"emulate-rf" , CONFIG_HLP_EMULATE_RF, PARAMFLAG_BOOL, iptr:&emulate_rf, defintval:0, TYPE_INT, 0}, \ - {"parallel-config", CONFIG_HLP_PARALLEL_CMD,0, strptr:(char **)¶llel_config, defstrval:NULL, TYPE_STRING, 0}, \ - {"worker-config", CONFIG_HLP_WORKER_CMD, 0, strptr:(char **)&worker_config, defstrval:NULL, TYPE_STRING, 0}, \ + {"usrp-tx-thread-config", CONFIG_HLP_USRP_THREAD, 0, iptr:&usrp_tx_thread, defstrval:0, TYPE_INT, 0}, \ {"s" , CONFIG_HLP_SNR, 0, dblptr:&snr_dB, defdblval:25, TYPE_DOUBLE, 0}, \ } diff --git a/executables/nr-ue.c b/executables/nr-ue.c index dbee6f1e6f..1600d8add0 100644 --- a/executables/nr-ue.c +++ b/executables/nr-ue.c @@ -21,7 +21,7 @@ #include "executables/thread-common.h" #include "executables/nr-uesoftmodem.h" -#include "LAYER2/NR_MAC_UE/mac.h" +#include "NR_MAC_UE/mac.h" //#include "RRC/LTE/rrc_extern.h" #include "PHY_INTERFACE/phy_interface_extern.h" @@ -32,12 +32,10 @@ #include "PHY/phy_extern_nr_ue.h" #include "PHY/INIT/phy_init.h" #include "PHY/MODULATION/modulation_UE.h" -#include "LAYER2/NR_MAC_UE/mac_proto.h" +#include "NR_MAC_UE/mac_proto.h" #include "RRC/NR_UE/rrc_proto.h" -//#ifndef NO_RAT_NR -#include "SCHED_NR/phy_frame_config_nr.h" -//#endif +#include "SCHED_NR_UE/phy_frame_config_nr.h" #include "SCHED_NR_UE/defs.h" #include "PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h" @@ -123,7 +121,7 @@ extern double cpuf; #ifndef NO_RAT_NR #define DURATION_RX_TO_TX (NR_UE_CAPABILITY_SLOT_RX_TO_TX) /* for NR this will certainly depends to such UE capability which is not yet defined */ #else - #define DURATION_RX_TO_TX (4) /* For LTE, this duration is fixed to 4 and it is linked to LTE standard for both modes FDD/TDD */ + #define DURATION_RX_TO_TX (6) /* For LTE, this duration is fixed to 4 and it is linked to LTE standard for both modes FDD/TDD */ #endif #define FRAME_PERIOD 100000000ULL @@ -142,15 +140,24 @@ void init_nr_ue_vars(PHY_VARS_NR_UE *ue, uint8_t abstraction_flag) { + int nb_connected_gNB = 1, gNB_id; + memcpy(&(ue->frame_parms), frame_parms, sizeof(NR_DL_FRAME_PARMS)); ue->Mod_id = UE_id; ue->mac_enabled = 1; + // Setting UE mode to NOT_SYNCHED by default + for (gNB_id = 0; gNB_id < nb_connected_gNB; gNB_id++){ + ue->UE_mode[gNB_id] = NOT_SYNCHED; + ue->prach_resources[gNB_id] = (NR_PRACH_RESOURCES_t *)malloc16_clear(sizeof(NR_PRACH_RESOURCES_t)); + } + // initialize all signal buffers - init_nr_ue_signal(ue,1,abstraction_flag); + init_nr_ue_signal(ue, nb_connected_gNB, abstraction_flag); + // intialize transport - init_nr_ue_transport(ue,abstraction_flag); + init_nr_ue_transport(ue, abstraction_flag); } /*! @@ -357,83 +364,31 @@ static void UE_synch(void *arg) { } void processSlotTX( PHY_VARS_NR_UE *UE, UE_nr_rxtx_proc_t *proc) { + fapi_nr_config_request_t *cfg = &UE->nrUE_config; + int tx_slot_type = nr_ue_slot_select(cfg, proc->frame_tx, proc->nr_tti_tx); + uint8_t gNB_id = 0; - uint32_t rb_size, rb_start; - uint16_t rnti, l_prime_mask, n_rb0, n_rb1, pdu_bit_map; - uint8_t nr_of_symbols, start_symbol_index, mcs_index, mcs_table, nrOfLayers, harq_process_id, rv_index, dmrs_config_type; - uint8_t ptrs_mcs1, ptrs_mcs2, ptrs_mcs3, ptrs_time_density, ptrs_freq_density; - nr_dcireq_t dcireq; - nr_scheduled_response_t scheduled_response; + if (tx_slot_type == NR_UPLINK_SLOT || tx_slot_type == NR_MIXED_SLOT){ - // program PUSCH. this should actually be done by the MAC upon reception of an UL DCI - if (proc->nr_tti_tx == 8 || UE->frame_parms.frame_type == FDD){ + // trigger L2 to run ue_scheduler thru IF module + // [TODO] mapping right after NR initial sync + if(UE->if_inst != NULL && UE->if_inst->ul_indication != NULL) { + nr_uplink_indication_t ul_indication; + memset((void*)&ul_indication, 0, sizeof(ul_indication)); - dcireq.module_id = UE->Mod_id; - dcireq.gNB_index = 0; - dcireq.cc_id = 0; - dcireq.frame = proc->frame_rx; - dcireq.slot = proc->nr_tti_rx; + ul_indication.module_id = UE->Mod_id; + ul_indication.gNB_index = gNB_id; + ul_indication.cc_id = UE->CC_id; + ul_indication.frame_rx = proc->frame_rx; + ul_indication.slot_rx = proc->nr_tti_rx; + ul_indication.frame_tx = proc->frame_tx; + ul_indication.slot_tx = proc->nr_tti_tx; - scheduled_response.dl_config = NULL; - scheduled_response.ul_config = &dcireq.ul_config_req; - scheduled_response.tx_request = NULL; - scheduled_response.module_id = UE->Mod_id; - scheduled_response.CC_id = 0; - scheduled_response.frame = proc->frame_rx; - scheduled_response.slot = proc->nr_tti_rx; - //--------------------------Temporary configuration-----------------------------// - rnti = 0x1234; - rb_size = 50; - rb_start = 0; - nr_of_symbols = 12; - start_symbol_index = 2; - nrOfLayers = 1; - mcs_index = 9; - mcs_table = 0; - harq_process_id = 0; - rv_index = 0; - l_prime_mask = get_l_prime(nr_of_symbols, typeB, pusch_dmrs_pos0, pusch_len1); - dmrs_config_type = 0; - ptrs_mcs1 = 2; - ptrs_mcs2 = 4; - ptrs_mcs3 = 10; - n_rb0 = 25; - n_rb1 = 75; - pdu_bit_map = PUSCH_PDU_BITMAP_PUSCH_DATA; - ptrs_time_density = get_L_ptrs(ptrs_mcs1, ptrs_mcs2, ptrs_mcs3, mcs_index, mcs_table); - ptrs_freq_density = get_K_ptrs(n_rb0, n_rb1, rb_size); - //------------------------------------------------------------------------------// - - scheduled_response.ul_config->slot = 8; - scheduled_response.ul_config->number_pdus = 1; - scheduled_response.ul_config->ul_config_list[0].pdu_type = FAPI_NR_UL_CONFIG_TYPE_PUSCH; - scheduled_response.ul_config->ul_config_list[0].pusch_config_pdu.rnti = rnti; - scheduled_response.ul_config->ul_config_list[0].pusch_config_pdu.rb_size = rb_size; - scheduled_response.ul_config->ul_config_list[0].pusch_config_pdu.rb_start = rb_start; - scheduled_response.ul_config->ul_config_list[0].pusch_config_pdu.nr_of_symbols = nr_of_symbols; - scheduled_response.ul_config->ul_config_list[0].pusch_config_pdu.start_symbol_index = start_symbol_index; - scheduled_response.ul_config->ul_config_list[0].pusch_config_pdu.ul_dmrs_symb_pos = l_prime_mask << start_symbol_index; - scheduled_response.ul_config->ul_config_list[0].pusch_config_pdu.dmrs_config_type = dmrs_config_type; - scheduled_response.ul_config->ul_config_list[0].pusch_config_pdu.mcs_index = mcs_index; - scheduled_response.ul_config->ul_config_list[0].pusch_config_pdu.mcs_table = mcs_table; - scheduled_response.ul_config->ul_config_list[0].pusch_config_pdu.pusch_data.new_data_indicator = 0; - scheduled_response.ul_config->ul_config_list[0].pusch_config_pdu.pusch_data.rv_index = rv_index; - scheduled_response.ul_config->ul_config_list[0].pusch_config_pdu.nrOfLayers = nrOfLayers; - scheduled_response.ul_config->ul_config_list[0].pusch_config_pdu.pusch_data.harq_process_id = harq_process_id; - scheduled_response.ul_config->ul_config_list[0].pusch_config_pdu.pdu_bit_map = pdu_bit_map; - scheduled_response.ul_config->ul_config_list[0].pusch_config_pdu.pusch_ptrs.ptrs_time_density = ptrs_time_density; - scheduled_response.ul_config->ul_config_list[0].pusch_config_pdu.pusch_ptrs.ptrs_freq_density = ptrs_freq_density; - scheduled_response.ul_config->ul_config_list[0].pusch_config_pdu.pusch_ptrs.ptrs_ports_list = (nfapi_nr_ue_ptrs_ports_t *) malloc(2*sizeof(nfapi_nr_ue_ptrs_ports_t)); - scheduled_response.ul_config->ul_config_list[0].pusch_config_pdu.pusch_ptrs.ptrs_ports_list[0].ptrs_re_offset = 0; - - if (1 << ptrs_time_density >= nr_of_symbols) { - scheduled_response.ul_config->ul_config_list[0].pusch_config_pdu.pdu_bit_map &= ~PUSCH_PDU_BITMAP_PUSCH_PTRS; // disable PUSCH PTRS + UE->if_inst->ul_indication(&ul_indication); } - nr_ue_scheduled_response(&scheduled_response); - if (UE->mode != loop_through_memory) { - uint8_t thread_id = PHY_vars_UE_g[UE->Mod_id][0]->current_thread_id[proc->nr_tti_tx]; + uint8_t thread_id = PHY_vars_UE_g[UE->Mod_id][0]->current_thread_id[proc->nr_tti_rx]; phy_procedures_nrUE_TX(UE,proc,0,thread_id); } } @@ -441,41 +396,26 @@ void processSlotTX( PHY_VARS_NR_UE *UE, UE_nr_rxtx_proc_t *proc) { void processSlotRX( PHY_VARS_NR_UE *UE, UE_nr_rxtx_proc_t *proc) { - nr_dcireq_t dcireq; - nr_scheduled_response_t scheduled_response; - uint8_t ssb_period = UE->nrUE_config.ssb_table.ssb_period; + fapi_nr_config_request_t *cfg = &UE->nrUE_config; + int rx_slot_type = nr_ue_slot_select(cfg, proc->frame_rx, proc->nr_tti_rx); + uint8_t gNB_id = 0; - //program DCI for slot 1 - //TODO: all of this has to be moved to the MAC!!! - if (proc->nr_tti_rx == NR_DOWNLINK_SLOT || UE->frame_parms.frame_type == FDD){ - dcireq.module_id = UE->Mod_id; - dcireq.gNB_index = 0; - dcireq.cc_id = 0; - dcireq.frame = proc->frame_rx; - dcireq.slot = proc->nr_tti_rx; - nr_ue_dcireq(&dcireq); //to be replaced with function pointer later + if (rx_slot_type == NR_DOWNLINK_SLOT || rx_slot_type == NR_MIXED_SLOT){ - // we should have received a DL DCI here, so configure DL accordingly - scheduled_response.dl_config = &dcireq.dl_config_req; - scheduled_response.ul_config = NULL; - scheduled_response.tx_request = NULL; - scheduled_response.module_id = UE->Mod_id; - scheduled_response.CC_id = 0; - if (!((proc->frame_rx)%(1<<(ssb_period-1)))) { - if(proc->frame_rx > dcireq.dl_config_req.sfn) - UE->frame_gap = proc->frame_rx - dcireq.dl_config_req.sfn; - if(proc->frame_rx < dcireq.dl_config_req.sfn) - UE->frame_gap = dcireq.dl_config_req.sfn - proc->frame_rx; - proc->frame_rx = dcireq.dl_config_req.sfn; + if(UE->if_inst != NULL && UE->if_inst->dl_indication != NULL) { + nr_downlink_indication_t dl_indication; + memset((void*)&dl_indication, 0, sizeof(dl_indication)); + + dl_indication.module_id = UE->Mod_id; + dl_indication.gNB_index = gNB_id; + dl_indication.cc_id = UE->CC_id; + dl_indication.frame = proc->frame_rx; + dl_indication.slot = proc->nr_tti_rx; + + UE->if_inst->dl_indication(&dl_indication, NULL); } - scheduled_response.frame = proc->frame_rx; - scheduled_response.slot = proc->nr_tti_rx; - - nr_ue_scheduled_response(&scheduled_response); - } // Process Rx data for one sub-frame - if ( proc->nr_tti_rx >=0 && proc->nr_tti_rx <= 1 ) { #ifdef UE_SLOT_PARALLELISATION phy_procedures_slot_parallelization_nrUE_RX( UE, proc, 0, 0, 1, UE->mode, no_relay, NULL ); #else @@ -510,6 +450,7 @@ void processSlotRX( PHY_VARS_NR_UE *UE, UE_nr_rxtx_proc_t *proc) { } } */ + } /*! @@ -526,25 +467,26 @@ typedef struct processingData_s { } processingData_t; void UE_processing(void *arg) { - processingData_t *rxtxD=(processingData_t *) arg; + processingData_t *rxtxD = (processingData_t *) arg; UE_nr_rxtx_proc_t *proc = &rxtxD->proc; PHY_VARS_NR_UE *UE = rxtxD->UE; - uint8_t gNB_id = 0; - - // params for UL time alignment procedure - NR_UL_TIME_ALIGNMENT_t *ul_time_alignment = &UE->ul_time_alignment[gNB_id]; - uint8_t numerology = UE->frame_parms.numerology_index; - uint16_t bwp_ul_NB_RB = UE->frame_parms.N_RB_UL; - int slot_tx = proc->nr_tti_tx; - int frame_tx = proc->frame_tx; + processSlotRX(UE, proc); + processSlotTX(UE, proc); /* UL time alignment // If the current tx frame and slot match the TA configuration in ul_time_alignment // then timing advance is processed and set to be applied in the next UL transmission */ if (UE->mac_enabled == 1) { + uint8_t gNB_id = 0; + NR_UL_TIME_ALIGNMENT_t *ul_time_alignment = &UE->ul_time_alignment[gNB_id]; + int slot_tx = proc->nr_tti_tx; + int frame_tx = proc->frame_tx; if (frame_tx == ul_time_alignment->ta_frame && slot_tx == ul_time_alignment->ta_slot) { + uint8_t numerology = UE->frame_parms.numerology_index; + uint16_t bwp_ul_NB_RB = UE->frame_parms.N_RB_UL; + LOG_D(PHY,"Applying timing advance -- frame %d -- slot %d\n", frame_tx, slot_tx); //if (nfapi_mode!=3){ @@ -554,11 +496,6 @@ void UE_processing(void *arg) { //} } } - - processSlotRX(UE, proc); - - processSlotTX(UE, proc); - } void dummyWrite(PHY_VARS_NR_UE *UE,openair0_timestamp timestamp, int writeBlockSize) { @@ -633,11 +570,6 @@ void syncInFrame(PHY_VARS_NR_UE *UE, openair0_timestamp *timestamp) { } int computeSamplesShift(PHY_VARS_NR_UE *UE) { - if (IS_SOFTMODEM_RFSIM) { - LOG_E(PHY,"SET rx_offset %d \n",UE->rx_offset); - //UE->rx_offset_diff=0; - return 0; - } // compute TO compensation that should be applied for this frame if ( UE->rx_offset < UE->frame_parms.samples_per_frame/2 && @@ -688,6 +620,7 @@ void *UE_thread(void *arg) { notifiedFIFO_t freeBlocks; initNotifiedFIFO_nothreadSafe(&freeBlocks); NR_UE_MAC_INST_t *mac = get_mac_inst(0); + int timing_advance = UE->timing_advance; for (int i=0; iproc.decoded_frame_rx + (!UE->init_sync_frame) + trashed_frames) % MAX_FRAME_NUMBER; + if (UE->is_synchronized) { + decoded_frame_rx=(((mac->mib->systemFrameNumber.buf[0] >> mac->mib->systemFrameNumber.bits_unused)<<4) | tmp->proc.decoded_frame_rx); + // shift the frame index with all the frames we trashed meanwhile we perform the synch search + decoded_frame_rx=(decoded_frame_rx + (!UE->init_sync_frame) + trashed_frames) % MAX_FRAME_NUMBER; + } delNotifiedFIFO_elt(res); } else { readFrame(UE, ×tamp, true); @@ -750,6 +686,7 @@ void *UE_thread(void *arg) { absolute_slot++; + // whatever means thread_idx // Fix me: will be wrong when slot 1 is slow, as slot 2 finishes // Slot 3 will overlap if RX_NB_TH is 2 @@ -762,13 +699,13 @@ void *UE_thread(void *arg) { curMsg->UE=UE; // update thread index for received subframe curMsg->UE->current_thread_id[slot_nr] = thread_idx; - curMsg->proc.CC_id = 0; + curMsg->proc.CC_id = UE->CC_id; curMsg->proc.nr_tti_rx= slot_nr; curMsg->proc.subframe_rx=slot_nr/(nb_slot_frame/10); curMsg->proc.nr_tti_tx = (absolute_slot + DURATION_RX_TO_TX) % nb_slot_frame; curMsg->proc.subframe_tx=curMsg->proc.nr_tti_rx; - curMsg->proc.frame_rx = ((absolute_slot/nb_slot_frame)+UE->frame_gap) % MAX_FRAME_NUMBER; - curMsg->proc.frame_tx = (((absolute_slot+DURATION_RX_TO_TX)/nb_slot_frame)+UE->frame_gap) % MAX_FRAME_NUMBER; + curMsg->proc.frame_rx = (absolute_slot/nb_slot_frame) % MAX_FRAME_NUMBER; + curMsg->proc.frame_tx = ((absolute_slot+DURATION_RX_TO_TX)/nb_slot_frame) % MAX_FRAME_NUMBER; curMsg->proc.decoded_frame_rx=-1; //LOG_I(PHY,"Process slot %d thread Idx %d total gain %d\n", slot_nr, thread_idx, UE->rx_total_gain_dB); @@ -788,21 +725,26 @@ void *UE_thread(void *arg) { for (int i=0; iframe_parms.nb_antennas_tx; i++) txp[i] = (void *)&UE->common_vars.txdata[i][UE->frame_parms.get_samples_slot_timestamp( - ((curMsg->proc.nr_tti_rx + DURATION_RX_TO_TX)%nb_slot_frame),&UE->frame_parms,0)]; + ((slot_nr + DURATION_RX_TO_TX - RX_NB_TH)%nb_slot_frame),&UE->frame_parms,0)]; int readBlockSize, writeBlockSize; if (slot_nr<(nb_slot_frame - 1)) { readBlockSize=get_readBlockSize(slot_nr, &UE->frame_parms); - writeBlockSize=UE->frame_parms.get_samples_per_slot(curMsg->proc.nr_tti_tx,&UE->frame_parms); + writeBlockSize=UE->frame_parms.get_samples_per_slot((slot_nr + DURATION_RX_TO_TX - RX_NB_TH) % nb_slot_frame, &UE->frame_parms); } else { UE->rx_offset_diff = computeSamplesShift(UE); readBlockSize=get_readBlockSize(slot_nr, &UE->frame_parms) - UE->rx_offset_diff; - writeBlockSize=UE->frame_parms.get_samples_per_slot(curMsg->proc.nr_tti_tx,&UE->frame_parms) - + writeBlockSize=UE->frame_parms.get_samples_per_slot((slot_nr + DURATION_RX_TO_TX - RX_NB_TH) % nb_slot_frame, &UE->frame_parms)- UE->rx_offset_diff; } + if (UE->timing_advance != timing_advance) { + writeBlockSize -= UE->timing_advance - timing_advance; + timing_advance = UE->timing_advance; + } + AssertFatal(readBlockSize == UE->rfdevice.trx_read_func(&UE->rfdevice, ×tamp, @@ -810,29 +752,19 @@ void *UE_thread(void *arg) { readBlockSize, UE->frame_parms.nb_antennas_rx),""); - AssertFatal( writeBlockSize == - UE->rfdevice.trx_write_func(&UE->rfdevice, - timestamp+ - UE->frame_parms.get_samples_slot_timestamp(slot_nr, - &UE->frame_parms,DURATION_RX_TO_TX) - firstSymSamp - - openair0_cfg[0].tx_sample_advance, - txp, - writeBlockSize, - UE->frame_parms.nb_antennas_tx, - 1),""); - if( slot_nr==(nb_slot_frame-1)) { // read in first symbol of next frame and adjust for timing drift int first_symbols=UE->frame_parms.ofdm_symbol_size+UE->frame_parms.nb_prefix_samples0; // first symbol of every frames - if ( first_symbols > 0 ) + if ( first_symbols > 0 ) { + openair0_timestamp ignore_timestamp; AssertFatal(first_symbols == UE->rfdevice.trx_read_func(&UE->rfdevice, - ×tamp, + &ignore_timestamp, (void **)UE->common_vars.rxdata, first_symbols, UE->frame_parms.nb_antennas_rx),""); - else + } else LOG_E(PHY,"can't compensate: diff =%d\n", first_symbols); } @@ -843,25 +775,37 @@ void *UE_thread(void *arg) { notifiedFIFO_elt_t *res; while (nbSlotProcessing >= RX_NB_TH) { - if ( (res=tryPullTpool(&nf, Tpool)) != NULL ) { - nbSlotProcessing--; - processingData_t *tmp=(processingData_t *)res->msgData; + res=pullTpool(&nf, Tpool); + nbSlotProcessing--; + processingData_t *tmp=(processingData_t *)res->msgData; - if (tmp->proc.decoded_frame_rx != -1) - decoded_frame_rx=(((mac->mib->systemFrameNumber.buf[0] >> mac->mib->systemFrameNumber.bits_unused)<<4) | tmp->proc.decoded_frame_rx); - //decoded_frame_rx=tmp->proc.decoded_frame_rx; + if (tmp->proc.decoded_frame_rx != -1) + decoded_frame_rx=(((mac->mib->systemFrameNumber.buf[0] >> mac->mib->systemFrameNumber.bits_unused)<<4) | tmp->proc.decoded_frame_rx); + //decoded_frame_rx=tmp->proc.decoded_frame_rx; - pushNotifiedFIFO_nothreadSafe(&freeBlocks,res); - } - - usleep(200); + pushNotifiedFIFO_nothreadSafe(&freeBlocks,res); } - if ( decoded_frame_rx != curMsg->proc.frame_rx && - ((decoded_frame_rx+1) % MAX_FRAME_NUMBER) != curMsg->proc.frame_rx ) + if ( (decoded_frame_rx != curMsg->proc.frame_rx) && + (((decoded_frame_rx+1) % MAX_FRAME_NUMBER) != curMsg->proc.frame_rx) && + (((decoded_frame_rx+2) % MAX_FRAME_NUMBER) != curMsg->proc.frame_rx)) LOG_E(PHY,"Decoded frame index (%d) is not compatible with current context (%d), UE should go back to synch mode\n", decoded_frame_rx, curMsg->proc.frame_rx ); + AssertFatal( writeBlockSize == + UE->rfdevice.trx_write_func(&UE->rfdevice, + timestamp+ + UE->frame_parms.get_samples_slot_timestamp(slot_nr, + &UE->frame_parms,DURATION_RX_TO_TX - RX_NB_TH) - firstSymSamp - + openair0_cfg[0].tx_sample_advance - UE->N_TA_offset - UE->timing_advance, + txp, + writeBlockSize, + UE->frame_parms.nb_antennas_tx, + 1),""); + + for (int i=0; iframe_parms.nb_antennas_tx; i++) + memset(txp[i], 0, writeBlockSize); + nbSlotProcessing++; msgToPush->key=slot_nr; pushTpool(Tpool, msgToPush); @@ -880,6 +824,7 @@ void *UE_thread(void *arg) { pushNotifiedFIFO_nothreadSafe(&freeBlocks,res); } + } // while !oai_exit return NULL; diff --git a/executables/nr-uesoftmodem.c b/executables/nr-uesoftmodem.c index 552f51d142..0eceff9935 100644 --- a/executables/nr-uesoftmodem.c +++ b/executables/nr-uesoftmodem.c @@ -38,13 +38,12 @@ #include "../../ARCH/ETHERNET/USERSPACE/LIB/if_defs.h" //#undef FRAME_LENGTH_COMPLEX_SAMPLES //there are two conflicting definitions, so we better make sure we don't use it at all - +#include "openair1/PHY/MODULATION/nr_modulation.h" #include "PHY/phy_vars_nr_ue.h" #include "PHY/LTE_TRANSPORT/transport_vars.h" #include "SCHED/sched_common_vars.h" #include "PHY/MODULATION/modulation_vars.h" //#include "../../SIMU/USER/init_lte.h" -#include "PHY/NR_REFSIG/nr_mod_table.h" #include "LAYER2/MAC/mac_vars.h" #include "RRC/LTE/rrc_vars.h" @@ -76,37 +75,12 @@ unsigned short config_frames[4] = {2,9,11,13}; #include #include -#include - - /* Callbacks, globals and object handlers */ -extern void reset_stats( FL_OBJECT *, long ); -//extern void initTpool(char *params, tpool_t *pool, bool performanceMeas); - -/* Forms and Objects */ - -typedef struct { - FL_FORM *stats_form; - void *vdata; - char *cdata; - long ldata; - FL_OBJECT *stats_text; - FL_OBJECT *stats_button; -} FD_stats_form; - -extern FD_stats_form *create_form_stats_form( void ); - -#include "PHY/TOOLS/nr_phy_scope.h" //#include "stats.h" // current status is that every UE has a DL scope for a SINGLE eNB (eNB_id=0) -// at eNB 0, an UL scope for every UE -FD_phy_scope_nrue *form_nrue[NUMBER_OF_UE_MAX]; -//FD_lte_phy_scope_enb *form_enb[MAX_NUM_CCs][NUMBER_OF_UE_MAX]; -//FD_stats_form *form_stats=NULL,*form_stats_l2=NULL; -char title[255]; -static pthread_t forms_thread; //xforms - +#include "PHY/TOOLS/phy_scope_interface.h" +#include "PHY/TOOLS/nr_phy_scope.h" #include #include "executables/softmodem-common.h" #include "executables/thread-common.h" @@ -177,14 +151,11 @@ char ref[128] = "internal"; char channels[128] = "0"; -static char *parallel_config = NULL; -static char *worker_config = NULL; - int rx_input_level_dBm; //static int online_log_messages=0; -uint32_t do_forms=0; + int otg_enabled; //int number_of_cards = 1; @@ -199,6 +170,7 @@ uint64_t num_missed_slots=0; // counter for the number of missed slots int transmission_mode=1; int numerology = 0; +int usrp_tx_thread = 0; /* flag set by eNB conf file to specify if the radio head is local or remote (default option is local) */ //uint8_t local_remote_radio = BBU_LOCAL_RADIO_HEAD; @@ -275,7 +247,7 @@ void exit_function(const char *file, const char *function, const int line, const } -void reset_stats(FL_OBJECT *button, long arg) { +void reset_stats(long arg) { //int i,j,k; /*PHY_VARS_eNB *phy_vars_eNB = PHY_vars_eNB_g[0][0]; @@ -305,35 +277,6 @@ void reset_stats(FL_OBJECT *button, long arg) { }*/ } -static void *scope_thread(void *arg) { - sleep(5); - - while (!oai_exit) { - phy_scope_nrUE(form_nrue[0], - PHY_vars_UE_g[0][0], - 0,0,1); - usleep(100*1000); - } - - pthread_exit((void *)arg); -} - - -void init_scope(void) { - int fl_argc=1; - - if (do_forms==1) { - char *name="5G-UE-scope"; - fl_initialize (&fl_argc, &name, NULL, 0, 0); - int UE_id = 0; - form_nrue[UE_id] = create_phy_scope_nrue(); - sprintf (title, "NR DL SCOPE UE"); - fl_show_form (form_nrue[UE_id]->phy_scope_nrue, FL_PLACE_HOTSPOT, FL_FULLBORDER, title); - threadCreate(&forms_thread, scope_thread, NULL, "scope", -1, OAI_PRIORITY_RT_LOW); - } - -} - void *l2l1_task(void *arg) { MessageDef *message_p = NULL; int result; @@ -642,7 +585,7 @@ void init_pdcp(void) { LOG_I(RLC, "Problem at RLC initiation \n"); } pdcp_layer_init(); - nr_ip_over_LTE_DRB_preconfiguration();*/ + nr_DRB_preconfiguration();*/ pdcp_module_init(pdcp_initmask); pdcp_set_rlc_data_req_func((send_rlc_data_req_func_t) rlc_data_req); pdcp_set_pdcp_data_ind_func((pdcp_data_ind_func_t) pdcp_data_ind); @@ -721,6 +664,9 @@ int main( int argc, char **argv ) { PHY_vars_UE_g = malloc(sizeof(PHY_VARS_NR_UE **)); PHY_vars_UE_g[0] = malloc(sizeof(PHY_VARS_NR_UE *)*MAX_NUM_CCs); + if (get_softmodem_params()->do_ra) + AssertFatal(get_softmodem_params()->phy_test == 0,"RA and phy_test are mutually exclusive\n"); + for (int CC_id=0; CC_idofdm_symbol_size); frame_parms[CC_id]->nb_antennas_tx = nb_antenna_tx; @@ -740,17 +686,15 @@ int main( int argc, char **argv ) { fapi_nr_config_request_t *nrUE_config = &UE[CC_id]->nrUE_config; nr_init_frame_parms_ue(frame_parms[CC_id],nrUE_config,NORMAL); - - // Overwrite DL frequency (for FR2 testing) - if (downlink_frequency[0][0]!=0) - frame_parms[CC_id]->dl_CarrierFreq = downlink_frequency[0][0]; - - init_nr_ue_vars(UE[CC_id],frame_parms[CC_id],0,abstraction_flag); - if (get_softmodem_params()->phy_test==1) - UE[CC_id]->mac_enabled = 0; - else - UE[CC_id]->mac_enabled = 1; + // Overwrite DL frequency (for FR2 testing) + if (downlink_frequency[0][0]!=0) { + frame_parms[CC_id]->dl_CarrierFreq = downlink_frequency[0][0]; + frame_parms[CC_id]->ul_CarrierFreq = downlink_frequency[0][0]; + } + + init_symbol_rotation(frame_parms[CC_id],frame_parms[CC_id]->dl_CarrierFreq); + init_nr_ue_vars(UE[CC_id],frame_parms[CC_id],0,abstraction_flag); UE[CC_id]->mac_enabled = 1; UE[CC_id]->if_inst = nr_ue_if_module_init(0); @@ -764,15 +708,49 @@ int main( int argc, char **argv ) { UE[CC_id]->rx_total_gain_dB = (int)rx_gain[CC_id][0] + rx_gain_off; UE[CC_id]->tx_power_max_dBm = tx_max_power[CC_id]; - if (frame_parms[CC_id]->frame_type==FDD) { + if (UE[CC_id]->frame_parms.frame_type == FDD) { UE[CC_id]->N_TA_offset = 0; } else { - if (frame_parms[CC_id]->N_RB_DL == 100) - UE[CC_id]->N_TA_offset = 624; - else if (frame_parms[CC_id]->N_RB_DL == 50) - UE[CC_id]->N_TA_offset = 624/2; - else if (frame_parms[CC_id]->N_RB_DL == 25) - UE[CC_id]->N_TA_offset = 624/4; + int N_RB = UE[CC_id]->frame_parms.N_RB_DL; + int N_TA_offset = UE[CC_id]->frame_parms.ul_CarrierFreq < 6e9 ? 400 : 431; // reference samples for 25600Tc @ 30.72 Ms/s for FR1, same @ 61.44 Ms/s for FR2 + double factor=1; + switch (UE[CC_id]->frame_parms.numerology_index) { + case 0: //15 kHz scs + AssertFatal(N_TA_offset == 400, "scs_common 15kHz only for FR1\n"); + if (N_RB <= 25) factor = .25; // 7.68 Ms/s + else if (N_RB <=50) factor = .5; // 15.36 Ms/s + else if (N_RB <=75) factor = 1.0; // 30.72 Ms/s + else if (N_RB <=100) factor = 1.0; // 30.72 Ms/s + else AssertFatal(1==0,"Too many PRBS for mu=0\n"); + break; + case 1: //30 kHz sc + AssertFatal(N_TA_offset == 400, "scs_common 30kHz only for FR1\n"); + if (N_RB <= 106) factor = 2.0; // 61.44 Ms/s + else if (N_RB <= 275) factor = 4.0; // 122.88 Ms/s + break; + case 2: //60 kHz scs + AssertFatal(1==0,"scs_common should not be 60 kHz\n"); + break; + case 3: //120 kHz scs + AssertFatal(N_TA_offset == 431, "scs_common 120kHz only for FR2\n"); + break; + case 4: //240 kHz scs + AssertFatal(1==0,"scs_common should not be 60 kHz\n"); + if (N_RB <= 32) factor = 1.0; // 61.44 Ms/s + else if (N_RB <= 66) factor = 2.0; // 122.88 Ms/s + else AssertFatal(1==0,"N_RB %d is too big for curretn FR2 implementation\n",N_RB); + break; + + if (N_RB == 100) + UE[CC_id]->N_TA_offset = 624; + else if (N_RB == 50) + UE[CC_id]->N_TA_offset = 624/2; + else if (N_RB == 25) + UE[CC_id]->N_TA_offset = 624/4; + } + if (UE[CC_id]->frame_parms.threequarter_fs == 1) factor = factor*.75; + UE[CC_id]->N_TA_offset = (int)(N_TA_offset * factor); + LOG_I(PHY,"UE %d Setting N_TA_offset to %d samples (factor %f, UL Freq %lu, N_RB %d)\n", UE[CC_id]->Mod_id, UE[CC_id]->N_TA_offset, factor, UE[CC_id]->frame_parms.ul_CarrierFreq, N_RB); } } @@ -783,19 +761,16 @@ int main( int argc, char **argv ) { memset (&UE_PF_PO[0][0], 0, sizeof(UE_PF_PO_t)*NUMBER_OF_UE_MAX*MAX_NUM_CCs); configure_linux(); mlockall(MCL_CURRENT | MCL_FUTURE); - init_scope(); + + if(IS_SOFTMODEM_DOFORMS) { + load_softscope("nr",PHY_vars_UE_g[0][0]); + } number_of_cards = 1; for(int CC_id=0; CC_idrf_map.card=0; PHY_vars_UE_g[0][CC_id]->rf_map.chain=CC_id+chain_offset; -#if defined(OAI_USRP) || defined(OAI_ADRV9371_ZC706) - PHY_vars_UE_g[0][CC_id]->hw_timing_advance = timing_advance; PHY_vars_UE_g[0][CC_id]->timing_advance = timing_advance; -#else - PHY_vars_UE_g[0][CC_id]->hw_timing_advance = 160; -#endif - } init_NR_UE_threads(1); diff --git a/executables/nr-uesoftmodem.h b/executables/nr-uesoftmodem.h index ba293324e3..418ed54fc6 100644 --- a/executables/nr-uesoftmodem.h +++ b/executables/nr-uesoftmodem.h @@ -4,7 +4,6 @@ #include #include "PHY/defs_nr_UE.h" #include "SIMULATION/ETH_TRANSPORT/proto.h" -#include /***************************************************************************************************************************************/ /* command line options definitions, CMDLINE_XXXX_DESC macros are used to initialize paramdef_t arrays which are then used as argument @@ -62,19 +61,11 @@ {"single-thread-disable", CONFIG_HLP_NOSNGLT, PARAMFLAG_BOOL, iptr:&single_thread_flag, defintval:1, TYPE_INT, 0}, \ {"nr-dlsch-demod-shift", CONFIG_HLP_DLSHIFT, 0, iptr:(int32_t *)&nr_dlsch_demod_shift, defintval:0, TYPE_INT, 0}, \ {"A" , CONFIG_HLP_TADV, 0, uptr:&timing_advance, defintval:0, TYPE_UINT, 0}, \ - {"C" , CONFIG_HLP_DLF, 0, u64ptr:&(downlink_frequency[0][0]), defuintval:0,TYPE_UINT64, 0}, \ - {"a" , CONFIG_HLP_CHOFF, 0, iptr:&chain_offset, defintval:0, TYPE_INT, 0}, \ - {"d" , CONFIG_HLP_SOFTS, PARAMFLAG_BOOL, uptr:&do_forms, defintval:0, TYPE_INT, 0}, \ {"E" , CONFIG_HLP_TQFS, PARAMFLAG_BOOL, iptr:&threequarter_fs, defintval:0, TYPE_INT, 0}, \ {"m" , CONFIG_HLP_DLMCS, 0, uptr:&target_dl_mcs, defintval:0, TYPE_UINT, 0}, \ {"t" , CONFIG_HLP_ULMCS, 0, uptr:&target_ul_mcs, defintval:0, TYPE_UINT, 0}, \ - {"q" , CONFIG_HLP_STMON, PARAMFLAG_BOOL, iptr:&opp_enabled, defintval:0, TYPE_INT, 0}, \ {"T" , CONFIG_HLP_TDD, PARAMFLAG_BOOL, iptr:&tddflag, defintval:0, TYPE_INT, 0}, \ {"V" , CONFIG_HLP_VCD, PARAMFLAG_BOOL, iptr:&vcdflag, defintval:0, TYPE_INT, 0}, \ - {"numerology" , CONFIG_HLP_NUMEROLOGY, 0, iptr:&numerology, defintval:0, TYPE_INT, 0}, \ - {"emulate-rf" , CONFIG_HLP_EMULATE_RF, PARAMFLAG_BOOL, iptr:&emulate_rf, defintval:0, TYPE_INT, 0}, \ - {"parallel-config", CONFIG_HLP_PARALLEL_CMD,0, strptr:(char **)¶llel_config, defstrval:NULL, TYPE_STRING, 0}, \ - {"worker-config", CONFIG_HLP_WORKER_CMD, 0, strptr:(char **)&worker_config, defstrval:NULL, TYPE_STRING, 0}, \ {"s" , CONFIG_HLP_SNR, 0, dblptr:&snr_dB, defdblval:25, TYPE_DOUBLE, 0}, \ {"nbiot-disable", CONFIG_HLP_DISABLNBIOT, PARAMFLAG_BOOL, iptr:&nonbiotflag, defintval:0, TYPE_INT, 0}, \ {"ue-timing-correction-disable", CONFIG_HLP_DISABLETIMECORR, PARAMFLAG_BOOL, iptr:&UE_no_timing_correction, defintval:0, TYPE_INT, 0}, \ diff --git a/executables/softmodem-common.h b/executables/softmodem-common.h index 0ac7b6449e..449d2e0957 100644 --- a/executables/softmodem-common.h +++ b/executables/softmodem-common.h @@ -55,6 +55,7 @@ extern "C" #define CONFIG_HLP_DUMPFRAME "dump UE received frame to rxsig_frame0.dat and exit\n" #define CONFIG_HLP_UELOOP "get softmodem (UE) to loop through memory instead of acquiring from HW\n" #define CONFIG_HLP_PHYTST "test UE phy layer, mac disabled\n" +#define CONFIG_HLP_DORA "test gNB and UE with RA procedures\n" #define CONFIG_HLP_EXTS "tells hardware to use an external timing reference\n" #define CONFIG_HLP_DMRSSYNC "tells RU to insert DMRS in subframe 1 slot 0" #define CONFIG_HLP_CLK "tells hardware to use a clock reference (0:internal, 1:external, 2:gpsdo)\n" @@ -97,6 +98,7 @@ extern "C" #define SPLIT73 softmodem_params.split73 #define TP_CONFIG softmodem_params.threadPoolConfig #define PHY_TEST softmodem_params.phy_test +#define DO_RA softmodem_params.do_ra #define WAIT_FOR_SYNC softmodem_params.wait_for_sync #define SINGLE_THREAD_FLAG softmodem_params.single_thread_flag #define CHAIN_OFFSET softmodem_params.chain_offset @@ -114,6 +116,7 @@ extern "C" {"split73", CONFIG_HLP_SPLIT73, 0, strptr:(char **)&SPLIT73, defstrval:NULL, TYPE_STRING, sizeof(SPLIT73)},\ {"thread-pool", CONFIG_HLP_TPOOL, 0, strptr:(char **)&TP_CONFIG, defstrval:"n", TYPE_STRING, sizeof(TP_CONFIG)}, \ {"phy-test", CONFIG_HLP_PHYTST, PARAMFLAG_BOOL, iptr:&PHY_TEST, defintval:0, TYPE_INT, 0}, \ + {"do-ra", CONFIG_HLP_DORA, PARAMFLAG_BOOL, iptr:&DO_RA, defintval:0, TYPE_INT, 0}, \ {"usim-test", CONFIG_HLP_USIM, PARAMFLAG_BOOL, u8ptr:&USIM_TEST, defintval:0, TYPE_UINT8, 0}, \ {"clock-source", CONFIG_HLP_CLK, 0, uptr:&CLOCK_SOURCE, defintval:0, TYPE_UINT, 0}, \ {"time-source", CONFIG_HLP_TME, 0, uptr:&TIMING_SOURCE, defintval:0, TYPE_UINT, 0}, \ @@ -205,6 +208,7 @@ typedef struct { char split73[1024]; char threadPoolConfig[1024]; int phy_test; + int do_ra; uint8_t usim_test; int emulate_rf; int wait_for_sync; //eNodeB only diff --git a/executables/split_headers.h b/executables/split_headers.h index 4e328f74c4..dc451773c5 100644 --- a/executables/split_headers.h +++ b/executables/split_headers.h @@ -28,6 +28,7 @@ #include #include #include +#include #define CU_PORT "7878" #define DU_PORT "8787" @@ -279,7 +280,7 @@ int init_rf(RU_t *ru); void rx_rf(RU_t *ru, L1_rxtx_proc_t *proc); void tx_rf(RU_t *ru, L1_rxtx_proc_t *proc); void common_signal_procedures (PHY_VARS_eNB *eNB,int frame, int subframe); -void pmch_procedures(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc); +void pmch_procedures(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc, int fembms_flag); bool dlsch_procedures(PHY_VARS_eNB *eNB, L1_rxtx_proc_t *proc, int harq_pid, @@ -325,5 +326,6 @@ void fep_full(RU_t *ru, int subframe); void feptx_prec(RU_t *ru,int frame,int subframe); void feptx_ofdm(RU_t *ru, int frame, int subframe); void oai_subframe_ind(uint16_t sfn, uint16_t sf); +void softmodem_printresources(int sig, telnet_printfunc_t pf); extern uint16_t sf_ahead; #endif diff --git a/nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_constants.h b/nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_constants.h index cbcd26c3e3..e1d06335f5 100644 --- a/nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_constants.h +++ b/nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_constants.h @@ -18,6 +18,7 @@ #define FAPI_NR_RX_PDU_TYPE_SIB 0x02 #define FAPI_NR_RX_PDU_TYPE_DLSCH 0x03 #define FAPI_NR_DCI_IND 0x04 +#define FAPI_NR_RX_PDU_TYPE_RAR 0x05 #define FAPI_NR_SIBS_MASK_SIB1 0x1 @@ -42,6 +43,7 @@ #define FAPI_NR_DL_CONFIG_TYPE_DCI 0x01 #define FAPI_NR_DL_CONFIG_TYPE_DLSCH 0x02 +#define FAPI_NR_DL_CONFIG_TYPE_RA_DLSCH 0x03 #define FAPI_NR_CCE_REG_MAPPING_TYPE_INTERLEAVED 0x01 diff --git a/nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_interface.h b/nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_interface.h index 2c3809f5d4..246ab13e86 100644 --- a/nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_interface.h +++ b/nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_interface.h @@ -62,7 +62,7 @@ typedef struct { uint8_t CoreSetType; uint8_t precoder_granularity; uint16_t pdcch_dmrs_scrambling_id; - + uint16_t scrambling_rnti; uint8_t tci_state_pdcch; uint8_t tci_present_in_dci; } fapi_nr_coreset_t; @@ -158,22 +158,29 @@ typedef struct { fapi_nr_tx_request_body_t *tx_request_body; } fapi_nr_tx_request_t; - typedef struct { - uint8_t preamble_index; - uint8_t prach_configuration_index; - uint16_t preamble_length; - uint8_t power_ramping_step; - uint16_t preamble_received_target_power; - uint8_t msg1_fdm; - uint8_t msg1_frequency_start; - uint8_t zero_correlation_zone_config; - uint8_t subcarrier_spacing; - uint8_t restrictedset_config; - uint16_t root_sequence_index; - uint16_t rsrp_threshold_ssb; - uint16_t rsrp_threshold_sul; - uint16_t prach_freq_offset; - } fapi_nr_ul_config_prach_pdu; +/// This struct replaces: +/// PRACH-ConfigInfo from 38.331 RRC spec +/// PRACH-ConfigSIB or PRACH-Config +typedef struct { + /// PHY cell ID + uint16_t phys_cell_id; + /// Num PRACH occasions + uint8_t num_prach_ocas; + /// PRACH format + uint8_t prach_format; + /// Num RA + uint8_t num_ra; + uint8_t prach_start_symbol; + /// 38.211 (NCS 38.211 6.3.3.1). + uint16_t num_cs; + /// Parameter: prach-rootSequenceIndex, see TS 38.211 (6.3.3.2). + uint16_t root_seq_id; + /// Parameter: High-speed-flag, see TS 38.211 (6.3.3.1). 1 corresponds to Restricted set and 0 to Unrestricted set. + uint8_t restricted_set; + /// see TS 38.211 (6.3.3.2). + uint16_t freq_msg1; + // nfapi_nr_ul_beamforming_t beamforming; +} fapi_nr_ul_config_prach_pdu; typedef struct { diff --git a/nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface_scf.h b/nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface_scf.h index 8e88112ff0..a46036d445 100644 --- a/nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface_scf.h +++ b/nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface_scf.h @@ -69,7 +69,7 @@ typedef enum { NFAPI_NR_PHY_MSG_TYPE_CRC_INDICATION= 0X86, NFAPI_NR_PHY_MSG_TYPE_UCI_INDICATION= 0X87, NFAPI_NR_PHY_MSG_TYPE_SRS_INDICATION= 0X88, - NFAPI_NR_PHY_MSG_TYPE_PACH_INDICATION= 0X89 + NFAPI_NR_PHY_MSG_TYPE_RACH_INDICATION= 0X89 //RESERVED 0X8a ~ 0xff } nfapi_nr_phy_msg_type_e; @@ -338,7 +338,7 @@ typedef struct //table 3-22 typedef struct { - nfapi_uint8_tlv_t phy_cell_id;//Physical Cell ID, 𝑁_{𝐼𝐷}^{𝑐𝑒𝑙𝑙} [38.211, sec 7.4.2.1] Value: 0 ->1007 + nfapi_uint16_tlv_t phy_cell_id;//Physical Cell ID, 𝑁_{𝐼𝐷}^{𝑐𝑒𝑙𝑙} [38.211, sec 7.4.2.1] Value: 0 ->1007 nfapi_uint8_tlv_t frame_duplex_type;//Frame duplex type Value: 0 = FDD 1 = TDD } nfapi_nr_cell_config_t; @@ -662,22 +662,35 @@ typedef struct { //table 3-37 -#define DCI_PAYLOAD_BTYE_LEN 12 //? TS38.212 sec 7.3.1 +#define DCI_PAYLOAD_BYTE_LEN 8 // 12 ? TS38.212 sec 7.3.1 +#define MAX_DCI_CORESET 8 -typedef struct -{ - uint16_t rnti;// - uint16_t scrambling_id;// - uint16_t scrambling_rnti;/* */ - uint8_t cce_index;// - uint8_t aggregation_level;// - nfapi_nr_tx_precoding_and_beamforming_t* precoding_and_beamforming_list; - //tx power info - uint8_t beta_pdcch_1_0;/*PDCCH power value used for PDCCH Format 1_0 with CRC scrambled by SI-RNTI, PI-RNTI or RA-RNTI. This is ratio of -SSB/PBCH EPRE to PDCCH and PDCCH DMRS EPRE [TS38.213, sec 4.1] Value :0->17 */ - uint8_t power_control_offset_ss;//PDCCH power value used for all other PDCCH Formats. This is ratio of SSB/PBCH block EPRE to PDCCH and PDCCH DMRS EPRE [TS38.214, sec 4.1] Values: 0: -3dB, 1: 0dB, 2: 3dB, 3: 6dB - uint16_t payload_size_bits;//The total DCI length (in bits) including padding bits [TS38.212 sec 7.3.1] Range 0-> DCI_PAYLOAD_BTYE_LEN*8 - uint8_t payload[DCI_PAYLOAD_BTYE_LEN];//DCI payload, where the actual size is defined by PayloadSizeBits. The bit order is as following bit0-bit7 are mapped to first byte of MSB - LSB +typedef struct { + // The RNTI used for identifying the UE when receiving the PDU Value: 1 -> 65535. + uint16_t RNTI[MAX_DCI_CORESET]; + // For a UE-specific search space it equals the higher-layer parameter PDCCH-DMRSScrambling-ID if configured, + // otherwise it should be set to the phy cell ID. [TS38.211, sec 7.3.2.3] Value: 0->65535 + uint16_t ScramblingId[MAX_DCI_CORESET]; + // For a UE-specific search space where PDCCH-DMRSScrambling- ID is configured This param equals the CRNTI. + // Otherwise, it should be set to 0. [TS38.211, sec 7.3.2.3] Value: 0 -> 65535 + uint16_t ScramblingRNTI[MAX_DCI_CORESET]; + // CCE start Index used to send the DCI Value: 0->135 + uint8_t CceIndex[MAX_DCI_CORESET]; + // Aggregation level used [TS38.211, sec 7.3.2.1] Value: 1,2,4,8,16 + uint8_t AggregationLevel[MAX_DCI_CORESET]; + // Precoding and Beamforming structure See Table 3-43 + nfapi_nr_tx_precoding_and_beamforming_t precodingAndBeamforming[MAX_DCI_CORESET]; + // PDCCH power value used for PDCCH Format 1_0 with CRC scrambled by SI-RNTI, PI-RNTI or RA-RNTI. + // This is ratio of SSB/PBCH EPRE to PDCCH and PDCCH DMRS EPRE [TS38.213, sec 4.1] + // Value :0->17 Report title: 5G FAPI: PHY API Specification Issue date: 29 June 2019 Version: 222.10.17 68 Field Type Description representing -8 to 8 dB in 1dB steps + uint8_t beta_PDCCH_1_0[MAX_DCI_CORESET]; + // PDCCH power value used for all other PDCCH Formats. + // This is ratio of SSB/PBCH block EPRE to PDCCH and PDCCH DMRS EPRE [TS38.214, sec 4.1] Values: 0: -3dB,1: 0dB,2: 3dB,3: 6dB + uint8_t powerControlOffsetSS[MAX_DCI_CORESET]; + // The total DCI length (in bits) including padding bits [TS38.212 sec 7.3.1] Range 0->DCI_PAYLOAD_BYTE_LEN*8 + uint16_t PayloadSizeBits[MAX_DCI_CORESET]; + // DCI payload, where the actual size is defined by PayloadSizeBits. The bit order is as following bit0-bit7 are mapped to first byte of MSB - LSB + uint8_t Payload[MAX_DCI_CORESET][DCI_PAYLOAD_BYTE_LEN]; } nfapi_nr_dl_dci_pdu_t; @@ -692,9 +705,6 @@ typedef struct { uint16_t *beamIdx[275]; } nr_beamforming_t; -#define MAX_DCI_CORESET 8 -#define DCI_PAYLOAD_BYTE_LEN 8 - typedef struct { ///Bandwidth part size [TS38.213 sec12]. Number of contiguous PRBs allocated to the BWP,Value: 1->275 uint16_t BWPSize; @@ -723,27 +733,9 @@ typedef struct { ///Granularity of precoding [TS38.211 sec 7.3.2.2] Field Type Description 0: sameAsRegBundle 1: allContiguousRBs uint8_t precoderGranularity; ///Number of DCIs in this CORESET.Value: 0->MaxDciPerSlot - volatile uint16_t numDlDci; - ///The RNTI used for identifying the UE when receiving the PDU Value: 1 -> 65535. - uint16_t RNTI[MAX_DCI_CORESET]; - ///For a UE-specific search space it equals the higher-layer parameter PDCCH-DMRSScrambling-ID if configured, otherwise it should be set to the phy cell ID. [TS38.211, sec 7.3.2.3] Value: 0->65535 - uint16_t ScramblingId[MAX_DCI_CORESET]; - ///For a UE-specific search space where PDCCH-DMRSScrambling- ID is configured This param equals the CRNTI. Otherwise, it should be set to 0. [TS38.211, sec 7.3.2.3] Value: 0 -> 65535 - uint16_t ScramblingRNTI[MAX_DCI_CORESET]; - ///CCE start Index used to send the DCI Value: 0->135 - uint8_t CceIndex[MAX_DCI_CORESET]; - ///Aggregation level used [TS38.211, sec 7.3.2.1] Value: 1,2,4,8,16 - uint8_t AggregationLevel[MAX_DCI_CORESET]; - ///Precoding and Beamforming structure See Table 3-43 - nfapi_nr_tx_precoding_and_beamforming_t precodingAndBeamforming[MAX_DCI_CORESET]; - ///PDCCH power value used for PDCCH Format 1_0 with CRC scrambled by SI-RNTI, PI-RNTI or RA-RNTI. This is ratio of SSB/PBCH EPRE to PDCCH and PDCCH DMRS EPRE [TS38.213, sec 4.1] Value :0->17 Report title: 5G FAPI: PHY API Specification Issue date: 29 June 2019 Version: 222.10.17 68 Field Type Description representing -8 to 8 dB in 1dB steps - uint8_t beta_PDCCH_1_0[MAX_DCI_CORESET]; - ///PDCCH power value used for all other PDCCH Formats. This is ratio of SSB/PBCH block EPRE to PDCCH and PDCCH DMRS EPRE [TS38.214, sec 4.1] Values: 0: -3dB,1: 0dB,2: 3dB,3: 6dB - uint8_t powerControlOffsetSS[MAX_DCI_CORESET]; -///The total DCI length (in bits) including padding bits [TS38.212 sec 7.3.1] Range 0->DCI_PAYLOAD_BTYE_LEN*8 - uint16_t PayloadSizeBits[MAX_DCI_CORESET]; - ///DCI payload, where the actual size is defined by PayloadSizeBits. The bit order is as following bit0-bit7 are mapped to first byte of MSB - LSB - uint8_t Payload[MAX_DCI_CORESET][DCI_PAYLOAD_BYTE_LEN]; + uint16_t numDlDci; + ///DL DCI PDU + nfapi_nr_dl_dci_pdu_t dci_pdu; } nfapi_nr_dl_tti_pdcch_pdu_rel15_t; typedef struct { @@ -1088,10 +1080,12 @@ typedef struct { uint16_t phys_cell_id; uint8_t num_prach_ocas; + // SCF PRACH PDU format field does not consider A1/B1 etc. possibilities + // We added 9 = A1/B1 10 = A2/B2 11 A3/B3 uint8_t prach_format; uint8_t num_ra; uint8_t prach_start_symbol; - uint16_t num_cs;// + uint16_t num_cs; nfapi_nr_ul_beamforming_t beamforming; } nfapi_nr_prach_pdu_t; @@ -1177,6 +1171,7 @@ typedef struct uint16_t ul_dmrs_symb_pos; uint8_t dmrs_config_type; uint16_t ul_dmrs_scrambling_id; + uint16_t pusch_identity; uint8_t scid; uint8_t num_dmrs_cdm_grps_no_data; uint16_t dmrs_ports;//DMRS ports. [TS38.212 7.3.1.1.2] provides description between DCI 0-1 content and DMRS ports. Bitmap occupying the 11 LSBs with: bit 0: antenna port 1000 bit 11: antenna port 1011 and for each bit 0: DMRS port not used 1: DMRS port used @@ -1552,7 +1547,7 @@ typedef struct //for dci_pusch_pdu typedef struct { - uint8_t pdu_bit_map; + uint8_t pduBitmap; uint32_t handle; uint16_t rnti; uint8_t ul_cqi; @@ -1567,7 +1562,7 @@ typedef struct //for PUCCH PDU Format 0/1 typedef struct { - uint8_t pdu_bit_map; + uint8_t pduBitmap; uint32_t handle; uint16_t rnti; uint8_t pucch_format;//PUCCH format Value: 0 -> 1 0: PUCCH Format0 1: PUCCH Format1 @@ -1583,7 +1578,7 @@ typedef struct //PUCCH PDU Format 2/3/4 typedef struct { - uint8_t pdu_bit_map; + uint8_t pduBitmap; uint32_t handle; uint16_t rnti; uint8_t pucch_format;//PUCCH format Value: 0 -> 2 0: PUCCH Format2 1: PUCCH Format3 2: PUCCH Format4 @@ -1620,7 +1615,7 @@ typedef struct uint16_t sfn; uint16_t slot; uint16_t num_ucis; - nfapi_nr_uci_t uci_list[NFAPI_MAX_NUM_UCI_INDICATION]; + nfapi_nr_uci_t *uci_list; } nfapi_nr_uci_indication_t; diff --git a/nfapi/open-nFAPI/nfapi/src/nfapi.c b/nfapi/open-nFAPI/nfapi/src/nfapi.c index 6b84707c54..ba800c3634 100644 --- a/nfapi/open-nFAPI/nfapi/src/nfapi.c +++ b/nfapi/open-nFAPI/nfapi/src/nfapi.c @@ -526,7 +526,7 @@ uint32_t pullarray8(uint8_t **in, uint8_t out[], uint32_t max_len, uint32_t len, return 0; } - if((end - out) >= sizeof(uint8_t) * len) + if((end - (*in)) >= sizeof(uint8_t) * len) { memcpy(out, (*in), len); (*in)+=len; diff --git a/openair1/PHY/CODING/TESTBENCH/ldpctest.c b/openair1/PHY/CODING/TESTBENCH/ldpctest.c index ce6f9996de..b42ac6e4c8 100644 --- a/openair1/PHY/CODING/TESTBENCH/ldpctest.c +++ b/openair1/PHY/CODING/TESTBENCH/ldpctest.c @@ -27,7 +27,7 @@ #include "SIMULATION/TOOLS/sim.h" #include "PHY/CODING/nrLDPC_extern.h" #include "openair1/SIMULATION/NR_PHY/nr_unitary_defs.h" - +#include "openair1/PHY/CODING/nrLDPC_decoder_LYC/nrLDPC_decoder_LYC.h" #define MAX_NUM_DLSCH_SEGMENTS 16 #define MAX_BLOCK_LENGTH 8448 @@ -102,7 +102,8 @@ int test_ldpc(short No_iteration, unsigned int *crc_misses, time_stats_t *time_optim, time_stats_t *time_decoder, - n_iter_stats_t *dec_iter) + n_iter_stats_t *dec_iter, + short run_cuda) { //clock initiate //time_stats_t time,time_optim,tinput,tprep,tparity,toutput, time_decoder; @@ -114,7 +115,6 @@ int test_ldpc(short No_iteration, double sigma; sigma = 1.0/sqrt(2*SNR); - opp_enabled=1; cpu_freq_GHz = get_cpu_freq_GHz(); //short test_input[block_length]; @@ -396,16 +396,26 @@ int test_ldpc(short No_iteration, decParams.numMaxIter=No_iteration; decParams.outMode = nrLDPC_outMode_BIT; //decParams.outMode =nrLDPC_outMode_LLRINT8; - - - for(j=0;j 1280, 2401 -> 2560 @@ -513,6 +526,8 @@ int main(int argc, char *argv[]) short No_iteration=5; int n_segments=1; //double rate=0.333; + short run_cuda = 0; + int nom_rate=1; int denom_rate=3; double SNR0=-2.0,SNR,SNR_lin; @@ -531,7 +546,7 @@ int main(int argc, char *argv[]) short BG=0,Zc,Kb=0; - while ((c = getopt (argc, argv, "q:r:s:S:l:n:d:i:t:u:h")) != -1) + while ((c = getopt (argc, argv, "q:r:s:S:l:G:n:d:i:t:u:h")) != -1) switch (c) { case 'q': @@ -549,6 +564,10 @@ int main(int argc, char *argv[]) case 'l': block_length = atoi(optarg); break; + + case 'G': + run_cuda = atoi(optarg); + break; case 'n': n_trials = atoi(optarg); @@ -584,6 +603,7 @@ int main(int argc, char *argv[]) printf("-r Nominator rate, (1, 2, 22), Default: 1\n"); printf("-d Denominator rate, (3, 5, 25), Default: 1\n"); printf("-l Block length (l > 3840 -> BG1, rest BG2 ), Default: 8448\n"); + printf("-G give 1 to run cuda for LDPC, Default: 0\n"); printf("-n Number of simulation trials, Default: 1\n"); //printf("-M MCS2 for TB 2\n"); printf("-s SNR per information bit (EbNo) in dB, Default: -2\n"); @@ -674,7 +694,8 @@ int main(int argc, char *argv[]) &crc_misses, time_optim, time_decoder, - dec_iter); + dec_iter, + run_cuda); printf("SNR %f, BLER %f (%u/%d)\n", SNR, (float)decoded_errors[i]/(float)n_trials, decoded_errors[i], n_trials); printf("SNR %f, BER %f (%u/%d)\n", SNR, (float)errors_bit/(float)n_trials/(float)block_length/(double)n_segments, decoded_errors[i], n_trials); diff --git a/openair1/PHY/CODING/TESTBENCH/polartest.c b/openair1/PHY/CODING/TESTBENCH/polartest.c index 806d8de28c..d9adf3e24f 100644 --- a/openair1/PHY/CODING/TESTBENCH/polartest.c +++ b/openair1/PHY/CODING/TESTBENCH/polartest.c @@ -12,7 +12,6 @@ #include "PHY/CODING/coding_defs.h" #include "SIMULATION/TOOLS/sim.h" #include "openair1/SIMULATION/NR_PHY/nr_unitary_defs.h" -//#include "PHY/NR_TRANSPORT/nr_transport.h" //#include "common/utils/LOG/log.h" //#define DEBUG_DCI_POLAR_PARAMS @@ -27,7 +26,7 @@ int main(int argc, char *argv[]) { //Default simulation values (Aim for iterations = 1000000.) int decoder_int16=0; - int itr, iterations = 1000, arguments, polarMessageType = 0; //0=PBCH, 1=DCI, -1=UCI + int itr, iterations = 1000, arguments, polarMessageType = 0; //0=PBCH, 1=DCI, 2=UCI double SNRstart = -20.0, SNRstop = 0.0, SNRinc= 0.5; //dB double SNR, SNR_lin; int16_t nBitError = 0; // -1 = Decoding failed (All list entries have failed the CRC checks). @@ -42,6 +41,7 @@ int main(int argc, char *argv[]) switch (arguments) { case 's': SNRstart = atof(optarg); + SNRstop = SNRstart + 2; break; case 'd': @@ -91,7 +91,7 @@ int main(int argc, char *argv[]) case 'k': testLength=atoi(optarg); - if (testLength < 12 || testLength > 60) { + if (testLength < 12 || testLength > 127) { printf("Illegal packet bitlength %d \n",testLength); exit(-1); } @@ -120,12 +120,13 @@ int main(int argc, char *argv[]) crcTableInit(); if (polarMessageType == 0) { //PBCH - aggregation_level = NR_POLAR_PBCH_AGGREGATION_LEVEL; + aggregation_level = NR_POLAR_PBCH_AGGREGATION_LEVEL; } else if (polarMessageType == 1) { //DCI - coderLength = 108*aggregation_level; - } else if (polarMessageType == -1) { //UCI - printf("UCI testing not supported yet\n"); - exit(-1); + coderLength = 108*aggregation_level; + } else if (polarMessageType == 2) { //UCI + //pucch2 parameters, 1 symbol, aggregation_level = NPRB + AssertFatal(aggregation_level>2,"For UCI formats, aggregation (N_RB) should be > 2\n"); + coderLength = 16*aggregation_level; } //Logging diff --git a/openair1/PHY/CODING/coding_defs.h b/openair1/PHY/CODING/coding_defs.h index 9b111309cd..7f466c7097 100644 --- a/openair1/PHY/CODING/coding_defs.h +++ b/openair1/PHY/CODING/coding_defs.h @@ -382,12 +382,24 @@ unsigned int crc16 (unsigned char * inptr, int bitlen); @param bitlen length of inputs in bits*/ unsigned int crc12 (unsigned char * inptr, int bitlen); +/*!\fn uint32_t crc12(uint8_t *inPtr, int32_t bitlen) +\brief This computes an 11-bit crc based on 3GPP NR specifications. +@param inPtr Pointer to input byte stream +@param bitlen length of inputs in bits*/ +unsigned int crc11 (unsigned char * inptr, int bitlen); + /*!\fn uint32_t crc8(uint8_t *inPtr, int32_t bitlen) \brief This computes a 8-bit crc based on 3GPP UMTS specifications. @param inPtr Pointer to input byte stream @param bitlen length of inputs in bits*/ unsigned int crc8 (unsigned char * inptr, int bitlen); +/*!\fn uint32_t crc8(uint8_t *inPtr, int32_t bitlen) +\brief This computes a 6-bit crc based on 3GPP NR specifications. +@param inPtr Pointer to input byte stream +@param bitlen length of inputs in bits*/ +unsigned int crc6 (unsigned char * inptr, int bitlen); + int check_crc(uint8_t* decoded_bytes, uint32_t n, uint32_t F, uint8_t crc_type); /*!\fn void phy_viterbi_dot11_sse2(int8_t *y, uint8_t *decoded_bytes, uint16_t n,int offset,int traceback) @@ -463,6 +475,7 @@ uint32_t nr_compute_tbs(uint16_t Qm, uint16_t nb_symb_sch, uint16_t nb_dmrs_prb, uint16_t nb_rb_oh, + uint8_t tb_scaling, uint8_t Nl); uint32_t nr_compute_tbslbrm(uint16_t table, diff --git a/openair1/PHY/CODING/crc_byte.c b/openair1/PHY/CODING/crc_byte.c index ee5c302adb..555f314429 100644 --- a/openair1/PHY/CODING/crc_byte.c +++ b/openair1/PHY/CODING/crc_byte.c @@ -90,7 +90,9 @@ static unsigned int crc24bTable[256]; static unsigned int crc24cTable[256]; static unsigned short crc16Table[256]; static unsigned short crc12Table[256]; +static unsigned short crc11Table[256]; static unsigned char crc8Table[256]; +static unsigned char crc6Table[256]; void crcTableInit (void) { @@ -102,7 +104,9 @@ void crcTableInit (void) crc24cTable[c] = crcbit (&c, 1, poly24c); crc16Table[c] = (unsigned short) (crcbit (&c, 1, poly16) >> 16); crc12Table[c] = (unsigned short) (crcbit (&c, 1, poly12) >> 16); + crc11Table[c] = (unsigned short) (crcbit (&c, 1, poly11) >> 16); crc8Table[c] = (unsigned char) (crcbit (&c, 1, poly8) >> 24); + crc6Table[c] = (unsigned char) (crcbit (&c, 1, poly6) >> 24); } while (++c); } @@ -207,6 +211,24 @@ crc12 (unsigned char * inptr, int bitlen) return crc; } +unsigned int +crc11 (unsigned char * inptr, int bitlen) +{ + int octetlen, resbit; + unsigned int crc = 0; + octetlen = bitlen / 8; /* Change in octets */ + resbit = (bitlen % 8); + + while (octetlen-- > 0) { + crc = (crc << 8) ^ (crc11Table[(*inptr++) ^ (crc >> 24)] << 16); + } + + if (resbit > 0) + crc = (crc << resbit) ^ (crc11Table[((*inptr) >> (8 - resbit)) ^ (crc >> (32 - resbit))] << 16); + + return crc; +} + unsigned int crc8 (unsigned char * inptr, int bitlen) { @@ -225,6 +247,24 @@ crc8 (unsigned char * inptr, int bitlen) return crc; } +unsigned int +crc6 (unsigned char * inptr, int bitlen) +{ + int octetlen, resbit; + unsigned int crc = 0; + octetlen = bitlen / 8; /* Change in octets */ + resbit = (bitlen % 8); + + while (octetlen-- > 0) { + crc = crc6Table[(*inptr++) ^ (crc >> 24)] << 24; + } + + if (resbit > 0) + crc = (crc << resbit) ^ (crc8Table[((*inptr) >> (8 - resbit)) ^ (crc >> (32 - resbit))] << 24); + + return crc; +} + int check_crc(uint8_t* decoded_bytes, uint32_t n, uint32_t F, uint8_t crc_type) { uint32_t crc=0,oldcrc=0; @@ -284,6 +324,7 @@ int check_crc(uint8_t* decoded_bytes, uint32_t n, uint32_t F, uint8_t crc_type) AssertFatal(1,"Invalid crc_type \n"); } + if (crc == oldcrc) return(1); else diff --git a/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG1_I0 b/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG1_I0 new file mode 100644 index 0000000000..3223238db8 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG1_I0 @@ -0,0 +1,48 @@ +int h_base_0 [46*68] = { + 250, 69, 226, 159, -1, 100, 10, -1, -1, 59, 229, 110, 191, 9, -1, 195, 23, -1, 190, 35, 239, 31, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 2, -1, 239, 117, 124, 71, -1, 222, 104, 173, -1, 220, 102, -1, 109, 132, 142, 155, -1, 255, -1, 28, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 106, 111, 185, -1, 63, 117, 93, 229, 177, 95, 39, -1, -1, 142, 225, 225, -1, 245, 205, 251, 117, -1, -1, -1, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 121, 89, -1, 84, 20, -1, 150, 131, 243, -1, 136, 86, 246, 219, 211, -1, 240, 76, 244, -1, 144, 12, 1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 157, 102, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 205, 236, -1, 194, -1, -1, -1, -1, -1, -1, -1, -1, 231, -1, -1, -1, 28, -1, -1, -1, -1, 123, 115, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 183, -1, -1, -1, -1, -1, 22, -1, -1, -1, 28, 67, -1, 244, -1, -1, -1, 11, 157, -1, 211, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 220, 44, -1, -1, 159, -1, -1, 31, 167, -1, -1, -1, -1, -1, 104, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 112, 4, -1, 7, -1, -1, -1, -1, -1, -1, -1, -1, 211, -1, -1, -1, 102, -1, -1, 164, -1, 109, 241, -1, 90, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 103, 182, -1, -1, -1, -1, -1, -1, -1, -1, 109, 21, -1, 142, -1, -1, -1, 14, 61, -1, 216, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 98, 149, -1, 167, -1, -1, 160, 49, -1, -1, -1, -1, -1, 58, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 77, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 83, -1, -1, -1, 182, -1, -1, -1, -1, 78, 252, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 160, 42, -1, -1, -1, -1, -1, -1, -1, -1, 21, 32, -1, 234, -1, -1, -1, -1, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 177, -1, -1, 248, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 185, -1, -1, 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 206, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 55, -1, -1, 206, 127, 16, -1, -1, -1, 229, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 40, 96, -1, -1, -1, -1, -1, -1, -1, -1, 65, -1, -1, 63, -1, -1, -1, -1, 75, -1, -1, -1, -1, -1, -1, 179, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 64, -1, 49, -1, -1, -1, -1, -1, -1, -1, 49, -1, -1, -1, -1, -1, -1, -1, -1, 51, -1, 154, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, 59, 1, -1, -1, -1, 144, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 233, 8, -1, -1, -1, -1, 155, 147, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 60, 73, -1, -1, -1, -1, -1, 72, 127, -1, 224, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 151, -1, -1, 186, -1, -1, -1, -1, -1, 217, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 160, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 249, -1, -1, -1, 121, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 109, -1, -1, -1, 131, 171, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 142, 188, -1, -1, -1, 158, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 156, 147, -1, -1, -1, -1, -1, -1, -1, 170, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 112, -1, -1, 86, 236, -1, -1, -1, -1, -1, -1, 116, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 222, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 23, -1, -1, -1, -1, 136, 116, -1, -1, -1, -1, -1, -1, 182, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 195, -1, 243, -1, 215, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 25, -1, -1, -1, -1, 104, -1, 194, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 128, -1, -1, -1, 165, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 181, -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 86, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 236, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 216, -1, -1, -1, -1, -1, -1, -1, -1, -1, 73, -1, -1, 120, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 95, -1, -1, -1, -1, -1, 177, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 172, -1, -1, 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 221, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 112, -1, 199, -1, -1, -1, -1, -1, -1, -1, -1, -1, 121, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 2, 187, -1, -1, -1, -1, -1, -1, -1, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, 211, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 127, -1, -1, -1, -1, -1, -1, 167, -1, -1, -1, -1, -1, -1, -1, 164, -1, 159, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 161, -1, -1, -1, -1, 197, -1, -1, -1, -1, -1, 207, -1, -1, -1, -1, -1, -1, -1, -1, -1, 103, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 51, -1, -1, 120, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 198, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, -1, 122, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, + 167, -1, -1, -1, -1, -1, -1, -1, -1, 151, 157, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, + -1, 173, -1, 139, -1, -1, -1, 149, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, + 157, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, 149, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, + -1, 167, -1, 173, -1, -1, -1, -1, -1, 139, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, + 149, -1, -1, -1, 157, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, + -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, 173, -1, -1, -1, -1, -1, -1, 139, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, + 139, -1, -1, -1, -1, -1, -1, 157, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 173, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, + -1, 149, -1, -1, -1, -1, 151, -1, -1, -1, 167, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, +}; \ No newline at end of file diff --git a/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG1_I1 b/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG1_I1 new file mode 100644 index 0000000000..6137aee2f8 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG1_I1 @@ -0,0 +1,48 @@ +int h_base_1 [46*68] = { + 307, 19, 50, 369, -1, 181, 216, -1, -1, 317, 288, 109, 17, 357, -1, 215, 106, -1, 242, 180, 330, 346, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 76, -1, 76, 73, 288, 144, -1, 331, 331, 178, -1, 295, 342, -1, 217, 99, 354, 114, -1, 331, -1, 112, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 205, 250, 328, -1, 332, 256, 161, 267, 160, 63, 129, -1, -1, 200, 88, 53, -1, 131, 240, 205, 13, -1, -1, -1, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 276, 87, -1, 0, 275, -1, 199, 153, 56, -1, 132, 305, 231, 341, 212, -1, 304, 300, 271, -1, 39, 357, 1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 332, 181, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 195, 14, -1, 115, -1, -1, -1, -1, -1, -1, -1, -1, 166, -1, -1, -1, 241, -1, -1, -1, -1, 51, 157, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 278, -1, -1, -1, -1, -1, 257, -1, -1, -1, 1, 351, -1, 92, -1, -1, -1, 253, 18, -1, 225, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 9, 62, -1, -1, 316, -1, -1, 333, 290, -1, -1, -1, -1, -1, 114, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 307, 179, -1, 165, -1, -1, -1, -1, -1, -1, -1, -1, 18, -1, -1, -1, 39, -1, -1, 224, -1, 368, 67, -1, 170, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 366, 232, -1, -1, -1, -1, -1, -1, -1, -1, 321, 133, -1, 57, -1, -1, -1, 303, 63, -1, 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 101, 339, -1, 274, -1, -1, 111, 383, -1, -1, -1, -1, -1, 354, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 48, 102, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8, -1, -1, -1, 47, -1, -1, -1, -1, 188, 334, 115, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 77, 186, -1, -1, -1, -1, -1, -1, -1, -1, 174, 232, -1, 50, -1, -1, -1, -1, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 313, -1, -1, 177, -1, -1, -1, 266, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 115, -1, -1, 370, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 142, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 248, -1, -1, 137, 89, 347, -1, -1, -1, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 241, 2, -1, -1, -1, -1, -1, -1, -1, -1, 210, -1, -1, 318, -1, -1, -1, -1, 55, -1, -1, -1, -1, -1, -1, 269, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 13, -1, 338, -1, -1, -1, -1, -1, -1, -1, 57, -1, -1, -1, -1, -1, -1, -1, -1, 289, -1, 57, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 260, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 303, -1, 81, 358, -1, -1, -1, 375, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 130, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, 280, -1, -1, -1, -1, 132, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 145, 213, -1, -1, -1, -1, -1, 344, 242, -1, 197, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 187, -1, -1, 206, -1, -1, -1, -1, -1, 264, -1, 341, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 205, -1, -1, -1, 102, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 328, -1, -1, -1, 213, 97, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 30, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 11, 233, -1, -1, -1, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 24, 89, -1, -1, -1, -1, -1, -1, -1, 61, -1, -1, -1, -1, -1, -1, -1, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 298, -1, -1, 158, 235, -1, -1, -1, -1, -1, -1, 339, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 234, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 72, -1, -1, -1, -1, 17, 383, -1, -1, -1, -1, -1, -1, 312, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 71, -1, 81, -1, 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 136, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 194, -1, -1, -1, -1, 194, -1, 101, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 222, -1, -1, -1, 19, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 244, -1, 274, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 252, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5, -1, -1, -1, 147, -1, -1, -1, -1, -1, -1, 78, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 159, -1, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, -1, 260, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 90, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 100, -1, -1, -1, -1, -1, 215, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 258, -1, -1, 256, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 102, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 201, -1, 175, -1, -1, -1, -1, -1, -1, -1, -1, -1, 287, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 323, 8, -1, -1, -1, -1, -1, -1, -1, -1, 361, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 230, -1, -1, -1, -1, -1, -1, 148, -1, -1, -1, -1, -1, -1, -1, 202, -1, 312, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 320, -1, -1, -1, -1, 335, -1, -1, -1, -1, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, 266, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 210, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 313, 297, -1, -1, 21, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 269, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, 115, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, + 185, -1, -1, -1, -1, -1, -1, -1, -1, 177, 289, -1, 214, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, + -1, 258, -1, 93, -1, -1, -1, 346, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, + 175, -1, -1, -1, -1, -1, -1, -1, 37, -1, -1, -1, -1, -1, -1, -1, -1, 312, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, + -1, 52, -1, 314, -1, -1, -1, -1, -1, 139, -1, -1, -1, -1, -1, -1, -1, -1, 288, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, + 113, -1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 218, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, + -1, 113, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 132, -1, 114, -1, -1, -1, -1, -1, -1, 168, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, + 80, -1, -1, -1, -1, -1, -1, 78, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 274, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, + -1, 135, -1, -1, -1, -1, 149, -1, -1, -1, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, +}; \ No newline at end of file diff --git a/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG1_I2 b/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG1_I2 new file mode 100644 index 0000000000..debaee7f7e --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG1_I2 @@ -0,0 +1,48 @@ +int h_base_2 [46*68] = { + 73, 15, 103, 49, -1, 240, 39, -1, -1, 15, 162, 215, 164, 133, -1, 298, 110, -1, 113, 16, 189, 32, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 303, -1, 294, 27, 261, 161, -1, 133, 4, 80, -1, 129, 300, -1, 76, 266, 72, 83, -1, 260, -1, 301, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 68, 7, 80, -1, 280, 38, 227, 202, 200, 71, 106, -1, -1, 295, 283, 301, -1, 184, 246, 230, 276, -1, -1, -1, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 220, 208, -1, 30, 197, -1, 61, 175, 79, -1, 281, 303, 253, 164, 53, -1, 44, 28, 77, -1, 319, 68, 1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 233, 205, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 83, 292, -1, 50, -1, -1, -1, -1, -1, -1, -1, -1, 318, -1, -1, -1, 201, -1, -1, -1, -1, 267, 279, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 289, -1, -1, -1, -1, -1, 21, -1, -1, -1, 293, 13, -1, 232, -1, -1, -1, 302, 138, -1, 235, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 12, 88, -1, -1, 207, -1, -1, 50, 25, -1, -1, -1, -1, -1, 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 295, 133, -1, 130, -1, -1, -1, -1, -1, -1, -1, -1, 231, -1, -1, -1, 296, -1, -1, 110, -1, 269, 245, -1, 154, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 189, 244, -1, -1, -1, -1, -1, -1, -1, -1, 36, 286, -1, 151, -1, -1, -1, 267, 135, -1, 209, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 14, 80, -1, 211, -1, -1, 75, 161, -1, -1, -1, -1, -1, 311, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 16, 147, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 290, -1, -1, -1, 289, -1, -1, -1, -1, 177, 43, 280, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 229, 235, -1, -1, -1, -1, -1, -1, -1, -1, 169, 48, -1, 105, -1, -1, -1, -1, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 39, -1, -1, 302, -1, -1, -1, 303, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 160, -1, -1, 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 78, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 299, -1, -1, 54, 61, 179, -1, -1, -1, 258, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 229, 290, -1, -1, -1, -1, -1, -1, -1, -1, 60, -1, -1, 130, -1, -1, -1, -1, 184, -1, -1, -1, -1, -1, -1, 51, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 69, -1, 140, -1, -1, -1, -1, -1, -1, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, 115, -1, 300, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 257, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 147, -1, 128, 51, -1, -1, -1, 228, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 260, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 294, 291, -1, -1, -1, -1, 141, 295, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 64, 181, -1, -1, -1, -1, -1, 101, 270, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 301, -1, -1, 162, -1, -1, -1, -1, -1, 40, -1, 130, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 79, -1, -1, -1, 175, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 132, -1, -1, -1, 283, 103, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 177, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 20, 55, -1, -1, -1, 316, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 249, 50, -1, -1, -1, -1, -1, -1, -1, 133, -1, -1, -1, -1, -1, -1, -1, 105, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 289, -1, -1, 280, 110, -1, -1, -1, -1, -1, -1, 187, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 281, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 172, -1, -1, -1, -1, 295, 96, -1, -1, -1, -1, -1, -1, 46, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 270, -1, 110, -1, 318, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 210, -1, -1, -1, -1, 29, -1, 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 11, -1, -1, -1, 293, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 50, -1, 234, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 308, -1, -1, -1, 117, -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 91, -1, -1, -1, -1, -1, -1, -1, -1, -1, 23, -1, -1, 105, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 135, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 222, -1, -1, -1, -1, -1, 308, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 66, -1, -1, 162, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 210, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, -1, 271, -1, -1, -1, -1, -1, -1, -1, -1, -1, 217, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 170, 20, -1, -1, -1, -1, -1, -1, -1, -1, 140, -1, -1, -1, -1, -1, -1, -1, -1, -1, 33, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 187, -1, -1, -1, -1, -1, -1, 296, -1, -1, -1, -1, -1, -1, -1, 5, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 207, -1, -1, -1, -1, 158, -1, -1, -1, -1, -1, 55, -1, -1, -1, -1, -1, -1, -1, -1, -1, 285, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 259, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 178, -1, -1, 160, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, 115, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, + 151, -1, -1, -1, -1, -1, -1, -1, -1, 179, 64, -1, 181, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, + -1, 102, -1, 77, -1, -1, -1, 192, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 208, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, + 32, -1, -1, -1, -1, -1, -1, -1, 80, -1, -1, -1, -1, -1, -1, -1, -1, 197, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, + -1, 154, -1, 47, -1, -1, -1, -1, -1, 124, -1, -1, -1, -1, -1, -1, -1, -1, 207, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, + 226, -1, -1, -1, 65, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 126, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, + -1, 228, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 69, -1, 176, -1, -1, -1, -1, -1, -1, 102, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, + 234, -1, -1, -1, -1, -1, -1, 227, -1, 259, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 260, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, + -1, 101, -1, -1, -1, -1, 228, -1, -1, -1, 126, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, +}; \ No newline at end of file diff --git a/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG1_I3 b/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG1_I3 new file mode 100644 index 0000000000..13c6ddca76 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG1_I3 @@ -0,0 +1,48 @@ +int h_base_3 [46*68] = { + 223, 16, 94, 91, -1, 74, 10, -1, -1, 0, 205, 216, 21, 215, -1, 14, 70, -1, 141, 198, 104, 81, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 141, -1, 45, 151, 46, 119, -1, 157, 133, 87, -1, 206, 93, -1, 79, 9, 118, 194, -1, 31, -1, 187, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 207, 203, 31, -1, 176, 180, 186, 95, 153, 177, 70, -1, -1, 77, 214, 77, -1, 198, 117, 223, 90, -1, -1, -1, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 201, 18, -1, 165, 5, -1, 45, 142, 16, -1, 34, 155, 213, 147, 69, -1, 96, 74, 99, -1, 30, 158, 1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 170, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 164, 59, -1, 86, -1, -1, -1, -1, -1, -1, -1, -1, 80, -1, -1, -1, 182, -1, -1, -1, -1, 130, 153, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 158, -1, -1, -1, -1, -1, 119, -1, -1, -1, 113, 21, -1, 63, -1, -1, -1, 51, 136, -1, 116, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 17, 76, -1, -1, 104, -1, -1, 100, 150, -1, -1, -1, -1, -1, 158, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 33, 95, -1, 4, -1, -1, -1, -1, -1, -1, -1, -1, 217, -1, -1, -1, 204, -1, -1, 39, -1, 58, 44, -1, 201, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 9, 37, -1, -1, -1, -1, -1, -1, -1, -1, 213, 105, -1, 89, -1, -1, -1, 185, 109, -1, 218, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 82, 165, -1, 174, -1, -1, 19, 194, -1, -1, -1, -1, -1, 103, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 52, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, -1, -1, -1, 35, -1, -1, -1, -1, 32, 84, 201, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 142, 175, -1, -1, -1, -1, -1, -1, -1, -1, 136, 3, -1, 28, -1, -1, -1, -1, 182, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 81, -1, -1, 56, -1, -1, -1, 72, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 217, -1, -1, 78, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 175, -1, -1, 211, 191, 51, -1, -1, -1, 43, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 90, 120, -1, -1, -1, -1, -1, -1, -1, -1, 131, -1, -1, 209, -1, -1, -1, -1, 209, -1, -1, -1, -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 154, -1, 164, -1, -1, -1, -1, -1, -1, -1, 43, -1, -1, -1, -1, -1, -1, -1, -1, 189, -1, 101, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 56, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 110, -1, 200, 63, -1, -1, -1, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 199, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 110, 200, -1, -1, -1, -1, 143, 186, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 8, 6, -1, -1, -1, -1, -1, 103, 198, -1, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 105, -1, -1, 210, -1, -1, -1, -1, -1, 121, -1, 214, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 183, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 192, -1, -1, -1, 131, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 220, -1, -1, -1, 50, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 53, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 3, -1, -1, -1, 148, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 88, 203, -1, -1, -1, -1, -1, -1, -1, 168, -1, -1, -1, -1, -1, -1, -1, 122, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 49, -1, -1, 157, 64, -1, -1, -1, -1, -1, -1, 193, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 1, -1, -1, -1, -1, 166, 65, -1, -1, -1, -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 107, -1, 176, -1, 212, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 127, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 208, -1, -1, -1, -1, 141, -1, 174, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 146, -1, -1, -1, 153, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 217, -1, 114, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 11, -1, -1, -1, 53, -1, -1, -1, -1, -1, -1, 68, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 34, -1, -1, -1, -1, -1, -1, -1, -1, -1, 130, -1, -1, 210, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 123, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 175, -1, -1, -1, -1, -1, 49, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 177, -1, -1, 128, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 192, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 209, -1, 58, -1, -1, -1, -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 114, 49, -1, -1, -1, -1, -1, -1, -1, -1, 161, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 82, -1, -1, -1, -1, -1, -1, 186, -1, -1, -1, -1, -1, -1, -1, 68, -1, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 192, -1, -1, -1, -1, 173, -1, -1, -1, -1, -1, 26, -1, -1, -1, -1, -1, -1, -1, -1, -1, 187, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 222, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 157, 0, -1, -1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 81, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 195, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, + 123, -1, -1, -1, -1, -1, -1, -1, -1, 90, 73, -1, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, + -1, 12, -1, 77, -1, -1, -1, 49, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 114, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, + 67, -1, -1, -1, -1, -1, -1, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, 96, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, + -1, 23, -1, 215, -1, -1, -1, -1, -1, 60, -1, -1, -1, -1, -1, -1, -1, -1, 167, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, + 114, -1, -1, -1, 91, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 78, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, + -1, 206, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, -1, 134, -1, -1, -1, -1, -1, -1, 161, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, + 84, -1, -1, -1, -1, -1, -1, 4, -1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, + -1, 184, -1, -1, -1, -1, 121, -1, -1, -1, 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, +}; \ No newline at end of file diff --git a/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG1_I4 b/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG1_I4 new file mode 100644 index 0000000000..f7c89c6947 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG1_I4 @@ -0,0 +1,48 @@ +int h_base_4 [46*68] = { + 211, 198, 188, 186, -1, 219, 4, -1, -1, 29, 144, 116, 216, 115, -1, 233, 144, -1, 95, 216, 73, 261, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 179, -1, 162, 223, 256, 160, -1, 76, 202, 117, -1, 109, 15, -1, 72, 152, 158, 147, -1, 156, -1, 119, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 258, 167, 220, -1, 133, 243, 202, 218, 63, 0, 3, -1, -1, 74, 229, 0, -1, 216, 269, 200, 234, -1, -1, -1, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 187, 145, -1, 166, 108, -1, 82, 132, 197, -1, 41, 162, 57, 36, 115, -1, 242, 165, 0, -1, 113, 108, 1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 246, 235, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 261, 181, -1, 72, -1, -1, -1, -1, -1, -1, -1, -1, 283, -1, -1, -1, 254, -1, -1, -1, -1, 79, 144, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 80, -1, -1, -1, -1, -1, 144, -1, -1, -1, 169, 90, -1, 59, -1, -1, -1, 177, 151, -1, 108, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 169, 189, -1, -1, 154, -1, -1, 184, 104, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 54, 0, -1, 252, -1, -1, -1, -1, -1, -1, -1, -1, 41, -1, -1, -1, 98, -1, -1, 46, -1, 15, 230, -1, 54, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 162, 159, -1, -1, -1, -1, -1, -1, -1, -1, 93, 134, -1, 45, -1, -1, -1, 132, 76, -1, 209, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 178, 1, -1, 28, -1, -1, 267, 234, -1, -1, -1, -1, -1, 201, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 55, 23, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 274, -1, -1, -1, 181, -1, -1, -1, -1, 273, 39, 26, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 225, 162, -1, -1, -1, -1, -1, -1, -1, -1, 244, 151, -1, 238, -1, -1, -1, -1, 243, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 231, -1, -1, 0, -1, -1, -1, 216, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 47, -1, -1, 36, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 186, -1, -1, 253, 16, 0, -1, -1, -1, 79, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 170, 0, -1, -1, -1, -1, -1, -1, -1, -1, 183, -1, -1, 108, -1, -1, -1, -1, 68, -1, -1, -1, -1, -1, -1, 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 270, -1, 13, -1, -1, -1, -1, -1, -1, -1, 99, -1, -1, -1, -1, -1, -1, -1, -1, 54, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 153, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, 0, 0, -1, -1, -1, 162, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 161, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, 0, -1, -1, -1, -1, 241, 144, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 0, 0, -1, -1, -1, -1, -1, 118, 144, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 265, -1, -1, 81, -1, -1, -1, -1, -1, 90, -1, 144, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 228, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 64, -1, -1, -1, 46, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 266, -1, -1, -1, 9, 18, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 72, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 189, 72, -1, -1, -1, 257, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 180, 0, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, 165, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 236, -1, -1, 199, 0, -1, -1, -1, -1, -1, -1, 266, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 205, -1, -1, -1, -1, 0, 0, -1, -1, -1, -1, -1, -1, 183, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 0, -1, 0, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 277, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 45, -1, -1, -1, -1, 36, -1, 72, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 275, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 155, -1, 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, 90, -1, -1, 252, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 173, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 144, -1, -1, -1, -1, -1, 144, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 166, -1, -1, 19, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 211, -1, 36, -1, -1, -1, -1, -1, -1, -1, -1, -1, 162, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 197, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, 108, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 199, -1, -1, -1, -1, 278, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, 205, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 216, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 16, 0, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 72, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 144, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, + 190, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, + -1, 153, -1, 0, -1, -1, -1, 165, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 117, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, + 216, -1, -1, -1, -1, -1, -1, -1, 144, -1, -1, -1, -1, -1, -1, -1, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, + -1, 0, -1, 0, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, 183, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, + 27, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 35, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, + -1, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 243, -1, 0, -1, -1, -1, -1, -1, -1, 270, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, + 18, -1, -1, -1, -1, -1, -1, 0, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 57, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, + -1, 168, -1, -1, -1, -1, 0, -1, -1, -1, 144, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, +}; \ No newline at end of file diff --git a/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG1_I5 b/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG1_I5 new file mode 100644 index 0000000000..475e6a2920 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG1_I5 @@ -0,0 +1,48 @@ +int h_base_5 [46*68] = { + 294, 118, 167, 330, -1, 207, 165, -1, -1, 243, 250, 1, 339, 201, -1, 53, 347, -1, 304, 167, 47, 188, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 77, -1, 225, 96, 338, 268, -1, 112, 302, 50, -1, 167, 253, -1, 334, 242, 257, 133, -1, 9, -1, 302, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 226, 35, 213, -1, 302, 111, 265, 128, 237, 294, 127, -1, -1, 110, 286, 125, -1, 131, 163, 210, 7, -1, -1, -1, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 97, 94, -1, 49, 279, -1, 139, 166, 91, -1, 106, 246, 345, 269, 185, -1, 249, 215, 143, -1, 121, 121, 1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 42, 256, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 219, 130, -1, 251, -1, -1, -1, -1, -1, -1, -1, -1, 322, -1, -1, -1, 295, -1, -1, -1, -1, 258, 283, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 294, -1, -1, -1, -1, -1, 73, -1, -1, -1, 330, 99, -1, 172, -1, -1, -1, 150, 284, -1, 305, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 3, 103, -1, -1, 224, -1, -1, 297, 215, -1, -1, -1, -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 348, 75, -1, 22, -1, -1, -1, -1, -1, -1, -1, -1, 312, -1, -1, -1, 224, -1, -1, 17, -1, 59, 314, -1, 244, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 156, 88, -1, -1, -1, -1, -1, -1, -1, -1, 293, 111, -1, 92, -1, -1, -1, 152, 23, -1, 337, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 175, 253, -1, 27, -1, -1, 231, 49, -1, -1, -1, -1, -1, 267, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 25, 322, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 200, -1, -1, -1, 351, -1, -1, -1, -1, 166, 338, 192, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 123, 217, -1, -1, -1, -1, -1, -1, -1, -1, 142, 110, -1, 176, -1, -1, -1, -1, 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 311, -1, -1, 251, -1, -1, -1, 265, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 94, -1, -1, 81, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 322, -1, -1, 277, 156, 66, -1, -1, -1, 78, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 176, 348, -1, -1, -1, -1, -1, -1, -1, -1, 15, -1, -1, 81, -1, -1, -1, -1, 176, -1, -1, -1, -1, -1, -1, 113, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 190, -1, 293, -1, -1, -1, -1, -1, -1, -1, 332, -1, -1, -1, -1, -1, -1, -1, -1, 331, -1, 114, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 110, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 228, -1, 247, 116, -1, -1, -1, 190, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 286, 246, -1, -1, -1, -1, 181, 73, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 87, 110, -1, -1, -1, -1, -1, 147, 258, -1, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 89, -1, -1, 65, -1, -1, -1, -1, -1, 155, -1, 244, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 162, -1, -1, -1, 264, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 346, -1, -1, -1, 143, 109, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 280, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 157, 236, -1, -1, -1, 113, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 18, 6, -1, -1, -1, -1, -1, -1, -1, 181, -1, -1, -1, -1, -1, -1, -1, 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 38, -1, -1, 170, 249, -1, -1, -1, -1, -1, -1, 288, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 194, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 279, -1, -1, -1, -1, 255, 111, -1, -1, -1, -1, -1, -1, 54, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 325, -1, 326, -1, 226, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 99, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 91, -1, -1, -1, -1, 326, -1, 268, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 102, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 40, -1, 167, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 273, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 104, -1, -1, -1, 243, -1, -1, -1, -1, -1, -1, 107, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 171, -1, -1, -1, -1, -1, -1, -1, -1, -1, 16, -1, -1, 95, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 212, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 101, -1, -1, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 279, -1, -1, 222, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 351, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 265, -1, 338, -1, -1, -1, -1, -1, -1, -1, -1, -1, 83, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 56, 304, -1, -1, -1, -1, -1, -1, -1, -1, 141, -1, -1, -1, -1, -1, -1, -1, -1, -1, 101, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 60, -1, -1, -1, -1, -1, -1, 320, -1, -1, -1, -1, -1, -1, -1, 112, -1, 54, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 100, -1, -1, -1, -1, 210, -1, -1, -1, -1, -1, 195, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 135, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 15, 35, -1, -1, 188, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 319, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 236, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, + 164, -1, -1, -1, -1, -1, -1, -1, -1, 196, 209, -1, 246, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, + -1, 236, -1, 264, -1, -1, -1, 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 272, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, + 304, -1, -1, -1, -1, -1, -1, -1, 237, -1, -1, -1, -1, -1, -1, -1, -1, 135, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, + -1, 123, -1, 77, -1, -1, -1, -1, -1, 25, -1, -1, -1, -1, -1, -1, -1, -1, 272, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, + 288, -1, -1, -1, 83, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 17, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, + -1, 210, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, -1, 53, -1, -1, -1, -1, -1, -1, 167, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, + 79, -1, -1, -1, -1, -1, -1, 244, -1, 293, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 272, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, + -1, 82, -1, -1, -1, -1, 67, -1, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, +}; \ No newline at end of file diff --git a/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG1_I6 b/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG1_I6 new file mode 100644 index 0000000000..f9500d8d04 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG1_I6 @@ -0,0 +1,48 @@ +int h_base_6 [46*68] = { + 0, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 22, -1, 11, 124, 0, 10, -1, 0, 0, 2, -1, 16, 60, -1, 0, 6, 30, 0, -1, 168, -1, 31, 105, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 132, 37, 21, -1, 180, 4, 149, 48, 38, 122, 195, -1, -1, 155, 28, 85, -1, 47, 179, 42, 66, -1, -1, -1, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 4, 6, -1, 33, 113, -1, 49, 21, 6, -1, 151, 83, 154, 87, 5, -1, 92, 173, 120, -1, 2, 142, 0, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 24, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 185, 100, -1, 24, -1, -1, -1, -1, -1, -1, -1, -1, 65, -1, -1, -1, 207, -1, -1, -1, -1, 161, 72, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 6, -1, -1, -1, -1, -1, 27, -1, -1, -1, 163, 50, -1, 48, -1, -1, -1, 24, 38, -1, 91, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 145, 88, -1, -1, 112, -1, -1, 153, 159, -1, -1, -1, -1, -1, 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 172, 2, -1, 131, -1, -1, -1, -1, -1, -1, -1, -1, 141, -1, -1, -1, 96, -1, -1, 99, -1, 101, 35, -1, 116, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 6, 10, -1, -1, -1, -1, -1, -1, -1, -1, 145, 53, -1, 201, -1, -1, -1, 4, 164, -1, 173, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 126, 77, -1, 156, -1, -1, 16, 12, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 184, 194, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 123, -1, -1, -1, 16, -1, -1, -1, -1, 104, 109, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 6, 20, -1, -1, -1, -1, -1, -1, -1, -1, 203, 153, -1, 104, -1, -1, -1, -1, 207, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 52, -1, -1, 147, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 16, -1, -1, 46, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 202, -1, -1, 118, 130, 1, -1, -1, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 173, 6, -1, -1, -1, -1, -1, -1, -1, -1, 81, -1, -1, 182, -1, -1, -1, -1, 53, -1, -1, -1, -1, -1, -1, 46, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 88, -1, 198, -1, -1, -1, -1, -1, -1, -1, 160, -1, -1, -1, -1, -1, -1, -1, -1, 122, -1, 182, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 91, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 184, -1, 30, 3, -1, -1, -1, 155, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, 167, -1, -1, -1, -1, 68, 148, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 12, 6, -1, -1, -1, -1, -1, 166, 184, -1, 191, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 6, -1, -1, 12, -1, -1, -1, -1, -1, 15, -1, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 6, -1, -1, -1, 86, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 96, -1, -1, -1, 42, 199, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, 130, -1, -1, -1, 131, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 45, 18, -1, -1, -1, -1, -1, -1, -1, 132, -1, -1, -1, -1, -1, -1, -1, 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 9, -1, -1, 125, 191, -1, -1, -1, -1, -1, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 4, -1, -1, -1, -1, 74, 16, -1, -1, -1, -1, -1, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 21, -1, 142, -1, 192, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 197, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 98, -1, -1, -1, -1, 140, -1, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 4, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 40, -1, 93, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 92, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 136, -1, -1, -1, 106, -1, -1, -1, -1, -1, -1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, 88, -1, -1, 112, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 20, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 4, -1, -1, -1, -1, -1, 49, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 125, -1, -1, 194, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 126, -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, 20, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 10, 30, -1, -1, -1, -1, -1, -1, -1, -1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, 92, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 4, -1, -1, -1, -1, -1, -1, 153, -1, -1, -1, -1, -1, -1, -1, 197, -1, 155, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 4, -1, -1, -1, -1, 45, -1, -1, -1, -1, -1, 168, -1, -1, -1, -1, -1, -1, -1, -1, -1, 185, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 200, 177, -1, -1, 43, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, 135, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, + 91, -1, -1, -1, -1, -1, -1, -1, -1, 64, 198, -1, 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, + -1, 4, -1, 28, -1, -1, -1, 109, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 188, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, + 10, -1, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, + -1, 2, -1, 75, -1, -1, -1, -1, -1, 142, -1, -1, -1, -1, -1, -1, -1, -1, 128, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, + 163, -1, -1, -1, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 162, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, + -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, 99, -1, -1, -1, -1, -1, -1, 98, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, + 4, -1, -1, -1, -1, -1, -1, 6, -1, 142, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, + -1, 181, -1, -1, -1, -1, 45, -1, -1, -1, 153, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, +}; \ No newline at end of file diff --git a/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG1_I7 b/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG1_I7 new file mode 100644 index 0000000000..aa2e90086f --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG1_I7 @@ -0,0 +1,48 @@ +int h_base_7 [46*68] = { + 135, 227, 126, 134, -1, 84, 83, -1, -1, 53, 225, 205, 128, 75, -1, 135, 217, -1, 220, 90, 105, 137, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 96, -1, 236, 136, 221, 128, -1, 92, 172, 56, -1, 11, 189, -1, 95, 85, 153, 87, -1, 163, -1, 216, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 189, 4, 225, -1, 151, 236, 117, 179, 92, 24, 68, -1, -1, 6, 101, 33, -1, 96, 125, 67, 230, -1, -1, -1, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 128, 23, -1, 162, 220, -1, 43, 186, 96, -1, 1, 216, 22, 24, 167, -1, 200, 32, 235, -1, 172, 219, 1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 64, 211, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 2, 171, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, 143, -1, -1, -1, 210, -1, -1, -1, -1, 180, 180, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 199, -1, -1, -1, -1, -1, 22, -1, -1, -1, 23, 100, -1, 92, -1, -1, -1, 207, 52, -1, 13, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 77, 146, -1, -1, 209, -1, -1, 32, 166, -1, -1, -1, -1, -1, 18, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 181, 105, -1, 141, -1, -1, -1, -1, -1, -1, -1, -1, 223, -1, -1, -1, 177, -1, -1, 145, -1, 199, 153, -1, 38, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 169, 12, -1, -1, -1, -1, -1, -1, -1, -1, 206, 221, -1, 17, -1, -1, -1, 212, 92, -1, 205, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 116, 151, -1, 70, -1, -1, 230, 115, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 45, 115, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 134, -1, -1, -1, 1, -1, -1, -1, -1, 152, 165, 107, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 186, 215, -1, -1, -1, -1, -1, -1, -1, -1, 124, 180, -1, 98, -1, -1, -1, -1, 80, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 220, -1, -1, 185, -1, -1, -1, 154, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 178, -1, -1, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 144, -1, -1, 182, 95, 72, -1, -1, -1, 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 39, 138, -1, -1, -1, -1, -1, -1, -1, -1, 220, -1, -1, 173, -1, -1, -1, -1, 142, -1, -1, -1, -1, -1, -1, 49, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 78, -1, 152, -1, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 5, -1, 205, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 183, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 112, -1, 106, 219, -1, -1, -1, 129, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 183, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, 180, -1, -1, -1, -1, 143, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 179, 108, -1, -1, -1, -1, -1, 159, 138, -1, 196, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 77, -1, -1, 187, -1, -1, -1, -1, -1, 203, -1, 167, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 130, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 197, -1, -1, -1, 122, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, -1, -1, 65, 216, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 25, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 47, 126, -1, -1, -1, 178, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 185, 127, -1, -1, -1, -1, -1, -1, -1, 117, -1, -1, -1, -1, -1, -1, -1, 199, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 32, -1, -1, 178, 2, -1, -1, -1, -1, -1, -1, 156, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 27, -1, -1, -1, -1, 141, 11, -1, -1, -1, -1, -1, -1, 181, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 163, -1, 131, -1, 169, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 98, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 165, -1, -1, -1, -1, 232, -1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 32, -1, -1, -1, 43, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 200, -1, 205, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 232, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 32, -1, -1, -1, 118, -1, -1, -1, -1, -1, -1, 103, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 170, -1, -1, -1, -1, -1, -1, -1, -1, -1, 199, -1, -1, 26, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 73, -1, -1, -1, -1, -1, 149, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 175, -1, -1, 108, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 103, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 110, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, 211, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 199, 132, -1, -1, -1, -1, -1, -1, -1, -1, 172, -1, -1, -1, -1, -1, -1, -1, -1, -1, 65, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 161, -1, -1, -1, -1, -1, -1, 237, -1, -1, -1, -1, -1, -1, -1, 142, -1, 180, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 231, -1, -1, -1, -1, 174, -1, -1, -1, -1, -1, 145, -1, -1, -1, -1, -1, -1, -1, -1, -1, 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 207, 42, -1, -1, 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 59, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, 161, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, + 121, -1, -1, -1, -1, -1, -1, -1, -1, 90, 26, -1, 140, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, + -1, 115, -1, 188, -1, -1, -1, 168, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, + 4, -1, -1, -1, -1, -1, -1, -1, 103, -1, -1, -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, + -1, 53, -1, 189, -1, -1, -1, -1, -1, 215, -1, -1, -1, -1, -1, -1, -1, -1, 24, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, + 222, -1, -1, -1, 170, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, + -1, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 127, -1, 49, -1, -1, -1, -1, -1, -1, 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, + 191, -1, -1, -1, -1, -1, -1, 211, -1, 187, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 148, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, + -1, 177, -1, -1, -1, -1, 114, -1, -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, +}; \ No newline at end of file diff --git a/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG1_compact_in_C.h b/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG1_compact_in_C.h new file mode 100644 index 0000000000..9a6086998e --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG1_compact_in_C.h @@ -0,0 +1,478 @@ + +h_element host_h_compact1_I0 [46*19] = +{{0 ,0,250},{1 ,0,2},{2 ,0,106},{3 ,0,121},{4 ,0,157},{5 ,0,205},{6 ,0,183},{7 ,0,220},{8 ,0,112},{9 ,0,103},{10 ,1,98},{11 ,0,77},{12 ,0,160},{13 ,0,177},{14 ,0,206},{15 ,0,40},{16 ,1,64},{17 ,0,7},{18 ,1,42},{19 ,0,60},{20 ,0,151},{21 ,1,249},{22 ,0,64},{23 ,1,156},{24 ,0,112},{25 ,1,23},{26 ,0,195},{27 ,1,25},{28 ,0,128},{29 ,1,86},{30 ,0,216},{31 ,1,95},{32 ,0,221},{33 ,1,2},{34 ,0,127},{35 ,1,161},{36 ,0,37},{37 ,1,198},{38 ,0,167},{39 ,1,173},{40 ,0,157},{41 ,1,167},{42 ,0,149},{43 ,1,151},{44 ,0,139},{45 ,1,149}, +{0 ,1,69},{1 ,2,239},{2 ,1,111},{3 ,1,89},{4 ,1,102},{5 ,1,236},{6 ,6,22},{7 ,1,44},{8 ,1,4},{9 ,1,182},{10 ,2,149},{11 ,1,41},{12 ,1,42},{13 ,3,248},{14 ,12,55},{15 ,1,96},{16 ,3,49},{17 ,14,164},{18 ,12,233},{19 ,1,73},{20 ,3,186},{21 ,5,121},{22 ,12,142},{23 ,2,147},{24 ,3,86},{25 ,6,136},{26 ,2,243},{27 ,6,104},{28 ,4,165},{29 ,14,236},{30 ,10,73},{31 ,7,177},{32 ,12,112},{33 ,2,187},{34 ,7,167},{35 ,6,197},{36 ,14,105},{37 ,13,220},{38 ,9,151},{39 ,3,139},{40 ,8,137},{41 ,3,173},{42 ,4,157},{43 ,16,163},{44 ,7,157},{45 ,6,151}, +{0 ,2,226},{1 ,3,117},{2 ,2,185},{3 ,3,84},{4 ,26,0},{5 ,3,194},{6 ,10,28},{7 ,4,159},{8 ,3,7},{9 ,10,109},{10 ,4,167},{11 ,12,83},{12 ,10,21},{13 ,7,151},{14 ,15,206},{15 ,10,65},{16 ,11,49},{17 ,16,59},{18 ,13,8},{19 ,7,72},{20 ,9,217},{21 ,16,109},{22 ,13,188},{23 ,10,170},{24 ,4,236},{25 ,7,116},{26 ,4,215},{27 ,8,194},{28 ,19,181},{29 ,18,84},{30 ,13,120},{31 ,22,172},{32 ,14,199},{33 ,11,41},{34 ,15,164},{35 ,12,207},{36 ,15,51},{37 ,23,122},{38 ,10,157},{39 ,7,149},{40 ,17,149},{41 ,9,139},{42 ,24,137},{43 ,18,173},{44 ,9,163},{45 ,10,167}, +{0 ,3,159},{1 ,4,124},{2 ,4,63},{3 ,4,20},{0 ,0,-1},{5 ,12,231},{6 ,11,67},{7 ,7,31},{8 ,12,211},{9 ,11,21},{10 ,7,160},{11 ,16,182},{12 ,11,32},{13 ,20,185},{14 ,16,127},{15 ,13,63},{16 ,20,51},{17 ,17,1},{18 ,18,155},{19 ,8,127},{20 ,11,47},{21 ,20,131},{22 ,17,158},{23 ,18,152},{24 ,11,116},{25 ,14,182},{26 ,15,61},{27 ,49,0},{28 ,21,63},{29 ,25,6},{30 ,24,9},{31 ,25,61},{32 ,24,121},{33 ,21,211},{34 ,17,159},{35 ,22,103},{36 ,18,120},{37 ,59,0},{38 ,12,163},{39 ,19,0},{40 ,62,0},{41 ,18,151},{42 ,64,0},{43 ,25,139},{44 ,22,173},{45 ,67,0}, +{0 ,5,100},{1 ,5,71},{2 ,5,117},{3 ,6,150},{0 ,0,-1},{5 ,16,28},{6 ,13,244},{7 ,8,167},{8 ,16,102},{9 ,13,142},{10 ,8,49},{11 ,21,78},{12 ,13,234},{13 ,23,62},{14 ,17,16},{15 ,18,75},{16 ,22,154},{17 ,21,144},{18 ,19,147},{19 ,10,224},{20 ,22,160},{21 ,21,171},{22 ,44,0},{23 ,45,0},{24 ,22,222},{25 ,47,0},{26 ,48,0},{0 ,0,-1},{28 ,50,0},{29 ,51,0},{30 ,52,0},{31 ,53,0},{32 ,54,0},{33 ,55,0},{34 ,56,0},{35 ,57,0},{36 ,58,0},{0 ,0,-1},{38 ,60,0},{39 ,61,0},{0 ,0,-1},{41 ,63,0},{0 ,0,-1},{43 ,65,0},{44 ,66,0},{0 ,0,-1}, +{0 ,6,10},{1 ,7,222},{2 ,6,93},{3 ,7,131},{0 ,0,-1},{5 ,21,123},{6 ,17,11},{7 ,14,104},{8 ,19,164},{9 ,17,14},{10 ,14,58},{11 ,22,252},{12 ,18,7},{13 ,35,0},{14 ,21,229},{15 ,25,179},{16 ,38,0},{17 ,39,0},{18 ,40,0},{19 ,41,0},{20 ,42,0},{21 ,43,0},{0 ,0,-1},{0 ,0,-1},{24 ,46,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,9,59},{1 ,8,104},{2 ,7,229},{3 ,8,243},{0 ,0,-1},{5 ,22,115},{6 ,18,157},{7 ,29,0},{8 ,21,109},{9 ,18,61},{10 ,32,0},{11 ,23,22},{12 ,34,0},{0 ,0,-1},{14 ,36,0},{15 ,37,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,10,229},{1 ,9,173},{2 ,8,177},{3 ,10,136},{0 ,0,-1},{5 ,27,0},{6 ,20,211},{0 ,0,-1},{8 ,22,241},{9 ,20,216},{0 ,0,-1},{11 ,33,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,11,110},{1 ,11,220},{2 ,9,95},{3 ,11,86},{0 ,0,-1},{0 ,0,-1},{6 ,28,0},{0 ,0,-1},{8 ,24,90},{9 ,31,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,12,191},{1 ,12,102},{2 ,10,39},{3 ,12,246},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{8 ,30,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,13,9},{1 ,14,109},{2 ,13,142},{3 ,13,219},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,15,195},{1 ,15,132},{2 ,14,225},{3 ,14,211},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,16,23},{1 ,16,142},{2 ,15,225},{3 ,16,240},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,18,190},{1 ,17,155},{2 ,17,245},{3 ,17,76},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,19,35},{1 ,19,255},{2 ,18,205},{3 ,18,244},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,20,239},{1 ,21,28},{2 ,19,251},{3 ,20,144},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,21,31},{1 ,22,0},{2 ,20,117},{3 ,21,12},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,22,1},{1 ,23,0},{2 ,24,0},{3 ,22,1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,23,0},{1 ,24,0},{2 ,25,0},{3 ,25,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +}; + + +h_element host_h_compact2_I0 [68*30] = +{{0 ,0,250},{0 ,1,69},{0 ,2,226},{0 ,3,159},{1 ,4,124},{0 ,5,100},{0 ,6,10},{1 ,7,222},{1 ,8,104},{0 ,9,59},{0 ,10,229},{0 ,11,110},{0 ,12,191},{0 ,13,9},{1 ,14,109},{0 ,15,195},{0 ,16,23},{1 ,17,155},{0 ,18,190},{0 ,19,35},{0 ,20,239},{0 ,21,31},{0 ,22,1},{0 ,23,0},{1 ,24,0},{2 ,25,0},{4 ,26,0},{5 ,27,0},{6 ,28,0},{7 ,29,0},{8 ,30,0},{9 ,31,0},{10 ,32,0},{11 ,33,0},{12 ,34,0},{13 ,35,0},{14 ,36,0},{15 ,37,0},{16 ,38,0},{17 ,39,0},{18 ,40,0},{19 ,41,0},{20 ,42,0},{21 ,43,0},{22 ,44,0},{23 ,45,0},{24 ,46,0},{25 ,47,0},{26 ,48,0},{27 ,49,0},{28 ,50,0},{29 ,51,0},{30 ,52,0},{31 ,53,0},{32 ,54,0},{33 ,55,0},{34 ,56,0},{35 ,57,0},{36 ,58,0},{37 ,59,0},{38 ,60,0},{39 ,61,0},{40 ,62,0},{41 ,63,0},{42 ,64,0},{43 ,65,0},{44 ,66,0},{45 ,67,0}, +{1 ,0,2},{2 ,1,111},{1 ,2,239},{1 ,3,117},{2 ,4,63},{1 ,5,71},{2 ,6,93},{2 ,7,229},{2 ,8,177},{1 ,9,173},{2 ,10,39},{1 ,11,220},{1 ,12,102},{2 ,13,142},{2 ,14,225},{1 ,15,132},{1 ,16,142},{2 ,17,245},{2 ,18,205},{1 ,19,255},{2 ,20,117},{1 ,21,28},{1 ,22,0},{1 ,23,0},{2 ,24,0},{3 ,25,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{2 ,0,106},{3 ,1,89},{2 ,2,185},{3 ,3,84},{3 ,4,20},{2 ,5,117},{3 ,6,150},{3 ,7,131},{3 ,8,243},{2 ,9,95},{3 ,10,136},{3 ,11,86},{3 ,12,246},{3 ,13,219},{3 ,14,211},{2 ,15,225},{3 ,16,240},{3 ,17,76},{3 ,18,244},{2 ,19,251},{3 ,20,144},{3 ,21,12},{3 ,22,1},{11 ,23,22},{8 ,24,90},{15 ,25,179},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{3 ,0,121},{4 ,1,102},{10 ,2,149},{5 ,3,194},{7 ,4,159},{21 ,5,121},{6 ,6,22},{7 ,7,31},{7 ,8,167},{20 ,9,217},{6 ,10,28},{6 ,11,67},{5 ,12,231},{6 ,13,244},{7 ,14,104},{14 ,15,206},{5 ,16,28},{6 ,17,11},{6 ,18,157},{8 ,19,164},{6 ,20,211},{5 ,21,123},{5 ,22,115},{13 ,23,62},{30 ,24,9},{29 ,25,6},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{4 ,0,157},{5 ,1,236},{23 ,2,147},{8 ,3,7},{10 ,4,167},{0 ,0,-1},{25 ,6,136},{10 ,7,160},{10 ,8,49},{38 ,9,151},{9 ,10,109},{9 ,11,21},{8 ,12,211},{9 ,13,142},{10 ,14,58},{26 ,15,61},{8 ,16,102},{9 ,17,14},{9 ,18,61},{18 ,19,147},{9 ,20,216},{8 ,21,109},{8 ,22,241},{37 ,23,122},{32 ,24,121},{31 ,25,61},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{5 ,0,205},{7 ,1,44},{26 ,2,243},{13 ,3,248},{24 ,4,236},{0 ,0,-1},{27 ,6,104},{13 ,7,151},{19 ,8,127},{41 ,9,139},{12 ,10,21},{12 ,11,32},{11 ,12,83},{12 ,13,234},{17 ,14,164},{34 ,15,164},{11 ,16,182},{14 ,17,16},{12 ,18,7},{28 ,19,181},{13 ,20,185},{11 ,21,78},{11 ,22,252},{0 ,0,-1},{42 ,24,137},{43 ,25,139},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{6 ,0,183},{8 ,1,4},{33 ,2,187},{16 ,3,49},{26 ,4,215},{0 ,0,-1},{35 ,6,197},{19 ,7,72},{27 ,8,194},{44 ,9,163},{15 ,10,65},{16 ,11,49},{14 ,12,55},{15 ,13,63},{25 ,14,182},{36 ,15,51},{14 ,16,127},{17 ,17,1},{15 ,18,75},{39 ,19,0},{16 ,20,51},{14 ,21,229},{16 ,22,154},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{7 ,0,220},{9 ,1,182},{0 ,0,-1},{20 ,3,186},{28 ,4,165},{0 ,0,-1},{45 ,6,151},{25 ,7,116},{40 ,8,137},{0 ,0,-1},{19 ,10,224},{20 ,11,47},{18 ,12,233},{18 ,13,8},{29 ,14,236},{0 ,0,-1},{17 ,16,59},{22 ,17,158},{18 ,18,155},{0 ,0,-1},{21 ,20,131},{17 ,21,144},{20 ,22,160},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{8 ,0,112},{10 ,1,98},{0 ,0,-1},{24 ,3,86},{42 ,4,157},{0 ,0,-1},{0 ,0,-1},{31 ,7,177},{0 ,0,-1},{0 ,0,-1},{23 ,10,170},{24 ,11,116},{22 ,12,142},{22 ,13,188},{32 ,14,199},{0 ,0,-1},{21 ,16,109},{34 ,17,159},{23 ,18,152},{0 ,0,-1},{0 ,0,-1},{21 ,21,171},{24 ,22,222},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{9 ,0,103},{11 ,1,41},{0 ,0,-1},{39 ,3,139},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{34 ,7,167},{0 ,0,-1},{0 ,0,-1},{30 ,10,73},{33 ,11,41},{32 ,12,112},{30 ,13,120},{36 ,14,105},{0 ,0,-1},{43 ,16,163},{40 ,17,149},{29 ,18,84},{0 ,0,-1},{0 ,0,-1},{28 ,21,63},{31 ,22,172},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{11 ,0,77},{12 ,1,42},{0 ,0,-1},{41 ,3,173},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{39 ,7,149},{0 ,0,-1},{0 ,0,-1},{38 ,10,157},{0 ,0,-1},{35 ,12,207},{37 ,13,220},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{36 ,18,120},{0 ,0,-1},{0 ,0,-1},{33 ,21,211},{35 ,22,103},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{12 ,0,160},{15 ,1,96},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{44 ,7,157},{0 ,0,-1},{0 ,0,-1},{45 ,10,167},{0 ,0,-1},{38 ,12,163},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{41 ,18,151},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{44 ,22,173},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{13 ,0,177},{16 ,1,64},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{43 ,18,173},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{14 ,0,206},{18 ,1,42},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{15 ,0,40},{19 ,1,73},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{17 ,0,7},{21 ,1,249},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{19 ,0,60},{23 ,1,156},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{20 ,0,151},{25 ,1,23},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{22 ,0,64},{27 ,1,25},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{24 ,0,112},{29 ,1,86},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{26 ,0,195},{31 ,1,95},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{28 ,0,128},{33 ,1,2},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{30 ,0,216},{35 ,1,161},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{32 ,0,221},{37 ,1,198},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{34 ,0,127},{39 ,1,173},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{36 ,0,37},{41 ,1,167},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{38 ,0,167},{43 ,1,151},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{40 ,0,157},{45 ,1,149},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{42 ,0,149},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{44 ,0,139},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1} +}; + +//--------------------------------------------------BG1_I0----------------------------------------------------------------- + + +//--------------------------------------------------BG1_I1----------------------------------------------------------------- + +h_element host_h_compact1_I1 [46*19] = +{{0 ,0,307},{1 ,0,76},{2 ,0,205},{3 ,0,276},{4 ,0,332},{5 ,0,195},{6 ,0,278},{7 ,0,9},{8 ,0,307},{9 ,0,366},{10 ,1,101},{11 ,0,48},{12 ,0,77},{13 ,0,313},{14 ,0,142},{15 ,0,241},{16 ,1,13},{17 ,0,260},{18 ,1,130},{19 ,0,145},{20 ,0,187},{21 ,1,205},{22 ,0,30},{23 ,1,24},{24 ,0,298},{25 ,1,72},{26 ,0,71},{27 ,1,194},{28 ,0,222},{29 ,1,252},{30 ,0,159},{31 ,1,100},{32 ,0,102},{33 ,1,323},{34 ,0,230},{35 ,1,320},{36 ,0,210},{37 ,1,269},{38 ,0,185},{39 ,1,258},{40 ,0,175},{41 ,1,52},{42 ,0,113},{43 ,1,113},{44 ,0,80},{45 ,1,135}, +{0 ,1,19},{1 ,2,76},{2 ,1,250},{3 ,1,87},{4 ,1,181},{5 ,1,14},{6 ,6,257},{7 ,1,62},{8 ,1,179},{9 ,1,232},{10 ,2,339},{11 ,1,102},{12 ,1,186},{13 ,3,177},{14 ,12,248},{15 ,1,2},{16 ,3,338},{17 ,14,303},{18 ,12,163},{19 ,1,213},{20 ,3,206},{21 ,5,102},{22 ,12,11},{23 ,2,89},{24 ,3,158},{25 ,6,17},{26 ,2,81},{27 ,6,194},{28 ,4,19},{29 ,14,5},{30 ,10,229},{31 ,7,215},{32 ,12,201},{33 ,2,8},{34 ,7,148},{35 ,6,335},{36 ,14,313},{37 ,13,82},{38 ,9,177},{39 ,3,93},{40 ,8,37},{41 ,3,314},{42 ,4,14},{43 ,16,132},{44 ,7,78},{45 ,6,149}, +{0 ,2,50},{1 ,3,73},{2 ,2,328},{3 ,3,0},{4 ,26,0},{5 ,3,115},{6 ,10,1},{7 ,4,316},{8 ,3,165},{9 ,10,321},{10 ,4,274},{11 ,12,8},{12 ,10,174},{13 ,7,266},{14 ,15,137},{15 ,10,210},{16 ,11,57},{17 ,16,81},{18 ,13,280},{19 ,7,344},{20 ,9,264},{21 ,16,328},{22 ,13,233},{23 ,10,61},{24 ,4,235},{25 ,7,383},{26 ,4,76},{27 ,8,101},{28 ,19,244},{29 ,18,147},{30 ,13,260},{31 ,22,258},{32 ,14,175},{33 ,11,361},{34 ,15,202},{35 ,12,2},{36 ,15,297},{37 ,23,115},{38 ,10,289},{39 ,7,346},{40 ,17,312},{41 ,9,139},{42 ,24,218},{43 ,18,114},{44 ,9,163},{45 ,10,15}, +{0 ,3,369},{1 ,4,288},{2 ,4,332},{3 ,4,275},{0 ,0,-1},{5 ,12,166},{6 ,11,351},{7 ,7,333},{8 ,12,18},{9 ,11,133},{10 ,7,111},{11 ,16,47},{12 ,11,232},{13 ,20,115},{14 ,16,89},{15 ,13,318},{16 ,20,289},{17 ,17,358},{18 ,18,132},{19 ,8,242},{20 ,11,341},{21 ,20,213},{22 ,17,22},{23 ,18,27},{24 ,11,339},{25 ,14,312},{26 ,15,136},{27 ,49,0},{28 ,21,274},{29 ,25,78},{30 ,24,90},{31 ,25,256},{32 ,24,287},{33 ,21,105},{34 ,17,312},{35 ,22,266},{36 ,18,21},{37 ,59,0},{38 ,12,214},{39 ,19,297},{40 ,62,0},{41 ,18,288},{42 ,64,0},{43 ,25,168},{44 ,22,274},{45 ,67,0}, +{0 ,5,181},{1 ,5,144},{2 ,5,256},{3 ,6,199},{0 ,0,-1},{5 ,16,241},{6 ,13,92},{7 ,8,290},{8 ,16,39},{9 ,13,57},{10 ,8,383},{11 ,21,188},{12 ,13,50},{13 ,23,370},{14 ,17,347},{15 ,18,55},{16 ,22,57},{17 ,21,375},{18 ,19,4},{19 ,10,197},{20 ,22,59},{21 ,21,97},{22 ,44,0},{23 ,45,0},{24 ,22,234},{25 ,47,0},{26 ,48,0},{0 ,0,-1},{28 ,50,0},{29 ,51,0},{30 ,52,0},{31 ,53,0},{32 ,54,0},{33 ,55,0},{34 ,56,0},{35 ,57,0},{36 ,58,0},{0 ,0,-1},{38 ,60,0},{39 ,61,0},{0 ,0,-1},{41 ,63,0},{0 ,0,-1},{43 ,65,0},{44 ,66,0},{0 ,0,-1}, +{0 ,6,216},{1 ,7,331},{2 ,6,161},{3 ,7,153},{0 ,0,-1},{5 ,21,51},{6 ,17,253},{7 ,14,114},{8 ,19,224},{9 ,17,303},{10 ,14,354},{11 ,22,334},{12 ,18,74},{13 ,35,0},{14 ,21,12},{15 ,25,269},{16 ,38,0},{17 ,39,0},{18 ,40,0},{19 ,41,0},{20 ,42,0},{21 ,43,0},{0 ,0,-1},{0 ,0,-1},{24 ,46,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,9,317},{1 ,8,331},{2 ,7,267},{3 ,8,56},{0 ,0,-1},{5 ,22,157},{6 ,18,18},{7 ,29,0},{8 ,21,368},{9 ,18,63},{10 ,32,0},{11 ,23,115},{12 ,34,0},{0 ,0,-1},{14 ,36,0},{15 ,37,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,10,288},{1 ,9,178},{2 ,8,160},{3 ,10,132},{0 ,0,-1},{5 ,27,0},{6 ,20,225},{0 ,0,-1},{8 ,22,67},{9 ,20,82},{0 ,0,-1},{11 ,33,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,11,109},{1 ,11,295},{2 ,9,63},{3 ,11,305},{0 ,0,-1},{0 ,0,-1},{6 ,28,0},{0 ,0,-1},{8 ,24,170},{9 ,31,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,12,17},{1 ,12,342},{2 ,10,129},{3 ,12,231},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{8 ,30,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,13,357},{1 ,14,217},{2 ,13,200},{3 ,13,341},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,15,215},{1 ,15,99},{2 ,14,88},{3 ,14,212},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,16,106},{1 ,16,354},{2 ,15,53},{3 ,16,304},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,18,242},{1 ,17,114},{2 ,17,131},{3 ,17,300},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,19,180},{1 ,19,331},{2 ,18,240},{3 ,18,271},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,20,330},{1 ,21,112},{2 ,19,205},{3 ,20,39},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,21,346},{1 ,22,0},{2 ,20,13},{3 ,21,357},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,22,1},{1 ,23,0},{2 ,24,0},{3 ,22,1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,23,0},{1 ,24,0},{2 ,25,0},{3 ,25,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1} +}; + + +h_element host_h_compact2_I1 [68*30] = +{{0 ,0,307},{0 ,1,19},{0 ,2,50},{0 ,3,369},{1 ,4,288},{0 ,5,181},{0 ,6,216},{1 ,7,331},{1 ,8,331},{0 ,9,317},{0 ,10,288},{0 ,11,109},{0 ,12,17},{0 ,13,357},{1 ,14,217},{0 ,15,215},{0 ,16,106},{1 ,17,114},{0 ,18,242},{0 ,19,180},{0 ,20,330},{0 ,21,346},{0 ,22,1},{0 ,23,0},{1 ,24,0},{2 ,25,0},{4 ,26,0},{5 ,27,0},{6 ,28,0},{7 ,29,0},{8 ,30,0},{9 ,31,0},{10 ,32,0},{11 ,33,0},{12 ,34,0},{13 ,35,0},{14 ,36,0},{15 ,37,0},{16 ,38,0},{17 ,39,0},{18 ,40,0},{19 ,41,0},{20 ,42,0},{21 ,43,0},{22 ,44,0},{23 ,45,0},{24 ,46,0},{25 ,47,0},{26 ,48,0},{27 ,49,0},{28 ,50,0},{29 ,51,0},{30 ,52,0},{31 ,53,0},{32 ,54,0},{33 ,55,0},{34 ,56,0},{35 ,57,0},{36 ,58,0},{37 ,59,0},{38 ,60,0},{39 ,61,0},{40 ,62,0},{41 ,63,0},{42 ,64,0},{43 ,65,0},{44 ,66,0},{45 ,67,0}, +{1 ,0,76},{2 ,1,250},{1 ,2,76},{1 ,3,73},{2 ,4,332},{1 ,5,144},{2 ,6,161},{2 ,7,267},{2 ,8,160},{1 ,9,178},{2 ,10,129},{1 ,11,295},{1 ,12,342},{2 ,13,200},{2 ,14,88},{1 ,15,99},{1 ,16,354},{2 ,17,131},{2 ,18,240},{1 ,19,331},{2 ,20,13},{1 ,21,112},{1 ,22,0},{1 ,23,0},{2 ,24,0},{3 ,25,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{2 ,0,205},{3 ,1,87},{2 ,2,328},{3 ,3,0},{3 ,4,275},{2 ,5,256},{3 ,6,199},{3 ,7,153},{3 ,8,56},{2 ,9,63},{3 ,10,132},{3 ,11,305},{3 ,12,231},{3 ,13,341},{3 ,14,212},{2 ,15,53},{3 ,16,304},{3 ,17,300},{3 ,18,271},{2 ,19,205},{3 ,20,39},{3 ,21,357},{3 ,22,1},{11 ,23,115},{8 ,24,170},{15 ,25,269},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{3 ,0,276},{4 ,1,181},{10 ,2,339},{5 ,3,115},{7 ,4,316},{21 ,5,102},{6 ,6,257},{7 ,7,333},{7 ,8,290},{20 ,9,264},{6 ,10,1},{6 ,11,351},{5 ,12,166},{6 ,13,92},{7 ,14,114},{14 ,15,137},{5 ,16,241},{6 ,17,253},{6 ,18,18},{8 ,19,224},{6 ,20,225},{5 ,21,51},{5 ,22,157},{13 ,23,370},{30 ,24,90},{29 ,25,78},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{4 ,0,332},{5 ,1,14},{23 ,2,89},{8 ,3,165},{10 ,4,274},{0 ,0,-1},{25 ,6,17},{10 ,7,111},{10 ,8,383},{38 ,9,177},{9 ,10,321},{9 ,11,133},{8 ,12,18},{9 ,13,57},{10 ,14,354},{26 ,15,136},{8 ,16,39},{9 ,17,303},{9 ,18,63},{18 ,19,4},{9 ,20,82},{8 ,21,368},{8 ,22,67},{37 ,23,115},{32 ,24,287},{31 ,25,256},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{5 ,0,195},{7 ,1,62},{26 ,2,81},{13 ,3,177},{24 ,4,235},{0 ,0,-1},{27 ,6,194},{13 ,7,266},{19 ,8,242},{41 ,9,139},{12 ,10,174},{12 ,11,232},{11 ,12,8},{12 ,13,50},{17 ,14,303},{34 ,15,202},{11 ,16,47},{14 ,17,347},{12 ,18,74},{28 ,19,244},{13 ,20,115},{11 ,21,188},{11 ,22,334},{0 ,0,-1},{42 ,24,218},{43 ,25,168},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{6 ,0,278},{8 ,1,179},{33 ,2,8},{16 ,3,338},{26 ,4,76},{0 ,0,-1},{35 ,6,335},{19 ,7,344},{27 ,8,101},{44 ,9,163},{15 ,10,210},{16 ,11,57},{14 ,12,248},{15 ,13,318},{25 ,14,312},{36 ,15,297},{14 ,16,89},{17 ,17,358},{15 ,18,55},{39 ,19,297},{16 ,20,289},{14 ,21,12},{16 ,22,57},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{7 ,0,9},{9 ,1,232},{0 ,0,-1},{20 ,3,206},{28 ,4,19},{0 ,0,-1},{45 ,6,149},{25 ,7,383},{40 ,8,37},{0 ,0,-1},{19 ,10,197},{20 ,11,341},{18 ,12,163},{18 ,13,280},{29 ,14,5},{0 ,0,-1},{17 ,16,81},{22 ,17,22},{18 ,18,132},{0 ,0,-1},{21 ,20,213},{17 ,21,375},{20 ,22,59},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{8 ,0,307},{10 ,1,101},{0 ,0,-1},{24 ,3,158},{42 ,4,14},{0 ,0,-1},{0 ,0,-1},{31 ,7,215},{0 ,0,-1},{0 ,0,-1},{23 ,10,61},{24 ,11,339},{22 ,12,11},{22 ,13,233},{32 ,14,175},{0 ,0,-1},{21 ,16,328},{34 ,17,312},{23 ,18,27},{0 ,0,-1},{0 ,0,-1},{21 ,21,97},{24 ,22,234},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{9 ,0,366},{11 ,1,102},{0 ,0,-1},{39 ,3,93},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{34 ,7,148},{0 ,0,-1},{0 ,0,-1},{30 ,10,229},{33 ,11,361},{32 ,12,201},{30 ,13,260},{36 ,14,313},{0 ,0,-1},{43 ,16,132},{40 ,17,312},{29 ,18,147},{0 ,0,-1},{0 ,0,-1},{28 ,21,274},{31 ,22,258},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{11 ,0,48},{12 ,1,186},{0 ,0,-1},{41 ,3,314},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{39 ,7,346},{0 ,0,-1},{0 ,0,-1},{38 ,10,289},{0 ,0,-1},{35 ,12,2},{37 ,13,82},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{36 ,18,21},{0 ,0,-1},{0 ,0,-1},{33 ,21,105},{35 ,22,266},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{12 ,0,77},{15 ,1,2},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{44 ,7,78},{0 ,0,-1},{0 ,0,-1},{45 ,10,15},{0 ,0,-1},{38 ,12,214},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{41 ,18,288},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{44 ,22,274},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{13 ,0,313},{16 ,1,13},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{43 ,18,114},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{14 ,0,142},{18 ,1,130},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{15 ,0,241},{19 ,1,213},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{17 ,0,260},{21 ,1,205},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{19 ,0,145},{23 ,1,24},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{20 ,0,187},{25 ,1,72},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{22 ,0,30},{27 ,1,194},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{24 ,0,298},{29 ,1,252},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{26 ,0,71},{31 ,1,100},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{28 ,0,222},{33 ,1,323},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{30 ,0,159},{35 ,1,320},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{32 ,0,102},{37 ,1,269},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{34 ,0,230},{39 ,1,258},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{36 ,0,210},{41 ,1,52},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{38 ,0,185},{43 ,1,113},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{40 ,0,175},{45 ,1,135},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{42 ,0,113},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{44 ,0,80},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1} +}; + +//--------------------------------------------------BG1_I1----------------------------------------------------------------- + +//--------------------------------------------------BG1_I2----------------------------------------------------------------- + +h_element host_h_compact1_I2 [46*19] = +{{0 ,0,73},{1 ,0,303},{2 ,0,68},{3 ,0,220},{4 ,0,233},{5 ,0,83},{6 ,0,289},{7 ,0,12},{8 ,0,295},{9 ,0,189},{10 ,1,14},{11 ,0,16},{12 ,0,229},{13 ,0,39},{14 ,0,78},{15 ,0,229},{16 ,1,69},{17 ,0,257},{18 ,1,260},{19 ,0,64},{20 ,0,301},{21 ,1,79},{22 ,0,177},{23 ,1,249},{24 ,0,289},{25 ,1,172},{26 ,0,270},{27 ,1,210},{28 ,0,11},{29 ,1,27},{30 ,0,91},{31 ,1,222},{32 ,0,210},{33 ,1,170},{34 ,0,187},{35 ,1,207},{36 ,0,259},{37 ,1,298},{38 ,0,151},{39 ,1,102},{40 ,0,32},{41 ,1,154},{42 ,0,226},{43 ,1,228},{44 ,0,234},{45 ,1,101}, +{0 ,1,15},{1 ,2,294},{2 ,1,7},{3 ,1,208},{4 ,1,205},{5 ,1,292},{6 ,6,21},{7 ,1,88},{8 ,1,133},{9 ,1,244},{10 ,2,80},{11 ,1,147},{12 ,1,235},{13 ,3,302},{14 ,12,299},{15 ,1,290},{16 ,3,140},{17 ,14,147},{18 ,12,294},{19 ,1,181},{20 ,3,162},{21 ,5,175},{22 ,12,20},{23 ,2,50},{24 ,3,280},{25 ,6,295},{26 ,2,110},{27 ,6,29},{28 ,4,293},{29 ,14,308},{30 ,10,23},{31 ,7,308},{32 ,12,22},{33 ,2,20},{34 ,7,296},{35 ,6,158},{36 ,14,179},{37 ,13,15},{38 ,9,179},{39 ,3,77},{40 ,8,80},{41 ,3,47},{42 ,4,65},{43 ,16,69},{44 ,7,227},{45 ,6,228}, +{0 ,2,103},{1 ,3,27},{2 ,2,80},{3 ,3,30},{4 ,26,0},{5 ,3,50},{6 ,10,293},{7 ,4,207},{8 ,3,130},{9 ,10,36},{10 ,4,211},{11 ,12,290},{12 ,10,169},{13 ,7,303},{14 ,15,54},{15 ,10,60},{16 ,11,45},{17 ,16,128},{18 ,13,291},{19 ,7,101},{20 ,9,40},{21 ,16,132},{22 ,13,55},{23 ,10,133},{24 ,4,110},{25 ,7,96},{26 ,4,318},{27 ,8,304},{28 ,19,50},{29 ,18,117},{30 ,13,105},{31 ,22,66},{32 ,14,271},{33 ,11,140},{34 ,15,5},{35 ,12,55},{36 ,15,178},{37 ,23,115},{38 ,10,64},{39 ,7,192},{40 ,17,197},{41 ,9,124},{42 ,24,126},{43 ,18,176},{44 ,9,259},{45 ,10,126}, +{0 ,3,49},{1 ,4,261},{2 ,4,280},{3 ,4,197},{0 ,0,-1},{5 ,12,318},{6 ,11,13},{7 ,7,50},{8 ,12,231},{9 ,11,286},{10 ,7,75},{11 ,16,289},{12 ,11,48},{13 ,20,160},{14 ,16,61},{15 ,13,130},{16 ,20,115},{17 ,17,51},{18 ,18,141},{19 ,8,270},{20 ,11,130},{21 ,20,283},{22 ,17,316},{23 ,18,105},{24 ,11,187},{25 ,14,46},{26 ,15,67},{27 ,49,0},{28 ,21,234},{29 ,25,29},{30 ,24,135},{31 ,25,162},{32 ,24,217},{33 ,21,33},{34 ,17,44},{35 ,22,285},{36 ,18,160},{37 ,59,0},{38 ,12,181},{39 ,19,208},{40 ,62,0},{41 ,18,207},{42 ,64,0},{43 ,25,102},{44 ,22,260},{45 ,67,0}, +{0 ,5,240},{1 ,5,161},{2 ,5,38},{3 ,6,61},{0 ,0,-1},{5 ,16,201},{6 ,13,232},{7 ,8,25},{8 ,16,296},{9 ,13,151},{10 ,8,161},{11 ,21,177},{12 ,13,105},{13 ,23,37},{14 ,17,179},{15 ,18,184},{16 ,22,300},{17 ,21,228},{18 ,19,295},{19 ,10,41},{20 ,22,10},{21 ,21,103},{22 ,44,0},{23 ,45,0},{24 ,22,281},{25 ,47,0},{26 ,48,0},{0 ,0,-1},{28 ,50,0},{29 ,51,0},{30 ,52,0},{31 ,53,0},{32 ,54,0},{33 ,55,0},{34 ,56,0},{35 ,57,0},{36 ,58,0},{0 ,0,-1},{38 ,60,0},{39 ,61,0},{0 ,0,-1},{41 ,63,0},{0 ,0,-1},{43 ,65,0},{44 ,66,0},{0 ,0,-1}, +{0 ,6,39},{1 ,7,133},{2 ,6,227},{3 ,7,175},{0 ,0,-1},{5 ,21,267},{6 ,17,302},{7 ,14,76},{8 ,19,110},{9 ,17,267},{10 ,14,311},{11 ,22,43},{12 ,18,52},{13 ,35,0},{14 ,21,258},{15 ,25,51},{16 ,38,0},{17 ,39,0},{18 ,40,0},{19 ,41,0},{20 ,42,0},{21 ,43,0},{0 ,0,-1},{0 ,0,-1},{24 ,46,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,9,15},{1 ,8,4},{2 ,7,202},{3 ,8,79},{0 ,0,-1},{5 ,22,279},{6 ,18,138},{7 ,29,0},{8 ,21,269},{9 ,18,135},{10 ,32,0},{11 ,23,280},{12 ,34,0},{0 ,0,-1},{14 ,36,0},{15 ,37,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,10,162},{1 ,9,80},{2 ,8,200},{3 ,10,281},{0 ,0,-1},{5 ,27,0},{6 ,20,235},{0 ,0,-1},{8 ,22,245},{9 ,20,209},{0 ,0,-1},{11 ,33,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,11,215},{1 ,11,129},{2 ,9,71},{3 ,11,303},{0 ,0,-1},{0 ,0,-1},{6 ,28,0},{0 ,0,-1},{8 ,24,154},{9 ,31,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,12,164},{1 ,12,300},{2 ,10,106},{3 ,12,253},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{8 ,30,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,13,133},{1 ,14,76},{2 ,13,295},{3 ,13,164},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,15,298},{1 ,15,266},{2 ,14,283},{3 ,14,53},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,16,110},{1 ,16,72},{2 ,15,301},{3 ,16,44},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,18,113},{1 ,17,83},{2 ,17,184},{3 ,17,28},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,19,16},{1 ,19,260},{2 ,18,246},{3 ,18,77},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,20,189},{1 ,21,301},{2 ,19,230},{3 ,20,319},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,21,32},{1 ,22,0},{2 ,20,276},{3 ,21,68},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,22,1},{1 ,23,0},{2 ,24,0},{3 ,22,1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,23,0},{1 ,24,0},{2 ,25,0},{3 ,25,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1} +}; + + +h_element host_h_compact2_I2 [68*30] = +{{0 ,0,73},{0 ,1,15},{0 ,2,103},{0 ,3,49},{1 ,4,261},{0 ,5,240},{0 ,6,39},{1 ,7,133},{1 ,8,4},{0 ,9,15},{0 ,10,162},{0 ,11,215},{0 ,12,164},{0 ,13,133},{1 ,14,76},{0 ,15,298},{0 ,16,110},{1 ,17,83},{0 ,18,113},{0 ,19,16},{0 ,20,189},{0 ,21,32},{0 ,22,1},{0 ,23,0},{1 ,24,0},{2 ,25,0},{4 ,26,0},{5 ,27,0},{6 ,28,0},{7 ,29,0},{8 ,30,0},{9 ,31,0},{10 ,32,0},{11 ,33,0},{12 ,34,0},{13 ,35,0},{14 ,36,0},{15 ,37,0},{16 ,38,0},{17 ,39,0},{18 ,40,0},{19 ,41,0},{20 ,42,0},{21 ,43,0},{22 ,44,0},{23 ,45,0},{24 ,46,0},{25 ,47,0},{26 ,48,0},{27 ,49,0},{28 ,50,0},{29 ,51,0},{30 ,52,0},{31 ,53,0},{32 ,54,0},{33 ,55,0},{34 ,56,0},{35 ,57,0},{36 ,58,0},{37 ,59,0},{38 ,60,0},{39 ,61,0},{40 ,62,0},{41 ,63,0},{42 ,64,0},{43 ,65,0},{44 ,66,0},{45 ,67,0}, +{1 ,0,303},{2 ,1,7},{1 ,2,294},{1 ,3,27},{2 ,4,280},{1 ,5,161},{2 ,6,227},{2 ,7,202},{2 ,8,200},{1 ,9,80},{2 ,10,106},{1 ,11,129},{1 ,12,300},{2 ,13,295},{2 ,14,283},{1 ,15,266},{1 ,16,72},{2 ,17,184},{2 ,18,246},{1 ,19,260},{2 ,20,276},{1 ,21,301},{1 ,22,0},{1 ,23,0},{2 ,24,0},{3 ,25,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{2 ,0,68},{3 ,1,208},{2 ,2,80},{3 ,3,30},{3 ,4,197},{2 ,5,38},{3 ,6,61},{3 ,7,175},{3 ,8,79},{2 ,9,71},{3 ,10,281},{3 ,11,303},{3 ,12,253},{3 ,13,164},{3 ,14,53},{2 ,15,301},{3 ,16,44},{3 ,17,28},{3 ,18,77},{2 ,19,230},{3 ,20,319},{3 ,21,68},{3 ,22,1},{11 ,23,280},{8 ,24,154},{15 ,25,51},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{3 ,0,220},{4 ,1,205},{10 ,2,80},{5 ,3,50},{7 ,4,207},{21 ,5,175},{6 ,6,21},{7 ,7,50},{7 ,8,25},{20 ,9,40},{6 ,10,293},{6 ,11,13},{5 ,12,318},{6 ,13,232},{7 ,14,76},{14 ,15,54},{5 ,16,201},{6 ,17,302},{6 ,18,138},{8 ,19,110},{6 ,20,235},{5 ,21,267},{5 ,22,279},{13 ,23,37},{30 ,24,135},{29 ,25,29},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{4 ,0,233},{5 ,1,292},{23 ,2,50},{8 ,3,130},{10 ,4,211},{0 ,0,-1},{25 ,6,295},{10 ,7,75},{10 ,8,161},{38 ,9,179},{9 ,10,36},{9 ,11,286},{8 ,12,231},{9 ,13,151},{10 ,14,311},{26 ,15,67},{8 ,16,296},{9 ,17,267},{9 ,18,135},{18 ,19,295},{9 ,20,209},{8 ,21,269},{8 ,22,245},{37 ,23,115},{32 ,24,217},{31 ,25,162},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{5 ,0,83},{7 ,1,88},{26 ,2,110},{13 ,3,302},{24 ,4,110},{0 ,0,-1},{27 ,6,29},{13 ,7,303},{19 ,8,270},{41 ,9,124},{12 ,10,169},{12 ,11,48},{11 ,12,290},{12 ,13,105},{17 ,14,147},{34 ,15,5},{11 ,16,289},{14 ,17,179},{12 ,18,52},{28 ,19,50},{13 ,20,160},{11 ,21,177},{11 ,22,43},{0 ,0,-1},{42 ,24,126},{43 ,25,102},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{6 ,0,289},{8 ,1,133},{33 ,2,20},{16 ,3,140},{26 ,4,318},{0 ,0,-1},{35 ,6,158},{19 ,7,101},{27 ,8,304},{44 ,9,259},{15 ,10,60},{16 ,11,45},{14 ,12,299},{15 ,13,130},{25 ,14,46},{36 ,15,178},{14 ,16,61},{17 ,17,51},{15 ,18,184},{39 ,19,208},{16 ,20,115},{14 ,21,258},{16 ,22,300},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{7 ,0,12},{9 ,1,244},{0 ,0,-1},{20 ,3,162},{28 ,4,293},{0 ,0,-1},{45 ,6,228},{25 ,7,96},{40 ,8,80},{0 ,0,-1},{19 ,10,41},{20 ,11,130},{18 ,12,294},{18 ,13,291},{29 ,14,308},{0 ,0,-1},{17 ,16,128},{22 ,17,316},{18 ,18,141},{0 ,0,-1},{21 ,20,283},{17 ,21,228},{20 ,22,10},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{8 ,0,295},{10 ,1,14},{0 ,0,-1},{24 ,3,280},{42 ,4,65},{0 ,0,-1},{0 ,0,-1},{31 ,7,308},{0 ,0,-1},{0 ,0,-1},{23 ,10,133},{24 ,11,187},{22 ,12,20},{22 ,13,55},{32 ,14,271},{0 ,0,-1},{21 ,16,132},{34 ,17,44},{23 ,18,105},{0 ,0,-1},{0 ,0,-1},{21 ,21,103},{24 ,22,281},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{9 ,0,189},{11 ,1,147},{0 ,0,-1},{39 ,3,77},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{34 ,7,296},{0 ,0,-1},{0 ,0,-1},{30 ,10,23},{33 ,11,140},{32 ,12,22},{30 ,13,105},{36 ,14,179},{0 ,0,-1},{43 ,16,69},{40 ,17,197},{29 ,18,117},{0 ,0,-1},{0 ,0,-1},{28 ,21,234},{31 ,22,66},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{11 ,0,16},{12 ,1,235},{0 ,0,-1},{41 ,3,47},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{39 ,7,192},{0 ,0,-1},{0 ,0,-1},{38 ,10,64},{0 ,0,-1},{35 ,12,55},{37 ,13,15},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{36 ,18,160},{0 ,0,-1},{0 ,0,-1},{33 ,21,33},{35 ,22,285},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{12 ,0,229},{15 ,1,290},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{44 ,7,227},{0 ,0,-1},{0 ,0,-1},{45 ,10,126},{0 ,0,-1},{38 ,12,181},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{41 ,18,207},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{44 ,22,260},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{13 ,0,39},{16 ,1,69},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{43 ,18,176},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{14 ,0,78},{18 ,1,260},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{15 ,0,229},{19 ,1,181},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{17 ,0,257},{21 ,1,79},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{19 ,0,64},{23 ,1,249},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{20 ,0,301},{25 ,1,172},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{22 ,0,177},{27 ,1,210},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{24 ,0,289},{29 ,1,27},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{26 ,0,270},{31 ,1,222},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{28 ,0,11},{33 ,1,170},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{30 ,0,91},{35 ,1,207},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{32 ,0,210},{37 ,1,298},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{34 ,0,187},{39 ,1,102},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{36 ,0,259},{41 ,1,154},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{38 ,0,151},{43 ,1,228},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{40 ,0,32},{45 ,1,101},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{42 ,0,226},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{44 ,0,234},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1} +}; + +//--------------------------------------------------BG1_I2----------------------------------------------------------------- + + +//--------------------------------------------------BG1_I3----------------------------------------------------------------- + +h_element host_h_compact1_I3 [46*19] = +{{0 ,0,223},{1 ,0,141},{2 ,0,207},{3 ,0,201},{4 ,0,170},{5 ,0,164},{6 ,0,158},{7 ,0,17},{8 ,0,33},{9 ,0,9},{10 ,1,82},{11 ,0,52},{12 ,0,142},{13 ,0,81},{14 ,0,14},{15 ,0,90},{16 ,1,154},{17 ,0,56},{18 ,1,199},{19 ,0,8},{20 ,0,105},{21 ,1,192},{22 ,0,53},{23 ,1,88},{24 ,0,49},{25 ,1,1},{26 ,0,107},{27 ,1,208},{28 ,0,146},{29 ,1,150},{30 ,0,34},{31 ,1,175},{32 ,0,192},{33 ,1,114},{34 ,0,82},{35 ,1,192},{36 ,0,222},{37 ,1,81},{38 ,0,123},{39 ,1,12},{40 ,0,67},{41 ,1,23},{42 ,0,114},{43 ,1,206},{44 ,0,84},{45 ,1,184}, +{0 ,1,16},{1 ,2,45},{2 ,1,203},{3 ,1,18},{4 ,1,10},{5 ,1,59},{6 ,6,119},{7 ,1,76},{8 ,1,95},{9 ,1,37},{10 ,2,165},{11 ,1,11},{12 ,1,175},{13 ,3,56},{14 ,12,175},{15 ,1,120},{16 ,3,164},{17 ,14,110},{18 ,12,110},{19 ,1,6},{20 ,3,210},{21 ,5,131},{22 ,12,0},{23 ,2,203},{24 ,3,157},{25 ,6,166},{26 ,2,176},{27 ,6,141},{28 ,4,153},{29 ,14,11},{30 ,10,130},{31 ,7,49},{32 ,12,209},{33 ,2,49},{34 ,7,186},{35 ,6,173},{36 ,14,157},{37 ,13,195},{38 ,9,90},{39 ,3,77},{40 ,8,45},{41 ,3,215},{42 ,4,91},{43 ,16,22},{44 ,7,4},{45 ,6,121}, +{0 ,2,94},{1 ,3,151},{2 ,2,31},{3 ,3,165},{4 ,26,0},{5 ,3,86},{6 ,10,113},{7 ,4,104},{8 ,3,4},{9 ,10,213},{10 ,4,174},{11 ,12,2},{12 ,10,136},{13 ,7,72},{14 ,15,211},{15 ,10,131},{16 ,11,43},{17 ,16,200},{18 ,13,200},{19 ,7,103},{20 ,9,121},{21 ,16,220},{22 ,13,3},{23 ,10,168},{24 ,4,64},{25 ,7,65},{26 ,4,212},{27 ,8,174},{28 ,19,217},{29 ,18,53},{30 ,13,210},{31 ,22,177},{32 ,14,58},{33 ,11,161},{34 ,15,68},{35 ,12,26},{36 ,15,0},{37 ,23,138},{38 ,10,73},{39 ,7,49},{40 ,17,96},{41 ,9,60},{42 ,24,78},{43 ,18,134},{44 ,9,9},{45 ,10,29}, +{0 ,3,91},{1 ,4,46},{2 ,4,176},{3 ,4,5},{0 ,0,-1},{5 ,12,80},{6 ,11,21},{7 ,7,100},{8 ,12,217},{9 ,11,105},{10 ,7,19},{11 ,16,35},{12 ,11,3},{13 ,20,217},{14 ,16,191},{15 ,13,209},{16 ,20,189},{17 ,17,63},{18 ,18,143},{19 ,8,198},{20 ,11,214},{21 ,20,50},{22 ,17,148},{23 ,18,122},{24 ,11,193},{25 ,14,81},{26 ,15,127},{27 ,49,0},{28 ,21,114},{29 ,25,68},{30 ,24,123},{31 ,25,128},{32 ,24,30},{33 ,21,137},{34 ,17,150},{35 ,22,187},{36 ,18,6},{37 ,59,0},{38 ,12,10},{39 ,19,114},{40 ,62,0},{41 ,18,167},{42 ,64,0},{43 ,25,161},{44 ,22,12},{45 ,67,0}, +{0 ,5,74},{1 ,5,119},{2 ,5,180},{3 ,6,45},{0 ,0,-1},{5 ,16,182},{6 ,13,63},{7 ,8,150},{8 ,16,204},{9 ,13,89},{10 ,8,194},{11 ,21,32},{12 ,13,28},{13 ,23,78},{14 ,17,51},{15 ,18,209},{16 ,22,101},{17 ,21,4},{18 ,19,186},{19 ,10,8},{20 ,22,183},{21 ,21,106},{22 ,44,0},{23 ,45,0},{24 ,22,124},{25 ,47,0},{26 ,48,0},{0 ,0,-1},{28 ,50,0},{29 ,51,0},{30 ,52,0},{31 ,53,0},{32 ,54,0},{33 ,55,0},{34 ,56,0},{35 ,57,0},{36 ,58,0},{0 ,0,-1},{38 ,60,0},{39 ,61,0},{0 ,0,-1},{41 ,63,0},{0 ,0,-1},{43 ,65,0},{44 ,66,0},{0 ,0,-1}, +{0 ,6,10},{1 ,7,157},{2 ,6,186},{3 ,7,142},{0 ,0,-1},{5 ,21,130},{6 ,17,51},{7 ,14,158},{8 ,19,39},{9 ,17,185},{10 ,14,103},{11 ,22,84},{12 ,18,182},{13 ,35,0},{14 ,21,43},{15 ,25,81},{16 ,38,0},{17 ,39,0},{18 ,40,0},{19 ,41,0},{20 ,42,0},{21 ,43,0},{0 ,0,-1},{0 ,0,-1},{24 ,46,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,9,0},{1 ,8,133},{2 ,7,95},{3 ,8,16},{0 ,0,-1},{5 ,22,153},{6 ,18,136},{7 ,29,0},{8 ,21,58},{9 ,18,109},{10 ,32,0},{11 ,23,201},{12 ,34,0},{0 ,0,-1},{14 ,36,0},{15 ,37,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,10,205},{1 ,9,87},{2 ,8,153},{3 ,10,34},{0 ,0,-1},{5 ,27,0},{6 ,20,116},{0 ,0,-1},{8 ,22,44},{9 ,20,218},{0 ,0,-1},{11 ,33,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,11,216},{1 ,11,206},{2 ,9,177},{3 ,11,155},{0 ,0,-1},{0 ,0,-1},{6 ,28,0},{0 ,0,-1},{8 ,24,201},{9 ,31,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,12,21},{1 ,12,93},{2 ,10,70},{3 ,12,213},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{8 ,30,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,13,215},{1 ,14,79},{2 ,13,77},{3 ,13,147},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,15,14},{1 ,15,9},{2 ,14,214},{3 ,14,69},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,16,70},{1 ,16,118},{2 ,15,77},{3 ,16,96},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,18,141},{1 ,17,194},{2 ,17,198},{3 ,17,74},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,19,198},{1 ,19,31},{2 ,18,117},{3 ,18,99},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,20,104},{1 ,21,187},{2 ,19,223},{3 ,20,30},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,21,81},{1 ,22,0},{2 ,20,90},{3 ,21,158},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,22,1},{1 ,23,0},{2 ,24,0},{3 ,22,1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,23,0},{1 ,24,0},{2 ,25,0},{3 ,25,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +}; + +h_element host_h_compact2_I3 [68*30] = +{{0 ,0,223},{0 ,1,16},{0 ,2,94},{0 ,3,91},{1 ,4,46},{0 ,5,74},{0 ,6,10},{1 ,7,157},{1 ,8,133},{0 ,9,0},{0 ,10,205},{0 ,11,216},{0 ,12,21},{0 ,13,215},{1 ,14,79},{0 ,15,14},{0 ,16,70},{1 ,17,194},{0 ,18,141},{0 ,19,198},{0 ,20,104},{0 ,21,81},{0 ,22,1},{0 ,23,0},{1 ,24,0},{2 ,25,0},{4 ,26,0},{5 ,27,0},{6 ,28,0},{7 ,29,0},{8 ,30,0},{9 ,31,0},{10 ,32,0},{11 ,33,0},{12 ,34,0},{13 ,35,0},{14 ,36,0},{15 ,37,0},{16 ,38,0},{17 ,39,0},{18 ,40,0},{19 ,41,0},{20 ,42,0},{21 ,43,0},{22 ,44,0},{23 ,45,0},{24 ,46,0},{25 ,47,0},{26 ,48,0},{27 ,49,0},{28 ,50,0},{29 ,51,0},{30 ,52,0},{31 ,53,0},{32 ,54,0},{33 ,55,0},{34 ,56,0},{35 ,57,0},{36 ,58,0},{37 ,59,0},{38 ,60,0},{39 ,61,0},{40 ,62,0},{41 ,63,0},{42 ,64,0},{43 ,65,0},{44 ,66,0},{45 ,67,0}, +{1 ,0,141},{2 ,1,203},{1 ,2,45},{1 ,3,151},{2 ,4,176},{1 ,5,119},{2 ,6,186},{2 ,7,95},{2 ,8,153},{1 ,9,87},{2 ,10,70},{1 ,11,206},{1 ,12,93},{2 ,13,77},{2 ,14,214},{1 ,15,9},{1 ,16,118},{2 ,17,198},{2 ,18,117},{1 ,19,31},{2 ,20,90},{1 ,21,187},{1 ,22,0},{1 ,23,0},{2 ,24,0},{3 ,25,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{2 ,0,207},{3 ,1,18},{2 ,2,31},{3 ,3,165},{3 ,4,5},{2 ,5,180},{3 ,6,45},{3 ,7,142},{3 ,8,16},{2 ,9,177},{3 ,10,34},{3 ,11,155},{3 ,12,213},{3 ,13,147},{3 ,14,69},{2 ,15,77},{3 ,16,96},{3 ,17,74},{3 ,18,99},{2 ,19,223},{3 ,20,30},{3 ,21,158},{3 ,22,1},{11 ,23,201},{8 ,24,201},{15 ,25,81},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{3 ,0,201},{4 ,1,10},{10 ,2,165},{5 ,3,86},{7 ,4,104},{21 ,5,131},{6 ,6,119},{7 ,7,100},{7 ,8,150},{20 ,9,121},{6 ,10,113},{6 ,11,21},{5 ,12,80},{6 ,13,63},{7 ,14,158},{14 ,15,211},{5 ,16,182},{6 ,17,51},{6 ,18,136},{8 ,19,39},{6 ,20,116},{5 ,21,130},{5 ,22,153},{13 ,23,78},{30 ,24,123},{29 ,25,68},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{4 ,0,170},{5 ,1,59},{23 ,2,203},{8 ,3,4},{10 ,4,174},{0 ,0,-1},{25 ,6,166},{10 ,7,19},{10 ,8,194},{38 ,9,90},{9 ,10,213},{9 ,11,105},{8 ,12,217},{9 ,13,89},{10 ,14,103},{26 ,15,127},{8 ,16,204},{9 ,17,185},{9 ,18,109},{18 ,19,186},{9 ,20,218},{8 ,21,58},{8 ,22,44},{37 ,23,138},{32 ,24,30},{31 ,25,128},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{5 ,0,164},{7 ,1,76},{26 ,2,176},{13 ,3,56},{24 ,4,64},{0 ,0,-1},{27 ,6,141},{13 ,7,72},{19 ,8,198},{41 ,9,60},{12 ,10,136},{12 ,11,3},{11 ,12,2},{12 ,13,28},{17 ,14,110},{34 ,15,68},{11 ,16,35},{14 ,17,51},{12 ,18,182},{28 ,19,217},{13 ,20,217},{11 ,21,32},{11 ,22,84},{0 ,0,-1},{42 ,24,78},{43 ,25,161},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{6 ,0,158},{8 ,1,95},{33 ,2,49},{16 ,3,164},{26 ,4,212},{0 ,0,-1},{35 ,6,173},{19 ,7,103},{27 ,8,174},{44 ,9,9},{15 ,10,131},{16 ,11,43},{14 ,12,175},{15 ,13,209},{25 ,14,81},{36 ,15,0},{14 ,16,191},{17 ,17,63},{15 ,18,209},{39 ,19,114},{16 ,20,189},{14 ,21,43},{16 ,22,101},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{7 ,0,17},{9 ,1,37},{0 ,0,-1},{20 ,3,210},{28 ,4,153},{0 ,0,-1},{45 ,6,121},{25 ,7,65},{40 ,8,45},{0 ,0,-1},{19 ,10,8},{20 ,11,214},{18 ,12,110},{18 ,13,200},{29 ,14,11},{0 ,0,-1},{17 ,16,200},{22 ,17,148},{18 ,18,143},{0 ,0,-1},{21 ,20,50},{17 ,21,4},{20 ,22,183},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{8 ,0,33},{10 ,1,82},{0 ,0,-1},{24 ,3,157},{42 ,4,91},{0 ,0,-1},{0 ,0,-1},{31 ,7,49},{0 ,0,-1},{0 ,0,-1},{23 ,10,168},{24 ,11,193},{22 ,12,0},{22 ,13,3},{32 ,14,58},{0 ,0,-1},{21 ,16,220},{34 ,17,150},{23 ,18,122},{0 ,0,-1},{0 ,0,-1},{21 ,21,106},{24 ,22,124},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{9 ,0,9},{11 ,1,11},{0 ,0,-1},{39 ,3,77},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{34 ,7,186},{0 ,0,-1},{0 ,0,-1},{30 ,10,130},{33 ,11,161},{32 ,12,209},{30 ,13,210},{36 ,14,157},{0 ,0,-1},{43 ,16,22},{40 ,17,96},{29 ,18,53},{0 ,0,-1},{0 ,0,-1},{28 ,21,114},{31 ,22,177},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{11 ,0,52},{12 ,1,175},{0 ,0,-1},{41 ,3,215},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{39 ,7,49},{0 ,0,-1},{0 ,0,-1},{38 ,10,73},{0 ,0,-1},{35 ,12,26},{37 ,13,195},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{36 ,18,6},{0 ,0,-1},{0 ,0,-1},{33 ,21,137},{35 ,22,187},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{12 ,0,142},{15 ,1,120},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{44 ,7,4},{0 ,0,-1},{0 ,0,-1},{45 ,10,29},{0 ,0,-1},{38 ,12,10},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{41 ,18,167},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{44 ,22,12},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{13 ,0,81},{16 ,1,154},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{43 ,18,134},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{14 ,0,14},{18 ,1,199},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{15 ,0,90},{19 ,1,6},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{17 ,0,56},{21 ,1,192},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{19 ,0,8},{23 ,1,88},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{20 ,0,105},{25 ,1,1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{22 ,0,53},{27 ,1,208},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{24 ,0,49},{29 ,1,150},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{26 ,0,107},{31 ,1,175},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{28 ,0,146},{33 ,1,114},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{30 ,0,34},{35 ,1,192},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{32 ,0,192},{37 ,1,81},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{34 ,0,82},{39 ,1,12},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{36 ,0,222},{41 ,1,23},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{38 ,0,123},{43 ,1,206},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{40 ,0,67},{45 ,1,184},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{42 ,0,114},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{44 ,0,84},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1} +}; + + +//--------------------------------------------------BG1_I3----------------------------------------------------------------- + + +//--------------------------------------------------BG1_I4----------------------------------------------------------------- +h_element host_h_compact1_I4 [46*19] = +{{0 ,0,211},{1 ,0,179},{2 ,0,258},{3 ,0,187},{4 ,0,246},{5 ,0,261},{6 ,0,80},{7 ,0,169},{8 ,0,54},{9 ,0,162},{10 ,1,178},{11 ,0,55},{12 ,0,225},{13 ,0,231},{14 ,0,0},{15 ,0,170},{16 ,1,270},{17 ,0,153},{18 ,1,161},{19 ,0,0},{20 ,0,265},{21 ,1,64},{22 ,0,72},{23 ,1,180},{24 ,0,236},{25 ,1,205},{26 ,0,0},{27 ,1,45},{28 ,0,275},{29 ,1,0},{30 ,0,0},{31 ,1,144},{32 ,0,0},{33 ,1,0},{34 ,0,197},{35 ,1,199},{36 ,0,216},{37 ,1,72},{38 ,0,190},{39 ,1,153},{40 ,0,216},{41 ,1,0},{42 ,0,27},{43 ,1,52},{44 ,0,18},{45 ,1,168}, +{0 ,1,198},{1 ,2,162},{2 ,1,167},{3 ,1,145},{4 ,1,235},{5 ,1,181},{6 ,6,144},{7 ,1,189},{8 ,1,0},{9 ,1,159},{10 ,2,1},{11 ,1,23},{12 ,1,162},{13 ,3,0},{14 ,12,186},{15 ,1,0},{16 ,3,13},{17 ,14,137},{18 ,12,151},{19 ,1,0},{20 ,3,81},{21 ,5,46},{22 ,12,189},{23 ,2,0},{24 ,3,199},{25 ,6,0},{26 ,2,0},{27 ,6,36},{28 ,4,0},{29 ,14,180},{30 ,10,90},{31 ,7,144},{32 ,12,211},{33 ,2,0},{34 ,7,0},{35 ,6,278},{36 ,14,16},{37 ,13,144},{38 ,9,0},{39 ,3,0},{40 ,8,144},{41 ,3,0},{42 ,4,0},{43 ,16,243},{44 ,7,0},{45 ,6,0}, +{0 ,2,188},{1 ,3,223},{2 ,2,220},{3 ,3,166},{4 ,26,0},{5 ,3,72},{6 ,10,169},{7 ,4,154},{8 ,3,252},{9 ,10,93},{10 ,4,28},{11 ,12,274},{12 ,10,244},{13 ,7,216},{14 ,15,253},{15 ,10,183},{16 ,11,99},{17 ,16,0},{18 ,13,0},{19 ,7,118},{20 ,9,90},{21 ,16,266},{22 ,13,72},{23 ,10,0},{24 ,4,0},{25 ,7,0},{26 ,4,0},{27 ,8,72},{28 ,19,155},{29 ,18,0},{30 ,13,252},{31 ,22,166},{32 ,14,36},{33 ,11,76},{34 ,15,108},{35 ,12,0},{36 ,15,0},{37 ,23,0},{38 ,10,0},{39 ,7,165},{40 ,17,2},{41 ,9,0},{42 ,24,35},{43 ,18,0},{44 ,9,0},{45 ,10,144}, +{0 ,3,186},{1 ,4,256},{2 ,4,133},{3 ,4,108},{0 ,0,-1},{5 ,12,283},{6 ,11,90},{7 ,7,184},{8 ,12,41},{9 ,11,134},{10 ,7,267},{11 ,16,181},{12 ,11,151},{13 ,20,47},{14 ,16,16},{15 ,13,108},{16 ,20,54},{17 ,17,0},{18 ,18,241},{19 ,8,144},{20 ,11,144},{21 ,20,9},{22 ,17,257},{23 ,18,165},{24 ,11,266},{25 ,14,183},{26 ,15,277},{27 ,49,0},{28 ,21,62},{29 ,25,42},{30 ,24,173},{31 ,25,19},{32 ,24,162},{33 ,21,18},{34 ,17,0},{35 ,22,205},{36 ,18,0},{37 ,59,0},{38 ,12,0},{39 ,19,117},{40 ,62,0},{41 ,18,183},{42 ,64,0},{43 ,25,270},{44 ,22,57},{45 ,67,0}, +{0 ,5,219},{1 ,5,160},{2 ,5,243},{3 ,6,82},{0 ,0,-1},{5 ,16,254},{6 ,13,59},{7 ,8,104},{8 ,16,98},{9 ,13,45},{10 ,8,234},{11 ,21,273},{12 ,13,238},{13 ,23,36},{14 ,17,0},{15 ,18,68},{16 ,22,0},{17 ,21,162},{18 ,19,144},{19 ,10,0},{20 ,22,228},{21 ,21,18},{22 ,44,0},{23 ,45,0},{24 ,22,0},{25 ,47,0},{26 ,48,0},{0 ,0,-1},{28 ,50,0},{29 ,51,0},{30 ,52,0},{31 ,53,0},{32 ,54,0},{33 ,55,0},{34 ,56,0},{35 ,57,0},{36 ,58,0},{0 ,0,-1},{38 ,60,0},{39 ,61,0},{0 ,0,-1},{41 ,63,0},{0 ,0,-1},{43 ,65,0},{44 ,66,0},{0 ,0,-1}, +{0 ,6,4},{1 ,7,76},{2 ,6,202},{3 ,7,132},{0 ,0,-1},{5 ,21,79},{6 ,17,177},{7 ,14,164},{8 ,19,46},{9 ,17,132},{10 ,14,201},{11 ,22,39},{12 ,18,243},{13 ,35,0},{14 ,21,79},{15 ,25,64},{16 ,38,0},{17 ,39,0},{18 ,40,0},{19 ,41,0},{20 ,42,0},{21 ,43,0},{0 ,0,-1},{0 ,0,-1},{24 ,46,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,9,29},{1 ,8,202},{2 ,7,218},{3 ,8,197},{0 ,0,-1},{5 ,22,144},{6 ,18,151},{7 ,29,0},{8 ,21,15},{9 ,18,76},{10 ,32,0},{11 ,23,26},{12 ,34,0},{0 ,0,-1},{14 ,36,0},{15 ,37,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,10,144},{1 ,9,117},{2 ,8,63},{3 ,10,41},{0 ,0,-1},{5 ,27,0},{6 ,20,108},{0 ,0,-1},{8 ,22,230},{9 ,20,209},{0 ,0,-1},{11 ,33,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,11,116},{1 ,11,109},{2 ,9,0},{3 ,11,162},{0 ,0,-1},{0 ,0,-1},{6 ,28,0},{0 ,0,-1},{8 ,24,54},{9 ,31,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,12,216},{1 ,12,15},{2 ,10,3},{3 ,12,57},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{8 ,30,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,13,115},{1 ,14,72},{2 ,13,74},{3 ,13,36},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,15,233},{1 ,15,152},{2 ,14,229},{3 ,14,115},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,16,144},{1 ,16,158},{2 ,15,0},{3 ,16,242},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,18,95},{1 ,17,147},{2 ,17,216},{3 ,17,165},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,19,216},{1 ,19,156},{2 ,18,269},{3 ,18,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,20,73},{1 ,21,119},{2 ,19,200},{3 ,20,113},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,21,261},{1 ,22,0},{2 ,20,234},{3 ,21,108},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,22,1},{1 ,23,0},{2 ,24,0},{3 ,22,1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,23,0},{1 ,24,0},{2 ,25,0},{3 ,25,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +}; + + +h_element host_h_compact2_I4 [68*30] = +{{0 ,0,211},{0 ,1,198},{0 ,2,188},{0 ,3,186},{1 ,4,256},{0 ,5,219},{0 ,6,4},{1 ,7,76},{1 ,8,202},{0 ,9,29},{0 ,10,144},{0 ,11,116},{0 ,12,216},{0 ,13,115},{1 ,14,72},{0 ,15,233},{0 ,16,144},{1 ,17,147},{0 ,18,95},{0 ,19,216},{0 ,20,73},{0 ,21,261},{0 ,22,1},{0 ,23,0},{1 ,24,0},{2 ,25,0},{4 ,26,0},{5 ,27,0},{6 ,28,0},{7 ,29,0},{8 ,30,0},{9 ,31,0},{10 ,32,0},{11 ,33,0},{12 ,34,0},{13 ,35,0},{14 ,36,0},{15 ,37,0},{16 ,38,0},{17 ,39,0},{18 ,40,0},{19 ,41,0},{20 ,42,0},{21 ,43,0},{22 ,44,0},{23 ,45,0},{24 ,46,0},{25 ,47,0},{26 ,48,0},{27 ,49,0},{28 ,50,0},{29 ,51,0},{30 ,52,0},{31 ,53,0},{32 ,54,0},{33 ,55,0},{34 ,56,0},{35 ,57,0},{36 ,58,0},{37 ,59,0},{38 ,60,0},{39 ,61,0},{40 ,62,0},{41 ,63,0},{42 ,64,0},{43 ,65,0},{44 ,66,0},{45 ,67,0}, +{1 ,0,179},{2 ,1,167},{1 ,2,162},{1 ,3,223},{2 ,4,133},{1 ,5,160},{2 ,6,202},{2 ,7,218},{2 ,8,63},{1 ,9,117},{2 ,10,3},{1 ,11,109},{1 ,12,15},{2 ,13,74},{2 ,14,229},{1 ,15,152},{1 ,16,158},{2 ,17,216},{2 ,18,269},{1 ,19,156},{2 ,20,234},{1 ,21,119},{1 ,22,0},{1 ,23,0},{2 ,24,0},{3 ,25,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{2 ,0,258},{3 ,1,145},{2 ,2,220},{3 ,3,166},{3 ,4,108},{2 ,5,243},{3 ,6,82},{3 ,7,132},{3 ,8,197},{2 ,9,0},{3 ,10,41},{3 ,11,162},{3 ,12,57},{3 ,13,36},{3 ,14,115},{2 ,15,0},{3 ,16,242},{3 ,17,165},{3 ,18,0},{2 ,19,200},{3 ,20,113},{3 ,21,108},{3 ,22,1},{11 ,23,26},{8 ,24,54},{15 ,25,64},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{3 ,0,187},{4 ,1,235},{10 ,2,1},{5 ,3,72},{7 ,4,154},{21 ,5,46},{6 ,6,144},{7 ,7,184},{7 ,8,104},{20 ,9,90},{6 ,10,169},{6 ,11,90},{5 ,12,283},{6 ,13,59},{7 ,14,164},{14 ,15,253},{5 ,16,254},{6 ,17,177},{6 ,18,151},{8 ,19,46},{6 ,20,108},{5 ,21,79},{5 ,22,144},{13 ,23,36},{30 ,24,173},{29 ,25,42},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{4 ,0,246},{5 ,1,181},{23 ,2,0},{8 ,3,252},{10 ,4,28},{0 ,0,-1},{25 ,6,0},{10 ,7,267},{10 ,8,234},{38 ,9,0},{9 ,10,93},{9 ,11,134},{8 ,12,41},{9 ,13,45},{10 ,14,201},{26 ,15,277},{8 ,16,98},{9 ,17,132},{9 ,18,76},{18 ,19,144},{9 ,20,209},{8 ,21,15},{8 ,22,230},{37 ,23,0},{32 ,24,162},{31 ,25,19},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{5 ,0,261},{7 ,1,189},{26 ,2,0},{13 ,3,0},{24 ,4,0},{0 ,0,-1},{27 ,6,36},{13 ,7,216},{19 ,8,144},{41 ,9,0},{12 ,10,244},{12 ,11,151},{11 ,12,274},{12 ,13,238},{17 ,14,137},{34 ,15,108},{11 ,16,181},{14 ,17,0},{12 ,18,243},{28 ,19,155},{13 ,20,47},{11 ,21,273},{11 ,22,39},{0 ,0,-1},{42 ,24,35},{43 ,25,270},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{6 ,0,80},{8 ,1,0},{33 ,2,0},{16 ,3,13},{26 ,4,0},{0 ,0,-1},{35 ,6,278},{19 ,7,118},{27 ,8,72},{44 ,9,0},{15 ,10,183},{16 ,11,99},{14 ,12,186},{15 ,13,108},{25 ,14,183},{36 ,15,0},{14 ,16,16},{17 ,17,0},{15 ,18,68},{39 ,19,117},{16 ,20,54},{14 ,21,79},{16 ,22,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{7 ,0,169},{9 ,1,159},{0 ,0,-1},{20 ,3,81},{28 ,4,0},{0 ,0,-1},{45 ,6,0},{25 ,7,0},{40 ,8,144},{0 ,0,-1},{19 ,10,0},{20 ,11,144},{18 ,12,151},{18 ,13,0},{29 ,14,180},{0 ,0,-1},{17 ,16,0},{22 ,17,257},{18 ,18,241},{0 ,0,-1},{21 ,20,9},{17 ,21,162},{20 ,22,228},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{8 ,0,54},{10 ,1,178},{0 ,0,-1},{24 ,3,199},{42 ,4,0},{0 ,0,-1},{0 ,0,-1},{31 ,7,144},{0 ,0,-1},{0 ,0,-1},{23 ,10,0},{24 ,11,266},{22 ,12,189},{22 ,13,72},{32 ,14,36},{0 ,0,-1},{21 ,16,266},{34 ,17,0},{23 ,18,165},{0 ,0,-1},{0 ,0,-1},{21 ,21,18},{24 ,22,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{9 ,0,162},{11 ,1,23},{0 ,0,-1},{39 ,3,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{34 ,7,0},{0 ,0,-1},{0 ,0,-1},{30 ,10,90},{33 ,11,76},{32 ,12,211},{30 ,13,252},{36 ,14,16},{0 ,0,-1},{43 ,16,243},{40 ,17,2},{29 ,18,0},{0 ,0,-1},{0 ,0,-1},{28 ,21,62},{31 ,22,166},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{11 ,0,55},{12 ,1,162},{0 ,0,-1},{41 ,3,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{39 ,7,165},{0 ,0,-1},{0 ,0,-1},{38 ,10,0},{0 ,0,-1},{35 ,12,0},{37 ,13,144},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{36 ,18,0},{0 ,0,-1},{0 ,0,-1},{33 ,21,18},{35 ,22,205},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{12 ,0,225},{15 ,1,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{44 ,7,0},{0 ,0,-1},{0 ,0,-1},{45 ,10,144},{0 ,0,-1},{38 ,12,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{41 ,18,183},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{44 ,22,57},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{13 ,0,231},{16 ,1,270},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{43 ,18,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{14 ,0,0},{18 ,1,161},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{15 ,0,170},{19 ,1,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{17 ,0,153},{21 ,1,64},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{19 ,0,0},{23 ,1,180},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{20 ,0,265},{25 ,1,205},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{22 ,0,72},{27 ,1,45},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{24 ,0,236},{29 ,1,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{26 ,0,0},{31 ,1,144},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{28 ,0,275},{33 ,1,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{30 ,0,0},{35 ,1,199},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{32 ,0,0},{37 ,1,72},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{34 ,0,197},{39 ,1,153},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{36 ,0,216},{41 ,1,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{38 ,0,190},{43 ,1,52},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{40 ,0,216},{45 ,1,168},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{42 ,0,27},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{44 ,0,18},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1} +}; + + +//--------------------------------------------------BG1_I4----------------------------------------------------------------- + + +//--------------------------------------------------BG1_I5----------------------------------------------------------------- +h_element host_h_compact1_I5 [46*19] = +{{0 ,0,294},{1 ,0,77},{2 ,0,226},{3 ,0,97},{4 ,0,42},{5 ,0,219},{6 ,0,294},{7 ,0,3},{8 ,0,348},{9 ,0,156},{10 ,1,175},{11 ,0,25},{12 ,0,123},{13 ,0,311},{14 ,0,22},{15 ,0,176},{16 ,1,190},{17 ,0,110},{18 ,1,47},{19 ,0,87},{20 ,0,89},{21 ,1,162},{22 ,0,280},{23 ,1,18},{24 ,0,38},{25 ,1,279},{26 ,0,325},{27 ,1,91},{28 ,0,102},{29 ,1,273},{30 ,0,171},{31 ,1,101},{32 ,0,351},{33 ,1,56},{34 ,0,60},{35 ,1,100},{36 ,0,135},{37 ,1,319},{38 ,0,164},{39 ,1,236},{40 ,0,304},{41 ,1,123},{42 ,0,288},{43 ,1,210},{44 ,0,79},{45 ,1,82}, +{0 ,1,118},{1 ,2,225},{2 ,1,35},{3 ,1,94},{4 ,1,256},{5 ,1,130},{6 ,6,73},{7 ,1,103},{8 ,1,75},{9 ,1,88},{10 ,2,253},{11 ,1,322},{12 ,1,217},{13 ,3,251},{14 ,12,322},{15 ,1,348},{16 ,3,293},{17 ,14,228},{18 ,12,286},{19 ,1,110},{20 ,3,65},{21 ,5,264},{22 ,12,157},{23 ,2,6},{24 ,3,170},{25 ,6,255},{26 ,2,326},{27 ,6,326},{28 ,4,1},{29 ,14,104},{30 ,10,16},{31 ,7,297},{32 ,12,265},{33 ,2,304},{34 ,7,320},{35 ,6,210},{36 ,14,15},{37 ,13,236},{38 ,9,196},{39 ,3,264},{40 ,8,237},{41 ,3,77},{42 ,4,83},{43 ,16,3},{44 ,7,244},{45 ,6,67}, +{0 ,2,167},{1 ,3,96},{2 ,2,213},{3 ,3,49},{4 ,26,0},{5 ,3,251},{6 ,10,330},{7 ,4,224},{8 ,3,22},{9 ,10,293},{10 ,4,27},{11 ,12,200},{12 ,10,142},{13 ,7,265},{14 ,15,277},{15 ,10,15},{16 ,11,332},{17 ,16,247},{18 ,13,246},{19 ,7,147},{20 ,9,155},{21 ,16,346},{22 ,13,236},{23 ,10,181},{24 ,4,249},{25 ,7,111},{26 ,4,226},{27 ,8,268},{28 ,19,40},{29 ,18,243},{30 ,13,95},{31 ,22,279},{32 ,14,338},{33 ,11,141},{34 ,15,112},{35 ,12,195},{36 ,15,35},{37 ,23,85},{38 ,10,209},{39 ,7,37},{40 ,17,135},{41 ,9,25},{42 ,24,17},{43 ,18,53},{44 ,9,293},{45 ,10,235}, +{0 ,3,330},{1 ,4,338},{2 ,4,302},{3 ,4,279},{0 ,0,-1},{5 ,12,322},{6 ,11,99},{7 ,7,297},{8 ,12,312},{9 ,11,111},{10 ,7,231},{11 ,16,351},{12 ,11,110},{13 ,20,94},{14 ,16,156},{15 ,13,81},{16 ,20,331},{17 ,17,116},{18 ,18,181},{19 ,8,258},{20 ,11,244},{21 ,20,143},{22 ,17,113},{23 ,18,304},{24 ,11,288},{25 ,14,54},{26 ,15,99},{27 ,49,0},{28 ,21,167},{29 ,25,107},{30 ,24,212},{31 ,25,222},{32 ,24,83},{33 ,21,101},{34 ,17,54},{35 ,22,268},{36 ,18,188},{37 ,59,0},{38 ,12,246},{39 ,19,272},{40 ,62,0},{41 ,18,272},{42 ,64,0},{43 ,25,167},{44 ,22,272},{45 ,67,0}, +{0 ,5,207},{1 ,5,268},{2 ,5,111},{3 ,6,139},{0 ,0,-1},{5 ,16,295},{6 ,13,172},{7 ,8,215},{8 ,16,224},{9 ,13,92},{10 ,8,49},{11 ,21,166},{12 ,13,176},{13 ,23,81},{14 ,17,66},{15 ,18,176},{16 ,22,114},{17 ,21,190},{18 ,19,73},{19 ,10,204},{20 ,22,30},{21 ,21,109},{22 ,44,0},{23 ,45,0},{24 ,22,194},{25 ,47,0},{26 ,48,0},{0 ,0,-1},{28 ,50,0},{29 ,51,0},{30 ,52,0},{31 ,53,0},{32 ,54,0},{33 ,55,0},{34 ,56,0},{35 ,57,0},{36 ,58,0},{0 ,0,-1},{38 ,60,0},{39 ,61,0},{0 ,0,-1},{41 ,63,0},{0 ,0,-1},{43 ,65,0},{44 ,66,0},{0 ,0,-1}, +{0 ,6,165},{1 ,7,112},{2 ,6,265},{3 ,7,166},{0 ,0,-1},{5 ,21,258},{6 ,17,150},{7 ,14,39},{8 ,19,17},{9 ,17,152},{10 ,14,267},{11 ,22,338},{12 ,18,76},{13 ,35,0},{14 ,21,78},{15 ,25,113},{16 ,38,0},{17 ,39,0},{18 ,40,0},{19 ,41,0},{20 ,42,0},{21 ,43,0},{0 ,0,-1},{0 ,0,-1},{24 ,46,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,9,243},{1 ,8,302},{2 ,7,128},{3 ,8,91},{0 ,0,-1},{5 ,22,283},{6 ,18,284},{7 ,29,0},{8 ,21,59},{9 ,18,23},{10 ,32,0},{11 ,23,192},{12 ,34,0},{0 ,0,-1},{14 ,36,0},{15 ,37,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,10,250},{1 ,9,50},{2 ,8,237},{3 ,10,106},{0 ,0,-1},{5 ,27,0},{6 ,20,305},{0 ,0,-1},{8 ,22,314},{9 ,20,337},{0 ,0,-1},{11 ,33,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,11,1},{1 ,11,167},{2 ,9,294},{3 ,11,246},{0 ,0,-1},{0 ,0,-1},{6 ,28,0},{0 ,0,-1},{8 ,24,244},{9 ,31,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,12,339},{1 ,12,253},{2 ,10,127},{3 ,12,345},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{8 ,30,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,13,201},{1 ,14,334},{2 ,13,110},{3 ,13,269},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,15,53},{1 ,15,242},{2 ,14,286},{3 ,14,185},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,16,347},{1 ,16,257},{2 ,15,125},{3 ,16,249},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,18,304},{1 ,17,133},{2 ,17,131},{3 ,17,215},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,19,167},{1 ,19,9},{2 ,18,163},{3 ,18,143},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,20,47},{1 ,21,302},{2 ,19,210},{3 ,20,121},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,21,188},{1 ,22,0},{2 ,20,7},{3 ,21,121},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,22,1},{1 ,23,0},{2 ,24,0},{3 ,22,1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,23,0},{1 ,24,0},{2 ,25,0},{3 ,25,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +}; + + +h_element host_h_compact2_I5 [68*30] = +{{0 ,0,294},{0 ,1,118},{0 ,2,167},{0 ,3,330},{1 ,4,338},{0 ,5,207},{0 ,6,165},{1 ,7,112},{1 ,8,302},{0 ,9,243},{0 ,10,250},{0 ,11,1},{0 ,12,339},{0 ,13,201},{1 ,14,334},{0 ,15,53},{0 ,16,347},{1 ,17,133},{0 ,18,304},{0 ,19,167},{0 ,20,47},{0 ,21,188},{0 ,22,1},{0 ,23,0},{1 ,24,0},{2 ,25,0},{4 ,26,0},{5 ,27,0},{6 ,28,0},{7 ,29,0},{8 ,30,0},{9 ,31,0},{10 ,32,0},{11 ,33,0},{12 ,34,0},{13 ,35,0},{14 ,36,0},{15 ,37,0},{16 ,38,0},{17 ,39,0},{18 ,40,0},{19 ,41,0},{20 ,42,0},{21 ,43,0},{22 ,44,0},{23 ,45,0},{24 ,46,0},{25 ,47,0},{26 ,48,0},{27 ,49,0},{28 ,50,0},{29 ,51,0},{30 ,52,0},{31 ,53,0},{32 ,54,0},{33 ,55,0},{34 ,56,0},{35 ,57,0},{36 ,58,0},{37 ,59,0},{38 ,60,0},{39 ,61,0},{40 ,62,0},{41 ,63,0},{42 ,64,0},{43 ,65,0},{44 ,66,0},{45 ,67,0}, +{1 ,0,77},{2 ,1,35},{1 ,2,225},{1 ,3,96},{2 ,4,302},{1 ,5,268},{2 ,6,265},{2 ,7,128},{2 ,8,237},{1 ,9,50},{2 ,10,127},{1 ,11,167},{1 ,12,253},{2 ,13,110},{2 ,14,286},{1 ,15,242},{1 ,16,257},{2 ,17,131},{2 ,18,163},{1 ,19,9},{2 ,20,7},{1 ,21,302},{1 ,22,0},{1 ,23,0},{2 ,24,0},{3 ,25,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{2 ,0,226},{3 ,1,94},{2 ,2,213},{3 ,3,49},{3 ,4,279},{2 ,5,111},{3 ,6,139},{3 ,7,166},{3 ,8,91},{2 ,9,294},{3 ,10,106},{3 ,11,246},{3 ,12,345},{3 ,13,269},{3 ,14,185},{2 ,15,125},{3 ,16,249},{3 ,17,215},{3 ,18,143},{2 ,19,210},{3 ,20,121},{3 ,21,121},{3 ,22,1},{11 ,23,192},{8 ,24,244},{15 ,25,113},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{3 ,0,97},{4 ,1,256},{10 ,2,253},{5 ,3,251},{7 ,4,224},{21 ,5,264},{6 ,6,73},{7 ,7,297},{7 ,8,215},{20 ,9,155},{6 ,10,330},{6 ,11,99},{5 ,12,322},{6 ,13,172},{7 ,14,39},{14 ,15,277},{5 ,16,295},{6 ,17,150},{6 ,18,284},{8 ,19,17},{6 ,20,305},{5 ,21,258},{5 ,22,283},{13 ,23,81},{30 ,24,212},{29 ,25,107},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{4 ,0,42},{5 ,1,130},{23 ,2,6},{8 ,3,22},{10 ,4,27},{0 ,0,-1},{25 ,6,255},{10 ,7,231},{10 ,8,49},{38 ,9,196},{9 ,10,293},{9 ,11,111},{8 ,12,312},{9 ,13,92},{10 ,14,267},{26 ,15,99},{8 ,16,224},{9 ,17,152},{9 ,18,23},{18 ,19,73},{9 ,20,337},{8 ,21,59},{8 ,22,314},{37 ,23,85},{32 ,24,83},{31 ,25,222},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{5 ,0,219},{7 ,1,103},{26 ,2,326},{13 ,3,251},{24 ,4,249},{0 ,0,-1},{27 ,6,326},{13 ,7,265},{19 ,8,258},{41 ,9,25},{12 ,10,142},{12 ,11,110},{11 ,12,200},{12 ,13,176},{17 ,14,228},{34 ,15,112},{11 ,16,351},{14 ,17,66},{12 ,18,76},{28 ,19,40},{13 ,20,94},{11 ,21,166},{11 ,22,338},{0 ,0,-1},{42 ,24,17},{43 ,25,167},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{6 ,0,294},{8 ,1,75},{33 ,2,304},{16 ,3,293},{26 ,4,226},{0 ,0,-1},{35 ,6,210},{19 ,7,147},{27 ,8,268},{44 ,9,293},{15 ,10,15},{16 ,11,332},{14 ,12,322},{15 ,13,81},{25 ,14,54},{36 ,15,35},{14 ,16,156},{17 ,17,116},{15 ,18,176},{39 ,19,272},{16 ,20,331},{14 ,21,78},{16 ,22,114},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{7 ,0,3},{9 ,1,88},{0 ,0,-1},{20 ,3,65},{28 ,4,1},{0 ,0,-1},{45 ,6,67},{25 ,7,111},{40 ,8,237},{0 ,0,-1},{19 ,10,204},{20 ,11,244},{18 ,12,286},{18 ,13,246},{29 ,14,104},{0 ,0,-1},{17 ,16,247},{22 ,17,113},{18 ,18,181},{0 ,0,-1},{21 ,20,143},{17 ,21,190},{20 ,22,30},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{8 ,0,348},{10 ,1,175},{0 ,0,-1},{24 ,3,170},{42 ,4,83},{0 ,0,-1},{0 ,0,-1},{31 ,7,297},{0 ,0,-1},{0 ,0,-1},{23 ,10,181},{24 ,11,288},{22 ,12,157},{22 ,13,236},{32 ,14,338},{0 ,0,-1},{21 ,16,346},{34 ,17,54},{23 ,18,304},{0 ,0,-1},{0 ,0,-1},{21 ,21,109},{24 ,22,194},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{9 ,0,156},{11 ,1,322},{0 ,0,-1},{39 ,3,264},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{34 ,7,320},{0 ,0,-1},{0 ,0,-1},{30 ,10,16},{33 ,11,141},{32 ,12,265},{30 ,13,95},{36 ,14,15},{0 ,0,-1},{43 ,16,3},{40 ,17,135},{29 ,18,243},{0 ,0,-1},{0 ,0,-1},{28 ,21,167},{31 ,22,279},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{11 ,0,25},{12 ,1,217},{0 ,0,-1},{41 ,3,77},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{39 ,7,37},{0 ,0,-1},{0 ,0,-1},{38 ,10,209},{0 ,0,-1},{35 ,12,195},{37 ,13,236},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{36 ,18,188},{0 ,0,-1},{0 ,0,-1},{33 ,21,101},{35 ,22,268},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{12 ,0,123},{15 ,1,348},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{44 ,7,244},{0 ,0,-1},{0 ,0,-1},{45 ,10,235},{0 ,0,-1},{38 ,12,246},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{41 ,18,272},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{44 ,22,272},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{13 ,0,311},{16 ,1,190},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{43 ,18,53},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{14 ,0,22},{18 ,1,47},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{15 ,0,176},{19 ,1,110},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{17 ,0,110},{21 ,1,162},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{19 ,0,87},{23 ,1,18},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{20 ,0,89},{25 ,1,279},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{22 ,0,280},{27 ,1,91},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{24 ,0,38},{29 ,1,273},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{26 ,0,325},{31 ,1,101},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{28 ,0,102},{33 ,1,56},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{30 ,0,171},{35 ,1,100},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{32 ,0,351},{37 ,1,319},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{34 ,0,60},{39 ,1,236},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{36 ,0,135},{41 ,1,123},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{38 ,0,164},{43 ,1,210},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{40 ,0,304},{45 ,1,82},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{42 ,0,288},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{44 ,0,79},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1} +}; +//--------------------------------------------------BG1_I5----------------------------------------------------------------- + + +//--------------------------------------------------BG1_I6----------------------------------------------------------------- +h_element host_h_compact1_I6 [46*19] = +{{0 ,0,0},{1 ,0,22},{2 ,0,132},{3 ,0,4},{4 ,0,24},{5 ,0,185},{6 ,0,6},{7 ,0,145},{8 ,0,172},{9 ,0,6},{10 ,1,126},{11 ,0,184},{12 ,0,6},{13 ,0,52},{14 ,0,1},{15 ,0,173},{16 ,1,88},{17 ,0,91},{18 ,1,1},{19 ,0,12},{20 ,0,6},{21 ,1,6},{22 ,0,44},{23 ,1,45},{24 ,0,9},{25 ,1,4},{26 ,0,21},{27 ,1,98},{28 ,0,4},{29 ,1,92},{30 ,0,2},{31 ,1,4},{32 ,0,6},{33 ,1,10},{34 ,0,4},{35 ,1,4},{36 ,0,6},{37 ,1,82},{38 ,0,91},{39 ,1,4},{40 ,0,10},{41 ,1,2},{42 ,0,163},{43 ,1,1},{44 ,0,4},{45 ,1,181}, +{0 ,1,0},{1 ,2,11},{2 ,1,37},{3 ,1,6},{4 ,1,204},{5 ,1,100},{6 ,6,27},{7 ,1,88},{8 ,1,2},{9 ,1,10},{10 ,2,77},{11 ,1,194},{12 ,1,20},{13 ,3,147},{14 ,12,202},{15 ,1,6},{16 ,3,198},{17 ,14,184},{18 ,12,41},{19 ,1,6},{20 ,3,12},{21 ,5,86},{22 ,12,58},{23 ,2,18},{24 ,3,125},{25 ,6,74},{26 ,2,142},{27 ,6,140},{28 ,4,1},{29 ,14,136},{30 ,10,88},{31 ,7,49},{32 ,12,126},{33 ,2,30},{34 ,7,153},{35 ,6,45},{36 ,14,200},{37 ,13,2},{38 ,9,64},{39 ,3,28},{40 ,8,84},{41 ,3,75},{42 ,4,10},{43 ,16,163},{44 ,7,6},{45 ,6,45}, +{0 ,2,0},{1 ,3,124},{2 ,2,21},{3 ,3,33},{4 ,26,0},{5 ,3,24},{6 ,10,163},{7 ,4,112},{8 ,3,131},{9 ,10,145},{10 ,4,156},{11 ,12,123},{12 ,10,203},{13 ,7,1},{14 ,15,118},{15 ,10,81},{16 ,11,160},{17 ,16,30},{18 ,13,167},{19 ,7,166},{20 ,9,15},{21 ,16,96},{22 ,13,130},{23 ,10,132},{24 ,4,191},{25 ,7,16},{26 ,4,192},{27 ,8,22},{28 ,19,40},{29 ,18,106},{30 ,13,112},{31 ,22,125},{32 ,14,63},{33 ,11,6},{34 ,15,197},{35 ,12,168},{36 ,15,177},{37 ,23,135},{38 ,10,198},{39 ,7,109},{40 ,17,12},{41 ,9,142},{42 ,24,162},{43 ,18,99},{44 ,9,142},{45 ,10,153}, +{0 ,3,0},{1 ,4,0},{2 ,4,180},{3 ,4,113},{0 ,0,-1},{5 ,12,65},{6 ,11,50},{7 ,7,153},{8 ,12,141},{9 ,11,53},{10 ,7,16},{11 ,16,16},{12 ,11,153},{13 ,20,16},{14 ,16,130},{15 ,13,182},{16 ,20,122},{17 ,17,3},{18 ,18,68},{19 ,8,184},{20 ,11,5},{21 ,20,42},{22 ,17,131},{23 ,18,100},{24 ,11,28},{25 ,14,28},{26 ,15,197},{27 ,49,0},{28 ,21,93},{29 ,25,6},{30 ,24,20},{31 ,25,194},{32 ,24,20},{33 ,21,92},{34 ,17,155},{35 ,22,185},{36 ,18,43},{37 ,59,0},{38 ,12,100},{39 ,19,188},{40 ,62,0},{41 ,18,128},{42 ,64,0},{43 ,25,98},{44 ,22,3},{45 ,67,0}, +{0 ,5,0},{1 ,5,10},{2 ,5,4},{3 ,6,49},{0 ,0,-1},{5 ,16,207},{6 ,13,48},{7 ,8,159},{8 ,16,96},{9 ,13,201},{10 ,8,12},{11 ,21,104},{12 ,13,104},{13 ,23,46},{14 ,17,1},{15 ,18,53},{16 ,22,182},{17 ,21,155},{18 ,19,148},{19 ,10,191},{20 ,22,30},{21 ,21,199},{22 ,44,0},{23 ,45,0},{24 ,22,6},{25 ,47,0},{26 ,48,0},{0 ,0,-1},{28 ,50,0},{29 ,51,0},{30 ,52,0},{31 ,53,0},{32 ,54,0},{33 ,55,0},{34 ,56,0},{35 ,57,0},{36 ,58,0},{0 ,0,-1},{38 ,60,0},{39 ,61,0},{0 ,0,-1},{41 ,63,0},{0 ,0,-1},{43 ,65,0},{44 ,66,0},{0 ,0,-1}, +{0 ,6,0},{1 ,7,0},{2 ,6,149},{3 ,7,21},{0 ,0,-1},{5 ,21,161},{6 ,17,24},{7 ,14,76},{8 ,19,99},{9 ,17,4},{10 ,14,70},{11 ,22,109},{12 ,18,207},{13 ,35,0},{14 ,21,2},{15 ,25,46},{16 ,38,0},{17 ,39,0},{18 ,40,0},{19 ,41,0},{20 ,42,0},{21 ,43,0},{0 ,0,-1},{0 ,0,-1},{24 ,46,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,9,0},{1 ,8,0},{2 ,7,48},{3 ,8,6},{0 ,0,-1},{5 ,22,72},{6 ,18,38},{7 ,29,0},{8 ,21,101},{9 ,18,164},{10 ,32,0},{11 ,23,124},{12 ,34,0},{0 ,0,-1},{14 ,36,0},{15 ,37,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,10,0},{1 ,9,2},{2 ,8,38},{3 ,10,151},{0 ,0,-1},{5 ,27,0},{6 ,20,91},{0 ,0,-1},{8 ,22,35},{9 ,20,173},{0 ,0,-1},{11 ,33,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,11,0},{1 ,11,16},{2 ,9,122},{3 ,11,83},{0 ,0,-1},{0 ,0,-1},{6 ,28,0},{0 ,0,-1},{8 ,24,116},{9 ,31,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,12,0},{1 ,12,60},{2 ,10,195},{3 ,12,154},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{8 ,30,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,13,0},{1 ,14,0},{2 ,13,155},{3 ,13,87},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,15,0},{1 ,15,6},{2 ,14,28},{3 ,14,5},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,16,0},{1 ,16,30},{2 ,15,85},{3 ,16,92},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,18,0},{1 ,17,0},{2 ,17,47},{3 ,17,173},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,19,0},{1 ,19,168},{2 ,18,179},{3 ,18,120},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,20,0},{1 ,21,31},{2 ,19,42},{3 ,20,2},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,21,0},{1 ,22,105},{2 ,20,66},{3 ,21,142},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,22,0},{1 ,23,0},{2 ,24,0},{3 ,22,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,23,0},{1 ,24,0},{2 ,25,0},{3 ,25,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +}; + + +h_element host_h_compact2_I6 [68*30] = +{{0 ,0,0},{0 ,1,0},{0 ,2,0},{0 ,3,0},{1 ,4,0},{0 ,5,0},{0 ,6,0},{1 ,7,0},{1 ,8,0},{0 ,9,0},{0 ,10,0},{0 ,11,0},{0 ,12,0},{0 ,13,0},{1 ,14,0},{0 ,15,0},{0 ,16,0},{1 ,17,0},{0 ,18,0},{0 ,19,0},{0 ,20,0},{0 ,21,0},{0 ,22,0},{0 ,23,0},{1 ,24,0},{2 ,25,0},{4 ,26,0},{5 ,27,0},{6 ,28,0},{7 ,29,0},{8 ,30,0},{9 ,31,0},{10 ,32,0},{11 ,33,0},{12 ,34,0},{13 ,35,0},{14 ,36,0},{15 ,37,0},{16 ,38,0},{17 ,39,0},{18 ,40,0},{19 ,41,0},{20 ,42,0},{21 ,43,0},{22 ,44,0},{23 ,45,0},{24 ,46,0},{25 ,47,0},{26 ,48,0},{27 ,49,0},{28 ,50,0},{29 ,51,0},{30 ,52,0},{31 ,53,0},{32 ,54,0},{33 ,55,0},{34 ,56,0},{35 ,57,0},{36 ,58,0},{37 ,59,0},{38 ,60,0},{39 ,61,0},{40 ,62,0},{41 ,63,0},{42 ,64,0},{43 ,65,0},{44 ,66,0},{45 ,67,0}, +{1 ,0,22},{2 ,1,37},{1 ,2,11},{1 ,3,124},{2 ,4,180},{1 ,5,10},{2 ,6,149},{2 ,7,48},{2 ,8,38},{1 ,9,2},{2 ,10,195},{1 ,11,16},{1 ,12,60},{2 ,13,155},{2 ,14,28},{1 ,15,6},{1 ,16,30},{2 ,17,47},{2 ,18,179},{1 ,19,168},{2 ,20,66},{1 ,21,31},{1 ,22,105},{1 ,23,0},{2 ,24,0},{3 ,25,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{2 ,0,132},{3 ,1,6},{2 ,2,21},{3 ,3,33},{3 ,4,113},{2 ,5,4},{3 ,6,49},{3 ,7,21},{3 ,8,6},{2 ,9,122},{3 ,10,151},{3 ,11,83},{3 ,12,154},{3 ,13,87},{3 ,14,5},{2 ,15,85},{3 ,16,92},{3 ,17,173},{3 ,18,120},{2 ,19,42},{3 ,20,2},{3 ,21,142},{3 ,22,0},{11 ,23,124},{8 ,24,116},{15 ,25,46},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{3 ,0,4},{4 ,1,204},{10 ,2,77},{5 ,3,24},{7 ,4,112},{21 ,5,86},{6 ,6,27},{7 ,7,153},{7 ,8,159},{20 ,9,15},{6 ,10,163},{6 ,11,50},{5 ,12,65},{6 ,13,48},{7 ,14,76},{14 ,15,118},{5 ,16,207},{6 ,17,24},{6 ,18,38},{8 ,19,99},{6 ,20,91},{5 ,21,161},{5 ,22,72},{13 ,23,46},{30 ,24,20},{29 ,25,6},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{4 ,0,24},{5 ,1,100},{23 ,2,18},{8 ,3,131},{10 ,4,156},{0 ,0,-1},{25 ,6,74},{10 ,7,16},{10 ,8,12},{38 ,9,64},{9 ,10,145},{9 ,11,53},{8 ,12,141},{9 ,13,201},{10 ,14,70},{26 ,15,197},{8 ,16,96},{9 ,17,4},{9 ,18,164},{18 ,19,148},{9 ,20,173},{8 ,21,101},{8 ,22,35},{37 ,23,135},{32 ,24,20},{31 ,25,194},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{5 ,0,185},{7 ,1,88},{26 ,2,142},{13 ,3,147},{24 ,4,191},{0 ,0,-1},{27 ,6,140},{13 ,7,1},{19 ,8,184},{41 ,9,142},{12 ,10,203},{12 ,11,153},{11 ,12,123},{12 ,13,104},{17 ,14,184},{34 ,15,197},{11 ,16,16},{14 ,17,1},{12 ,18,207},{28 ,19,40},{13 ,20,16},{11 ,21,104},{11 ,22,109},{0 ,0,-1},{42 ,24,162},{43 ,25,98},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{6 ,0,6},{8 ,1,2},{33 ,2,30},{16 ,3,198},{26 ,4,192},{0 ,0,-1},{35 ,6,45},{19 ,7,166},{27 ,8,22},{44 ,9,142},{15 ,10,81},{16 ,11,160},{14 ,12,202},{15 ,13,182},{25 ,14,28},{36 ,15,177},{14 ,16,130},{17 ,17,3},{15 ,18,53},{39 ,19,188},{16 ,20,122},{14 ,21,2},{16 ,22,182},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{7 ,0,145},{9 ,1,10},{0 ,0,-1},{20 ,3,12},{28 ,4,1},{0 ,0,-1},{45 ,6,45},{25 ,7,16},{40 ,8,84},{0 ,0,-1},{19 ,10,191},{20 ,11,5},{18 ,12,41},{18 ,13,167},{29 ,14,136},{0 ,0,-1},{17 ,16,30},{22 ,17,131},{18 ,18,68},{0 ,0,-1},{21 ,20,42},{17 ,21,155},{20 ,22,30},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{8 ,0,172},{10 ,1,126},{0 ,0,-1},{24 ,3,125},{42 ,4,10},{0 ,0,-1},{0 ,0,-1},{31 ,7,49},{0 ,0,-1},{0 ,0,-1},{23 ,10,132},{24 ,11,28},{22 ,12,58},{22 ,13,130},{32 ,14,63},{0 ,0,-1},{21 ,16,96},{34 ,17,155},{23 ,18,100},{0 ,0,-1},{0 ,0,-1},{21 ,21,199},{24 ,22,6},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{9 ,0,6},{11 ,1,194},{0 ,0,-1},{39 ,3,28},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{34 ,7,153},{0 ,0,-1},{0 ,0,-1},{30 ,10,88},{33 ,11,6},{32 ,12,126},{30 ,13,112},{36 ,14,200},{0 ,0,-1},{43 ,16,163},{40 ,17,12},{29 ,18,106},{0 ,0,-1},{0 ,0,-1},{28 ,21,93},{31 ,22,125},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{11 ,0,184},{12 ,1,20},{0 ,0,-1},{41 ,3,75},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{39 ,7,109},{0 ,0,-1},{0 ,0,-1},{38 ,10,198},{0 ,0,-1},{35 ,12,168},{37 ,13,2},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{36 ,18,43},{0 ,0,-1},{0 ,0,-1},{33 ,21,92},{35 ,22,185},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{12 ,0,6},{15 ,1,6},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{44 ,7,6},{0 ,0,-1},{0 ,0,-1},{45 ,10,153},{0 ,0,-1},{38 ,12,100},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{41 ,18,128},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{44 ,22,3},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{13 ,0,52},{16 ,1,88},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{43 ,18,99},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{14 ,0,1},{18 ,1,1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{15 ,0,173},{19 ,1,6},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{17 ,0,91},{21 ,1,6},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{19 ,0,12},{23 ,1,45},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{20 ,0,6},{25 ,1,4},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{22 ,0,44},{27 ,1,98},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{24 ,0,9},{29 ,1,92},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{26 ,0,21},{31 ,1,4},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{28 ,0,4},{33 ,1,10},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{30 ,0,2},{35 ,1,4},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{32 ,0,6},{37 ,1,82},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{34 ,0,4},{39 ,1,4},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{36 ,0,6},{41 ,1,2},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{38 ,0,91},{43 ,1,1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{40 ,0,10},{45 ,1,181},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{42 ,0,163},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{44 ,0,4},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1} +}; + +//--------------------------------------------------BG1_I6----------------------------------------------------------------- + + +//--------------------------------------------------BG1_I7----------------------------------------------------------------- +h_element host_h_compact1_I7 [46*19] = +{{0 ,0,135},{1 ,0,96},{2 ,0,189},{3 ,0,128},{4 ,0,64},{5 ,0,2},{6 ,0,199},{7 ,0,77},{8 ,0,181},{9 ,0,169},{10 ,1,116},{11 ,0,45},{12 ,0,186},{13 ,0,220},{14 ,0,124},{15 ,0,39},{16 ,1,78},{17 ,0,183},{18 ,1,183},{19 ,0,179},{20 ,0,77},{21 ,1,197},{22 ,0,25},{23 ,1,185},{24 ,0,32},{25 ,1,27},{26 ,0,163},{27 ,1,165},{28 ,0,32},{29 ,1,232},{30 ,0,170},{31 ,1,73},{32 ,0,103},{33 ,1,199},{34 ,0,161},{35 ,1,231},{36 ,0,11},{37 ,1,59},{38 ,0,121},{39 ,1,115},{40 ,0,4},{41 ,1,53},{42 ,0,222},{43 ,1,22},{44 ,0,191},{45 ,1,177}, +{0 ,1,227},{1 ,2,236},{2 ,1,4},{3 ,1,23},{4 ,1,211},{5 ,1,171},{6 ,6,22},{7 ,1,146},{8 ,1,105},{9 ,1,12},{10 ,2,151},{11 ,1,115},{12 ,1,215},{13 ,3,185},{14 ,12,144},{15 ,1,138},{16 ,3,152},{17 ,14,112},{18 ,12,215},{19 ,1,108},{20 ,3,187},{21 ,5,122},{22 ,12,47},{23 ,2,127},{24 ,3,178},{25 ,6,141},{26 ,2,131},{27 ,6,232},{28 ,4,43},{29 ,14,32},{30 ,10,199},{31 ,7,149},{32 ,12,110},{33 ,2,132},{34 ,7,237},{35 ,6,174},{36 ,14,207},{37 ,13,204},{38 ,9,90},{39 ,3,188},{40 ,8,103},{41 ,3,189},{42 ,4,170},{43 ,16,127},{44 ,7,211},{45 ,6,114}, +{0 ,2,126},{1 ,3,136},{2 ,2,225},{3 ,3,162},{4 ,26,0},{5 ,3,47},{6 ,10,23},{7 ,4,209},{8 ,3,141},{9 ,10,206},{10 ,4,70},{11 ,12,134},{12 ,10,124},{13 ,7,154},{14 ,15,182},{15 ,10,220},{16 ,11,84},{17 ,16,106},{18 ,13,180},{19 ,7,159},{20 ,9,203},{21 ,16,215},{22 ,13,126},{23 ,10,117},{24 ,4,2},{25 ,7,11},{26 ,4,169},{27 ,8,9},{28 ,19,200},{29 ,18,118},{30 ,13,26},{31 ,22,175},{32 ,14,151},{33 ,11,172},{34 ,15,142},{35 ,12,145},{36 ,15,42},{37 ,23,161},{38 ,10,26},{39 ,7,168},{40 ,17,30},{41 ,9,215},{42 ,24,71},{43 ,18,49},{44 ,9,187},{45 ,10,93}, +{0 ,3,134},{1 ,4,221},{2 ,4,151},{3 ,4,220},{0 ,0,-1},{5 ,12,143},{6 ,11,100},{7 ,7,32},{8 ,12,223},{9 ,11,221},{10 ,7,230},{11 ,16,1},{12 ,11,180},{13 ,20,178},{14 ,16,95},{15 ,13,173},{16 ,20,5},{17 ,17,219},{18 ,18,143},{19 ,8,138},{20 ,11,167},{21 ,20,65},{22 ,17,178},{23 ,18,199},{24 ,11,156},{25 ,14,181},{26 ,15,98},{27 ,49,0},{28 ,21,205},{29 ,25,103},{30 ,24,105},{31 ,25,108},{32 ,24,211},{33 ,21,65},{34 ,17,180},{35 ,22,100},{36 ,18,100},{37 ,59,0},{38 ,12,140},{39 ,19,52},{40 ,62,0},{41 ,18,24},{42 ,64,0},{43 ,25,125},{44 ,22,148},{45 ,67,0}, +{0 ,5,84},{1 ,5,128},{2 ,5,236},{3 ,6,43},{0 ,0,-1},{5 ,16,210},{6 ,13,92},{7 ,8,166},{8 ,16,177},{9 ,13,17},{10 ,8,115},{11 ,21,152},{12 ,13,98},{13 ,23,150},{14 ,17,72},{15 ,18,142},{16 ,22,205},{17 ,21,129},{18 ,19,14},{19 ,10,196},{20 ,22,130},{21 ,21,216},{22 ,44,0},{23 ,45,0},{24 ,22,58},{25 ,47,0},{26 ,48,0},{0 ,0,-1},{28 ,50,0},{29 ,51,0},{30 ,52,0},{31 ,53,0},{32 ,54,0},{33 ,55,0},{34 ,56,0},{35 ,57,0},{36 ,58,0},{0 ,0,-1},{38 ,60,0},{39 ,61,0},{0 ,0,-1},{41 ,63,0},{0 ,0,-1},{43 ,65,0},{44 ,66,0},{0 ,0,-1}, +{0 ,6,83},{1 ,7,92},{2 ,6,117},{3 ,7,186},{0 ,0,-1},{5 ,21,180},{6 ,17,207},{7 ,14,18},{8 ,19,145},{9 ,17,212},{10 ,14,84},{11 ,22,165},{12 ,18,80},{13 ,35,0},{14 ,21,76},{15 ,25,49},{16 ,38,0},{17 ,39,0},{18 ,40,0},{19 ,41,0},{20 ,42,0},{21 ,43,0},{0 ,0,-1},{0 ,0,-1},{24 ,46,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,9,53},{1 ,8,172},{2 ,7,179},{3 ,8,96},{0 ,0,-1},{5 ,22,180},{6 ,18,52},{7 ,29,0},{8 ,21,199},{9 ,18,92},{10 ,32,0},{11 ,23,107},{12 ,34,0},{0 ,0,-1},{14 ,36,0},{15 ,37,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,10,225},{1 ,9,56},{2 ,8,92},{3 ,10,1},{0 ,0,-1},{5 ,27,0},{6 ,20,13},{0 ,0,-1},{8 ,22,153},{9 ,20,205},{0 ,0,-1},{11 ,33,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,11,205},{1 ,11,11},{2 ,9,24},{3 ,11,216},{0 ,0,-1},{0 ,0,-1},{6 ,28,0},{0 ,0,-1},{8 ,24,38},{9 ,31,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,12,128},{1 ,12,189},{2 ,10,68},{3 ,12,22},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{8 ,30,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,13,75},{1 ,14,95},{2 ,13,6},{3 ,13,24},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,15,135},{1 ,15,85},{2 ,14,101},{3 ,14,167},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,16,217},{1 ,16,153},{2 ,15,33},{3 ,16,200},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,18,220},{1 ,17,87},{2 ,17,96},{3 ,17,32},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,19,90},{1 ,19,163},{2 ,18,125},{3 ,18,235},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,20,105},{1 ,21,216},{2 ,19,67},{3 ,20,172},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,21,137},{1 ,22,0},{2 ,20,230},{3 ,21,219},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,22,1},{1 ,23,0},{2 ,24,0},{3 ,22,1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{0 ,23,0},{1 ,24,0},{2 ,25,0},{3 ,25,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +}; + + +h_element host_h_compact2_I7 [68*30] = +{{0 ,0,135},{0 ,1,227},{0 ,2,126},{0 ,3,134},{1 ,4,221},{0 ,5,84},{0 ,6,83},{1 ,7,92},{1 ,8,172},{0 ,9,53},{0 ,10,225},{0 ,11,205},{0 ,12,128},{0 ,13,75},{1 ,14,95},{0 ,15,135},{0 ,16,217},{1 ,17,87},{0 ,18,220},{0 ,19,90},{0 ,20,105},{0 ,21,137},{0 ,22,1},{0 ,23,0},{1 ,24,0},{2 ,25,0},{4 ,26,0},{5 ,27,0},{6 ,28,0},{7 ,29,0},{8 ,30,0},{9 ,31,0},{10 ,32,0},{11 ,33,0},{12 ,34,0},{13 ,35,0},{14 ,36,0},{15 ,37,0},{16 ,38,0},{17 ,39,0},{18 ,40,0},{19 ,41,0},{20 ,42,0},{21 ,43,0},{22 ,44,0},{23 ,45,0},{24 ,46,0},{25 ,47,0},{26 ,48,0},{27 ,49,0},{28 ,50,0},{29 ,51,0},{30 ,52,0},{31 ,53,0},{32 ,54,0},{33 ,55,0},{34 ,56,0},{35 ,57,0},{36 ,58,0},{37 ,59,0},{38 ,60,0},{39 ,61,0},{40 ,62,0},{41 ,63,0},{42 ,64,0},{43 ,65,0},{44 ,66,0},{45 ,67,0}, +{1 ,0,96},{2 ,1,4},{1 ,2,236},{1 ,3,136},{2 ,4,151},{1 ,5,128},{2 ,6,117},{2 ,7,179},{2 ,8,92},{1 ,9,56},{2 ,10,68},{1 ,11,11},{1 ,12,189},{2 ,13,6},{2 ,14,101},{1 ,15,85},{1 ,16,153},{2 ,17,96},{2 ,18,125},{1 ,19,163},{2 ,20,230},{1 ,21,216},{1 ,22,0},{1 ,23,0},{2 ,24,0},{3 ,25,0},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{2 ,0,189},{3 ,1,23},{2 ,2,225},{3 ,3,162},{3 ,4,220},{2 ,5,236},{3 ,6,43},{3 ,7,186},{3 ,8,96},{2 ,9,24},{3 ,10,1},{3 ,11,216},{3 ,12,22},{3 ,13,24},{3 ,14,167},{2 ,15,33},{3 ,16,200},{3 ,17,32},{3 ,18,235},{2 ,19,67},{3 ,20,172},{3 ,21,219},{3 ,22,1},{11 ,23,107},{8 ,24,38},{15 ,25,49},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{3 ,0,128},{4 ,1,211},{10 ,2,151},{5 ,3,47},{7 ,4,209},{21 ,5,122},{6 ,6,22},{7 ,7,32},{7 ,8,166},{20 ,9,203},{6 ,10,23},{6 ,11,100},{5 ,12,143},{6 ,13,92},{7 ,14,18},{14 ,15,182},{5 ,16,210},{6 ,17,207},{6 ,18,52},{8 ,19,145},{6 ,20,13},{5 ,21,180},{5 ,22,180},{13 ,23,150},{30 ,24,105},{29 ,25,103},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{4 ,0,64},{5 ,1,171},{23 ,2,127},{8 ,3,141},{10 ,4,70},{0 ,0,-1},{25 ,6,141},{10 ,7,230},{10 ,8,115},{38 ,9,90},{9 ,10,206},{9 ,11,221},{8 ,12,223},{9 ,13,17},{10 ,14,84},{26 ,15,98},{8 ,16,177},{9 ,17,212},{9 ,18,92},{18 ,19,14},{9 ,20,205},{8 ,21,199},{8 ,22,153},{37 ,23,161},{32 ,24,211},{31 ,25,108},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{5 ,0,2},{7 ,1,146},{26 ,2,131},{13 ,3,185},{24 ,4,2},{0 ,0,-1},{27 ,6,232},{13 ,7,154},{19 ,8,138},{41 ,9,215},{12 ,10,124},{12 ,11,180},{11 ,12,134},{12 ,13,98},{17 ,14,112},{34 ,15,142},{11 ,16,1},{14 ,17,72},{12 ,18,80},{28 ,19,200},{13 ,20,178},{11 ,21,152},{11 ,22,165},{0 ,0,-1},{42 ,24,71},{43 ,25,125},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{6 ,0,199},{8 ,1,105},{33 ,2,132},{16 ,3,152},{26 ,4,169},{0 ,0,-1},{35 ,6,174},{19 ,7,159},{27 ,8,9},{44 ,9,187},{15 ,10,220},{16 ,11,84},{14 ,12,144},{15 ,13,173},{25 ,14,181},{36 ,15,42},{14 ,16,95},{17 ,17,219},{15 ,18,142},{39 ,19,52},{16 ,20,5},{14 ,21,76},{16 ,22,205},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{7 ,0,77},{9 ,1,12},{0 ,0,-1},{20 ,3,187},{28 ,4,43},{0 ,0,-1},{45 ,6,114},{25 ,7,11},{40 ,8,103},{0 ,0,-1},{19 ,10,196},{20 ,11,167},{18 ,12,215},{18 ,13,180},{29 ,14,32},{0 ,0,-1},{17 ,16,106},{22 ,17,178},{18 ,18,143},{0 ,0,-1},{21 ,20,65},{17 ,21,129},{20 ,22,130},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{8 ,0,181},{10 ,1,116},{0 ,0,-1},{24 ,3,178},{42 ,4,170},{0 ,0,-1},{0 ,0,-1},{31 ,7,149},{0 ,0,-1},{0 ,0,-1},{23 ,10,117},{24 ,11,156},{22 ,12,47},{22 ,13,126},{32 ,14,151},{0 ,0,-1},{21 ,16,215},{34 ,17,180},{23 ,18,199},{0 ,0,-1},{0 ,0,-1},{21 ,21,216},{24 ,22,58},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{9 ,0,169},{11 ,1,115},{0 ,0,-1},{39 ,3,188},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{34 ,7,237},{0 ,0,-1},{0 ,0,-1},{30 ,10,199},{33 ,11,172},{32 ,12,110},{30 ,13,26},{36 ,14,207},{0 ,0,-1},{43 ,16,127},{40 ,17,30},{29 ,18,118},{0 ,0,-1},{0 ,0,-1},{28 ,21,205},{31 ,22,175},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{11 ,0,45},{12 ,1,215},{0 ,0,-1},{41 ,3,189},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{39 ,7,168},{0 ,0,-1},{0 ,0,-1},{38 ,10,26},{0 ,0,-1},{35 ,12,145},{37 ,13,204},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{36 ,18,100},{0 ,0,-1},{0 ,0,-1},{33 ,21,65},{35 ,22,100},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{12 ,0,186},{15 ,1,138},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{44 ,7,211},{0 ,0,-1},{0 ,0,-1},{45 ,10,93},{0 ,0,-1},{38 ,12,140},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{41 ,18,24},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{44 ,22,148},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{13 ,0,220},{16 ,1,78},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{43 ,18,49},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{14 ,0,124},{18 ,1,183},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{15 ,0,39},{19 ,1,108},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{17 ,0,183},{21 ,1,197},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{19 ,0,179},{23 ,1,185},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{20 ,0,77},{25 ,1,27},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{22 ,0,25},{27 ,1,165},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{24 ,0,32},{29 ,1,232},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{26 ,0,163},{31 ,1,73},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{28 ,0,32},{33 ,1,199},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{30 ,0,170},{35 ,1,231},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{32 ,0,103},{37 ,1,59},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{34 ,0,161},{39 ,1,115},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{36 ,0,11},{41 ,1,53},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{38 ,0,121},{43 ,1,22},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{40 ,0,4},{45 ,1,177},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{42 ,0,222},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1}, +{44 ,0,191},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1},{0 ,0,-1} +}; \ No newline at end of file diff --git a/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG2_I0 b/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG2_I0 new file mode 100644 index 0000000000..d4bdc783d6 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG2_I0 @@ -0,0 +1,44 @@ +int h_base_8 [42*52] = { + 9, 117, 204, 26, -1, -1, 189, -1, -1, 205, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 167, -1, -1, 166, 253, 125, 226, 156, 224, 252, -1, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 81, 114, -1, 44, 52, -1, -1, -1, 240, -1, 1, -1, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 8, 58, -1, 158, 104, 209, 54, 18, 128, 0, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 179, 214, -1, -1, -1, -1, -1, -1, -1, -1, -1, 71, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 231, 41, -1, -1, -1, 194, -1, 159, -1, -1, -1, 103, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 155, -1, -1, -1, -1, 228, -1, 45, -1, 28, -1, 158, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 129, -1, -1, -1, 147, -1, 140, -1, -1, -1, 3, -1, 116, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 142, 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 230, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 203, -1, -1, -1, -1, -1, -1, 205, -1, 61, 247, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 11, 185, -1, -1, -1, -1, 0, 117, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 11, -1, -1, -1, -1, -1, -1, 236, -1, 210, -1, -1, -1, 56, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 63, -1, 111, -1, -1, -1, -1, -1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 83, 2, -1, -1, -1, -1, -1, -1, 38, -1, -1, -1, -1, 222, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 115, -1, -1, -1, -1, 145, -1, -1, -1, -1, 3, -1, 232, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 51, -1, -1, -1, -1, -1, -1, -1, -1, -1, 175, 213, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 203, -1, -1, -1, -1, -1, -1, -1, 142, -1, 8, 242, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 254, -1, -1, -1, 124, -1, -1, -1, -1, -1, 114, 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 220, -1, -1, -1, -1, -1, 194, 50, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 87, 20, -1, -1, -1, -1, -1, -1, -1, -1, 185, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 26, -1, -1, 105, -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 76, -1, -1, -1, -1, -1, -1, -1, 42, -1, -1, -1, -1, 210, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 222, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 23, -1, -1, 235, -1, 238, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 46, 139, -1, -1, -1, -1, -1, -1, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 228, -1, -1, -1, -1, 156, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 29, -1, -1, -1, -1, 143, -1, -1, -1, -1, 160, 122, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 8, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 98, 101, -1, -1, 135, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 18, -1, -1, -1, 28, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 71, -1, -1, 240, -1, 9, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 242, -1, -1, -1, -1, 44, -1, -1, -1, -1, -1, -1, 166, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 132, -1, -1, -1, -1, 164, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, + 147, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, 36, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, + -1, 57, -1, -1, -1, 40, -1, -1, -1, -1, -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, + 140, -1, 38, -1, -1, -1, -1, 154, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 219, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, + -1, 31, -1, -1, -1, 66, -1, -1, -1, -1, -1, 38, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, + 239, -1, -1, -1, -1, -1, -1, 172, -1, -1, -1, -1, 34, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, + -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, 75, -1, -1, 120, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, + -1, 129, -1, -1, -1, 229, -1, -1, -1, -1, -1, 118, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, +}; \ No newline at end of file diff --git a/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG2_I1 b/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG2_I1 new file mode 100644 index 0000000000..99909bcf5f --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG2_I1 @@ -0,0 +1,44 @@ +int h_base_9 [42*52] = { + 174, 97, 166, 66, -1, -1, 71, -1, -1, 172, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 27, -1, -1, 36, 48, 92, 31, 187, 185, 3, -1, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 25, 114, -1, 117, 110, -1, -1, -1, 114, -1, 1, -1, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 136, 175, -1, 113, 72, 123, 118, 28, 186, 0, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 72, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, 29, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 10, 44, -1, -1, -1, 121, -1, 80, -1, -1, -1, 48, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 129, -1, -1, -1, -1, 92, -1, 100, -1, 49, -1, 184, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 80, -1, -1, -1, 186, -1, 16, -1, -1, -1, 102, -1, 143, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 118, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 28, -1, -1, -1, -1, -1, -1, 132, -1, 185, 178, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 59, 104, -1, -1, -1, -1, 22, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 32, -1, -1, -1, -1, -1, -1, 92, -1, 174, -1, -1, -1, 154, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 39, -1, 93, -1, -1, -1, -1, -1, -1, -1, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 49, 125, -1, -1, -1, -1, -1, -1, 35, -1, -1, -1, -1, 166, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 19, -1, -1, -1, -1, 118, -1, -1, -1, -1, 21, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 68, -1, -1, -1, -1, -1, -1, -1, -1, -1, 63, 81, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 87, -1, -1, -1, -1, -1, -1, -1, 177, -1, 135, 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 158, -1, -1, -1, 23, -1, -1, -1, -1, -1, 9, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 186, -1, -1, -1, -1, -1, 6, 46, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 58, 42, -1, -1, -1, -1, -1, -1, -1, -1, 156, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 76, -1, -1, 61, -1, -1, -1, -1, -1, -1, 153, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 157, -1, -1, -1, -1, -1, -1, -1, 175, -1, -1, -1, -1, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 20, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 106, -1, -1, 86, -1, 95, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 182, 153, -1, -1, -1, -1, -1, -1, 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 45, -1, -1, -1, -1, 21, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 67, -1, -1, -1, -1, 137, -1, -1, -1, -1, 55, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 103, -1, -1, -1, -1, -1, 50, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 70, 111, -1, -1, 168, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 110, -1, -1, -1, 17, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 120, -1, -1, 154, -1, 52, -1, 56, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 170, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 84, -1, -1, -1, -1, 8, -1, -1, -1, -1, -1, -1, 17, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 165, -1, -1, -1, -1, 179, -1, -1, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, + 173, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 177, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, + -1, 77, -1, -1, -1, 184, -1, -1, -1, -1, -1, 18, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, + 25, -1, 151, -1, -1, -1, -1, 170, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, -1, -1, 31, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, + -1, 84, -1, -1, -1, 151, -1, -1, -1, -1, -1, 190, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, + 93, -1, -1, -1, -1, -1, -1, 132, -1, -1, -1, -1, 57, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, + -1, -1, 103, -1, -1, -1, -1, -1, -1, -1, 107, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, + -1, 147, -1, -1, -1, 7, -1, -1, -1, -1, -1, 60, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, +}; \ No newline at end of file diff --git a/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG2_I2 b/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG2_I2 new file mode 100644 index 0000000000..df209d30ce --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG2_I2 @@ -0,0 +1,44 @@ +int h_base_10 [42*52] = { + 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 137, -1, -1, 124, 0, 0, 88, 0, 0, 55, -1, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 20, 94, -1, 99, 9, -1, -1, -1, 108, -1, 1, -1, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 38, 15, -1, 102, 146, 12, 57, 53, 46, 0, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 0, 136, -1, -1, -1, -1, -1, -1, -1, -1, -1, 157, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 0, 131, -1, -1, -1, 142, -1, 141, -1, -1, -1, 64, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 0, -1, -1, -1, -1, 124, -1, 99, -1, 45, -1, 148, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 0, -1, -1, -1, 45, -1, 148, -1, -1, -1, 96, -1, 78, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 0, 65, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 87, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 0, -1, -1, -1, -1, -1, -1, 97, -1, 51, 85, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 0, 17, -1, -1, -1, -1, 156, 20, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 0, -1, -1, -1, -1, -1, -1, 7, -1, 4, -1, -1, -1, 2, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 0, -1, 113, -1, -1, -1, -1, -1, -1, -1, 48, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 0, 112, -1, -1, -1, -1, -1, -1, 102, -1, -1, -1, -1, 26, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 0, -1, -1, -1, -1, 138, -1, -1, -1, -1, 57, -1, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, 73, 99, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 0, -1, -1, -1, -1, -1, -1, -1, 79, -1, 111, 143, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 0, -1, -1, -1, 24, -1, -1, -1, -1, -1, 109, 18, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 0, -1, -1, -1, -1, -1, 18, 86, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 0, 158, -1, -1, -1, -1, -1, -1, -1, -1, 154, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 0, -1, -1, 148, -1, -1, -1, -1, -1, -1, 104, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 0, -1, -1, -1, -1, -1, -1, -1, 17, -1, -1, -1, -1, 33, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 0, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 0, -1, -1, 75, -1, 158, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 0, 69, -1, -1, -1, -1, -1, -1, 87, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 0, -1, -1, -1, -1, 65, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 0, -1, -1, -1, -1, 100, -1, -1, -1, -1, 13, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 0, -1, -1, -1, -1, -1, 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 0, 126, -1, -1, 110, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 0, -1, -1, -1, 154, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 0, -1, -1, 35, -1, 51, -1, 134, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 20, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 0, -1, -1, -1, -1, 20, -1, -1, -1, -1, -1, -1, 122, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 0, -1, -1, -1, -1, 88, -1, -1, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, + 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 19, 78, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, + -1, 0, -1, -1, -1, 157, -1, -1, -1, -1, -1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, + 0, -1, 63, -1, -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, 144, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, + -1, 0, -1, -1, -1, 93, -1, -1, -1, -1, -1, 19, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, + 0, -1, -1, -1, -1, -1, -1, 24, -1, -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, + -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, 36, -1, -1, 143, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, + -1, 0, -1, -1, -1, 2, -1, -1, -1, -1, -1, 55, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, +}; \ No newline at end of file diff --git a/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG2_I3 b/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG2_I3 new file mode 100644 index 0000000000..d9efe76f46 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG2_I3 @@ -0,0 +1,44 @@ +int h_base_11 [42*52] = { + 72, 110, 23, 181, -1, -1, 95, -1, -1, 8, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 53, -1, -1, 156, 115, 156, 115, 200, 29, 31, -1, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 152, 131, -1, 46, 191, -1, -1, -1, 91, -1, 0, -1, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 185, 6, -1, 36, 124, 124, 110, 156, 133, 1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 200, 16, -1, -1, -1, -1, -1, -1, -1, -1, -1, 101, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 185, 138, -1, -1, -1, 170, -1, 219, -1, -1, -1, 193, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 123, -1, -1, -1, -1, 55, -1, 31, -1, 222, -1, 209, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 103, -1, -1, -1, 13, -1, 105, -1, -1, -1, 150, -1, 181, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 147, 43, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 2, -1, -1, -1, -1, -1, -1, 30, -1, 184, 83, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 174, 150, -1, -1, -1, -1, 8, 56, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 99, -1, -1, -1, -1, -1, -1, 138, -1, 110, -1, -1, -1, 99, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 46, -1, 217, -1, -1, -1, -1, -1, -1, -1, 109, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 37, 113, -1, -1, -1, -1, -1, -1, 143, -1, -1, -1, -1, 140, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 36, -1, -1, -1, -1, 95, -1, -1, -1, -1, 40, -1, 116, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 116, -1, -1, -1, -1, -1, -1, -1, -1, -1, 200, 110, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 75, -1, -1, -1, -1, -1, -1, -1, 158, -1, 134, 97, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 48, -1, -1, -1, 132, -1, -1, -1, -1, -1, 206, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 68, -1, -1, -1, -1, -1, 16, 156, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 35, 138, -1, -1, -1, -1, -1, -1, -1, -1, 86, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 6, -1, -1, 20, -1, -1, -1, -1, -1, -1, 141, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 80, -1, -1, -1, -1, -1, -1, -1, 43, -1, -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 49, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 156, -1, -1, 54, -1, 134, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 153, 88, -1, -1, -1, -1, -1, -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 211, -1, -1, -1, -1, 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 90, -1, -1, -1, -1, 6, -1, -1, -1, -1, 221, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 27, -1, -1, -1, -1, -1, 118, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 216, 212, -1, -1, 193, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 108, -1, -1, -1, 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 106, -1, -1, 44, -1, 185, -1, 176, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 147, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 182, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 108, -1, -1, -1, -1, 21, -1, -1, -1, -1, -1, -1, 110, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 71, -1, -1, -1, -1, 12, -1, -1, 109, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, + 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 201, 69, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, + -1, 91, -1, -1, -1, 165, -1, -1, -1, -1, -1, 55, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, + 1, -1, 175, -1, -1, -1, -1, 83, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 40, -1, -1, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, + -1, 37, -1, -1, -1, 97, -1, -1, -1, -1, -1, 46, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, + 106, -1, -1, -1, -1, -1, -1, 181, -1, -1, -1, -1, 154, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, + -1, -1, 98, -1, -1, -1, -1, -1, -1, -1, 35, -1, -1, 36, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, + -1, 120, -1, -1, -1, 101, -1, -1, -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, +}; \ No newline at end of file diff --git a/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG2_I4 b/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG2_I4 new file mode 100644 index 0000000000..2522b14f2e --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG2_I4 @@ -0,0 +1,44 @@ +int h_base_12 [42*52] = { + 3, 26, 53, 35, -1, -1, 115, -1, -1, 127, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 19, -1, -1, 94, 104, 66, 84, 98, 69, 50, -1, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 95, 106, -1, 92, 110, -1, -1, -1, 111, -1, 1, -1, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 120, 121, -1, 22, 4, 73, 49, 128, 79, 0, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 42, 24, -1, -1, -1, -1, -1, -1, -1, -1, -1, 51, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 40, 140, -1, -1, -1, 84, -1, 137, -1, -1, -1, 71, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 109, -1, -1, -1, -1, 87, -1, 107, -1, 133, -1, 139, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 97, -1, -1, -1, 135, -1, 35, -1, -1, -1, 108, -1, 65, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 70, 69, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 88, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 97, -1, -1, -1, -1, -1, -1, 40, -1, 24, 49, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 46, 41, -1, -1, -1, -1, 101, 96, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 28, -1, -1, -1, -1, -1, -1, 30, -1, 116, -1, -1, -1, 64, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 33, -1, 122, -1, -1, -1, -1, -1, -1, -1, 131, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 76, 37, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 143, -1, -1, -1, -1, 51, -1, -1, -1, -1, 130, -1, 97, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 139, -1, -1, -1, -1, -1, -1, -1, -1, -1, 96, 128, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 48, -1, -1, -1, -1, -1, -1, -1, 9, -1, 28, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 120, -1, -1, -1, 43, -1, -1, -1, -1, -1, 65, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 17, -1, -1, -1, -1, -1, 106, 142, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 79, 28, -1, -1, -1, -1, -1, -1, -1, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 2, -1, -1, 103, -1, -1, -1, -1, -1, -1, 78, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 91, -1, -1, -1, -1, -1, -1, -1, 75, -1, -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 54, 132, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 68, -1, -1, 115, -1, 56, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 30, 42, -1, -1, -1, -1, -1, -1, 101, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 128, -1, -1, -1, -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 142, -1, -1, -1, -1, 28, -1, -1, -1, -1, 100, 133, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 13, -1, -1, -1, -1, -1, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 106, 77, -1, -1, 43, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 133, -1, -1, -1, 25, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 87, -1, -1, 56, -1, 104, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 80, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 32, -1, -1, -1, -1, 89, -1, -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 135, -1, -1, -1, -1, 6, -1, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, + 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 25, 114, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, + -1, 60, -1, -1, -1, 137, -1, -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, + 121, -1, 129, -1, -1, -1, -1, 26, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 97, -1, -1, 56, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, + -1, 1, -1, -1, -1, 70, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, + 119, -1, -1, -1, -1, -1, -1, 32, -1, -1, -1, -1, 142, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, + -1, -1, 6, -1, -1, -1, -1, -1, -1, -1, 73, -1, -1, 102, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, + -1, 48, -1, -1, -1, 47, -1, -1, -1, -1, -1, 19, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, +}; \ No newline at end of file diff --git a/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG2_I5 b/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG2_I5 new file mode 100644 index 0000000000..f392ef5182 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG2_I5 @@ -0,0 +1,44 @@ +int h_base_13 [42*52] = { + 156, 143, 14, 3, -1, -1, 40, -1, -1, 123, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 17, -1, -1, 65, 63, 1, 55, 37, 171, 133, -1, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 98, 168, -1, 107, 82, -1, -1, -1, 142, -1, 1, -1, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 53, 174, -1, 174, 127, 17, 89, 17, 105, 0, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 86, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, 83, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 79, 84, -1, -1, -1, 35, -1, 103, -1, -1, -1, 60, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 47, -1, -1, -1, -1, 154, -1, 10, -1, 155, -1, 29, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 48, -1, -1, -1, 125, -1, 24, -1, -1, -1, 47, -1, 55, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 53, 31, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 161, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 104, -1, -1, -1, -1, -1, -1, 142, -1, 99, 64, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 111, 25, -1, -1, -1, -1, 174, 23, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 91, -1, -1, -1, -1, -1, -1, 175, -1, 24, -1, -1, -1, 141, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 122, -1, 11, -1, -1, -1, -1, -1, -1, -1, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 29, 91, -1, -1, -1, -1, -1, -1, 27, -1, -1, -1, -1, 127, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 11, -1, -1, -1, -1, 145, -1, -1, -1, -1, 8, -1, 166, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, 103, 40, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 78, -1, -1, -1, -1, -1, -1, -1, 158, -1, 17, 165, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 134, -1, -1, -1, 23, -1, -1, -1, -1, -1, 62, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 173, -1, -1, -1, -1, -1, 31, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 13, 135, -1, -1, -1, -1, -1, -1, -1, -1, 145, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 128, -1, -1, 52, -1, -1, -1, -1, -1, -1, 173, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 156, -1, -1, -1, -1, -1, -1, -1, 166, -1, -1, -1, -1, 40, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 18, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 110, -1, -1, 132, -1, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 113, 108, -1, -1, -1, -1, -1, -1, 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 72, -1, -1, -1, -1, 136, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 36, -1, -1, -1, -1, 38, -1, -1, -1, -1, 53, 145, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 42, -1, -1, -1, -1, -1, 104, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 64, 24, -1, -1, 149, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 139, -1, -1, -1, 161, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 84, -1, -1, 173, -1, 93, -1, 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 117, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 148, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 116, -1, -1, -1, -1, 73, -1, -1, -1, -1, -1, -1, 142, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 105, -1, -1, -1, -1, 137, -1, -1, 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, + 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, 162, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, + -1, 126, -1, -1, -1, 152, -1, -1, -1, -1, -1, 172, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, + 73, -1, 154, -1, -1, -1, -1, 129, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 167, -1, -1, 38, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, + -1, 112, -1, -1, -1, 7, -1, -1, -1, -1, -1, 19, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, + 109, -1, -1, -1, -1, -1, -1, 6, -1, -1, -1, -1, 105, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, + -1, -1, 160, -1, -1, -1, -1, -1, -1, -1, 156, -1, -1, 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, + -1, 132, -1, -1, -1, 6, -1, -1, -1, -1, -1, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, +}; \ No newline at end of file diff --git a/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG2_I6 b/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG2_I6 new file mode 100644 index 0000000000..2cbaa1aca3 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG2_I6 @@ -0,0 +1,44 @@ +int h_base_14 [42*52] = { + 143, 19, 176, 165, -1, -1, 196, -1, -1, 13, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 18, -1, -1, 27, 3, 102, 185, 17, 14, 180, -1, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 126, 163, -1, 47, 183, -1, -1, -1, 132, -1, 1, -1, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 36, 48, -1, 18, 111, 203, 3, 191, 160, 0, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 43, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, 117, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 136, 49, -1, -1, -1, 36, -1, 132, -1, -1, -1, 62, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 7, -1, -1, -1, -1, 34, -1, 198, -1, 168, -1, 12, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 163, -1, -1, -1, 78, -1, 143, -1, -1, -1, 107, -1, 58, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 101, 177, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 186, -1, -1, -1, -1, -1, -1, 27, -1, 205, 81, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 125, 60, -1, -1, -1, -1, 177, 51, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 39, -1, -1, -1, -1, -1, -1, 29, -1, 35, -1, -1, -1, 8, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 18, -1, 155, -1, -1, -1, -1, -1, -1, -1, 49, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 32, 53, -1, -1, -1, -1, -1, -1, 95, -1, -1, -1, -1, 186, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 91, -1, -1, -1, -1, 20, -1, -1, -1, -1, 52, -1, 109, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 174, -1, -1, -1, -1, -1, -1, -1, -1, -1, 108, 102, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 125, -1, -1, -1, -1, -1, -1, -1, 31, -1, 54, 176, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 57, -1, -1, -1, 201, -1, -1, -1, -1, -1, 142, 35, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 129, -1, -1, -1, -1, -1, 203, 140, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 110, 124, -1, -1, -1, -1, -1, -1, -1, -1, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 196, -1, -1, 35, -1, -1, -1, -1, -1, -1, 114, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 10, -1, -1, -1, -1, -1, -1, -1, 122, -1, -1, -1, -1, 23, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 202, 126, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 52, -1, -1, 170, -1, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 113, 161, -1, -1, -1, -1, -1, -1, 88, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 197, -1, -1, -1, -1, 194, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 164, -1, -1, -1, -1, 172, -1, -1, -1, -1, 49, 161, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 168, -1, -1, -1, -1, -1, 193, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 14, 186, -1, -1, 46, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 50, -1, -1, -1, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 70, -1, -1, 17, -1, 50, -1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 115, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 189, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 110, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 163, -1, -1, -1, -1, 173, -1, -1, 179, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, + 197, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 191, 193, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, + -1, 157, -1, -1, -1, 167, -1, -1, -1, -1, -1, 181, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, + 197, -1, 167, -1, -1, -1, -1, 179, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 181, -1, -1, 193, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, + -1, 157, -1, -1, -1, 173, -1, -1, -1, -1, -1, 191, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, + 181, -1, -1, -1, -1, -1, -1, 157, -1, -1, -1, -1, 173, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, + -1, -1, 193, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, 179, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, + -1, 191, -1, -1, -1, 197, -1, -1, -1, -1, -1, 167, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, +}; \ No newline at end of file diff --git a/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG2_I7 b/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG2_I7 new file mode 100644 index 0000000000..c6cd7c09ff --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder_LYC/bgs/BG2_I7 @@ -0,0 +1,44 @@ +int h_base_15 [42*52] = { + 145, 131, 71, 21, -1, -1, 23, -1, -1, 112, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 142, -1, -1, 174, 183, 27, 96, 23, 9, 167, -1, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 74, 31, -1, 3, 53, -1, -1, -1, 155, -1, 0, -1, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 239, 171, -1, 95, 110, 159, 199, 43, 75, 1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 29, 140, -1, -1, -1, -1, -1, -1, -1, -1, -1, 180, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 121, 41, -1, -1, -1, 169, -1, 88, -1, -1, -1, 207, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 137, -1, -1, -1, -1, 72, -1, 172, -1, 124, -1, 56, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 86, -1, -1, -1, 186, -1, 87, -1, -1, -1, 172, -1, 154, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 176, 169, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 225, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 167, -1, -1, -1, -1, -1, -1, 238, -1, 48, 68, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 38, 217, -1, -1, -1, -1, 208, 232, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 178, -1, -1, -1, -1, -1, -1, 214, -1, 168, -1, -1, -1, 51, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 124, -1, 122, -1, -1, -1, -1, -1, -1, -1, 72, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 48, 57, -1, -1, -1, -1, -1, -1, 167, -1, -1, -1, -1, 219, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 82, -1, -1, -1, -1, 232, -1, -1, -1, -1, 204, -1, 162, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 38, -1, -1, -1, -1, -1, -1, -1, -1, -1, 217, 157, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 170, -1, -1, -1, -1, -1, -1, -1, 23, -1, 175, 202, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 196, -1, -1, -1, 173, -1, -1, -1, -1, -1, 195, 218, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 128, -1, -1, -1, -1, -1, 211, 210, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 39, 84, -1, -1, -1, -1, -1, -1, -1, -1, 88, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 117, -1, -1, 227, -1, -1, -1, -1, -1, -1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 238, -1, -1, -1, -1, -1, -1, -1, 13, -1, -1, -1, -1, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 195, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 5, -1, -1, 94, -1, 111, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 81, 19, -1, -1, -1, -1, -1, -1, 130, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 66, -1, -1, -1, -1, 95, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 146, -1, -1, -1, -1, 66, -1, -1, -1, -1, 190, 86, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 64, -1, -1, -1, -1, -1, 181, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 7, 144, -1, -1, 16, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 25, -1, -1, -1, 57, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 37, -1, -1, 139, -1, 221, -1, 17, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 201, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 46, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 179, -1, -1, -1, -1, 14, -1, -1, -1, -1, -1, -1, 116, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 46, -1, -1, -1, -1, 2, -1, -1, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, + 184, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 135, 141, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, + -1, 85, -1, -1, -1, 225, -1, -1, -1, -1, -1, 175, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, + 178, -1, 112, -1, -1, -1, -1, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 154, -1, -1, 114, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, + -1, 42, -1, -1, -1, 41, -1, -1, -1, -1, -1, 105, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, + 167, -1, -1, -1, -1, -1, -1, 45, -1, -1, -1, -1, 189, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, + -1, -1, 78, -1, -1, -1, -1, -1, -1, -1, 67, -1, -1, 180, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, + -1, 53, -1, -1, -1, 215, -1, -1, -1, -1, -1, 230, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, +}; \ No newline at end of file diff --git a/openair1/PHY/CODING/nrLDPC_decoder_LYC/nrLDPC_decoder_LYC.cu b/openair1/PHY/CODING/nrLDPC_decoder_LYC/nrLDPC_decoder_LYC.cu new file mode 100644 index 0000000000..931d500338 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder_LYC/nrLDPC_decoder_LYC.cu @@ -0,0 +1,552 @@ + /*! \file PHY/CODING/nrLDPC_decoder_LYC/nrLDPC_decoder_LYC.cu + * \brief LDPC cuda support BG1 all length + * \author NCTU OpinConnect Terng-Yin Hsu,WEI-YING,LIN + * \email tyhsu@cs.nctu.edu.tw + * \date 13-05-2020 + * \version + * \note + * \warning + */ + +#include +#include +#include +#include +#include "PHY/CODING/nrLDPC_decoder/nrLDPC_types.h" +#include "PHY/CODING/nrLDPC_decoder/nrLDPCdecoder_defs.h" + +#include "bgs/BG1_I0" +#include "bgs/BG1_I1" +#include "bgs/BG1_I2" +#include "bgs/BG1_I3" +#include "bgs/BG1_I4" +#include "bgs/BG1_I5" +#include "bgs/BG1_I6" +#include "bgs/BG1_I7" +#include "bgs/BG2_I0" +#include "bgs/BG2_I1" +#include "bgs/BG2_I2" +#include "bgs/BG2_I3" +#include "bgs/BG2_I4" +#include "bgs/BG2_I5" +#include "bgs/BG2_I6" +#include "bgs/BG2_I7" + +#define MAX_ITERATION 2 +#define MC 1 + +#define cudaCheck(ans) { cudaAssert((ans), __FILE__, __LINE__); } +inline void cudaAssert(cudaError_t code, const char *file, int line) +{ + if (code != cudaSuccess){ + fprintf(stderr,"GPUassert: %s %s %d\n", cudaGetErrorString(code), file, line); + exit(code); + } +} + +typedef struct{ + char x; + char y; + short value; +} h_element; +#include "bgs/BG1_compact_in_C.h" + +__device__ char dev_const_llr[68*384]; +__device__ char dev_dt [46*68*384]; +__device__ char dev_llr[68*384]; +__device__ unsigned char dev_tmp[68*384]; + +h_element h_compact1 [46*19] = {}; +h_element h_compact2 [68*30] = {}; + +__device__ h_element dev_h_compact1[46*19]; // used in kernel 1 +__device__ h_element dev_h_compact2[68*30]; // used in kernel 2 + +// __device__ __constant__ h_element dev_h_compact1[46*19]; // used in kernel 1 +// __device__ __constant__ h_element dev_h_compact2[68*30]; // used in kernel 2 + +// row and col element count +__device__ __constant__ char h_ele_row_bg1_count[46] = { + 19, 19, 19, 19, 3, 8, 9, 7, 10, 9, + 7, 8, 7, 6, 7, 7, 6, 6, 6, 6, + 6, 6, 5, 5, 6, 5, 5, 4, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 4, 5, 5, + 4, 5, 4, 5, 5, 4}; +__device__ __constant__ char h_ele_col_bg1_count[68] = { + 30, 28, 7, 11, 9, 4, 8, 12, 8, 7, + 12, 10, 12, 11, 10, 7, 10, 10, 13, 7, + 8, 11, 12, 5, 6, 6, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1}; +__device__ __constant__ char h_ele_row_bg2_count[42] = { + 8, 10, 8, 10, 4, 6, 6, 6, 4, 5, + 5, 5, 4, 5, 5, 4, 5, 5, 4, 4, + 4, 4, 3, 4, 4, 3, 5, 3, 4, 3, + 5, 3, 4, 4, 4, 4, 4, 3, 4, 4, + 4, 4}; +__device__ __constant__ char h_ele_col_bg2_count[52] = { + 22, 23, 10, 5, 5, 14, 7, 13, 6, 8, + 9, 16, 9, 12, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1}; + + +__global__ void warmup() +{ + // warm up gpu for time measurement +} + +extern "C" +void warmup_for_GPU(){ + + warmup<<<20,1024 >>>(); + +} + +extern "C" +void set_compact_BG(int Zc,short BG){ + + int row,col; + if(BG == 1){ + row = 46; + col = 68; + } + else{ + row = 42; + col = 52; + } + int compact_row = 30; + int compact_col = 19; + if(BG==2){compact_row = 10, compact_col = 23;} + int memorySize_h_compact1 = row * compact_col * sizeof(h_element); + int memorySize_h_compact2 = compact_row * col * sizeof(h_element); + int lift_index = 0; + short lift_set[][9] = { + {2,4,8,16,32,64,128,256}, + {3,6,12,24,48,96,192,384}, + {5,10,20,40,80,160,320}, + {7,14,28,56,112,224}, + {9,18,36,72,144,288}, + {11,22,44,88,176,352}, + {13,26,52,104,208}, + {15,30,60,120,240}, + {0} + }; + + for(int i = 0; lift_set[i][0] != 0; i++){ + for(int j = 0; lift_set[i][j] != 0; j++){ + if(Zc == lift_set[i][j]){ + lift_index = i; + break; + } + } + } + printf("\nZc = %d BG = %d\n",Zc,BG); + switch(lift_index){ + case 0: + cudaCheck( cudaMemcpyToSymbol(dev_h_compact1, host_h_compact1_I0, memorySize_h_compact1) ); + cudaCheck( cudaMemcpyToSymbol(dev_h_compact2, host_h_compact2_I0, memorySize_h_compact2) ); + break; + case 1: + cudaCheck( cudaMemcpyToSymbol(dev_h_compact1, host_h_compact1_I1, memorySize_h_compact1) ); + cudaCheck( cudaMemcpyToSymbol(dev_h_compact2, host_h_compact2_I1, memorySize_h_compact2) ); + break; + case 2: + cudaCheck( cudaMemcpyToSymbol(dev_h_compact1, host_h_compact1_I2, memorySize_h_compact1) ); + cudaCheck( cudaMemcpyToSymbol(dev_h_compact2, host_h_compact2_I2, memorySize_h_compact2) ); + break; + case 3: + cudaCheck( cudaMemcpyToSymbol(dev_h_compact1, host_h_compact1_I3, memorySize_h_compact1) ); + cudaCheck( cudaMemcpyToSymbol(dev_h_compact2, host_h_compact2_I3, memorySize_h_compact2) ); + break; + case 4: + cudaCheck( cudaMemcpyToSymbol(dev_h_compact1, host_h_compact1_I4, memorySize_h_compact1) ); + cudaCheck( cudaMemcpyToSymbol(dev_h_compact2, host_h_compact2_I4, memorySize_h_compact2) ); + break; + case 5: + cudaCheck( cudaMemcpyToSymbol(dev_h_compact1, host_h_compact1_I5, memorySize_h_compact1) ); + cudaCheck( cudaMemcpyToSymbol(dev_h_compact2, host_h_compact2_I5, memorySize_h_compact2) ); + break; + case 6: + cudaCheck( cudaMemcpyToSymbol(dev_h_compact1, host_h_compact1_I6, memorySize_h_compact1) ); + cudaCheck( cudaMemcpyToSymbol(dev_h_compact2, host_h_compact2_I6, memorySize_h_compact2) ); + break; + case 7: + cudaCheck( cudaMemcpyToSymbol(dev_h_compact1, host_h_compact1_I7, memorySize_h_compact1) ); + cudaCheck( cudaMemcpyToSymbol(dev_h_compact2, host_h_compact2_I7, memorySize_h_compact2) ); + break; + } + + // return 0; +} + + +// Kernel 1 +__global__ void ldpc_cnp_kernel_1st_iter(/*char * dev_llr,*/ int BG, int row, int col, int Zc) +{ +// if(blockIdx.x == 0 && threadIdx.x == 1) printf("cnp %d\n", threadIdx.x); + int iMCW = blockIdx.y; // codeword id + int iBlkRow = blockIdx.x; // block row in h_base + int iBlkCol; // block col in h_base + int iSubRow = threadIdx.x; // row index in sub_block of h_base + int iCol; // overall col index in h_base + int offsetR; + int shift_t; + +// For 2-min algorithm. + int Q_sign = 0; + int sq; + int Q, Q_abs; + int R_temp; + + int sign = 1; + int rmin1 = INT32_MAX; + int rmin2 = INT32_MAX; + char idx_min = 0; + + h_element h_element_t; + int s = (BG==1)? h_ele_row_bg1_count[iBlkRow]:h_ele_row_bg2_count[iBlkRow]; + offsetR = (iMCW * row*col*Zc) + iBlkRow * Zc + iSubRow; // row*col*Zc = size of dev_dt +// if(blockIdx.x == 0 && threadIdx.x == 1) printf("s: %d, offset %d\n", s, offsetR); +// The 1st recursion + for(int i = 0; i < s; i++) // loop through all the ZxZ sub-blocks in a row + { + h_element_t = dev_h_compact1[i*row+iBlkRow]; // compact_col == row + + iBlkCol = h_element_t.y; + shift_t = h_element_t.value; + + shift_t = (iSubRow + shift_t) % Zc; + iCol = (iMCW * col*Zc) + iBlkCol * Zc + shift_t; // col*Zc = size of llr + Q = dev_llr[iCol]; + Q_abs = (Q>0)? Q : -Q; + sq = Q < 0; +// if(blockIdx.x == 0 && threadIdx.x == 1) printf("i %d, icol %d, Q: %d\n", i, iCol, Q); + // quick version + sign = sign * (1 - sq * 2); + Q_sign |= sq << i; + + if (Q_abs < rmin1){ + rmin2 = rmin1; + rmin1 = Q_abs; + idx_min = i; + } else if (Q_abs < rmin2){ + rmin2 = Q_abs; + } + } + +// if(blockIdx.x == 0 && threadIdx.x == 1)printf("min1 %d, min2 %d, min1_idx %d\n", rmin1, rmin2, idx_min); + +// The 2nd recursion + for(int i = 0; i < s; i++){ + // v0: Best performance so far. 0.75f is the value of alpha. + sq = 1 - 2 * ((Q_sign >> i) & 0x01); + R_temp = 0.75f * sign * sq * (i != idx_min ? rmin1 : rmin2); + // write results to global memory + h_element_t = dev_h_compact1[i*row+iBlkRow]; + int addr_temp = offsetR + h_element_t.y * row * Zc; + dev_dt[addr_temp] = R_temp; +// if(blockIdx.x == 0 && threadIdx.x == 1)printf("R_temp %d, temp_addr %d\n", R_temp, addr_temp); + } +} + +// Kernel_1 +__global__ void ldpc_cnp_kernel(/*char * dev_llr, char * dev_dt,*/ int BG, int row, int col, int Zc) +{ +// if(blockIdx.x == 0 && threadIdx.x == 1) printf("cnp\n"); + int iMCW = blockIdx.y; + int iBlkRow = blockIdx.x; // block row in h_base + int iBlkCol; // block col in h_base + int iSubRow = threadIdx.x; // row index in sub_block of h_base + int iCol; // overall col index in h_base + int offsetR; + int shift_t; + +// For 2-min algorithm. + int Q_sign = 0; + int sq; + int Q, Q_abs; + int R_temp; + + int sign = 1; + int rmin1 = INT32_MAX; + int rmin2 = INT32_MAX; + char idx_min = 0; + + h_element h_element_t; + int s = (BG==1)? h_ele_row_bg1_count[iBlkRow]: h_ele_row_bg2_count[iBlkRow]; + offsetR = (iMCW *row*col*Zc) + iBlkRow * Zc + iSubRow; // row * col * Zc = size of dev_dt +// if(blockIdx.x == 0 && threadIdx.x == 1) printf("s: %d, offset %d\n", s, offsetR); +// The 1st recursion + for(int i = 0; i < s; i++) // loop through all the ZxZ sub-blocks in a row + { + h_element_t = dev_h_compact1[i*row+iBlkRow]; + + iBlkCol = h_element_t.y; + shift_t = h_element_t.value; + shift_t = (iSubRow + shift_t) % Zc; + iCol = iBlkCol * Zc + shift_t; + + R_temp = dev_dt[offsetR + iBlkCol * row * Zc]; + + Q = dev_llr[iMCW * (col*Zc) + iCol] - R_temp; + Q_abs = (Q>0)? Q : -Q; +// if(blockIdx.x == 0 && threadIdx.x == 1) printf("i %d, icol %d, Q: %d\n", i, iCol, Q); + sq = Q < 0; + sign = sign * (1 - sq * 2); + Q_sign |= sq << i; + + if (Q_abs < rmin1){ + rmin2 = rmin1; + rmin1 = Q_abs; + idx_min = i; + } else if (Q_abs < rmin2){ + rmin2 = Q_abs; + } + + } + +// if(blockIdx.x == 0 && threadIdx.x == 1)printf("min1 %d, min2 %d, min1_idx %d\n", rmin1, rmin2, idx_min); + +// The 2nd recursion + for(int i = 0; i < s; i ++){ + sq = 1 - 2 * ((Q_sign >> i) & 0x01); + R_temp = 0.75f * sign * sq * (i != idx_min ? rmin1 : rmin2); + + + // write results to global memory + h_element_t = dev_h_compact1[i*row+iBlkRow]; + int addr_temp = h_element_t.y * row * Zc + offsetR; + dev_dt[addr_temp] = R_temp; +// if(blockIdx.x == 0 && threadIdx.x == 1)printf("R_temp %d, temp_addr %d\n", R_temp, addr_temp); + } +} + +// Kernel 2: VNP processing +__global__ void +ldpc_vnp_kernel_normal(/*char * dev_llr, char * dev_dt, char * dev_const_llr,*/ int BG, int row, int col, int Zc) +{ + int iMCW = blockIdx.y; + int iBlkCol = blockIdx.x; + int iBlkRow; + int iSubCol = threadIdx.x; + int iRow; + int iCol; + + int shift_t, sf; + int APP; + + h_element h_element_t; + + // update all the llr values + iCol = iBlkCol * Zc + iSubCol; + APP = dev_const_llr[iMCW *col*Zc + iCol]; + int offsetDt = iMCW *row*col*Zc + iBlkCol * row * Zc; + int s = (BG==1)? h_ele_col_bg1_count[iBlkCol]:h_ele_col_bg2_count[iBlkCol]; + + for(int i = 0; i < s; i++) + { + h_element_t = dev_h_compact2[i*col+iBlkCol]; + + shift_t = h_element_t.value%Zc; + iBlkRow = h_element_t.x; + + sf = iSubCol - shift_t; + sf = (sf + Zc) % Zc; + + iRow = iBlkRow * Zc + sf; + APP = APP + dev_dt[offsetDt + iRow]; + } + if(APP > SCHAR_MAX) APP = SCHAR_MAX; + if(APP < SCHAR_MIN) APP = SCHAR_MIN; + // write back to device global memory + dev_llr[iMCW *col*Zc + iCol] = APP; +} + + +__global__ void pack_decoded_bit(/*char *dev, unsigned char *host,*/ int col, int Zc) +{ + __shared__ unsigned char tmp[128]; + int iMCW = blockIdx.y; + int tid = iMCW * col*Zc + blockIdx.x*128 + threadIdx.x; + int btid = threadIdx.x; + tmp[btid] = 0; + + if(dev_llr[tid] < 0){ + tmp[btid] = 1 << (7-(btid&7)); + } + __syncthreads(); + + if(threadIdx.x < 16){ + dev_tmp[iMCW * col*Zc + blockIdx.x*16+threadIdx.x] = 0; + for(int i = 0; i < 8; i++){ + dev_tmp[iMCW * col*Zc + blockIdx.x*16+threadIdx.x] += tmp[threadIdx.x*8+i]; + } + } +} + +void read_BG(int BG, int *h, int row, int col) +{ + int compact_row = 30, compact_col = 19; + if(BG==2){compact_row = 10, compact_col = 23;} + + h_element h_element_temp; + + // init the compact matrix + for(int i = 0; i < compact_col; i++){ + for(int j = 0; j < row; j++){ + h_element_temp.x = 0; + h_element_temp.y = 0; + h_element_temp.value = -1; + h_compact1[i*row+j] = h_element_temp; // h[i][0-11], the same column + } + } + // scan the h matrix, and gengerate compact mode of h + for(int i = 0; i < row; i++){ + int k = 0; + for(int j = 0; j < col; j++){ + if(h[i*col+j] != -1){ + h_element_temp.x = i; + h_element_temp.y = j; + h_element_temp.value = h[i*col+j]; + h_compact1[k*row+i] = h_element_temp; + k++; + } + } + } + + // h_compact2 + // init the compact matrix + for(int i = 0; i < compact_row; i++){ + for(int j = 0; j < col; j++){ + h_element_temp.x = 0; + h_element_temp.y = 0; + h_element_temp.value = -1; + h_compact2[i*col+j] = h_element_temp; + } + } + + for(int j = 0; j < col; j++){ + int k=0; + for(int i = 0; i < row; i++){ + if(h[i*col+j] != -1){ + // although h is transposed, the (x,y) is still (iBlkRow, iBlkCol) + h_element_temp.x = i; + h_element_temp.y = j; + h_element_temp.value = h[i*col+j]; + h_compact2[k*col+j] = h_element_temp; + k++; + } + } + } + + /* + for(int i = 0; i < compact_col; i++){ + for(int j = 0; j < row; j++){ + printf("%3d, ", h_compact1[i*row+j].value); + } + printf("\n"); + } + + for(int i = 0; i < compact_row; i++){ + for(int j = 0; j < col; j++){ + printf("%3d,", h_compact2[i*col+j].value); + } + printf("\n"); + } + */ +} + +extern "C" +void init_LLR_DMA_for_CUDA(t_nrLDPC_dec_params* p_decParams, int8_t* p_llr, int8_t* p_out, int block_length){ + + uint16_t Zc = p_decParams->Z; + uint8_t BG = p_decParams->BG; + uint8_t row,col; + if(BG == 1){ + row = 46; + col = 68; + } + else{ + row = 42; + col = 52; + } + unsigned char *hard_decision = (unsigned char*)p_out; + int memorySize_llr_cuda = col * Zc * sizeof(char) * MC; + cudaCheck( cudaMemcpyToSymbol(dev_const_llr, p_llr, memorySize_llr_cuda) ); + cudaCheck( cudaMemcpyToSymbol(dev_llr, p_llr, memorySize_llr_cuda) ); + cudaDeviceSynchronize(); + +} + +extern "C" +int32_t nrLDPC_decoder_LYC(t_nrLDPC_dec_params* p_decParams, int8_t* p_llr, int8_t* p_out, int block_length, time_stats_t *time_decoder) +{ + + + uint16_t Zc = p_decParams->Z; + uint8_t BG = p_decParams->BG; + uint8_t numMaxIter = p_decParams->numMaxIter; + e_nrLDPC_outMode outMode = p_decParams->outMode; + cudaError_t cudaStatus; + uint8_t row,col; + if(BG == 1){ + row = 46; + col = 68; + } + else{ + row = 42; + col = 52; + } + +// alloc memory + unsigned char *hard_decision = (unsigned char*)p_out; +// gpu + int memorySize_llr_cuda = col * Zc * sizeof(char) * MC; + cudaCheck( cudaMemcpyToSymbol(dev_const_llr, p_llr, memorySize_llr_cuda) ); + cudaCheck( cudaMemcpyToSymbol(dev_llr, p_llr, memorySize_llr_cuda) ); + +// Define CUDA kernel dimension + int blockSizeX = Zc; + dim3 dimGridKernel1(row, MC, 1); // dim of the thread blocks + dim3 dimBlockKernel1(blockSizeX, 1, 1); + + dim3 dimGridKernel2(col, MC, 1); + dim3 dimBlockKernel2(blockSizeX, 1, 1); + cudaDeviceSynchronize(); + +// lauch kernel + + for(int ii = 0; ii < MAX_ITERATION; ii++){ + // first kernel + if(ii == 0){ + ldpc_cnp_kernel_1st_iter + <<>> + (/*dev_llr,*/ BG, row, col, Zc); + }else{ + ldpc_cnp_kernel + <<>> + (/*dev_llr,*/ BG, row, col, Zc); + } + // second kernel + ldpc_vnp_kernel_normal + <<>> + // (dev_llr, dev_const_llr,BG, row, col, Zc); + (BG, row, col, Zc); + } + + int pack = (block_length/128)+1; + dim3 pack_block(pack, MC, 1); + pack_decoded_bit<<>>(/*dev_llr,*/ /*dev_tmp,*/ col, Zc); + + cudaCheck( cudaMemcpyFromSymbol((void*)hard_decision, (const void*)dev_tmp, (block_length/8)*sizeof(unsigned char)) ); + cudaDeviceSynchronize(); + + + return MAX_ITERATION; + +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder_LYC/nrLDPC_decoder_LYC.h b/openair1/PHY/CODING/nrLDPC_decoder_LYC/nrLDPC_decoder_LYC.h new file mode 100644 index 0000000000..c290cedf7d --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder_LYC/nrLDPC_decoder_LYC.h @@ -0,0 +1,34 @@ +#ifndef __NR_LDPC_DECODER_LYC__H__ +#define __NR_LDPC_DECODER_LYC__H__ + + +/*! \file PHY/CODING/nrLDPC_decoder_LYC/nrLDPC_decoder_LYC.h + * \brief LDPC cuda support BG1 all length + * \author NCTU OpinConnect Terng-Yin Hsu,WEI-YING,LIN + * \email tyhsu@cs.nctu.edu.tw + * \date 13-05-2020 + * \version + * \note + * \warning + */ + + +/*** + \brief LDPC decoder + \param p_decParams LDPC decoder parameters + \param p_llr Input LLRs + \param p_llrOut Output vector + \param p_profiler LDPC profiler statistics +****/ + +int32_t nrLDPC_decoder_LYC(t_nrLDPC_dec_params* p_decParams, int8_t* p_llr, int8_t* p_out, int block_length, time_stats_t *time_decoder); + + +void init_LLR_DMA_for_CUDA(t_nrLDPC_dec_params* p_decParams, int8_t* p_llr, int8_t* p_out, int block_length); + +void warmup_for_GPU(void); + +void set_compact_BG(int Zc, short BG); + + +#endif diff --git a/openair1/PHY/CODING/nrLDPC_decoder_LYC/nrLDPC_decoder_LYC_debug.cu b/openair1/PHY/CODING/nrLDPC_decoder_LYC/nrLDPC_decoder_LYC_debug.cu new file mode 100644 index 0000000000..0d22a312bd --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder_LYC/nrLDPC_decoder_LYC_debug.cu @@ -0,0 +1,396 @@ +#include +#include +#include +#include +#include "PHY/CODING/nrLDPC_decoder_LYC/nrLDPC_types.h" +#include "PHY/CODING/nrLDPC_decoder_LYC/nrLDPC_defs.h" + +#define MAX_ITERATION 5 +#define CW 1 + +#define cudaCheck(ans) { cudaAssert((ans), __FILE__, __LINE__); } +inline void cudaAssert(cudaError_t code, const char *file, int line) +{ + if (code != cudaSuccess){ + fprintf(stderr,"GPUassert: %s %s %d\n", cudaGetErrorString(code), file, line); + exit(code); + } +} +// row and col element count + + + +typedef struct{ + char x; + char y; + short value; +} h_element; + +__device__ __constant__ char h_element_count1_bg1[46] = { + 19, 19, 19, 19, 3, 8, 9, 7, 10, 9, + 7, 8, 7, 6, 7, 7, 6, 6, 6, 6, + 6, 6, 5, 5, 6, 5, 5, 4, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 4, 5, 5, + 4, 5, 4, 5, 5, 4}; +__device__ __constant__ char h_element_count2_bg1[68] = { + 30, 28, 7, 11, 9, 4, 8, 12, 8, 7, + 12, 10, 12, 11, 10, 7, 10, 10, 13, 7, + 8, 11, 12, 5, 6, 6, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1}; +__device__ __constant__ char h_element_count1_bg2[42] = { + 8, 10, 8, 10, 4, 6, 6, 6, 4, 5, + 5, 5, 4, 5, 5, 4, 5, 5, 4, 4, + 4, 4, 3, 4, 4, 3, 5, 3, 4, 3, + 5, 3, 4, 4, 4, 4, 4, 3, 4, 4, + 4, 4}; +__device__ __constant__ char h_element_count2_bg2[52] = { + 22, 23, 10, 5, 5, 14, 7, 13, 6, 8, + 9, 16, 9, 12, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1}; + +// BG +__device__ __constant__ h_element dev_h_base1_1[316]={ + { .x= 0, .y= 0, .value=307 }, { .x= 0, .y= 1, .value= 19 }, { .x= 0, .y= 2, .value= 50 }, { .x= 0, .y= 3, .value=369 }, { .x= 0, .y= 5, .value=181 }, { .x= 0, .y= 6, .value=216 }, { .x= 0, .y= 9, .value=317 }, { .x= 0, .y=10, .value=288 }, { .x= 0, .y=11, .value=109 }, { .x= 0, .y=12, .value= 17 }, + { .x= 0, .y=13, .value=357 }, { .x= 0, .y=15, .value=215 }, { .x= 0, .y=16, .value=106 }, { .x= 0, .y=18, .value=242 }, { .x= 0, .y=19, .value=180 }, { .x= 0, .y=20, .value=330 }, { .x= 0, .y=21, .value=346 }, { .x= 0, .y=22, .value= 1 }, { .x= 0, .y=23, .value= 0 }, { .x= 1, .y= 0, .value= 76 }, + { .x= 1, .y= 2, .value= 76 }, { .x= 1, .y= 3, .value= 73 }, { .x= 1, .y= 4, .value=288 }, { .x= 1, .y= 5, .value=144 }, { .x= 1, .y= 7, .value=331 }, { .x= 1, .y= 8, .value=331 }, { .x= 1, .y= 9, .value=178 }, { .x= 1, .y=11, .value=295 }, { .x= 1, .y=12, .value=342 }, { .x= 1, .y=14, .value=217 }, + { .x= 1, .y=15, .value= 99 }, { .x= 1, .y=16, .value=354 }, { .x= 1, .y=17, .value=114 }, { .x= 1, .y=19, .value=331 }, { .x= 1, .y=21, .value=112 }, { .x= 1, .y=22, .value= 0 }, { .x= 1, .y=23, .value= 0 }, { .x= 1, .y=24, .value= 0 }, { .x= 2, .y= 0, .value=205 }, { .x= 2, .y= 1, .value=250 }, + { .x= 2, .y= 2, .value=328 }, { .x= 2, .y= 4, .value=332 }, { .x= 2, .y= 5, .value=256 }, { .x= 2, .y= 6, .value=161 }, { .x= 2, .y= 7, .value=267 }, { .x= 2, .y= 8, .value=160 }, { .x= 2, .y= 9, .value= 63 }, { .x= 2, .y=10, .value=129 }, { .x= 2, .y=13, .value=200 }, { .x= 2, .y=14, .value= 88 }, + { .x= 2, .y=15, .value= 53 }, { .x= 2, .y=17, .value=131 }, { .x= 2, .y=18, .value=240 }, { .x= 2, .y=19, .value=205 }, { .x= 2, .y=20, .value= 13 }, { .x= 2, .y=24, .value= 0 }, { .x= 2, .y=25, .value= 0 }, { .x= 3, .y= 0, .value=276 }, { .x= 3, .y= 1, .value= 87 }, { .x= 3, .y= 3, .value= 0 }, + { .x= 3, .y= 4, .value=275 }, { .x= 3, .y= 6, .value=199 }, { .x= 3, .y= 7, .value=153 }, { .x= 3, .y= 8, .value= 56 }, { .x= 3, .y=10, .value=132 }, { .x= 3, .y=11, .value=305 }, { .x= 3, .y=12, .value=231 }, { .x= 3, .y=13, .value=341 }, { .x= 3, .y=14, .value=212 }, { .x= 3, .y=16, .value=304 }, + { .x= 3, .y=17, .value=300 }, { .x= 3, .y=18, .value=271 }, { .x= 3, .y=20, .value= 39 }, { .x= 3, .y=21, .value=357 }, { .x= 3, .y=22, .value= 1 }, { .x= 3, .y=25, .value= 0 }, { .x= 4, .y= 0, .value=332 }, { .x= 4, .y= 1, .value=181 }, { .x= 4, .y=26, .value= 0 }, { .x= 5, .y= 0, .value=195 }, + { .x= 5, .y= 1, .value= 14 }, { .x= 5, .y= 3, .value=115 }, { .x= 5, .y=12, .value=166 }, { .x= 5, .y=16, .value=241 }, { .x= 5, .y=21, .value= 51 }, { .x= 5, .y=22, .value=157 }, { .x= 5, .y=27, .value= 0 }, { .x= 6, .y= 0, .value=278 }, { .x= 6, .y= 6, .value=257 }, { .x= 6, .y=10, .value= 1 }, + { .x= 6, .y=11, .value=351 }, { .x= 6, .y=13, .value= 92 }, { .x= 6, .y=17, .value=253 }, { .x= 6, .y=18, .value= 18 }, { .x= 6, .y=20, .value=225 }, { .x= 6, .y=28, .value= 0 }, { .x= 7, .y= 0, .value= 9 }, { .x= 7, .y= 1, .value= 62 }, { .x= 7, .y= 4, .value=316 }, { .x= 7, .y= 7, .value=333 }, + { .x= 7, .y= 8, .value=290 }, { .x= 7, .y=14, .value=114 }, { .x= 7, .y=29, .value= 0 }, { .x= 8, .y= 0, .value=307 }, { .x= 8, .y= 1, .value=179 }, { .x= 8, .y= 3, .value=165 }, { .x= 8, .y=12, .value= 18 }, { .x= 8, .y=16, .value= 39 }, { .x= 8, .y=19, .value=224 }, { .x= 8, .y=21, .value=368 }, + { .x= 8, .y=22, .value= 67 }, { .x= 8, .y=24, .value=170 }, { .x= 8, .y=30, .value= 0 }, { .x= 9, .y= 0, .value=366 }, { .x= 9, .y= 1, .value=232 }, { .x= 9, .y=10, .value=321 }, { .x= 9, .y=11, .value=133 }, { .x= 9, .y=13, .value= 57 }, { .x= 9, .y=17, .value=303 }, { .x= 9, .y=18, .value= 63 }, + { .x= 9, .y=20, .value= 82 }, { .x= 9, .y=31, .value= 0 }, { .x=10, .y= 1, .value=101 }, { .x=10, .y= 2, .value=339 }, { .x=10, .y= 4, .value=274 }, { .x=10, .y= 7, .value=111 }, { .x=10, .y= 8, .value=383 }, { .x=10, .y=14, .value=354 }, { .x=10, .y=32, .value= 0 }, { .x=11, .y= 0, .value= 48 }, + { .x=11, .y= 1, .value=102 }, { .x=11, .y=12, .value= 8 }, { .x=11, .y=16, .value= 47 }, { .x=11, .y=21, .value=188 }, { .x=11, .y=22, .value=334 }, { .x=11, .y=23, .value=115 }, { .x=11, .y=33, .value= 0 }, { .x=12, .y= 0, .value= 77 }, { .x=12, .y= 1, .value=186 }, { .x=12, .y=10, .value=174 }, + { .x=12, .y=11, .value=232 }, { .x=12, .y=13, .value= 50 }, { .x=12, .y=18, .value= 74 }, { .x=12, .y=34, .value= 0 }, { .x=13, .y= 0, .value=313 }, { .x=13, .y= 3, .value=177 }, { .x=13, .y= 7, .value=266 }, { .x=13, .y=20, .value=115 }, { .x=13, .y=23, .value=370 }, { .x=13, .y=35, .value= 0 }, + { .x=14, .y= 0, .value=142 }, { .x=14, .y=12, .value=248 }, { .x=14, .y=15, .value=137 }, { .x=14, .y=16, .value= 89 }, { .x=14, .y=17, .value=347 }, { .x=14, .y=21, .value= 12 }, { .x=14, .y=36, .value= 0 }, { .x=15, .y= 0, .value=241 }, { .x=15, .y= 1, .value= 2 }, { .x=15, .y=10, .value=210 }, + { .x=15, .y=13, .value=318 }, { .x=15, .y=18, .value= 55 }, { .x=15, .y=25, .value=269 }, { .x=15, .y=37, .value= 0 }, { .x=16, .y= 1, .value= 13 }, { .x=16, .y= 3, .value=338 }, { .x=16, .y=11, .value= 57 }, { .x=16, .y=20, .value=289 }, { .x=16, .y=22, .value= 57 }, { .x=16, .y=38, .value= 0 }, + { .x=17, .y= 0, .value=260 }, { .x=17, .y=14, .value=303 }, { .x=17, .y=16, .value= 81 }, { .x=17, .y=17, .value=358 }, { .x=17, .y=21, .value=375 }, { .x=17, .y=39, .value= 0 }, { .x=18, .y= 1, .value=130 }, { .x=18, .y=12, .value=163 }, { .x=18, .y=13, .value=280 }, { .x=18, .y=18, .value=132 }, + { .x=18, .y=19, .value= 4 }, { .x=18, .y=40, .value= 0 }, { .x=19, .y= 0, .value=145 }, { .x=19, .y= 1, .value=213 }, { .x=19, .y= 7, .value=344 }, { .x=19, .y= 8, .value=242 }, { .x=19, .y=10, .value=197 }, { .x=19, .y=41, .value= 0 }, { .x=20, .y= 0, .value=187 }, { .x=20, .y= 3, .value=206 }, + { .x=20, .y= 9, .value=264 }, { .x=20, .y=11, .value=341 }, { .x=20, .y=22, .value= 59 }, { .x=20, .y=42, .value= 0 }, { .x=21, .y= 1, .value=205 }, { .x=21, .y= 5, .value=102 }, { .x=21, .y=16, .value=328 }, { .x=21, .y=20, .value=213 }, { .x=21, .y=21, .value= 97 }, { .x=21, .y=43, .value= 0 }, + { .x=22, .y= 0, .value= 30 }, { .x=22, .y=12, .value= 11 }, { .x=22, .y=13, .value=233 }, { .x=22, .y=17, .value= 22 }, { .x=22, .y=44, .value= 0 }, { .x=23, .y= 1, .value= 24 }, { .x=23, .y= 2, .value= 89 }, { .x=23, .y=10, .value= 61 }, { .x=23, .y=18, .value= 27 }, { .x=23, .y=45, .value= 0 }, + { .x=24, .y= 0, .value=298 }, { .x=24, .y= 3, .value=158 }, { .x=24, .y= 4, .value=235 }, { .x=24, .y=11, .value=339 }, { .x=24, .y=22, .value=234 }, { .x=24, .y=46, .value= 0 }, { .x=25, .y= 1, .value= 72 }, { .x=25, .y= 6, .value= 17 }, { .x=25, .y= 7, .value=383 }, { .x=25, .y=14, .value=312 }, + { .x=25, .y=47, .value= 0 }, { .x=26, .y= 0, .value= 71 }, { .x=26, .y= 2, .value= 81 }, { .x=26, .y= 4, .value= 76 }, { .x=26, .y=15, .value=136 }, { .x=26, .y=48, .value= 0 }, { .x=27, .y= 1, .value=194 }, { .x=27, .y= 6, .value=194 }, { .x=27, .y= 8, .value=101 }, { .x=27, .y=49, .value= 0 }, + { .x=28, .y= 0, .value=222 }, { .x=28, .y= 4, .value= 19 }, { .x=28, .y=19, .value=244 }, { .x=28, .y=21, .value=274 }, { .x=28, .y=50, .value= 0 }, { .x=29, .y= 1, .value=252 }, { .x=29, .y=14, .value= 5 }, { .x=29, .y=18, .value=147 }, { .x=29, .y=25, .value= 78 }, { .x=29, .y=51, .value= 0 }, + { .x=30, .y= 0, .value=159 }, { .x=30, .y=10, .value=229 }, { .x=30, .y=13, .value=260 }, { .x=30, .y=24, .value= 90 }, { .x=30, .y=52, .value= 0 }, { .x=31, .y= 1, .value=100 }, { .x=31, .y= 7, .value=215 }, { .x=31, .y=22, .value=258 }, { .x=31, .y=25, .value=256 }, { .x=31, .y=53, .value= 0 }, + { .x=32, .y= 0, .value=102 }, { .x=32, .y=12, .value=201 }, { .x=32, .y=14, .value=175 }, { .x=32, .y=24, .value=287 }, { .x=32, .y=54, .value= 0 }, { .x=33, .y= 1, .value=323 }, { .x=33, .y= 2, .value= 8 }, { .x=33, .y=11, .value=361 }, { .x=33, .y=21, .value=105 }, { .x=33, .y=55, .value= 0 }, + { .x=34, .y= 0, .value=230 }, { .x=34, .y= 7, .value=148 }, { .x=34, .y=15, .value=202 }, { .x=34, .y=17, .value=312 }, { .x=34, .y=56, .value= 0 }, { .x=35, .y= 1, .value=320 }, { .x=35, .y= 6, .value=335 }, { .x=35, .y=12, .value= 2 }, { .x=35, .y=22, .value=266 }, { .x=35, .y=57, .value= 0 }, + { .x=36, .y= 0, .value=210 }, { .x=36, .y=14, .value=313 }, { .x=36, .y=15, .value=297 }, { .x=36, .y=18, .value= 21 }, { .x=36, .y=58, .value= 0 }, { .x=37, .y= 1, .value=269 }, { .x=37, .y=13, .value= 82 }, { .x=37, .y=23, .value=115 }, { .x=37, .y=59, .value= 0 }, { .x=38, .y= 0, .value=185 }, + { .x=38, .y= 9, .value=177 }, { .x=38, .y=10, .value=289 }, { .x=38, .y=12, .value=214 }, { .x=38, .y=60, .value= 0 }, { .x=39, .y= 1, .value=258 }, { .x=39, .y= 3, .value= 93 }, { .x=39, .y= 7, .value=346 }, { .x=39, .y=19, .value=297 }, { .x=39, .y=61, .value= 0 }, { .x=40, .y= 0, .value=175 }, + { .x=40, .y= 8, .value= 37 }, { .x=40, .y=17, .value=312 }, { .x=40, .y=62, .value= 0 }, { .x=41, .y= 1, .value= 52 }, { .x=41, .y= 3, .value=314 }, { .x=41, .y= 9, .value=139 }, { .x=41, .y=18, .value=288 }, { .x=41, .y=63, .value= 0 }, { .x=42, .y= 0, .value=113 }, { .x=42, .y= 4, .value= 14 }, + { .x=42, .y=24, .value=218 }, { .x=42, .y=64, .value= 0 }, { .x=43, .y= 1, .value=113 }, { .x=43, .y=16, .value=132 }, { .x=43, .y=18, .value=114 }, { .x=43, .y=25, .value=168 }, { .x=43, .y=65, .value= 0 }, { .x=44, .y= 0, .value= 80 }, { .x=44, .y= 7, .value= 78 }, { .x=44, .y= 9, .value=163 }, + { .x=44, .y=22, .value=274 }, { .x=44, .y=66, .value= 0 }, { .x=45, .y= 1, .value=135 }, { .x=45, .y= 6, .value=149 }, { .x=45, .y=10, .value= 15 }, { .x=45, .y=67, .value= 0 } }; +__device__ __constant__ h_element* dev_h_compact1[46]={ + &(dev_h_base1_1[ 0]), &(dev_h_base1_1[ 19]), &(dev_h_base1_1[ 38]), &(dev_h_base1_1[ 57]), &(dev_h_base1_1[ 76]), &(dev_h_base1_1[ 79]), &(dev_h_base1_1[ 87]), &(dev_h_base1_1[ 96]), &(dev_h_base1_1[103]), &(dev_h_base1_1[113]), + &(dev_h_base1_1[122]), &(dev_h_base1_1[129]), &(dev_h_base1_1[137]), &(dev_h_base1_1[144]), &(dev_h_base1_1[150]), &(dev_h_base1_1[157]), &(dev_h_base1_1[164]), &(dev_h_base1_1[170]), &(dev_h_base1_1[176]), &(dev_h_base1_1[182]), + &(dev_h_base1_1[188]), &(dev_h_base1_1[194]), &(dev_h_base1_1[200]), &(dev_h_base1_1[205]), &(dev_h_base1_1[210]), &(dev_h_base1_1[216]), &(dev_h_base1_1[221]), &(dev_h_base1_1[226]), &(dev_h_base1_1[230]), &(dev_h_base1_1[235]), + &(dev_h_base1_1[240]), &(dev_h_base1_1[245]), &(dev_h_base1_1[250]), &(dev_h_base1_1[255]), &(dev_h_base1_1[260]), &(dev_h_base1_1[265]), &(dev_h_base1_1[270]), &(dev_h_base1_1[275]), &(dev_h_base1_1[279]), &(dev_h_base1_1[284]), + &(dev_h_base1_1[289]), &(dev_h_base1_1[293]), &(dev_h_base1_1[298]), &(dev_h_base1_1[302]), &(dev_h_base1_1[307]), &(dev_h_base1_1[312]) }; +__device__ __constant__ h_element dev_h_base2_1[316]={ + { .x= 0, .y= 0, .value=307 }, { .x= 1, .y= 0, .value= 76 }, { .x= 2, .y= 0, .value=205 }, { .x= 3, .y= 0, .value=276 }, { .x= 4, .y= 0, .value=332 }, { .x= 5, .y= 0, .value=195 }, { .x= 6, .y= 0, .value=278 }, { .x= 7, .y= 0, .value= 9 }, { .x= 8, .y= 0, .value=307 }, { .x= 9, .y= 0, .value=366 }, + { .x=11, .y= 0, .value= 48 }, { .x=12, .y= 0, .value= 77 }, { .x=13, .y= 0, .value=313 }, { .x=14, .y= 0, .value=142 }, { .x=15, .y= 0, .value=241 }, { .x=17, .y= 0, .value=260 }, { .x=19, .y= 0, .value=145 }, { .x=20, .y= 0, .value=187 }, { .x=22, .y= 0, .value= 30 }, { .x=24, .y= 0, .value=298 }, + { .x=26, .y= 0, .value= 71 }, { .x=28, .y= 0, .value=222 }, { .x=30, .y= 0, .value=159 }, { .x=32, .y= 0, .value=102 }, { .x=34, .y= 0, .value=230 }, { .x=36, .y= 0, .value=210 }, { .x=38, .y= 0, .value=185 }, { .x=40, .y= 0, .value=175 }, { .x=42, .y= 0, .value=113 }, { .x=44, .y= 0, .value= 80 }, + { .x= 0, .y= 1, .value= 19 }, { .x= 2, .y= 1, .value=250 }, { .x= 3, .y= 1, .value= 87 }, { .x= 4, .y= 1, .value=181 }, { .x= 5, .y= 1, .value= 14 }, { .x= 7, .y= 1, .value= 62 }, { .x= 8, .y= 1, .value=179 }, { .x= 9, .y= 1, .value=232 }, { .x=10, .y= 1, .value=101 }, { .x=11, .y= 1, .value=102 }, + { .x=12, .y= 1, .value=186 }, { .x=15, .y= 1, .value= 2 }, { .x=16, .y= 1, .value= 13 }, { .x=18, .y= 1, .value=130 }, { .x=19, .y= 1, .value=213 }, { .x=21, .y= 1, .value=205 }, { .x=23, .y= 1, .value= 24 }, { .x=25, .y= 1, .value= 72 }, { .x=27, .y= 1, .value=194 }, { .x=29, .y= 1, .value=252 }, + { .x=31, .y= 1, .value=100 }, { .x=33, .y= 1, .value=323 }, { .x=35, .y= 1, .value=320 }, { .x=37, .y= 1, .value=269 }, { .x=39, .y= 1, .value=258 }, { .x=41, .y= 1, .value= 52 }, { .x=43, .y= 1, .value=113 }, { .x=45, .y= 1, .value=135 }, { .x= 0, .y= 2, .value= 50 }, { .x= 1, .y= 2, .value= 76 }, + { .x= 2, .y= 2, .value=328 }, { .x=10, .y= 2, .value=339 }, { .x=23, .y= 2, .value= 89 }, { .x=26, .y= 2, .value= 81 }, { .x=33, .y= 2, .value= 8 }, { .x= 0, .y= 3, .value=369 }, { .x= 1, .y= 3, .value= 73 }, { .x= 3, .y= 3, .value= 0 }, { .x= 5, .y= 3, .value=115 }, { .x= 8, .y= 3, .value=165 }, + { .x=13, .y= 3, .value=177 }, { .x=16, .y= 3, .value=338 }, { .x=20, .y= 3, .value=206 }, { .x=24, .y= 3, .value=158 }, { .x=39, .y= 3, .value= 93 }, { .x=41, .y= 3, .value=314 }, { .x= 1, .y= 4, .value=288 }, { .x= 2, .y= 4, .value=332 }, { .x= 3, .y= 4, .value=275 }, { .x= 7, .y= 4, .value=316 }, + { .x=10, .y= 4, .value=274 }, { .x=24, .y= 4, .value=235 }, { .x=26, .y= 4, .value= 76 }, { .x=28, .y= 4, .value= 19 }, { .x=42, .y= 4, .value= 14 }, { .x= 0, .y= 5, .value=181 }, { .x= 1, .y= 5, .value=144 }, { .x= 2, .y= 5, .value=256 }, { .x=21, .y= 5, .value=102 }, { .x= 0, .y= 6, .value=216 }, + { .x= 2, .y= 6, .value=161 }, { .x= 3, .y= 6, .value=199 }, { .x= 6, .y= 6, .value=257 }, { .x=25, .y= 6, .value= 17 }, { .x=27, .y= 6, .value=194 }, { .x=35, .y= 6, .value=335 }, { .x=45, .y= 6, .value=149 }, { .x= 1, .y= 7, .value=331 }, { .x= 2, .y= 7, .value=267 }, { .x= 3, .y= 7, .value=153 }, + { .x= 7, .y= 7, .value=333 }, { .x=10, .y= 7, .value=111 }, { .x=13, .y= 7, .value=266 }, { .x=19, .y= 7, .value=344 }, { .x=25, .y= 7, .value=383 }, { .x=31, .y= 7, .value=215 }, { .x=34, .y= 7, .value=148 }, { .x=39, .y= 7, .value=346 }, { .x=44, .y= 7, .value= 78 }, { .x= 1, .y= 8, .value=331 }, + { .x= 2, .y= 8, .value=160 }, { .x= 3, .y= 8, .value= 56 }, { .x= 7, .y= 8, .value=290 }, { .x=10, .y= 8, .value=383 }, { .x=19, .y= 8, .value=242 }, { .x=27, .y= 8, .value=101 }, { .x=40, .y= 8, .value= 37 }, { .x= 0, .y= 9, .value=317 }, { .x= 1, .y= 9, .value=178 }, { .x= 2, .y= 9, .value= 63 }, + { .x=20, .y= 9, .value=264 }, { .x=38, .y= 9, .value=177 }, { .x=41, .y= 9, .value=139 }, { .x=44, .y= 9, .value=163 }, { .x= 0, .y=10, .value=288 }, { .x= 2, .y=10, .value=129 }, { .x= 3, .y=10, .value=132 }, { .x= 6, .y=10, .value= 1 }, { .x= 9, .y=10, .value=321 }, { .x=12, .y=10, .value=174 }, + { .x=15, .y=10, .value=210 }, { .x=19, .y=10, .value=197 }, { .x=23, .y=10, .value= 61 }, { .x=30, .y=10, .value=229 }, { .x=38, .y=10, .value=289 }, { .x=45, .y=10, .value= 15 }, { .x= 0, .y=11, .value=109 }, { .x= 1, .y=11, .value=295 }, { .x= 3, .y=11, .value=305 }, { .x= 6, .y=11, .value=351 }, + { .x= 9, .y=11, .value=133 }, { .x=12, .y=11, .value=232 }, { .x=16, .y=11, .value= 57 }, { .x=20, .y=11, .value=341 }, { .x=24, .y=11, .value=339 }, { .x=33, .y=11, .value=361 }, { .x= 0, .y=12, .value= 17 }, { .x= 1, .y=12, .value=342 }, { .x= 3, .y=12, .value=231 }, { .x= 5, .y=12, .value=166 }, + { .x= 8, .y=12, .value= 18 }, { .x=11, .y=12, .value= 8 }, { .x=14, .y=12, .value=248 }, { .x=18, .y=12, .value=163 }, { .x=22, .y=12, .value= 11 }, { .x=32, .y=12, .value=201 }, { .x=35, .y=12, .value= 2 }, { .x=38, .y=12, .value=214 }, { .x= 0, .y=13, .value=357 }, { .x= 2, .y=13, .value=200 }, + { .x= 3, .y=13, .value=341 }, { .x= 6, .y=13, .value= 92 }, { .x= 9, .y=13, .value= 57 }, { .x=12, .y=13, .value= 50 }, { .x=15, .y=13, .value=318 }, { .x=18, .y=13, .value=280 }, { .x=22, .y=13, .value=233 }, { .x=30, .y=13, .value=260 }, { .x=37, .y=13, .value= 82 }, { .x= 1, .y=14, .value=217 }, + { .x= 2, .y=14, .value= 88 }, { .x= 3, .y=14, .value=212 }, { .x= 7, .y=14, .value=114 }, { .x=10, .y=14, .value=354 }, { .x=17, .y=14, .value=303 }, { .x=25, .y=14, .value=312 }, { .x=29, .y=14, .value= 5 }, { .x=32, .y=14, .value=175 }, { .x=36, .y=14, .value=313 }, { .x= 0, .y=15, .value=215 }, + { .x= 1, .y=15, .value= 99 }, { .x= 2, .y=15, .value= 53 }, { .x=14, .y=15, .value=137 }, { .x=26, .y=15, .value=136 }, { .x=34, .y=15, .value=202 }, { .x=36, .y=15, .value=297 }, { .x= 0, .y=16, .value=106 }, { .x= 1, .y=16, .value=354 }, { .x= 3, .y=16, .value=304 }, { .x= 5, .y=16, .value=241 }, + { .x= 8, .y=16, .value= 39 }, { .x=11, .y=16, .value= 47 }, { .x=14, .y=16, .value= 89 }, { .x=17, .y=16, .value= 81 }, { .x=21, .y=16, .value=328 }, { .x=43, .y=16, .value=132 }, { .x= 1, .y=17, .value=114 }, { .x= 2, .y=17, .value=131 }, { .x= 3, .y=17, .value=300 }, { .x= 6, .y=17, .value=253 }, + { .x= 9, .y=17, .value=303 }, { .x=14, .y=17, .value=347 }, { .x=17, .y=17, .value=358 }, { .x=22, .y=17, .value= 22 }, { .x=34, .y=17, .value=312 }, { .x=40, .y=17, .value=312 }, { .x= 0, .y=18, .value=242 }, { .x= 2, .y=18, .value=240 }, { .x= 3, .y=18, .value=271 }, { .x= 6, .y=18, .value= 18 }, + { .x= 9, .y=18, .value= 63 }, { .x=12, .y=18, .value= 74 }, { .x=15, .y=18, .value= 55 }, { .x=18, .y=18, .value=132 }, { .x=23, .y=18, .value= 27 }, { .x=29, .y=18, .value=147 }, { .x=36, .y=18, .value= 21 }, { .x=41, .y=18, .value=288 }, { .x=43, .y=18, .value=114 }, { .x= 0, .y=19, .value=180 }, + { .x= 1, .y=19, .value=331 }, { .x= 2, .y=19, .value=205 }, { .x= 8, .y=19, .value=224 }, { .x=18, .y=19, .value= 4 }, { .x=28, .y=19, .value=244 }, { .x=39, .y=19, .value=297 }, { .x= 0, .y=20, .value=330 }, { .x= 2, .y=20, .value= 13 }, { .x= 3, .y=20, .value= 39 }, { .x= 6, .y=20, .value=225 }, + { .x= 9, .y=20, .value= 82 }, { .x=13, .y=20, .value=115 }, { .x=16, .y=20, .value=289 }, { .x=21, .y=20, .value=213 }, { .x= 0, .y=21, .value=346 }, { .x= 1, .y=21, .value=112 }, { .x= 3, .y=21, .value=357 }, { .x= 5, .y=21, .value= 51 }, { .x= 8, .y=21, .value=368 }, { .x=11, .y=21, .value=188 }, + { .x=14, .y=21, .value= 12 }, { .x=17, .y=21, .value=375 }, { .x=21, .y=21, .value= 97 }, { .x=28, .y=21, .value=274 }, { .x=33, .y=21, .value=105 }, { .x= 0, .y=22, .value= 1 }, { .x= 1, .y=22, .value= 0 }, { .x= 3, .y=22, .value= 1 }, { .x= 5, .y=22, .value=157 }, { .x= 8, .y=22, .value= 67 }, + { .x=11, .y=22, .value=334 }, { .x=16, .y=22, .value= 57 }, { .x=20, .y=22, .value= 59 }, { .x=24, .y=22, .value=234 }, { .x=31, .y=22, .value=258 }, { .x=35, .y=22, .value=266 }, { .x=44, .y=22, .value=274 }, { .x= 0, .y=23, .value= 0 }, { .x= 1, .y=23, .value= 0 }, { .x=11, .y=23, .value=115 }, + { .x=13, .y=23, .value=370 }, { .x=37, .y=23, .value=115 }, { .x= 1, .y=24, .value= 0 }, { .x= 2, .y=24, .value= 0 }, { .x= 8, .y=24, .value=170 }, { .x=30, .y=24, .value= 90 }, { .x=32, .y=24, .value=287 }, { .x=42, .y=24, .value=218 }, { .x= 2, .y=25, .value= 0 }, { .x= 3, .y=25, .value= 0 }, + { .x=15, .y=25, .value=269 }, { .x=29, .y=25, .value= 78 }, { .x=31, .y=25, .value=256 }, { .x=43, .y=25, .value=168 }, { .x= 4, .y=26, .value= 0 }, { .x= 5, .y=27, .value= 0 }, { .x= 6, .y=28, .value= 0 }, { .x= 7, .y=29, .value= 0 }, { .x= 8, .y=30, .value= 0 }, { .x= 9, .y=31, .value= 0 }, + { .x=10, .y=32, .value= 0 }, { .x=11, .y=33, .value= 0 }, { .x=12, .y=34, .value= 0 }, { .x=13, .y=35, .value= 0 }, { .x=14, .y=36, .value= 0 }, { .x=15, .y=37, .value= 0 }, { .x=16, .y=38, .value= 0 }, { .x=17, .y=39, .value= 0 }, { .x=18, .y=40, .value= 0 }, { .x=19, .y=41, .value= 0 }, + { .x=20, .y=42, .value= 0 }, { .x=21, .y=43, .value= 0 }, { .x=22, .y=44, .value= 0 }, { .x=23, .y=45, .value= 0 }, { .x=24, .y=46, .value= 0 }, { .x=25, .y=47, .value= 0 }, { .x=26, .y=48, .value= 0 }, { .x=27, .y=49, .value= 0 }, { .x=28, .y=50, .value= 0 }, { .x=29, .y=51, .value= 0 }, + { .x=30, .y=52, .value= 0 }, { .x=31, .y=53, .value= 0 }, { .x=32, .y=54, .value= 0 }, { .x=33, .y=55, .value= 0 }, { .x=34, .y=56, .value= 0 }, { .x=35, .y=57, .value= 0 }, { .x=36, .y=58, .value= 0 }, { .x=37, .y=59, .value= 0 }, { .x=38, .y=60, .value= 0 }, { .x=39, .y=61, .value= 0 }, + { .x=40, .y=62, .value= 0 }, { .x=41, .y=63, .value= 0 }, { .x=42, .y=64, .value= 0 }, { .x=43, .y=65, .value= 0 }, { .x=44, .y=66, .value= 0 }, { .x=45, .y=67, .value= 0 } }; +__device__ __constant__ h_element* dev_h_compact2[68]={ + &(dev_h_base2_1[ 0]), &(dev_h_base2_1[ 30]), &(dev_h_base2_1[ 58]), &(dev_h_base2_1[ 65]), &(dev_h_base2_1[ 76]), &(dev_h_base2_1[ 85]), &(dev_h_base2_1[ 89]), &(dev_h_base2_1[ 97]), &(dev_h_base2_1[109]), &(dev_h_base2_1[117]), + &(dev_h_base2_1[124]), &(dev_h_base2_1[136]), &(dev_h_base2_1[146]), &(dev_h_base2_1[158]), &(dev_h_base2_1[169]), &(dev_h_base2_1[179]), &(dev_h_base2_1[186]), &(dev_h_base2_1[196]), &(dev_h_base2_1[206]), &(dev_h_base2_1[219]), + &(dev_h_base2_1[226]), &(dev_h_base2_1[234]), &(dev_h_base2_1[245]), &(dev_h_base2_1[257]), &(dev_h_base2_1[262]), &(dev_h_base2_1[268]), &(dev_h_base2_1[274]), &(dev_h_base2_1[275]), &(dev_h_base2_1[276]), &(dev_h_base2_1[277]), + &(dev_h_base2_1[278]), &(dev_h_base2_1[279]), &(dev_h_base2_1[280]), &(dev_h_base2_1[281]), &(dev_h_base2_1[282]), &(dev_h_base2_1[283]), &(dev_h_base2_1[284]), &(dev_h_base2_1[285]), &(dev_h_base2_1[286]), &(dev_h_base2_1[287]), + &(dev_h_base2_1[288]), &(dev_h_base2_1[289]), &(dev_h_base2_1[290]), &(dev_h_base2_1[291]), &(dev_h_base2_1[292]), &(dev_h_base2_1[293]), &(dev_h_base2_1[294]), &(dev_h_base2_1[295]), &(dev_h_base2_1[296]), &(dev_h_base2_1[297]), + &(dev_h_base2_1[298]), &(dev_h_base2_1[299]), &(dev_h_base2_1[300]), &(dev_h_base2_1[301]), &(dev_h_base2_1[302]), &(dev_h_base2_1[303]), &(dev_h_base2_1[304]), &(dev_h_base2_1[305]), &(dev_h_base2_1[306]), &(dev_h_base2_1[307]), + &(dev_h_base2_1[308]), &(dev_h_base2_1[309]), &(dev_h_base2_1[310]), &(dev_h_base2_1[311]), &(dev_h_base2_1[312]), &(dev_h_base2_1[313]), &(dev_h_base2_1[314]), &(dev_h_base2_1[315]) }; + + + + +__device__ void cnp_1st(int row, char* dev_llr, char* dev_buf, int blk, int thd) +{ + int subrow = threadIdx.x, subcol = threadIdx.x, Zc = blockDim.x; + + for(int i = 0; i < row; i++) + { + int cnt = h_element_count1_bg1[i]; + int min1 = INT32_MAX, min2 = INT32_MAX; + int sign = 0, tsign = 1, idx = 0; + int irow = subrow + Zc*i; + + for(int j = 0; j < cnt; j++) + { + h_element tmp = dev_h_compact1[i][j]; + int icol = tmp.y * Zc + (subcol+tmp.value)%Zc; + + int Q = dev_llr[icol]; + int Q_abs = (Q>0)? Q:-Q; + char sq = (Q<0); + tsign = tsign*(1-sq*2); + sign |= (sq << j); + + if(threadIdx.x == thd && i == blk){ + printf("dev_llr[%d](Q): %d, total_sign: %d, sign: %d\n", icol, dev_llr[icol], tsign, sign); + } + + + if(Q_abs < min1){ + min2 = min1; + min1 = Q_abs; + idx = j; + }else if(Q_abs < min2){ + min2 = Q_abs; + } + } + + if(threadIdx.x == thd && i == blk){ + printf("sign: %d, idx: %d, min1: %d, min2: %d\n", sign, idx, min1, min2); + } + + + for(int j = 0; j < cnt; j++) + { + char sq = 1 - 2 * ((sign >> j) & 0x01); + int temp = tsign * sq * ((j != idx)? min1 : min2); + h_element tmp = dev_h_compact1[i][j]; + int addr = irow + tmp.y * row * Zc; + dev_buf[addr] = temp; + + if(threadIdx.x == thd && i == blk){ + printf("temp: %d, addr: %d\n", temp, addr); + } + } + } + __syncthreads(); +} + +__device__ void bnp(int row, int col, char* dev_llr, char* dev_const_llr, char* dev_buf, int blk, int thd) +{ + int subrow = threadIdx.x, subcol = threadIdx.x, Zc = blockDim.x; + for(int i = 0; i < col; i++) + { + int cnt = h_element_count2_bg1[i]; + int icol = i * Zc + subcol; + int sum = dev_const_llr[icol]; + + for(int j = 0; j < cnt; j++) + { + h_element tmp = dev_h_compact2[i][j]; + int irow = tmp.x * Zc + (subrow + Zc - tmp.value)%Zc; + int addr = i * row * Zc + irow; + sum = sum + dev_buf[addr]; + + if(threadIdx.x == thd && i == blk){ + printf("dev_buf[%d]: %d, sum: %d, x: %d, value: %d, irow: %d\n", addr, dev_buf[addr], sum, tmp.x, tmp.value, irow); + } + + } + if(sum > SCHAR_MAX) sum = SCHAR_MAX; + if(sum < SCHAR_MIN) sum = SCHAR_MIN; + dev_llr[icol] = sum; + } + __syncthreads(); +} + + +__device__ void cnp(int row, char* dev_llr, char* dev_buf, int blk, int thd) +{ + int subrow = threadIdx.x, subcol = threadIdx.x, Zc = blockDim.x; + + for(int i = 0; i < row; i++) + { + int cnt = h_element_count1_bg1[i]; + int min1 = INT32_MAX, min2 = INT32_MAX; + int sign = 0, tsign = 1, idx = 0; + int irow = subrow + Zc*i; + + for(int j = 0; j < cnt; j++) + { + h_element tmp = dev_h_compact1[i][j]; + int icol = tmp.y * Zc + (subcol+tmp.value)%Zc; + + int Q_last = dev_buf[tmp.y * row * Zc + irow]; + + int Q = dev_llr[icol] - Q_last; + int Q_abs = (Q>0)? Q:-Q; + char sq = (Q<0); + tsign = tsign*(1-sq*2); + sign |= (sq << j); + + if(threadIdx.x == thd && i == blk){ + printf("dev_llr[%d](Q): %d, total_sign: %d, sign: %d, last Q: %d, last_pos: %d\n", icol, dev_llr[icol], tsign, sign, Q_last, tmp.y * row * Zc + irow); + } + + + if(Q_abs < min1){ + min2 = min1; + min1 = Q_abs; + idx = j; + }else if(Q_abs < min2){ + min2 = Q_abs; + } + } + + if(threadIdx.x == thd && i == blk){ + printf("sign: %d, idx: %d, min1: %d, min2: %d\n", sign, idx, min1, min2); + } + + + for(int j = 0; j < cnt; j++) + { + char sq = 1 - 2 * ((sign >> j) & 0x01); + int temp = tsign * sq * ((j != idx)? min1 : min2); + h_element tmp = dev_h_compact1[i][j]; + int addr = irow + tmp.y * row * Zc; + dev_buf[addr] = temp; + + + if(threadIdx.x == thd && i == blk){ + printf("temp: %d, addr: %d\n", temp, addr); + } + } + } + __syncthreads(); +} + + + +__global__ void ldpc_decoder_gpu(int BG, char *dev_llr, char *dev_const_llr, char *dev_buf, int blk, int thd) +{ + int iteration = 5; + int row = 46, col = 68; + if(BG == 2){ + row = 42; + col = 52; + } + //extern __shared__ sh_llr[]; + //for() + + for(int i = 0; i < iteration; i++){ + if(i == 0){ + cnp_1st(row, dev_llr, dev_buf, blk, thd); + }else{ + cnp(row, dev_llr, dev_buf, blk, thd); + } + + bnp(row, col, dev_llr, dev_const_llr, dev_buf, blk, thd); + } + +} + + +__global__ void pack_decoded_bit(char *dev, unsigned char *host) +{ + __shared__ unsigned char tmp[256]; + int tid = blockIdx.x*128 + threadIdx.x; + int btid = threadIdx.x; + tmp[btid] = 0; + + if(dev[tid] < 0){ + tmp[btid] = 1 << (7-(btid&7)); + } + __syncthreads(); + + if(threadIdx.x < 16){ + host[blockIdx.x*16+threadIdx.x] = 0; + for(int i = 0; i < 8; i++){ + host[blockIdx.x*16+threadIdx.x] += tmp[threadIdx.x*8+i]; + } + } +} + + +//void nrLDPC_decoder_LYC(int BG, int row, int col, int Zc, int block_length) +extern "C" +int32_t nrLDPC_decoder_LYC(t_nrLDPC_dec_params* p_decParams, int8_t* p_llr, int8_t* p_out, int block_length) +{ + // alloc mem + unsigned char *decision = (unsigned char*)p_out; + + uint16_t Zc = p_decParams->Z; + uint8_t BG = p_decParams->BG; + uint8_t numMaxIter = p_decParams->numMaxIter; + e_nrLDPC_outMode outMode = p_decParams->outMode; + + uint8_t row,col; + if(BG == 1){ + row = 46; + col = 68; + } + else{ + row = 42; + col = 52; + } + // gpu mem size + int memsize_llr = col * Zc * sizeof(char); + int memsize_buf = col * Zc * row * sizeof(char); + + // gpu + char *dev_llr; + char *dev_const_llr; + char *dev_buf; + unsigned char *dev_tmp; + + // gpu alloc + int p; + cudaCheck( cudaMallocPitch((void**)&dev_llr, (size_t*)&p, memsize_llr, 1) ); + cudaCheck( cudaMallocPitch((void**)&dev_const_llr, (size_t*)&p, memsize_llr, 1) ); + cudaCheck( cudaMallocPitch((void**)&dev_buf, (size_t*)&p, memsize_buf, 1) ); + cudaCheck( cudaMallocPitch((void**)&dev_tmp, (size_t*)&p, memsize_llr, 1) ); + + // gpu memcpy + cudaCheck( cudaMemcpy((void*)dev_llr, p_llr, memsize_llr, cudaMemcpyHostToDevice) ); + cudaCheck( cudaMemcpy((void*)dev_const_llr, p_llr, memsize_llr, cudaMemcpyHostToDevice) ); + //cudaCheck( cudaMemcpy((void*)dev_const_llr, (const void*)p_llr, memsize_llr, cudaMemcpyHostToDevice) ); + + // gpu argument + dim3 block(CW, 1, 1); + dim3 thread(Zc, 1, 1); + + // debug info + int blk, thd; + fprintf(stderr, "block thread focus: \n"); + scanf("%d%d", &blk, &thd); + + ldpc_decoder_gpu<<>>(BG, dev_llr, dev_const_llr, dev_buf, blk, thd); + + int pack = block_length/128; + pack_decoded_bit<<>>(dev_llr, dev_tmp); + + cudaCheck( cudaMemcpy((void*)decision, (const void*)dev_tmp, block_length*sizeof(unsigned char), cudaMemcpyDeviceToHost) ); + + return MAX_ITERATION; + +} diff --git a/openair1/PHY/CODING/nrPolar_tools/nr_polar_decoder.c b/openair1/PHY/CODING/nrPolar_tools/nr_polar_decoder.c index 53119a1c2b..18db8a01fb 100644 --- a/openair1/PHY/CODING/nrPolar_tools/nr_polar_decoder.c +++ b/openair1/PHY/CODING/nrPolar_tools/nr_polar_decoder.c @@ -569,7 +569,7 @@ int8_t polar_decoder_dci(double *input, } void init_polar_deinterleaver_table(t_nrPolar_params *polarParams) { - AssertFatal(polarParams->K > 32, "K = %d < 33, is not supported yet\n",polarParams->K); + AssertFatal(polarParams->K > 17, "K = %d < 18, is not allowed\n",polarParams->K); AssertFatal(polarParams->K < 129, "K = %d > 128, is not supported yet\n",polarParams->K); int bit_i,ip,ipmod64; int numbytes = polarParams->K>>3; @@ -670,7 +670,9 @@ uint32_t polar_decoder_int16(int16_t *input, A32_flip[1+offset]=((uint8_t *)&Aprime)[2]; A32_flip[2+offset]=((uint8_t *)&Aprime)[1]; A32_flip[3+offset]=((uint8_t *)&Aprime)[0]; - crc = (uint64_t)(crc24c(A32_flip,8*offset+len)>>8); + if (crclen == 24) crc = (uint64_t)((crc24c(A32_flip,8*offset+len)>>8)&0xffffff); + else if (crclen == 11) crc = (uint64_t)((crc11(A32_flip,8*offset+len)>>21)&0x7ff); + else if (crclen == 6) crc = (uint64_t)((crc6(A32_flip,8*offset+len)>>26)&0x3f); } else if (len<=64) { Ar = (B[0]>>crclen) | (B[1]<<(64-crclen));; uint8_t A64_flip[8+offset]; @@ -688,7 +690,9 @@ uint32_t polar_decoder_int16(int16_t *input, A64_flip[5+offset]=((uint8_t *)&Aprime)[2]; A64_flip[6+offset]=((uint8_t *)&Aprime)[1]; A64_flip[7+offset]=((uint8_t *)&Aprime)[0]; - crc = (uint64_t)(crc24c(A64_flip,8*offset+len)>>8); + if (crclen==24) crc = (uint64_t)(crc24c(A64_flip,8*offset+len)>>8)&0xffffff; + else if (crclen==11) crc = (uint64_t)(crc11(A64_flip,8*offset+len)>>21)&0x7ff; + else if (crclen==6) crc = (uint64_t)(crc6(A64_flip,8*offset+len)>>26)&0x3f; } #if 0 diff --git a/openair1/PHY/CODING/nrPolar_tools/nr_polar_decoding_tools.c b/openair1/PHY/CODING/nrPolar_tools/nr_polar_decoding_tools.c index daa2346098..42d500ae86 100644 --- a/openair1/PHY/CODING/nrPolar_tools/nr_polar_decoding_tools.c +++ b/openair1/PHY/CODING/nrPolar_tools/nr_polar_decoding_tools.c @@ -197,8 +197,10 @@ decoder_node_t *add_nodes(int level, int first_leaf_index, t_nrPolar_params *pol } for (int i=0;iinformation_bit_pattern[i+first_leaf_index]>0) - all_frozen_below=0; + if (polarParams->information_bit_pattern[i+first_leaf_index]>0) { + all_frozen_below=0; + break; + } } if (all_frozen_below==0) diff --git a/openair1/PHY/CODING/nrPolar_tools/nr_polar_defs.h b/openair1/PHY/CODING/nrPolar_tools/nr_polar_defs.h index 6e01a05d0f..a44a08a701 100644 --- a/openair1/PHY/CODING/nrPolar_tools/nr_polar_defs.h +++ b/openair1/PHY/CODING/nrPolar_tools/nr_polar_defs.h @@ -146,7 +146,7 @@ void polar_encoder_dci(uint32_t *in, uint16_t n_RNTI); void polar_encoder_fast(uint64_t *A, - uint32_t *out, + void *out, int32_t crcmask, uint8_t ones_flag, t_nrPolar_params *polarParams); diff --git a/openair1/PHY/CODING/nrPolar_tools/nr_polar_encoder.c b/openair1/PHY/CODING/nrPolar_tools/nr_polar_encoder.c index 8e4b45f744..27c062c217 100644 --- a/openair1/PHY/CODING/nrPolar_tools/nr_polar_encoder.c +++ b/openair1/PHY/CODING/nrPolar_tools/nr_polar_encoder.c @@ -295,8 +295,8 @@ static inline void polar_rate_matching(t_nrPolar_params *polarParams,void *in,vo void build_polar_tables(t_nrPolar_params *polarParams) { // build table b -> c' - AssertFatal(polarParams->K > 32, "K = %d < 33, is not supported yet\n",polarParams->K); - AssertFatal(polarParams->K < 129, "K = %d > 64, is not supported yet\n",polarParams->K); + AssertFatal(polarParams->K > 17, "K = %d < 18, is not possible\n",polarParams->K); + AssertFatal(polarParams->K < 129, "K = %d > 128, is not supported yet\n",polarParams->K); int bit_i,ip; int numbytes = polarParams->K>>3; int residue = polarParams->K&7; @@ -327,7 +327,7 @@ void build_polar_tables(t_nrPolar_params *polarParams) { AssertFatal(polarParams->N==512 || polarParams->N==256 || polarParams->N==128,"N = %d, not done yet\n",polarParams->N); // build G bit vectors for information bit positions and convert the bit as bytes tables in nr_polar_kronecker_power_matrices.c to 64 bit packed vectors. // keep only rows of G which correspond to information/crc bits - polarParams->G_N_tab = (uint64_t **)malloc(polarParams->K * sizeof(int64_t *)); + polarParams->G_N_tab = (uint64_t **)malloc((polarParams->K + polarParams->n_pc) * sizeof(int64_t *)); int k=0; for (int i=0; iN; i++) { @@ -408,18 +408,18 @@ void build_polar_tables(t_nrPolar_params *polarParams) { } void polar_encoder_fast(uint64_t *A, - uint32_t *out, + void *out, int32_t crcmask, uint8_t ones_flag, t_nrPolar_params *polarParams) { - AssertFatal(polarParams->K > 32, "K = %d < 33, is not supported yet\n",polarParams->K); + // AssertFatal(polarParams->K > 32, "K = %d < 33, is not supported yet\n",polarParams->K); AssertFatal(polarParams->K < 129, "K = %d > 128, is not supported yet\n",polarParams->K); AssertFatal(polarParams->payloadBits < 65, "payload bits = %d > 64, is not supported yet\n",polarParams->payloadBits); uint64_t B[4]= {0,0,0,0},Cprime[4]= {0,0,0,0}; int bitlen = polarParams->payloadBits; // append crc AssertFatal(bitlen<129,"support for payloads <= 128 bits\n"); - AssertFatal(polarParams->crcParityBits == 24,"support for 24-bit crc only for now\n"); + // AssertFatal(polarParams->crcParityBits == 24,"support for 24-bit crc only for now\n"); //int bitlen0=bitlen; uint64_t tcrc=0; uint8_t offset = 0; @@ -444,7 +444,9 @@ void polar_encoder_fast(uint64_t *A, A32_flip[1+offset]=((uint8_t *)&Aprime)[2]; A32_flip[2+offset]=((uint8_t *)&Aprime)[1]; A32_flip[3+offset]=((uint8_t *)&Aprime)[0]; - tcrc = (uint64_t)((crcmask^(crc24c(A32_flip,8*offset+bitlen)>>8))); + if (polarParams->crcParityBits == 24) tcrc = (uint64_t)(((crcmask^(crc24c(A32_flip,8*offset+bitlen)>>8)))&0xffffff); + else if (polarParams->crcParityBits == 11) tcrc = (uint64_t)(((crcmask^(crc11(A32_flip,bitlen)>>21)))&0x7ff); + else if (polarParams->crcParityBits == 6) tcrc = (uint64_t)(((crcmask^(crc6(A32_flip,bitlen)>>26)))&0x3f); } else if (bitlen<=64) { uint8_t A64_flip[8+offset]; if (ones_flag) { @@ -461,7 +463,8 @@ void polar_encoder_fast(uint64_t *A, A64_flip[5+offset]=((uint8_t *)&Aprime)[2]; A64_flip[6+offset]=((uint8_t *)&Aprime)[1]; A64_flip[7+offset]=((uint8_t *)&Aprime)[0]; - tcrc = (uint64_t)((crcmask^(crc24c(A64_flip,8*offset+bitlen)>>8))); + if (polarParams->crcParityBits == 24) tcrc = (uint64_t)((crcmask^(crc24c(A64_flip,8*offset+bitlen)>>8)))&0xffffff; + else if (polarParams->crcParityBits == 11) tcrc = (uint64_t)((crcmask^(crc11(A64_flip,bitlen)>>21)))&0x7ff; } else if (bitlen<=128) { uint8_t A128_flip[16+offset]; @@ -479,7 +482,8 @@ void polar_encoder_fast(uint64_t *A, A128_flip[10+offset]=((uint8_t*)&Aprime)[5]; A128_flip[11+offset]=((uint8_t*)&Aprime)[4]; A128_flip[12+offset]=((uint8_t*)&Aprime)[3]; A128_flip[13+offset]=((uint8_t*)&Aprime)[2]; A128_flip[14+offset]=((uint8_t*)&Aprime)[1]; A128_flip[15+offset]=((uint8_t*)&Aprime)[0]; - tcrc = (uint64_t)((crcmask^(crc24c(A128_flip,8*offset+bitlen)>>8))); + if (polarParams->crcParityBits == 24) tcrc = (uint64_t)((crcmask^(crc24c(A128_flip,8*offset+bitlen)>>8)))&0xffffff; + else if (polarParams->crcParityBits == 11) tcrc = (uint64_t)((crcmask^(crc11(A128_flip,bitlen)>>21)))&0x7ff; } int n; @@ -522,6 +526,7 @@ void polar_encoder_fast(uint64_t *A, #ifdef DEBUG_POLAR_ENCODER + printf("Polar encoder: (N,K) : (%d,%d)\n",polarParams->N,polarParams->K); if (polarParams->K<65) printf("A %llx B %llx Cprime %llx (payload bits %d,crc %x)\n", (unsigned long long)(A[0]&(((uint64_t)1<>8); } -#endif + #endif /* printf("Bbytes : %x.%x.%x.%x.%x.%x.%x.%x\n",Bbyte[0],Bbyte[1],Bbyte[2],Bbyte[3],Bbyte[4],Bbyte[5],Bbyte[6],Bbyte[7]); printf("%llx,%llx,%llx,%llx,%llx,%llx,%llx,%llx\n",polarParams->cprime_tab[0][Bbyte[0]] , polarParams->cprime_tab[1][Bbyte[1]] , @@ -671,5 +676,5 @@ void polar_encoder_fast(uint64_t *A, } } memset((void*)out,0,polarParams->encoderLength>>3); - polar_rate_matching(polarParams,(void *)D,(void *)out); + polar_rate_matching(polarParams,(void *)D, out); } diff --git a/openair1/PHY/CODING/nrPolar_tools/nr_polar_uci_defs.h b/openair1/PHY/CODING/nrPolar_tools/nr_polar_uci_defs.h index 42051eb1b5..1ab664e5a2 100644 --- a/openair1/PHY/CODING/nrPolar_tools/nr_polar_uci_defs.h +++ b/openair1/PHY/CODING/nrPolar_tools/nr_polar_uci_defs.h @@ -33,8 +33,8 @@ #ifndef __NR_POLAR_UCI_DEFS__H__ #define __NR_POLAR_UCI_DEFS__H__ -#define NR_POLAR_UCI_MESSAGE_TYPE -1 //int8_t -#define NR_POLAR_UCI_CRC_ERROR_CORRECTION_BITS 3 +#define NR_POLAR_UCI_PUCCH_MESSAGE_TYPE 2 //int8_t +#define NR_POLAR_PUCCH_CRC_ERROR_CORRECTION_BITS 3 #define NR_POLAR_PUCCH_PAYLOAD_BITS 32 #define NR_POLAR_PUCCH_E 32 diff --git a/openair1/PHY/CODING/nr_polar_init.c b/openair1/PHY/CODING/nr_polar_init.c index f6a06b3f7f..f6a700117d 100644 --- a/openair1/PHY/CODING/nr_polar_init.c +++ b/openair1/PHY/CODING/nr_polar_init.c @@ -43,11 +43,12 @@ static void nr_polar_init(t_nrPolar_params * *polarParams, uint8_t aggregation_level, int decoder_flag) { t_nrPolar_params *currentPtr = *polarParams; - uint16_t aggregation_prime = nr_polar_aggregation_prime(aggregation_level); + uint16_t aggregation_prime = (messageType >= 2) ? aggregation_level : nr_polar_aggregation_prime(aggregation_level); //Parse the list. If the node is already created, return without initialization. while (currentPtr != NULL) { //printf("currentPtr->idx %d, (%d,%d)\n",currentPtr->idx,currentPtr->payloadBits,currentPtr->encoderLength); + //LOG_D(PHY,"Looking for index %d\n",(messageType * messageLength * aggregation_prime)); if (currentPtr->idx == (messageType * messageLength * aggregation_prime)) return; else currentPtr = currentPtr->nextPtr; } @@ -55,8 +56,9 @@ static void nr_polar_init(t_nrPolar_params * *polarParams, // printf("currentPtr %p (polarParams %p)\n",currentPtr,polarParams); //Else, initialize and add node to the end of the linked list. t_nrPolar_params *newPolarInitNode = calloc(sizeof(t_nrPolar_params),1); - + if (newPolarInitNode != NULL) { + // LOG_D(PHY,"Setting new polarParams index %d, messageType %d, messageLength %d, aggregation_prime %d\n",(messageType * messageLength * aggregation_prime),messageType,messageLength,aggregation_prime); newPolarInitNode->idx = (messageType * messageLength * aggregation_prime); newPolarInitNode->nextPtr = NULL; //printf("newPolarInitNode->idx %d, (%d,%d,%d:%d)\n",newPolarInitNode->idx,messageType,messageLength,aggregation_prime,aggregation_level); @@ -87,15 +89,44 @@ static void nr_polar_init(t_nrPolar_params * *polarParams, newPolarInitNode->crcCorrectionBits = NR_POLAR_DCI_CRC_ERROR_CORRECTION_BITS; newPolarInitNode->crc_generator_matrix=crc24c_generator_matrix(newPolarInitNode->payloadBits+newPolarInitNode->crcParityBits);//G_P //printf("Initializing polar parameters for DCI (K %d, E %d, L %d)\n",newPolarInitNode->payloadBits,newPolarInitNode->encoderLength,aggregation_level); - } else if (messageType == -1) { //UCI + } else if (messageType == 2) { //UCI PUCCH2 + AssertFatal(aggregation_level>2,"Aggregation level (%d) for PUCCH 2 encoding is NPRB and should be > 2\n",aggregation_level); + AssertFatal(messageLength>11,"Message length %d is too short for polar encoding of UCI\n",messageLength); + newPolarInitNode->n_max = NR_POLAR_PUCCH_N_MAX; + newPolarInitNode->i_il = NR_POLAR_PUCCH_I_IL; + newPolarInitNode->encoderLength = aggregation_level * 16; + + newPolarInitNode->i_seg = 0; + + if ((messageLength >= 360 && newPolarInitNode->encoderLength >= 1088)|| + (messageLength >= 1013)) newPolarInitNode->i_seg = 1; + + newPolarInitNode->crcParityBits = 11; + newPolarInitNode->n_pc = 0; + newPolarInitNode->n_pc_wm = 0; + + if (messageLength < 20) { + newPolarInitNode->crcParityBits = 6; + newPolarInitNode->n_pc = 3; + if ((newPolarInitNode->encoderLength - messageLength - 6 + 3) < 193) newPolarInitNode->n_pc_wm = 1; + } + + + + newPolarInitNode->i_bil = NR_POLAR_PUCCH_I_BIL; + + newPolarInitNode->payloadBits = messageLength; + newPolarInitNode->crcCorrectionBits = NR_POLAR_PUCCH_CRC_ERROR_CORRECTION_BITS; + //newPolarInitNode->crc_generator_matrix=crc24c_generator_matrix(newPolarInitNode->payloadBits+newPolarInitNode->crcParityBits);//G_P + //LOG_D(PHY,"New polar node, encoderLength %d, aggregation_level %d\n",newPolarInitNode->encoderLength,aggregation_level); } else { AssertFatal(1 == 0, "[nr_polar_init] Incorrect Message Type(%d)", messageType); } newPolarInitNode->K = newPolarInitNode->payloadBits + newPolarInitNode->crcParityBits; // Number of bits to encode. newPolarInitNode->N = nr_polar_output_length(newPolarInitNode->K, - newPolarInitNode->encoderLength, - newPolarInitNode->n_max); + newPolarInitNode->encoderLength, + newPolarInitNode->n_max); newPolarInitNode->n = log2(newPolarInitNode->N); newPolarInitNode->G_N = nr_polar_kronecker_power_matrices(newPolarInitNode->n); //polar_encoder vectors: @@ -191,16 +222,19 @@ t_nrPolar_params *nr_polar_params (int8_t messageType, nr_polar_init(polarList_ext != NULL ? polarList_ext : &polarList, messageType,messageLength,aggregation_level,decoding_flag); t_nrPolar_params *polarParams=polarList_ext != NULL ? *polarList_ext : polarList; - const int tag=messageType * messageLength * nr_polar_aggregation_prime(aggregation_level); + const int tag=messageType * messageLength * (messageType>=2 ? aggregation_level : nr_polar_aggregation_prime(aggregation_level)); + + while (polarParams != NULL) { + // LOG_D(PHY,"nr_polar_params : tag %d (from nr_polar_init %d)\n",tag,polarParams->idx); if (polarParams->idx == tag) return polarParams; polarParams = polarParams->nextPtr; } - AssertFatal(false,"Polar Init tables internal failure\n"); + AssertFatal(false,"Polar Init tables internal failure, no polarParams found\n"); return NULL; } diff --git a/openair1/PHY/CODING/nr_rate_matching.c b/openair1/PHY/CODING/nr_rate_matching.c index 0cffc2d852..a16a8d100f 100644 --- a/openair1/PHY/CODING/nr_rate_matching.c +++ b/openair1/PHY/CODING/nr_rate_matching.c @@ -236,13 +236,12 @@ void nr_interleaving_ldpc(uint32_t E, uint8_t Qm, uint8_t *e,uint8_t *f) } */ - int j2=0; fp=f; switch (Qm) { case 2: e0=e; e1=e0+EQm; - for (int j = 0; j< EQm; j++,j2+=2){ + for (int j = 0, j2 = 0; j< EQm; j++,j2+=2){ fp=&f[j2]; fp[0] = e0[j]; fp[1] = e1[j]; @@ -253,7 +252,7 @@ void nr_interleaving_ldpc(uint32_t E, uint8_t Qm, uint8_t *e,uint8_t *f) e1=e0+EQm; e2=e1+EQm; e3=e2+EQm; - for (int j = 0; j< EQm; j++,j2+=4){ + for (int j = 0, j2 = 0; j< EQm; j++,j2+=4){ fp=&f[j2]; fp[0] = e0[j]; fp[1] = e1[j]; @@ -287,7 +286,7 @@ void nr_interleaving_ldpc(uint32_t E, uint8_t Qm, uint8_t *e,uint8_t *f) e5=e4+EQm; e6=e5+EQm; e7=e6+EQm; - for (int j = 0; j< EQm; j++,j2+=8){ + for (int j = 0, j2 = 0; j< EQm; j++,j2+=8){ fp=&f[j2]; fp[0] = e0[j]; fp[1] = e1[j]; @@ -310,15 +309,67 @@ void nr_interleaving_ldpc(uint32_t E, uint8_t Qm, uint8_t *e,uint8_t *f) void nr_deinterleaving_ldpc(uint32_t E, uint8_t Qm, int16_t *e,int16_t *f) { - uint32_t EQm; - - EQm = E/Qm; - - for (int j = 0; j< EQm; j++){ - for (int i = 0; i< Qm; i++){ - e[(i*EQm + j)] = f[(i+j*Qm)]; - } + int16_t *e1,*e2,*e3,*e4,*e5,*e6,*e7; + switch(Qm) { + case 2: + e1=e+(E/2); + for (int j = 0,j2=0; j< E/2; j+=2,j2+=4){ + e[j] = f[j2]; + e1[j] = f[j2+1]; + e[j+1] = f[j2+2]; + e1[j+1] = f[j2+3]; + } + break; + case 4: + e1=e+(E/4); + e2=e1+(E/4); + e3=e2+(E/4); + for (int j = 0,j2=0; j< E/4; j++,j2+=4){ + e[j] = f[j2]; + e1[j] = f[j2+1]; + e2[j] = f[j2+2]; + e3[j] = f[j2+3]; + } + break; + case 6: + e1=e+(E/6); + e2=e1+(E/6); + e3=e2+(E/6); + e4=e3+(E/6); + e5=e4+(E/6); + for (int j = 0,j2=0; j< E/6; j++,j2+=6){ + e[j] = f[j2]; + e1[j] = f[j2+1]; + e2[j] = f[j2+2]; + e3[j] = f[j2+3]; + e4[j] = f[j2+4]; + e5[j] = f[j2+5]; + } + break; + case 8: + e1=e+(E/6); + e2=e1+(E/6); + e3=e2+(E/6); + e4=e3+(E/6); + e5=e4+(E/6); + e6=e5+(E/6); + e7=e6+(E/6); + for (int j = 0,j2=0; j< E/8; j++,j2+=8){ + e[j] = f[j2]; + e1[j] = f[j2+1]; + e2[j] = f[j2+2]; + e3[j] = f[j2+3]; + e4[j] = f[j2+4]; + e5[j] = f[j2+5]; + e6[j] = f[j2+6]; + e7[j] = f[j2+7]; + } + break; + default: + AssertFatal(1==0,"Should not get here : Qm %d\n",Qm); + break; } + } @@ -364,8 +415,8 @@ int nr_rate_matching_ldpc(uint8_t Ilbrm, if (ind < Foffset) { // case where we have some bits before the filler and the rest after memcpy((void*)e,(void*)(w+ind),Foffset-ind); - if (E + F <= Ncb) { // E+F doesn't contain all coded bits - memcpy((void*)(e+Foffset-ind),(void*)(w+Foffset+F-ind),E-Foffset+ind); + if (E + F <= Ncb-ind) { // E+F doesn't contain all coded bits + memcpy((void*)(e+Foffset-ind),(void*)(w+Foffset+F),E-Foffset+ind); k=E; } else { @@ -375,11 +426,12 @@ int nr_rate_matching_ldpc(uint8_t Ilbrm, } else { if (E + F <= Ncb-ind) { //E+F doesn't contain all coded bits - memcpy((void*)(e+Foffset-ind),(void*)(w+Foffset+F-ind),E-Foffset+ind); + memcpy((void*)(e),(void*)(w+ind),E); k=E; } else { - + memcpy((void*)(e),(void*)(w+ind),Ncb-ind); + k=Ncb-ind; } } diff --git a/openair1/PHY/INIT/lte_init.c b/openair1/PHY/INIT/lte_init.c index 2d65521ab3..2c7e3e88eb 100644 --- a/openair1/PHY/INIT/lte_init.c +++ b/openair1/PHY/INIT/lte_init.c @@ -275,6 +275,7 @@ void phy_config_request(PHY_Config_t *phy_config) { fp->soundingrs_ul_config_common.srs_MaxUpPts = cfg->srs_config.max_up_pts.value; fp->num_MBSFN_config = 0; fp->NonMBSFN_config_flag =cfg->fembms_config.non_mbsfn_config_flag.value; + fp->FeMBMS_active = fp->NonMBSFN_config_flag; fp->NonMBSFN_config.non_mbsfn_SubframeConfig = cfg->fembms_config.non_mbsfn_subframeconfig.value; fp->NonMBSFN_config.radioframeAllocationPeriod = cfg->fembms_config.radioframe_allocation_period.value; fp->NonMBSFN_config.radioframeAllocationOffset = cfg->fembms_config.radioframe_allocation_offset.value; diff --git a/openair1/PHY/INIT/lte_init_ru.c b/openair1/PHY/INIT/lte_init_ru.c index dddd6b1bd5..baea52083f 100644 --- a/openair1/PHY/INIT/lte_init_ru.c +++ b/openair1/PHY/INIT/lte_init_ru.c @@ -186,7 +186,6 @@ void phy_free_RU(RU_t *ru) { int i,j,p; RU_CALIBRATION *calibration = &ru->calibration; LOG_I(PHY, "Feeing RU signal buffers (if_south %s) nb_tx %d\n", ru_if_types[ru->if_south], ru->nb_tx); - free_and_zero(ru->frame_parms); if (ru->if_south <= REMOTE_IF5) { // this means REMOTE_IF5 or LOCAL_RF, so free memory for time-domain signals for (i = 0; i < ru->nb_tx; i++) free_and_zero(ru->common.txdata[i]); diff --git a/openair1/PHY/INIT/lte_init_ue.c b/openair1/PHY/INIT/lte_init_ue.c index 082db61da9..64a5992a64 100644 --- a/openair1/PHY/INIT/lte_init_ue.c +++ b/openair1/PHY/INIT/lte_init_ue.c @@ -137,7 +137,7 @@ void phy_config_sib2_ue(module_id_t Mod_id,int CC_id, if (mbsfn_SubframeConfigList->list.array[i]->subframeAllocation.present == LTE_MBSFN_SubframeConfig__subframeAllocation_PR_oneFrame) { fp->MBSFN_config[i].fourFrames_flag = 0; fp->MBSFN_config[i].mbsfn_SubframeConfig = mbsfn_SubframeConfigList->list.array[i]->subframeAllocation.choice.oneFrame.buf[0]; // 6-bit subframe configuration - LOG_I(PHY, "[CONFIG] LTE_MBSFN_SubframeConfig[%d] pattern is %d\n", i, + LOG_I(PHY, "[CONFIG] LTE_MBSFN_SubframeConfig[%d] oneFrame pattern is %d\n", i, fp->MBSFN_config[i].mbsfn_SubframeConfig); } else if (mbsfn_SubframeConfigList->list.array[i]->subframeAllocation.present == LTE_MBSFN_SubframeConfig__subframeAllocation_PR_fourFrames) { // 24-bit subframe configuration fp->MBSFN_config[i].fourFrames_flag = 1; @@ -145,7 +145,7 @@ void phy_config_sib2_ue(module_id_t Mod_id,int CC_id, mbsfn_SubframeConfigList->list.array[i]->subframeAllocation.choice.oneFrame.buf[2]| (mbsfn_SubframeConfigList->list.array[i]->subframeAllocation.choice.oneFrame.buf[1]<<8)| (mbsfn_SubframeConfigList->list.array[i]->subframeAllocation.choice.oneFrame.buf[0]<<16); - LOG_I(PHY, "[CONFIG] LTE_MBSFN_SubframeConfig[%d] pattern is %x\n", i, + LOG_I(PHY, "[CONFIG] LTE_MBSFN_SubframeConfig[%d] fourFrame pattern is %x\n", i, fp->MBSFN_config[i].mbsfn_SubframeConfig); } } @@ -212,7 +212,7 @@ void phy_config_sib1_fembms_ue(module_id_t Mod_id,int CC_id, LTE_DL_FRAME_PARMS *fp = &ue->frame_parms; if (nonMBSFN_SubframeConfig != NULL) { - fp->NonMBSFN_config_flag = 0; + fp->NonMBSFN_config_flag = 1; fp->NonMBSFN_config.radioframeAllocationPeriod=nonMBSFN_SubframeConfig->radioFrameAllocationPeriod_r14; fp->NonMBSFN_config.radioframeAllocationOffset=nonMBSFN_SubframeConfig->radioFrameAllocationOffset_r14; fp->NonMBSFN_config.non_mbsfn_SubframeConfig=(nonMBSFN_SubframeConfig->subframeAllocation_r14.buf[0]<<1 | nonMBSFN_SubframeConfig->subframeAllocation_r14.buf[0]>>7); diff --git a/openair1/PHY/INIT/lte_parms.c b/openair1/PHY/INIT/lte_parms.c index 12a5646df6..f5b7a6c7e8 100644 --- a/openair1/PHY/INIT/lte_parms.c +++ b/openair1/PHY/INIT/lte_parms.c @@ -93,6 +93,11 @@ int init_frame_parms(LTE_DL_FRAME_PARMS *frame_parms, frame_parms->N_RBGS = 4; frame_parms->N_RBG = 25; + frame_parms->ofdm_symbol_size_khz_1dot25 = 2*2*6144*osf; + frame_parms->first_carrier_offset_khz_1dot25 = frame_parms->ofdm_symbol_size_khz_1dot25 - 1800*2*2; + frame_parms->nb_prefix_samples_khz_1dot25>>=(2-log2_osf); + frame_parms->nb_prefix_samples0_khz_1dot25>>=(2-log2_osf); + break; case 75: @@ -104,6 +109,12 @@ int init_frame_parms(LTE_DL_FRAME_PARMS *frame_parms, frame_parms->nb_prefix_samples0=(frame_parms->nb_prefix_samples0*3)>>2; frame_parms->N_RBGS = 4; frame_parms->N_RBG = 25; + + frame_parms->ofdm_symbol_size_khz_1dot25 = 2*6144*osf; + frame_parms->first_carrier_offset_khz_1dot25 = frame_parms->ofdm_symbol_size_khz_1dot25 - 1800*2; + frame_parms->nb_prefix_samples_khz_1dot25>>=(2-log2_osf); + frame_parms->nb_prefix_samples0_khz_1dot25>>=(2-log2_osf); + break; case 50: @@ -115,6 +126,10 @@ int init_frame_parms(LTE_DL_FRAME_PARMS *frame_parms, frame_parms->nb_prefix_samples0>>=(1-log2_osf); frame_parms->N_RBGS = 3; frame_parms->N_RBG = 17; + frame_parms->ofdm_symbol_size_khz_1dot25 = 2*6144*osf; + frame_parms->first_carrier_offset_khz_1dot25 = frame_parms->ofdm_symbol_size_khz_1dot25 - 1800*2; + frame_parms->nb_prefix_samples_khz_1dot25>>=(2-log2_osf); + frame_parms->nb_prefix_samples0_khz_1dot25>>=(2-log2_osf); break; case 25: diff --git a/openair1/PHY/INIT/nr_init.c b/openair1/PHY/INIT/nr_init.c index acd5ec1566..bcb6af2d04 100644 --- a/openair1/PHY/INIT/nr_init.c +++ b/openair1/PHY/INIT/nr_init.c @@ -25,7 +25,9 @@ #include "PHY/NR_REFSIG/nr_refsig.h" #include "PHY/INIT/phy_init.h" #include "PHY/CODING/nrPolar_tools/nr_polar_pbch_defs.h" -#include "PHY/NR_TRANSPORT/nr_transport.h" +#include "PHY/NR_TRANSPORT/nr_transport_proto.h" +#include "PHY/NR_TRANSPORT/nr_transport_common_proto.h" +#include "openair1/PHY/MODULATION/nr_modulation.h" /*#include "RadioResourceConfigCommonSIB.h" #include "RadioResourceConfigDedicated.h" #include "TDD-Config.h" @@ -39,7 +41,6 @@ #include "PHY/NR_TRANSPORT/nr_ulsch.h" #include "PHY/NR_REFSIG/nr_refsig.h" #include "SCHED_NR/fapi_nr_l1.h" -#include "openair2/LAYER2/NR_MAC_gNB/mac_proto.h" #include "nfapi_nr_interface.h" /* @@ -132,6 +133,7 @@ int phy_init_nr_gNB(PHY_VARS_gNB *gNB, } } + nr_generate_modulation_table(); nr_init_pdcch_dmrs(gNB, cfg->cell_config.phy_cell_id.value); nr_init_pbch_interleaver(gNB->nr_pbch_interleaver); //PDSCH DMRS init @@ -153,11 +155,11 @@ int phy_init_nr_gNB(PHY_VARS_gNB *gNB, } } - nr_init_pdsch_dmrs(gNB, cfg->cell_config.phy_cell_id.value); //PUSCH DMRS init gNB->nr_gold_pusch_dmrs = (uint32_t ****)malloc16(2*sizeof(uint32_t ***)); + uint32_t ****pusch_dmrs = gNB->nr_gold_pusch_dmrs; for(int nscid=0; nscid<2; nscid++) { @@ -176,6 +178,7 @@ int phy_init_nr_gNB(PHY_VARS_gNB *gNB, } uint32_t Nid_pusch[2] = {cfg->cell_config.phy_cell_id.value,cfg->cell_config.phy_cell_id.value}; + LOG_D(PHY,"Initializing PUSCH DMRS Gold sequence with (%x,%x)\n",Nid_pusch[0],Nid_pusch[1]); nr_gold_pusch(gNB, &Nid_pusch[0]); /// Transport init necessary for NR synchro @@ -198,6 +201,8 @@ int phy_init_nr_gNB(PHY_VARS_gNB *gNB, common_vars->rxdataF[i] = (int32_t*)malloc16_clear(fp->samples_per_frame_wCP*sizeof(int32_t)); common_vars->rxdata[i] = (int32_t*)malloc16_clear(fp->samples_per_frame*sizeof(int32_t)); } + common_vars->debugBuff = (int32_t*)malloc16_clear(fp->samples_per_frame*sizeof(int32_t)*100); + common_vars->debugBuff_sample_offset = 0; // Channel estimates for SRS @@ -232,6 +237,8 @@ int phy_init_nr_gNB(PHY_VARS_gNB *gNB, */ prach_vars->prach_ifft = (int32_t *)malloc16_clear(1024*2*sizeof(int32_t)); + init_prach_list(gNB); + int N_RB_UL = cfg->carrier_config.ul_grid_size[cfg->ssb_config.scs_common.value].value; printf("Before ULSCH init : %p\n",gNB->dlsch[0][0]->harq_processes[0]); @@ -412,7 +419,7 @@ void nr_phy_config_request_sim(PHY_VARS_gNB *gNB, fp->dl_CarrierFreq = 3500000000;//from_nrarfcn(gNB_config->nfapi_config.rf_bands.rf_band[0],gNB_config->nfapi_config.nrarfcn.value); fp->ul_CarrierFreq = 3500000000;//fp->dl_CarrierFreq - (get_uldl_offset(gNB_config->nfapi_config.rf_bands.rf_band[0])*100000); fp->nr_band = 78; - fp->threequarter_fs= 0; +// fp->threequarter_fs= 0; gNB_config->carrier_config.dl_bandwidth.value = config_bandwidth(mu, N_RB_DL, fp->nr_band); @@ -424,6 +431,7 @@ void nr_phy_config_request_sim(PHY_VARS_gNB *gNB, void nr_phy_config_request(NR_PHY_Config_t *phy_config) { uint8_t Mod_id = phy_config->Mod_id; + uint8_t short_sequence, num_sequences, rootSequenceIndex, fd_occasion; NR_DL_FRAME_PARMS *fp = &RC.gNB[Mod_id]->frame_parms; nfapi_nr_config_request_scf_t *gNB_config = &RC.gNB[Mod_id]->gNB_config; @@ -488,7 +496,18 @@ void nr_phy_config_request(NR_PHY_Config_t *phy_config) { return; } + fd_occasion = 0; + nfapi_nr_prach_config_t *prach_config = &gNB_config->prach_config; + short_sequence = prach_config->prach_sequence_length.value; + num_sequences = prach_config->num_prach_fd_occasions_list[fd_occasion].num_root_sequences.value; + rootSequenceIndex = prach_config->num_prach_fd_occasions_list[fd_occasion].prach_root_sequence_index.value; + + compute_nr_prach_seq(short_sequence, num_sequences, rootSequenceIndex, RC.gNB[Mod_id]->X_u); + RC.gNB[Mod_id]->configured = 1; + + init_symbol_rotation(fp,fp->dl_CarrierFreq); + LOG_I(PHY,"gNB %d configured\n",Mod_id); } @@ -500,6 +519,21 @@ void init_nr_transport(PHY_VARS_gNB *gNB) { LOG_I(PHY, "Initialise nr transport\n"); uint16_t grid_size = cfg->carrier_config.dl_grid_size[fp->numerology_index].value; + memset(gNB->num_pdsch_rnti, 0, sizeof(uint16_t)*80); + + for (i=0; i pdcch_pdu[i].frame=-1; + LOG_I(PHY,"Initializing UL PDCCH list for UL PDCCH %d/%d\n",i,NUMBER_OF_NR_PDCCH_MAX); + gNB->ul_pdcch_pdu[i].frame=-1; + } + + for (i=0; ipucch[i] = new_gNB_pucch(); + AssertFatal(gNB->pucch[i]!=NULL,"Can't initialize pucch %d \n", i); + } + for (i=0; inb_log_antennas=0; for (int n=0;ngNB_config; + cfg = &ru->config; if (cfg->carrier_config.num_tx_ant.value > ru->nb_log_antennas) ru->nb_log_antennas = cfg->carrier_config.num_tx_ant.value; } + // copy configuration from gNB[0] in to RU, assume that all gNB instances sharing RU use the same configuration (at least the parts that are needed by the RU, numerology and PRACH) + AssertFatal(ru->nb_log_antennas > 0 && ru->nb_log_antennas < 13, "ru->nb_log_antennas %d ! \n",ru->nb_log_antennas); if (ru->if_south <= REMOTE_IF5) { // this means REMOTE_IF5 or LOCAL_RF, so allocate memory for time-domain signals // Time-domain signals @@ -107,7 +110,8 @@ int nr_phy_init_RU(RU_t *ru) { ru->prach_rxsigF = (int16_t**)malloc(ru->nb_rx * sizeof(int16_t*)); for (i=0; inb_rx; i++) { - ru->prach_rxsigF[i] = (int16_t*)malloc16_clear( fp->ofdm_symbol_size*12*2*sizeof(int16_t) ); + // largest size for PRACH FFT is 4x98304 (16*24576) + ru->prach_rxsigF[i] = (int16_t*)malloc16_clear( 4*98304*2*sizeof(int16_t) ); LOG_D(PHY,"[INIT] prach_vars->rxsigF[%d] = %p\n",i,ru->prach_rxsigF[i]); } @@ -117,9 +121,9 @@ int nr_phy_init_RU(RU_t *ru) { LOG_E(PHY,"[INIT] %s() RC.nb_nr_L1_inst:%d \n", __FUNCTION__, RC.nb_nr_L1_inst); int beam_count = 0; - if (ru->nb_log_antennas>1) { + if (ru->nb_tx>1) {//Enable beamforming when nb_tx > 1 for (p=0;pnb_log_antennas;p++) { - if ((fp->L_ssb >> p) & 0x01) + if ((fp->L_ssb >> (63-p)) & 0x01)//64 bit-map with the MSB @2⁶³ corresponds to SSB ssb_index 0 beam_count++; } AssertFatal(ru->nb_bfw==(beam_count*ru->nb_tx),"Number of beam weights from config file is %d while the expected number is %d",ru->nb_bfw,(beam_count*ru->nb_tx)); @@ -127,7 +131,7 @@ int nr_phy_init_RU(RU_t *ru) { int l_ind = 0; for (i=0; inb_log_antennas;p++) { - if ((fp->L_ssb >> p) & 0x01) { + if ((fp->L_ssb >> (63-p)) & 0x01) { ru->beam_weights[i][p] = (int32_t **)malloc16_clear(ru->nb_tx*sizeof(int32_t*)); for (j=0; jnb_tx; j++) { ru->beam_weights[i][p][j] = (int32_t *)malloc16_clear(fp->ofdm_symbol_size*sizeof(int32_t)); @@ -144,6 +148,8 @@ int nr_phy_init_RU(RU_t *ru) { ru->common.sync_corr = (uint32_t*)malloc16_clear( LTE_NUMBER_OF_SUBFRAMES_PER_FRAME*sizeof(uint32_t)*fp->samples_per_subframe_wCP ); + init_prach_ru_list(ru); + return(0); } diff --git a/openair1/PHY/INIT/nr_init_ue.c b/openair1/PHY/INIT/nr_init_ue.c index 5a60d15e2b..39e99e6ec3 100644 --- a/openair1/PHY/INIT/nr_init_ue.c +++ b/openair1/PHY/INIT/nr_init_ue.c @@ -39,6 +39,7 @@ #include "PHY/NR_REFSIG/pss_nr.h" #include "PHY/NR_REFSIG/ul_ref_seq_nr.h" #include "PHY/NR_REFSIG/refsig_defs_ue.h" +#include "PHY/NR_REFSIG/nr_refsig.h" //uint8_t dmrs1_tab_ue[8] = {0,2,3,4,6,8,9,10}; @@ -77,19 +78,19 @@ void phy_config_sib2_ue(uint8_t Mod_id,int CC_id, LOG_I(PHY,"[UE%d] Applying radioResourceConfigCommon from eNB%d\n",Mod_id,eNB_id); - fp->prach_config_common.rootSequenceIndex =radioResourceConfigCommon->prach_Config.rootSequenceIndex; + ue->prach_vars[eNB_id]->prach_pdu.root_seq_id =radioResourceConfigCommon->prach_Config.rootSequenceIndex; - fp->prach_config_common.prach_Config_enabled=1; - fp->prach_config_common.prach_ConfigInfo.prach_ConfigIndex =radioResourceConfigCommon->prach_Config.prach_ConfigInfo.prach_ConfigIndex; - fp->prach_config_common.prach_ConfigInfo.highSpeedFlag =radioResourceConfigCommon->prach_Config.prach_ConfigInfo.highSpeedFlag; - fp->prach_config_common.prach_ConfigInfo.zeroCorrelationZoneConfig =radioResourceConfigCommon->prach_Config.prach_ConfigInfo.zeroCorrelationZoneConfig; - fp->prach_config_common.prach_ConfigInfo.prach_FreqOffset =radioResourceConfigCommon->prach_Config.prach_ConfigInfo.prach_FreqOffset; + ue->prach_vars[eNB_id]->prach_Config_enabled=1; + //ue->prach_vars[eNB_id]->prach_pdu.prach_ConfigIndex =radioResourceConfigCommon->prach_Config.prach_ConfigInfo.prach_ConfigIndex; + ue->prach_vars[eNB_id]->prach_pdu.restricted_set =radioResourceConfigCommon->prach_Config.prach_ConfigInfo.highSpeedFlag; + ue->prach_vars[eNB_id]->prach_pdu.num_cs =radioResourceConfigCommon->prach_Config.prach_ConfigInfo.zeroCorrelationZoneConfig; + //ue->prach_vars[eNB_id]->prach_pdu.prach_FreqOffset =radioResourceConfigCommon->prach_Config.prach_ConfigInfo.prach_FreqOffset; - compute_prach_seq(fp->prach_config_common.rootSequenceIndex, - fp->prach_config_common.prach_ConfigInfo.prach_ConfigIndex, - fp->prach_config_common.prach_ConfigInfo.zeroCorrelationZoneConfig, - fp->prach_config_common.prach_ConfigInfo.highSpeedFlag, - fp->frame_type,ue->X_u); + //compute_prach_seq(fp->prach_config_common.rootSequenceIndex, + // fp->prach_config_common.prach_ConfigInfo.prach_ConfigIndex, + // fp->prach_config_common.prach_ConfigInfo.zeroCorrelationZoneConfig, + // fp->prach_config_common.prach_ConfigInfo.highSpeedFlag, + // fp->frame_type,ue->X_u); @@ -226,12 +227,12 @@ void phy_config_sib13_ue(uint8_t Mod_id,int CC_id,uint8_t eNB_id,int mbsfn_Area_ LOG_I(PHY,"[UE%d] Handover triggered: Applying radioResourceConfigCommon from eNB %d\n", Mod_id,eNB_id); - fp->prach_config_common.rootSequenceIndex =radioResourceConfigCommon->prach_Config.rootSequenceIndex; - fp->prach_config_common.prach_Config_enabled=1; - fp->prach_config_common.prach_ConfigInfo.prach_ConfigIndex =radioResourceConfigCommon->prach_Config.prach_ConfigInfo->prach_ConfigIndex; - fp->prach_config_common.prach_ConfigInfo.highSpeedFlag =radioResourceConfigCommon->prach_Config.prach_ConfigInfo->highSpeedFlag; - fp->prach_config_common.prach_ConfigInfo.zeroCorrelationZoneConfig =radioResourceConfigCommon->prach_Config.prach_ConfigInfo->zeroCorrelationZoneConfig; - fp->prach_config_common.prach_ConfigInfo.prach_FreqOffset =radioResourceConfigCommon->prach_Config.prach_ConfigInfo->prach_FreqOffset; + ue->prach_vars[eNB_id]->prach_pdu.root_seq_id =radioResourceConfigCommon->prach_Config.rootSequenceIndex; + ue->prach_vars[eNB_id]->prach_Config_enabled=1; + //ue->prach_vars[eNB_id]->prach_pdu.prach_ConfigIndex =radioResourceConfigCommon->prach_Config.prach_ConfigInfo->prach_ConfigIndex; + ue->prach_vars[eNB_id]->prach_pdu.restricted_set =radioResourceConfigCommon->prach_Config.prach_ConfigInfo->highSpeedFlag; + ue->prach_vars[eNB_id]->prach_pdu.num_cs =radioResourceConfigCommon->prach_Config.prach_ConfigInfo->zeroCorrelationZoneConfig; + //ue->prach_vars[eNB_id]->prach_pdu.prach_FreqOffset =radioResourceConfigCommon->prach_Config.prach_ConfigInfo->prach_FreqOffset; // prach_fmt = get_prach_fmt(radioResourceConfigCommon->prach_Config.prach_ConfigInfo->prach_ConfigIndex,fp->frame_type); // N_ZC = (prach_fmt <4)?839:139; @@ -239,12 +240,12 @@ void phy_config_sib13_ue(uint8_t Mod_id,int CC_id,uint8_t eNB_id,int mbsfn_Area_ // prach_root_sequence_map4[fp->prach_config_common.rootSequenceIndex]; //compute_prach_seq(u,N_ZC, PHY_vars_UE_g[Mod_id]->X_u); - compute_prach_seq(PHY_vars_UE_g[Mod_id][CC_id]->frame_parms.prach_config_common.rootSequenceIndex, - PHY_vars_UE_g[Mod_id][CC_id]->frame_parms.prach_config_common.prach_ConfigInfo.prach_ConfigIndex, - PHY_vars_UE_g[Mod_id][CC_id]->frame_parms.prach_config_common.prach_ConfigInfo.zeroCorrelationZoneConfig, - PHY_vars_UE_g[Mod_id][CC_id]->frame_parms.prach_config_common.prach_ConfigInfo.highSpeedFlag, - fp->frame_type, - PHY_vars_UE_g[Mod_id][CC_id]->X_u); + //compute_prach_seq(PHY_vars_UE_g[Mod_id][CC_id]->frame_parms.prach_config_common.rootSequenceIndex, + // PHY_vars_UE_g[Mod_id][CC_id]->frame_parms.prach_config_common.prach_ConfigInfo.prach_ConfigIndex, + // PHY_vars_UE_g[Mod_id][CC_id]->frame_parms.prach_config_common.prach_ConfigInfo.zeroCorrelationZoneConfig, + // PHY_vars_UE_g[Mod_id][CC_id]->frame_parms.prach_config_common.prach_ConfigInfo.highSpeedFlag, + // fp->frame_type, + // PHY_vars_UE_g[Mod_id][CC_id]->X_u); fp->pucch_config_common.deltaPUCCH_Shift = 1+radioResourceConfigCommon->pucch_ConfigCommon->deltaPUCCH_Shift; @@ -642,10 +643,6 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue, // create shortcuts NR_DL_FRAME_PARMS *const fp = &ue->frame_parms; NR_UE_COMMON *const common_vars = &ue->common_vars; - NR_UE_PDSCH **const pdsch_vars_SI = ue->pdsch_vars_SI; - NR_UE_PDSCH **const pdsch_vars_ra = ue->pdsch_vars_ra; - NR_UE_PDSCH **const pdsch_vars_p = ue->pdsch_vars_p; - NR_UE_PDSCH **const pdsch_vars_mch = ue->pdsch_vars_MCH; NR_UE_PBCH **const pbch_vars = ue->pbch_vars; NR_UE_PRACH **const prach_vars = ue->prach_vars; int i,j,k,l,slot,symb,q; @@ -681,6 +678,8 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue, ue->bitrate[eNB_id] = 0; ue->total_received_bits[eNB_id] = 0; } + // init NR modulation lookup tables + nr_generate_modulation_table(); /////////////////////////PUSCH init///////////////////////// /////////// @@ -796,10 +795,6 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue, ue->pdcch_vars[th_id][eNB_id] = (NR_UE_PDCCH *)malloc16_clear(sizeof(NR_UE_PDCCH)); } - pdsch_vars_SI[eNB_id] = (NR_UE_PDSCH *)malloc16_clear(sizeof(NR_UE_PDSCH)); - pdsch_vars_ra[eNB_id] = (NR_UE_PDSCH *)malloc16_clear(sizeof(NR_UE_PDSCH)); - pdsch_vars_p[eNB_id] = (NR_UE_PDSCH *)malloc16_clear(sizeof(NR_UE_PDSCH)); - pdsch_vars_mch[eNB_id] = (NR_UE_PDSCH *)malloc16_clear(sizeof(NR_UE_PDSCH)); prach_vars[eNB_id] = (NR_UE_PRACH *)malloc16_clear(sizeof(NR_UE_PRACH)); pbch_vars[eNB_id] = (NR_UE_PBCH *)malloc16_clear(sizeof(NR_UE_PBCH)); @@ -861,11 +856,6 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue, } } - phy_init_nr_ue__PDSCH( pdsch_vars_SI[eNB_id], fp ); - phy_init_nr_ue__PDSCH( pdsch_vars_ra[eNB_id], fp ); - phy_init_nr_ue__PDSCH( pdsch_vars_p[eNB_id], fp ); - phy_init_nr_ue__PDSCH( pdsch_vars_mch[eNB_id], fp ); - // 100 PRBs * 12 REs/PRB * 4 PDCCH SYMBOLS * 2 LLRs/RE for (th_id=0; th_idpdcch_vars[th_id][eNB_id]->llr = (int16_t *)malloc16_clear( 2*4*100*12*sizeof(uint16_t) ); @@ -929,10 +919,6 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue, ue->pdsch_vars[th_id][eNB_id] = (NR_UE_PDSCH *)malloc16_clear( sizeof(NR_UE_PDSCH) ); } - pdsch_vars_SI[eNB_id] = (NR_UE_PDSCH *)malloc16_clear( sizeof(NR_UE_PDSCH) ); - pdsch_vars_ra[eNB_id] = (NR_UE_PDSCH *)malloc16_clear( sizeof(NR_UE_PDSCH) ); - pdsch_vars_p[eNB_id] = (NR_UE_PDSCH *)malloc16_clear( sizeof(NR_UE_PDSCH) ); - if (abstraction_flag == 0) { for (th_id=0; th_idpdsch_vars[th_id][eNB_id], fp ); @@ -958,7 +944,9 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue, // enable MIB/SIB decoding by default ue->decode_MIB = 1; ue->decode_SIB = 1; - init_prach_tables(839); + + init_nr_prach_tables(839); + return 0; } diff --git a/openair1/PHY/INIT/nr_parms.c b/openair1/PHY/INIT/nr_parms.c index c3fe9c54b1..6045930b17 100644 --- a/openair1/PHY/INIT/nr_parms.c +++ b/openair1/PHY/INIT/nr_parms.c @@ -308,7 +308,7 @@ int nr_init_frame_parms(nfapi_nr_config_request_scf_t* cfg, int num_tx_ant = (cfg == NULL) ? fp->Lmax : cfg->carrier_config.num_tx_ant.value; for (int p=0; pN_ssb += ((fp->L_ssb >> p) & 0x01); + fp->N_ssb += ((fp->L_ssb >> (63-p)) & 0x01); return 0; @@ -389,7 +389,7 @@ int nr_init_frame_parms_ue(NR_DL_FRAME_PARMS *fp, fp->N_ssb = 0; for (int p=0; pLmax; p++) - fp->N_ssb += ((fp->L_ssb >> p) & 0x01); + fp->N_ssb += ((fp->L_ssb >> (63-p)) & 0x01); return 0; } diff --git a/openair1/PHY/LTE_ESTIMATION/lte_adjust_sync_eNB.c b/openair1/PHY/LTE_ESTIMATION/lte_adjust_sync_eNB.c index aaa138fcd9..f85162e095 100644 --- a/openair1/PHY/LTE_ESTIMATION/lte_adjust_sync_eNB.c +++ b/openair1/PHY/LTE_ESTIMATION/lte_adjust_sync_eNB.c @@ -112,18 +112,12 @@ int lte_est_timing_advance(LTE_DL_FRAME_PARMS *frame_parms, } -int lte_est_timing_advance_pusch(PHY_VARS_eNB *eNB, - module_id_t UE_id) +int lte_est_timing_advance_pusch(LTE_DL_FRAME_PARMS *frame_parms, + int32_t **ul_ch_estimates_time) { int temp, i, aa, max_pos=0, max_val=0; short Re,Im; - RU_t *ru; - ru = RC.ru[UE_id]; - LTE_DL_FRAME_PARMS *frame_parms = (eNB==NULL) ? ru->frame_parms : &eNB->frame_parms; - LTE_eNB_PUSCH *eNB_pusch_vars = (eNB!=NULL) ? eNB->pusch_vars[UE_id] : (LTE_eNB_PUSCH*)NULL; - RU_CALIBRATION *calibration = &ru->calibration; - int32_t **ul_ch_estimates_time = (eNB==NULL) ? calibration->drs_ch_estimates_time : eNB_pusch_vars->drs_ch_estimates_time; uint8_t cyclic_shift = 0; int sync_pos = (frame_parms->ofdm_symbol_size-cyclic_shift*frame_parms->ofdm_symbol_size/12)%(frame_parms->ofdm_symbol_size); @@ -149,7 +143,7 @@ int lte_est_timing_advance_pusch(PHY_VARS_eNB *eNB, max_pos = max_pos-frame_parms->ofdm_symbol_size; //#ifdef DEBUG_PHY - LOG_D(PHY,"frame %d: max_pos = %d, sync_pos=%d\n",eNB->proc.frame_rx,max_pos,sync_pos); + LOG_D(PHY,"max_pos = %d, sync_pos=%d\n",max_pos,sync_pos); //#endif //DEBUG_PHY return max_pos - sync_pos; diff --git a/openair1/PHY/LTE_ESTIMATION/lte_dl_mbsfn_channel_estimation.c b/openair1/PHY/LTE_ESTIMATION/lte_dl_mbsfn_channel_estimation.c index 333a6f0866..4ad050ccea 100644 --- a/openair1/PHY/LTE_ESTIMATION/lte_dl_mbsfn_channel_estimation.c +++ b/openair1/PHY/LTE_ESTIMATION/lte_dl_mbsfn_channel_estimation.c @@ -22,7 +22,7 @@ /*! \file config_ue.c * \brief This includes FeMBMS UE Channel Estimation Procedures for FeMBMS 1.25KHz Carrier Spacing * \author Javier Morgade - * \date 2019 + * \date 2020 * \version 0.1 * \email: javier.morgade@ieee.org * @ingroup _phy @@ -768,8 +768,8 @@ int lte_dl_mbsfn_khz_1dot25_channel_estimation(PHY_VARS_UE *ue, module_id_t eNB_id, uint8_t eNB_offset, int subframe) { - int pilot_khz_1dot25[600] __attribute__((aligned(16))); - unsigned char aarx/*,aa*/; + int pilot_khz_1dot25[2*2*600] __attribute__((aligned(16))); + unsigned char aarx,aa; //unsigned int rb; int16_t ch[2]; short *pil,*rxF,*dl_ch/*,*ch0,*ch1,*ch11,*chp,*ch_prev*/; @@ -783,7 +783,7 @@ int lte_dl_mbsfn_khz_1dot25_channel_estimation(PHY_VARS_UE *ue, int **rxdataF=ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].rxdataF; ch_offset = 0;//(l*(ue->frame_parms.ofdm_symbol_size)); symbol_offset = 0;//ch_offset;//phy_vars_ue->lte_frame_parms.ofdm_symbol_size*l; - AssertFatal( ue->frame_parms.N_RB_DL==25,"OFDM symbol size %d not yet supported for FeMBMS\n",ue->frame_parms.N_RB_DL); + //AssertFatal( ue->frame_parms.N_RB_DL==25,"OFDM symbol size %d not yet supported for FeMBMS\n",ue->frame_parms.N_RB_DL); if( (subframe&0x1) == 0) { f=filt24_0_khz_1dot25; @@ -823,7 +823,7 @@ int lte_dl_mbsfn_khz_1dot25_channel_estimation(PHY_VARS_UE *ue, k=3; } - if(ue->frame_parms.N_RB_DL==25) { + if(1/*ue->frame_parms.N_RB_DL==25*/) { ch[0] = (int16_t)(((int32_t)pil[0]*rxF[0] - (int32_t)pil[1]*rxF[1])>>15); ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15); multadd_real_vector_complex_scalar(fl, @@ -843,7 +843,7 @@ int lte_dl_mbsfn_khz_1dot25_channel_estimation(PHY_VARS_UE *ue, rxF+=12; dl_ch+=16; - for(pilot_cnt=2; pilot_cnt<299; pilot_cnt+=2) { + for(pilot_cnt=2; pilot_cntframe_parms.N_RB_DL*12-1/*299*/; pilot_cnt+=2) { ch[0] = (int16_t)(((int32_t)pil[0]*rxF[0] - (int32_t)pil[1]*rxF[1])>>15); ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15); multadd_real_vector_complex_scalar(f, @@ -866,7 +866,7 @@ int lte_dl_mbsfn_khz_1dot25_channel_estimation(PHY_VARS_UE *ue, rxF = (int16_t *)&rxdataF[aarx][((symbol_offset+1+k))]; //Skip DC offset - for(pilot_cnt=0; pilot_cnt<297; pilot_cnt+=2) { + for(pilot_cnt=0; pilot_cntframe_parms.N_RB_DL*12-3/*297*/; pilot_cnt+=2) { ch[0] = (int16_t)(((int32_t)pil[0]*rxF[0] - (int32_t)pil[1]*rxF[1])>>15); ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15); multadd_real_vector_complex_scalar(f, @@ -905,6 +905,32 @@ int lte_dl_mbsfn_khz_1dot25_channel_estimation(PHY_VARS_UE *ue, } } + // do ifft of channel estimate + for (aa=0; aaframe_parms.nb_antennas_rx*ue->frame_parms.nb_antennas_tx; aa++) { + if (ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].dl_ch_estimates[0][aa]) { + switch (ue->frame_parms.N_RB_DL) { + case 25: + idft(IDFT_6144,(int16_t*) &ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].dl_ch_estimates[0][aa][8], + (int16_t*) ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].dl_ch_estimates_time[0][aa], + 1); + break; + case 50: + idft(IDFT_12288,(int16_t*) &ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].dl_ch_estimates[0][aa][8], + (int16_t*) ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].dl_ch_estimates_time[0][aa], + 1); + break; + case 100: + idft(IDFT_24576,(int16_t*) &ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].dl_ch_estimates[0][aa][8], + (int16_t*) ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].dl_ch_estimates_time[0][aa], + 1); + break; + default: + break; + } + } + } + + return(0); } diff --git a/openair1/PHY/LTE_ESTIMATION/lte_estimation.h b/openair1/PHY/LTE_ESTIMATION/lte_estimation.h index 01883224db..fc40280853 100644 --- a/openair1/PHY/LTE_ESTIMATION/lte_estimation.h +++ b/openair1/PHY/LTE_ESTIMATION/lte_estimation.h @@ -220,8 +220,12 @@ void phy_adjust_gain (PHY_VARS_UE *phy_vars_ue, uint32_t rx_power_fil_dB, unsigned char eNB_id); -int lte_ul_channel_estimation(PHY_VARS_eNB *phy_vars_eNB, +int32_t lte_ul_channel_estimation(LTE_DL_FRAME_PARMS *frame_parms, L1_rxtx_proc_t *proc, + LTE_eNB_ULSCH_t * ulsch, + int32_t **ul_ch_estimates, + int32_t **ul_ch_estimates_time, + int32_t **rxdataF_ext, module_id_t UE_id, uint8_t l, uint8_t Ns); @@ -258,7 +262,8 @@ int lte_est_timing_advance(LTE_DL_FRAME_PARMS *frame_parms, unsigned char number_of_cards, short coef); -int lte_est_timing_advance_pusch(PHY_VARS_eNB* phy_vars_eNB,module_id_t UE_id); +int lte_est_timing_advance_pusch(LTE_DL_FRAME_PARMS *frame_parms, + int32_t **ul_ch_estimates_time); void lte_eNB_I0_measurements(PHY_VARS_eNB *phy_vars_eNB, int subframe, diff --git a/openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c b/openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c index 7caaf07406..755111feb8 100644 --- a/openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c +++ b/openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c @@ -34,23 +34,17 @@ static int16_t ru_90c[2*128] = {32767, 0,32766, -402,32758, -804,32746, -1206,32 #define SCALE 0x3FFF -int32_t lte_ul_channel_estimation(PHY_VARS_eNB *eNB, +int32_t lte_ul_channel_estimation(LTE_DL_FRAME_PARMS *frame_parms, L1_rxtx_proc_t *proc, + LTE_eNB_ULSCH_t * ulsch, + int32_t **ul_ch_estimates, + int32_t **ul_ch_estimates_time, + int32_t **rxdataF_ext, module_id_t UE_id, unsigned char l, unsigned char Ns) { - RU_t *ru; - ru = RC.ru[UE_id]; - LTE_DL_FRAME_PARMS *frame_parms = (eNB!=NULL) ? &eNB->frame_parms : ru->frame_parms; - LTE_eNB_PUSCH *pusch_vars = (eNB!=NULL) ? eNB->pusch_vars[UE_id] : NULL; - RU_CALIBRATION *calibration = &ru->calibration; - int32_t **ul_ch_estimates = (eNB!=NULL) ? pusch_vars->drs_ch_estimates : calibration->drs_ch_estimates; - AssertFatal(ul_ch_estimates != NULL, "ul_ch_estimates is null (eNB %p, pusch %p, pusch->drs_ch_estimates %p, pusch->drs_ch_estimates[0] %p ul_ch_estimates %p UE_id %d)\n",eNB,pusch_vars, - pusch_vars->drs_ch_estimates,pusch_vars->drs_ch_estimates[0],ul_ch_estimates,UE_id); - int32_t **ul_ch_estimates_time = (eNB!=NULL) ? pusch_vars->drs_ch_estimates_time : calibration->drs_ch_estimates_time; + AssertFatal(ul_ch_estimates != NULL, "ul_ch_estimates is null "); AssertFatal(ul_ch_estimates_time != NULL, "ul_ch_estimates_time is null\n"); - int32_t **rxdataF_ext = (eNB!=NULL) ? pusch_vars->rxdataF_ext : calibration->rxdataF_ext; - int subframe = proc->subframe_rx; uint8_t harq_pid; @@ -83,16 +77,16 @@ int32_t lte_ul_channel_estimation(PHY_VARS_eNB *eNB, #endif int32_t temp_in_ifft_0[2048*2] __attribute__((aligned(32))); - if (eNB->ulsch[UE_id]->ue_type > 0) harq_pid = 0; + if (ulsch->ue_type > 0) harq_pid = 0; else { harq_pid = subframe2harq_pid(frame_parms,proc->frame_rx,subframe); } - uint16_t N_rb_alloc = eNB->ulsch[UE_id]->harq_processes[harq_pid]->nb_rb; + uint16_t N_rb_alloc = ulsch->harq_processes[harq_pid]->nb_rb; int32_t tmp_estimates[N_rb_alloc*12] __attribute__((aligned(16))); Msc_RS = N_rb_alloc*12; cyclic_shift = (frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.cyclicShift + - eNB->ulsch[UE_id]->harq_processes[harq_pid]->n_DMRS2 + + ulsch->harq_processes[harq_pid]->n_DMRS2 + frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.nPRS[(subframe<<1)+Ns]) % 12; Msc_idx_ptr = (uint16_t *) bsearch(&Msc_RS, dftsizes, 34, sizeof(uint16_t), compareints); @@ -276,7 +270,7 @@ int32_t lte_ul_channel_estimation(PHY_VARS_eNB *eNB, #if T_TRACER if (aa == 0) - T(T_ENB_PHY_UL_CHANNEL_ESTIMATE, T_INT(0), T_INT(eNB->ulsch[UE_id]->rnti), + T(T_ENB_PHY_UL_CHANNEL_ESTIMATE, T_INT(0), T_INT(ulsch->rnti), T_INT(proc->frame_rx), T_INT(subframe), T_INT(0), T_BUFFER(ul_ch_estimates_time[0], 512 * 4)); diff --git a/openair1/PHY/LTE_REFSIG/lte_refsig.h b/openair1/PHY/LTE_REFSIG/lte_refsig.h index 45402436f7..84a2676082 100644 --- a/openair1/PHY/LTE_REFSIG/lte_refsig.h +++ b/openair1/PHY/LTE_REFSIG/lte_refsig.h @@ -106,6 +106,16 @@ int lte_dl_mbsfn(PHY_VARS_eNB *phy_vars_eNB, int32_t *output, short amp, int subframe, unsigned char l); +/*! \brief This function generates the 1.25KHz MBSFN reference signal sequence (36-211, Sec 6.10.1.2) +@param phy_vars_eNB Pointer to eNB variables +@param output Output vector for OFDM symbol (Frequency Domain) +@param amp Q15 amplitude +*/ + +int lte_dl_mbsfn_khz_1dot25(PHY_VARS_eNB *phy_vars_eNB, int32_t *output, + short amp, + int subframe); + /*!\brief This function generates the cell-specific reference signal sequence (36-211, Sec 6.10.1.1) for channel estimation upon reception diff --git a/openair1/PHY/LTE_TRANSPORT/dci_tools.c b/openair1/PHY/LTE_TRANSPORT/dci_tools.c index ce409de131..8de011acef 100644 --- a/openair1/PHY/LTE_TRANSPORT/dci_tools.c +++ b/openair1/PHY/LTE_TRANSPORT/dci_tools.c @@ -2006,11 +2006,6 @@ void fill_ulsch(PHY_VARS_eNB *eNB,int UE_id,nfapi_ul_config_ulsch_pdu *ulsch_pdu return; } - //AssertFatal(ulsch->harq_processes[harq_pid]->nb_rb>0,"nb_rb = 0\n"); - if(ulsch->harq_processes[harq_pid]->nb_rb == 0) { - LOG_E(PHY, "fill_ulsch UE_id %d nb_rb = 0\n", UE_id); - } - ulsch->harq_processes[harq_pid]->frame = frame; ulsch->harq_processes[harq_pid]->subframe = subframe; ulsch->harq_processes[harq_pid]->handled = 0; diff --git a/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c b/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c index 15eb5206a1..3eb44d98fa 100644 --- a/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c +++ b/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c @@ -20,12 +20,12 @@ */ /*! \file PHY/LTE_TRANSPORT/dlsch_coding.c - * \brief Top-level routines for implementing Turbo-coded (DLSCH) transport channels from 36-212, V8.6 2009-03 - * \author R. Knopp + * \brief Top-level routines for implementing Turbo-coded (DLSCH) transport channels from 36-212, V8.6 2009-03, V14.1 2017 (includes FeMBMS support) + * \author R. Knopp, J. Morgade * \date 2011 * \version 0.1 * \company Eurecom - * \email: knopp@eurecom.fr + * \email: knopp@eurecom.fr, jaiver.morgade@ieee.org * \note * \warning */ @@ -386,6 +386,109 @@ int dlsch_encoding(PHY_VARS_eNB *eNB, return(-1); } + for (int r=0, r_offset=0; rC; r++) { + + union turboReqUnion id= {.s={dlsch->rnti,frame,subframe,r,0}}; + notifiedFIFO_elt_t *req=newNotifiedFIFO_elt(sizeof(turboEncode_t), id.p, proc->respEncode, TPencode); + turboEncode_t * rdata=(turboEncode_t *) NotifiedFifoData(req); + rdata->input=hadlsch->c[r]; + rdata->Kr_bytes= ( rCminus ? hadlsch->Kminus : hadlsch->Kplus) >>3; + rdata->filler=(r==0) ? hadlsch->F : 0; + rdata->r=r; + rdata->harq_pid=harq_pid; + rdata->dlsch=dlsch; + rdata->rm_stats=rm_stats; + rdata->te_stats=te_stats; + rdata->i_stats=i_stats; + rdata->round=hadlsch->round; + rdata->r_offset=r_offset; + rdata->G=G; + + if ( proc->threadPool->activated ) { + pushTpool(proc->threadPool,req); + proc->nbEncode++; + } else { + TPencode(rdata); + delNotifiedFIFO_elt(req); + } + + int Qm=hadlsch->Qm; + int C=hadlsch->C; + int Nl=hadlsch->Nl; + int Gp = G/Nl/Qm; + int GpmodC = Gp%C; + if (r < (C-(GpmodC))) + r_offset += Nl*Qm * (Gp/C); + else + r_offset += Nl*Qm * ((GpmodC==0?0:1) + (Gp/C)); + } + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_ENCODING, VCD_FUNCTION_OUT); + return(0); +} + +int dlsch_encoding_fembms_pmch(PHY_VARS_eNB *eNB, + L1_rxtx_proc_t *proc, + unsigned char *a, + uint8_t num_pdcch_symbols, + LTE_eNB_DLSCH_t *dlsch, + int frame, + uint8_t subframe, + time_stats_t *rm_stats, + time_stats_t *te_stats, + time_stats_t *i_stats) { + LTE_DL_FRAME_PARMS *frame_parms = &eNB->frame_parms; + unsigned char harq_pid = dlsch->harq_ids[frame%2][subframe]; + if((harq_pid < 0) || (harq_pid >= dlsch->Mdlharq)) { + LOG_E(PHY,"dlsch_encoding illegal harq_pid %d %s:%d\n", harq_pid, __FILE__, __LINE__); + return(-1); + } + + LTE_DL_eNB_HARQ_t *hadlsch=dlsch->harq_processes[harq_pid]; + uint8_t beamforming_mode=0; + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_ENCODING, VCD_FUNCTION_IN); + + if(hadlsch->mimo_mode == TM7) + beamforming_mode = 7; + else if(hadlsch->mimo_mode == TM8) + beamforming_mode = 8; + else if(hadlsch->mimo_mode == TM9_10) + beamforming_mode = 9; + + unsigned int G = get_G_khz_1dot25(frame_parms,hadlsch->nb_rb, + hadlsch->rb_alloc, + hadlsch->Qm, // mod order + hadlsch->Nl, + num_pdcch_symbols, + frame,subframe,beamforming_mode); + + proc->nbEncode=0; + + // if (hadlsch->Ndi == 1) { // this is a new packet + if (hadlsch->round == 0) { // this is a new packet + // Add 24-bit crc (polynomial A) to payload + unsigned int A=hadlsch->TBS; //6228; + unsigned int crc = crc24a(a, + A)>>8; + a[A>>3] = ((uint8_t *)&crc)[2]; + a[1+(A>>3)] = ((uint8_t *)&crc)[1]; + a[2+(A>>3)] = ((uint8_t *)&crc)[0]; + // printf("CRC %x (A %d)\n",crc,A); + hadlsch->B = A+24; + // hadlsch->b = a; + memcpy(hadlsch->b,a,(A/8)+4); + + if (lte_segmentation(hadlsch->b, + hadlsch->c, + hadlsch->B, + &hadlsch->C, + &hadlsch->Cplus, + &hadlsch->Cminus, + &hadlsch->Kplus, + &hadlsch->Kminus, + &hadlsch->F)<0) + return(-1); + } + for (int r=0, r_offset=0; rC; r++) { union turboReqUnion id= {.s={dlsch->rnti,frame,subframe,r,0}}; @@ -425,3 +528,5 @@ int dlsch_encoding(PHY_VARS_eNB *eNB, return(0); } + + diff --git a/openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c b/openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c index 475c8bd521..8c07421b7e 100644 --- a/openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c +++ b/openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c @@ -20,12 +20,12 @@ */ /*! \file PHY/LTE_TRANSPORT/dlsch_modulation.c - * \brief Top-level routines for generating the PDSCH physical channel from 36-211, V8.6 2009-03 - * \author R. Knopp, F. Kaltenberger + * \brief Top-level routines for generating the PDSCH physical channel from 36-211, V8.6 2009-03, V14.1 2017 (FeMBMS) + * \author R. Knopp, F. Kaltenberger, J. Morgade * \date 2011 * \version 0.1 * \company Eurecom - * \email: knopp@eurecom.fr,florian.kaltenberger@eurecom.fr + * \email: knopp@eurecom.fr,florian.kaltenberger@eurecom.fr, javier.morgade@ieee.irg * \note * \warning */ @@ -2910,3 +2910,260 @@ int mch_modulation(int32_t **txdataF, return (re_allocated); } + +int allocate_REs_in_RB_MCH_khz_1dot25(int32_t **txdataF, + uint32_t *jj, + uint16_t re_offset, + uint32_t symbol_offset, + uint8_t *x0, + uint8_t subframe, + uint8_t mod_order, + int16_t amp, + int16_t *qam_table_s, + uint32_t *re_allocated, + uint8_t skip_dc, + LTE_DL_FRAME_PARMS *frame_parms) +{ + uint32_t tti_offset; + uint8_t re,offset; + uint8_t qam64_table_offset_re = 0; + uint8_t qam64_table_offset_im = 0; + uint8_t qam16_table_offset_re = 0; + uint8_t qam16_table_offset_im = 0; + int16_t gain_lin_QPSK;//,gain_lin_16QAM1,gain_lin_16QAM2; + int16_t re_off=re_offset; + gain_lin_QPSK = (int16_t)((amp*ONE_OVER_SQRT2_Q15)>>15); + uint8_t first_re,last_re; + int inc; +#ifdef DEBUG_DLSCH_MODULATION + LOG_I(PHY,"allocate_re_MCH khz_1dot25 (mod %d): symbol_offset %d re_offset %d (%d), jj %d -> %d,%d, gain_lin_QPSK %d,txdataF %p\n",mod_order,symbol_offset,re_offset,skip_dc,*jj, x0[*jj], x0[1+*jj],gain_lin_QPSK,&txdataF[0][symbol_offset]); +#endif + + /*last_re=12; + first_re=0; + inc=1; + + if ((l==2)||(l==10)) { + inc=2; + first_re=1; + } else if (l==6) { + inc=2; + }*/ + last_re=144; //12*12 + if ((subframe&0x1)==0){ // n_sf mod 2 == 0: even + first_re=1; + offset=0; + }else{ + first_re=0; + offset=3; + } + inc=1; + + for (re=first_re; reofdm_symbol_size_khz_1dot25+1; + } + + tti_offset = symbol_offset + re_off + re; + + //LOG_I(PHY,"re %d (jj %d)\n",re,*jj); + *re_allocated = *re_allocated + 1; + + + switch (mod_order) { + + case 2: //QPSK + + LOG_D(PHY,"%d : %d,%d => ",tti_offset,((int16_t*)&txdataF[0][tti_offset])[0],((int16_t*)&txdataF[0][tti_offset])[1]); + ((int16_t*)&txdataF[0][tti_offset])[0] = (x0[*jj]==1) ? (-gain_lin_QPSK) : gain_lin_QPSK; //I //b_i + + *jj = *jj + 1; + + ((int16_t*)&txdataF[0][tti_offset])[1] = (x0[*jj]==1) ? (-gain_lin_QPSK) : gain_lin_QPSK; //Q //b_{i+1} + + *jj = *jj + 1; + + LOG_D(PHY,"subframe%d alloc[%d][%d][%d](%d,%d)\n",subframe,tti_offset,symbol_offset,tti_offset-symbol_offset,((int16_t*)&txdataF[0][tti_offset])[0],((int16_t*)&txdataF[0][tti_offset])[1]); + break; + + + case 4: //16QAM + + qam16_table_offset_re = 0; + qam16_table_offset_im = 0; + + if (x0[*jj] == 1) + qam16_table_offset_re+=2; + + *jj=*jj+1; + + if (x0[*jj] == 1) + qam16_table_offset_im+=2; + + *jj=*jj+1; + + + if (x0[*jj] == 1) + qam16_table_offset_re+=1; + + *jj=*jj+1; + + if (x0[*jj] == 1) + qam16_table_offset_im+=1; + + *jj=*jj+1; + + + ((int16_t *)&txdataF[0][tti_offset])[0]=qam_table_s[qam16_table_offset_re];//(int16_t)(((int32_t)amp*qam16_table[qam16_table_offset_re])>>15); + ((int16_t *)&txdataF[0][tti_offset])[1]=qam_table_s[qam16_table_offset_im];//(int16_t)(((int32_t)amp*qam16_table[qam16_table_offset_im])>>15); + + break; + + case 6: //64QAM + + qam64_table_offset_re = 0; + qam64_table_offset_im = 0; + + if (x0[*jj] == 1) + qam64_table_offset_re+=4; + + *jj=*jj+1; + + if (x0[*jj] == 1) + qam64_table_offset_im+=4; + + *jj=*jj+1; + + if (x0[*jj] == 1) + qam64_table_offset_re+=2; + + *jj=*jj+1; + + if (x0[*jj] == 1) + qam64_table_offset_im+=2; + + *jj=*jj+1; + + if (x0[*jj] == 1) + qam64_table_offset_re+=1; + + *jj=*jj+1; + + if (x0[*jj] == 1) + qam64_table_offset_im+=1; + + *jj=*jj+1; + + ((int16_t *)&txdataF[0][tti_offset])[0]=qam_table_s[qam64_table_offset_re];//(int16_t)(((int32_t)amp*qam64_table[qam64_table_offset_re])>>15); + ((int16_t *)&txdataF[0][tti_offset])[1]=qam_table_s[qam64_table_offset_im];//(int16_t)(((int32_t)amp*qam64_table[qam64_table_offset_im])>>15); + + break; + + } + } + return(0); +} + +int mch_modulation_khz_1dot25(int32_t **txdataF, + int16_t amp, + uint32_t subframe_offset, + LTE_DL_FRAME_PARMS *frame_parms, + LTE_eNB_DLSCH_t *dlsch) +{ + uint8_t nsymb,nsymb_pmch; + uint32_t i,jj,re_allocated,symbol_offset; + uint16_t l,rb,re_offset; + uint8_t skip_dc=0; + uint8_t mod_order = dlsch->harq_processes[0]->Qm; + int16_t qam16_table_a[4],qam64_table_a[8];//,qam16_table_b[4],qam64_table_b[8]; + int16_t *qam_table_s; + + nsymb_pmch = 1; + nsymb = (frame_parms->Ncp == NORMAL) ? 14 : 12; + + if (mod_order == 4) + for (i=0; i<4; i++) { + qam16_table_a[i] = (int16_t)(((int32_t)qam16_table[i]*amp)>>15); + } + else if (mod_order == 6) + for (i=0; i<8; i++) { + qam64_table_a[i] = (int16_t)(((int32_t)qam64_table[i]*amp)>>15); + } + + jj=0; + re_allocated=0; + + + + + + // LOG_I(PHY,"num_pdcch_symbols %d, nsymb %d\n",num_pdcch_symbols,nsymb); + for (l=0; lfirst_carrier_offset_khz_1dot25; + symbol_offset = (uint32_t)frame_parms->ofdm_symbol_size*(l+(subframe_offset*nsymb)); + + for (rb=0; rbN_RB_DL; rb++) { + + + if ((frame_parms->N_RB_DL&1) == 1) { // ODD N_RB_DL + + if (rb==(frame_parms->N_RB_DL>>1)) + skip_dc = 1; + else + skip_dc = 0; + + } + + if (mod_order == 4) + qam_table_s = qam16_table_a; + else if (mod_order == 6) + qam_table_s = qam64_table_a; + else + qam_table_s = NULL; + + //LOG_I(PHY,"Allocated rb %d, subframe_offset %d,amp %d\n",rb,subframe_offset,amp); + allocate_REs_in_RB_MCH_khz_1dot25(txdataF, + &jj, + re_offset, + symbol_offset, + dlsch->harq_processes[0]->eDL, + subframe_offset, + mod_order, + amp, + qam_table_s, + &re_allocated, + skip_dc, + frame_parms); + + re_offset+=144; // go to next RB 12*12 + + // check if we crossed the symbol boundary and skip DC + if (re_offset >= frame_parms->ofdm_symbol_size_khz_1dot25) { + if (skip_dc == 0) //even number of RBs (doesn't straddle DC) + re_offset=1; + else + re_offset=73; // odd number of RBs + } + } + } + +#ifdef DEBUG_DLSCH_MODULATION + LOG_I(PHY,"generate_dlsch(MCH) : jj = %d,re_allocated = %d (G %d)\n",jj,re_allocated,get_G(frame_parms,dlsch->harq_processes[0]->nb_rb,dlsch->harq_processes[0]->rb_alloc,mod_order,1,2,0,subframe_offset,1/*transmission mode*/)); + LOG_I(PHY,"generate_dlsch(MCH) : jj = %d,re_allocated = %d\n",jj,re_allocated); +#endif + + return (re_allocated); +} + diff --git a/openair1/PHY/LTE_TRANSPORT/pbch.c b/openair1/PHY/LTE_TRANSPORT/pbch.c index 37997c94b4..dfa990269e 100644 --- a/openair1/PHY/LTE_TRANSPORT/pbch.c +++ b/openair1/PHY/LTE_TRANSPORT/pbch.c @@ -20,12 +20,12 @@ */ /*! \file PHY/LTE_TRANSPORT/pbch.c -* \brief Top-level routines for generating and decoding the PBCH/BCH physical/transport channel V8.6 2009-03 -* \author R. Knopp, F. Kaltenberger +* \brief Top-level routines for generating and decoding the PBCH/BCH physical/transport channel V8.6 2009-03, V14.1 (FeMBMS) +* \author R. Knopp, F. Kaltenberger, J. Morgade * \date 2011 * \version 0.1 * \company Eurecom -* \email: knopp@eurecom.fr,florian.kaltenberger.fr +* \email: knopp@eurecom.fr,florian.kaltenberger.fr, javier.morgade@ieee.org * \note * \warning */ @@ -139,6 +139,285 @@ int allocate_pbch_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms, return(0); } +void pbch_scrambling_fembms(LTE_DL_FRAME_PARMS *frame_parms, + uint8_t *pbch_e, + uint32_t length) +{ + int i; + uint8_t reset; + uint32_t x1, x2, s=0; + + reset = 1; + // x1 is set in lte_gold_generic + x2 = frame_parms->Nid_cell + (1<<9); //this is c_init for FeMBMS in 36.211 Sec 6.6.1 + // msg("pbch_scrambling: Nid_cell = %d\n",x2); + + for (i=0; i>(i&0x1f))&1); + + } +} + +int generate_pbch_fembms(LTE_eNB_PBCH *eNB_pbch, + int32_t **txdataF, + int amp, + LTE_DL_FRAME_PARMS *frame_parms, + uint8_t *pbch_pdu, + uint8_t frame_mod4) +{ + + int i, l; + + uint32_t pbch_D,pbch_E;//,pbch_coded_bytes; + uint8_t pbch_a[PBCH_A>>3]; + uint8_t RCC; + + uint32_t nsymb = (frame_parms->Ncp==NORMAL) ? 14:12; + uint32_t pilots; +#ifdef INTERFERENCE_MITIGATION + uint32_t pilots_2; +#endif + uint32_t second_pilot = (frame_parms->Ncp==NORMAL) ? 4 : 3; + uint32_t jj=0; + uint32_t re_allocated=0; + uint32_t rb, re_offset, symbol_offset; + uint16_t amask=0; + + pbch_D = 16+PBCH_A; + + pbch_E = (frame_parms->Ncp==NORMAL) ? 1920 : 1728; //RE/RB * #RB * bits/RB (QPSK) + // pbch_E_bytes = pbch_coded_bits>>3; + + LOG_D(PHY,"%s(eNB_pbch:%p txdataF:%p amp:%d frame_parms:%p pbch_pdu:%p frame_mod4:%d)\n", __FUNCTION__, eNB_pbch, txdataF, amp, frame_parms, pbch_pdu, frame_mod4==0); + + if (frame_mod4==0) { + bzero(pbch_a,PBCH_A>>3); + bzero(eNB_pbch->pbch_e,pbch_E); + memset(eNB_pbch->pbch_d,LTE_NULL,96); + // Encode data + + // CRC attachment + // crc = (uint16_t) (crc16(pbch_pdu, pbch_crc_bits-16) >> 16); + + /* + // scramble crc with PBCH CRC mask (Table 5.3.1.1-1 of 3GPP 36.212-860) + switch (frame_parms->nb_antenna_ports_eNB) { + case 1: + crc = crc ^ (uint16_t) 0; + break; + case 2: + crc = crc ^ (uint16_t) 0xFFFF; + break; + case 4: + crc = crc ^ (uint16_t) 0xAAAA; + break; + default: + msg("[PBCH] Unknown number of TX antennas!\n"); + break; + } + */ + + // Fix byte endian of PBCH (bit 23 goes in first) + for (i=0; i<(PBCH_A>>3); i++) + pbch_a[(PBCH_A>>3)-i-1] = pbch_pdu[i]; + + // pbch_data[i] = ((char*) &crc)[0]; + // pbch_data[i+1] = ((char*) &crc)[1]; + //#ifdef DEBUG_PBCH + + for (i=0; i<(PBCH_A>>3); i++) + LOG_D(PHY,"[PBCH] pbch_data[%d] = %x\n",i,pbch_a[i]); + + //#endif + + if (frame_parms->nb_antenna_ports_eNB == 1) + amask = 0x0000; + else { + switch (frame_parms->nb_antenna_ports_eNB) { + case 1: + amask = 0x0000; + break; + + case 2: + amask = 0xffff; + break; + + case 4: + amask = 0x5555; + } + } + + ccodelte_encode(PBCH_A,2,pbch_a,eNB_pbch->pbch_d+96,amask); + + +#ifdef DEBUG_PBCH_ENCODING + + for (i=0; i<16+PBCH_A; i++) + LOG_D(PHY,"%d : (%d,%d,%d)\n",i,*(eNB_pbch->pbch_d+96+(3*i)),*(eNB_pbch->pbch_d+97+(3*i)),*(eNB_pbch->pbch_d+98+(3*i))); + +#endif //DEBUG_PBCH_ENCODING + + // Bit collection + /* + j2=0; + for (j=0;j 0) { // bit is to be transmitted + pbch_coded_data2[j2++] = pbch_coded_data[j]&1; + //Bit is repeated + if ((pbch_coded_data[j]&0x40)>0) + pbch_coded_data2[j2++] = pbch_coded_data[j]&1; + } + } + + #ifdef DEBUG_PBCH + msg("[PBCH] rate matched bits=%d, pbch_coded_bits=%d, pbch_crc_bits=%d\n",j2,pbch_coded_bits,pbch_crc_bits); + #endif + + #ifdef DEBUG_PBCH + LOG_M"pbch_encoded_output2.m","pbch_encoded_out2", + pbch_coded_data2, + pbch_coded_bits, + 1, + 4); + #endif //DEBUG_PBCH + */ +#ifdef DEBUG_PBCH_ENCODING + LOG_D(PHY,"Doing PBCH interleaving for %d coded bits, e %p\n",pbch_D,eNB_pbch->pbch_e); +#endif + RCC = sub_block_interleaving_cc(pbch_D,eNB_pbch->pbch_d+96,eNB_pbch->pbch_w); + + lte_rate_matching_cc(RCC,pbch_E,eNB_pbch->pbch_w,eNB_pbch->pbch_e); + +#ifdef DEBUG_PBCH_ENCODING + LOG_D(PHY,"PBCH_e:\n"); + + for (i=0; ipbch_e+i)); + + LOG_D(PHY,"\n"); +#endif + + + +#ifdef DEBUG_PBCH + if (frame_mod4==0) { + LOG_M("pbch_e.m","pbch_e", + eNB_pbch->pbch_e, + pbch_E, + 1, + 4); + + for (i=0; i<16; i++) + printf("e[%d] %d\n",i,eNB_pbch->pbch_e[i]); + } +#endif //DEBUG_PBCH + // scrambling + + pbch_scrambling_fembms(frame_parms, + eNB_pbch->pbch_e, + pbch_E); +#ifdef DEBUG_PBCH + if (frame_mod4==0) { + LOG_M("pbch_e_s.m","pbch_e_s", + eNB_pbch->pbch_e, + pbch_E, + 1, + 4); + + for (i=0; i<16; i++) + printf("e_s[%d] %d\n",i,eNB_pbch->pbch_e[i]); + } +#endif //DEBUG_PBCH + } // frame_mod4==0 + + // modulation and mapping (slot 1, symbols 0..3) + for (l=(nsymb>>1); l<(nsymb>>1)+4; l++) { + + pilots=0; +#ifdef INTERFERENCE_MITIGATION + pilots_2 = 0; +#endif + + if ((l==0) || (l==(nsymb>>1))) { + pilots=1; +#ifdef INTERFERENCE_MITIGATION + pilots_2=1; +#endif + } + + if ((l==1) || (l==(nsymb>>1)+1)) { + pilots=1; + } + + if ((l==second_pilot)||(l==(second_pilot+(nsymb>>1)))) { + pilots=1; + } + +#ifdef DEBUG_PBCH + LOG_D(PHY,"[PBCH] l=%d, pilots=%d\n",l,pilots); +#endif + + + re_offset = frame_parms->ofdm_symbol_size-3*12; + symbol_offset = frame_parms->ofdm_symbol_size*l; + + for (rb=0; rb<6; rb++) { + +#ifdef DEBUG_PBCH + LOG_D(PHY,"RB %d, jj %d, re_offset %d, symbol_offset %d, pilots %d, nushift %d\n",rb,jj,re_offset, symbol_offset, pilots,frame_parms->nushift); +#endif + allocate_pbch_REs_in_RB(frame_parms, + txdataF, + &jj, + re_offset, + symbol_offset, + &eNB_pbch->pbch_e[frame_mod4*(pbch_E>>2)], + pilots, +#ifdef INTERFERENCE_MITIGATION + (pilots_2==1)?(amp/3):amp, +#else + amp, +#endif + &re_allocated); + + re_offset+=12; // go to next RB + + // check if we crossed the symbol boundary and skip DC + + if (re_offset >= frame_parms->ofdm_symbol_size) + re_offset=1; + } + + // } + } + +#ifdef DEBUG_PBCH + printf("[PBCH] txdataF=\n"); + + for (i=0; iofdm_symbol_size; i++) { + printf("%d=>(%d,%d)",i,((short*)&txdataF[0][frame_parms->ofdm_symbol_size*(nsymb>>1)+i])[0], + ((short*)&txdataF[0][frame_parms->ofdm_symbol_size*(nsymb>>1)+i])[1]); + + if (frame_parms->nb_antenna_ports_eNB!=1) { + printf("(%d,%d)\n",((short*)&txdataF[1][frame_parms->ofdm_symbol_size*(nsymb>>1)+i])[0], + ((short*)&txdataF[1][frame_parms->ofdm_symbol_size*(nsymb>>1)+i])[1]); + } else { + printf("\n"); + } + } + +#endif + + + return(0); +} + void pbch_scrambling(LTE_DL_FRAME_PARMS *frame_parms, uint8_t *pbch_e, uint32_t length) diff --git a/openair1/PHY/LTE_TRANSPORT/pilots_mbsfn.c b/openair1/PHY/LTE_TRANSPORT/pilots_mbsfn.c index 475102b57c..47ef6428cb 100644 --- a/openair1/PHY/LTE_TRANSPORT/pilots_mbsfn.c +++ b/openair1/PHY/LTE_TRANSPORT/pilots_mbsfn.c @@ -20,12 +20,12 @@ */ /*! \file PHY/LTE_TRANSPORT/pilots_mbsfn.c -* \brief Top-level routines for generating DL mbsfn reference signals -* \authors S. Paranche, R. Knopp +* \brief Top-level routines for generating DL mbsfn reference signals / DL mbsfn reference signals for FeMBMS +* \authors S. Paranche, R. Knopp, J. Morgade * \date 2012 * \version 0.1 * \company Eurecom -* \email: knopp@eurecom.fr +* \email: knopp@eurecom.fr, javier.morgade@ieee.org * \note * \warning */ @@ -85,3 +85,31 @@ int generate_mbsfn_pilot(PHY_VARS_eNB *eNB, } +int generate_mbsfn_pilot_khz_1dot25(PHY_VARS_eNB *eNB, + L1_rxtx_proc_t *proc, + int32_t **txdataF, + int16_t amp) + +{ + + LTE_DL_FRAME_PARMS *frame_parms = &eNB->frame_parms; + uint32_t subframe_offset,Nsymb; + int subframe = proc->subframe_tx; + + + if (subframe<0 || subframe>= 10) { + LOG_E(PHY,"generate_mbsfn_pilots_subframe: subframe not in range (%d)\n",subframe); + return(-1); + } + + Nsymb = (frame_parms->Ncp==NORMAL) ? 7 : 6; + + subframe_offset = subframe*frame_parms->ofdm_symbol_size*Nsymb<<1; + + lte_dl_mbsfn_khz_1dot25(eNB, + &txdataF[0][subframe_offset+0], + amp,subframe); + + return(0); +} + diff --git a/openair1/PHY/LTE_TRANSPORT/pmch.c b/openair1/PHY/LTE_TRANSPORT/pmch.c index 90e2836b1e..7b508239a9 100644 --- a/openair1/PHY/LTE_TRANSPORT/pmch.c +++ b/openair1/PHY/LTE_TRANSPORT/pmch.c @@ -128,3 +128,53 @@ void generate_mch(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc,uint8_t *a) } +void generate_mch_khz_1dot25(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc,uint8_t *a) +{ + + int G; + int subframe = proc->subframe_tx; + int frame = proc->frame_tx; + //int bits; + + G = get_G_khz_1dot25(&eNB->frame_parms, + eNB->frame_parms.N_RB_DL, + eNB->dlsch_MCH->harq_processes[0]->rb_alloc, + get_Qm(eNB->dlsch_MCH->harq_processes[0]->mcs),1, + 2,proc->frame_tx,subframe,0); + + //FeMBMS + eNB->dlsch_MCH->harq_processes[0]->Qm = get_Qm(eNB->dlsch_MCH->harq_processes[0]->mcs); + + + generate_mbsfn_pilot_khz_1dot25(eNB,proc, + eNB->common_vars.txdataF, + AMP); + + + AssertFatal(dlsch_encoding_fembms_pmch(eNB, + proc, + // a, + eNB->dlsch_MCH->harq_processes[0]->pdu, + 1, + eNB->dlsch_MCH, + proc->frame_tx, + subframe, + &eNB->dlsch_rate_matching_stats, + &eNB->dlsch_turbo_encoding_stats, + &eNB->dlsch_interleaving_stats)==0, + "problem in dlsch_encoding"); + + + /*for(bits=0;bitsdlsch_MCH->harq_processes[0]->e[bits]); + printf("\n");*/ + + dlsch_scrambling(&eNB->frame_parms,1,eNB->dlsch_MCH,0,G,0,frame,subframe<<1); + + mch_modulation_khz_1dot25(eNB->common_vars.txdataF, + AMP, + subframe, + &eNB->frame_parms, + eNB->dlsch_MCH); +} + diff --git a/openair1/PHY/LTE_TRANSPORT/pmch_common.c b/openair1/PHY/LTE_TRANSPORT/pmch_common.c index 03bf5a378b..8d65dd2744 100644 --- a/openair1/PHY/LTE_TRANSPORT/pmch_common.c +++ b/openair1/PHY/LTE_TRANSPORT/pmch_common.c @@ -37,23 +37,84 @@ int is_fembms_cas_subframe(uint32_t frame, int subframe, LTE_DL_FRAME_PARMS *frame_parms) { - uint32_t period; + //uint32_t period; - if(frame_parms->NonMBSFN_config_flag ) { - period = 4<NonMBSFN_config.radioframeAllocationPeriod; + //if(frame_parms->NonMBSFN_config_flag ) { + // period = 4<NonMBSFN_config.radioframeAllocationPeriod; - if ((frame % period) == frame_parms->NonMBSFN_config.radioframeAllocationOffset) { + // if ((frame % period) == frame_parms->NonMBSFN_config.radioframeAllocationOffset) { + // switch (subframe) { + // case 0: + // return(1); //This should be CAS + // break; + // } + // } + //} + if(frame_parms->NonMBSFN_config_flag || frame_parms->FeMBMS_active){ + if ((frame&3)==0) { switch (subframe) { case 0: - return(1); //This should be CAS - break; + return(1); //This should be CAS + break; } - } + } + } return (0); } +int is_fembms_nonMBSFN_subframe(uint32_t frame, int subframe, LTE_DL_FRAME_PARMS *frame_parms){ + uint32_t period; + if(frame_parms->NonMBSFN_config_flag ) { + period = 4<NonMBSFN_config.radioframeAllocationPeriod; + if ((frame % period) == frame_parms->NonMBSFN_config.radioframeAllocationOffset) { + switch (subframe) { + case 0: + return(1); //This should be CAS + break; + case 1: + if ((frame_parms->NonMBSFN_config.non_mbsfn_SubframeConfig & 0x100) > 0) + return(1); + break; + case 2: + if ((frame_parms->NonMBSFN_config.non_mbsfn_SubframeConfig & 0x80) > 0) + return(1); + break; + case 3: + if ((frame_parms->NonMBSFN_config.non_mbsfn_SubframeConfig & 0x40) > 0) + return(1); + break; + case 4: + if ((frame_parms->NonMBSFN_config.non_mbsfn_SubframeConfig & 0x20) > 0) + return(1); + break; + case 5: + if ((frame_parms->NonMBSFN_config.non_mbsfn_SubframeConfig & 0x10) > 0) + return(1); + break; + case 6: + if ((frame_parms->NonMBSFN_config.non_mbsfn_SubframeConfig & 0x8) > 0) + return(1); + break; + case 7: + if ((frame_parms->NonMBSFN_config.non_mbsfn_SubframeConfig & 0x4) > 0) + return(1); + break; + case 8: + if ((frame_parms->NonMBSFN_config.non_mbsfn_SubframeConfig & 0x2) > 0) + return(1); + break; + case 9: + if ((frame_parms->NonMBSFN_config.non_mbsfn_SubframeConfig & 0x1) > 0) + return(1); + break; + } + } + } + return (0); +} + int is_fembms_pmch_subframe(uint32_t frame, int subframe, LTE_DL_FRAME_PARMS *frame_parms) { uint32_t period; @@ -62,63 +123,67 @@ int is_fembms_pmch_subframe(uint32_t frame, int subframe, LTE_DL_FRAME_PARMS *fr if ((frame % period) == frame_parms->NonMBSFN_config.radioframeAllocationOffset) { switch (subframe) { + case 0: + return(0); + break; case 1: if ((frame_parms->NonMBSFN_config.non_mbsfn_SubframeConfig & 0x100) > 0) - return(1); + return(0); break; case 2: if ((frame_parms->NonMBSFN_config.non_mbsfn_SubframeConfig & 0x80) > 0) - return(1); + return(0); break; case 3: if ((frame_parms->NonMBSFN_config.non_mbsfn_SubframeConfig & 0x40) > 0) - return(1); + return(0); break; case 4: if ((frame_parms->NonMBSFN_config.non_mbsfn_SubframeConfig & 0x20) > 0) - return(1); + return(0); break; case 5: if ((frame_parms->NonMBSFN_config.non_mbsfn_SubframeConfig & 0x10) > 0) - return(1); + return(0); break; case 6: if ((frame_parms->NonMBSFN_config.non_mbsfn_SubframeConfig & 0x8) > 0) - return(1); + return(0); break; case 7: if ((frame_parms->NonMBSFN_config.non_mbsfn_SubframeConfig & 0x4) > 0) - return(1); + return(0); break; case 8: if ((frame_parms->NonMBSFN_config.non_mbsfn_SubframeConfig & 0x2) > 0) - return(1); + return(0); break; case 9: if ((frame_parms->NonMBSFN_config.non_mbsfn_SubframeConfig & 0x1) > 0) - return(1); + return(0); break; } - } else { //Then regular MBSFN FeMBMS subframe + } else if((frame_parms->FeMBMS_active == 1 || frame_parms->NonMBSFN_config_flag == 1 ) && !is_fembms_cas_subframe(frame,subframe,frame_parms) ) { //Then regular MBSFN FeMBMS subframe return(1); } + return(1); } return(0); diff --git a/openair1/PHY/LTE_TRANSPORT/transport_common.h b/openair1/PHY/LTE_TRANSPORT/transport_common.h index 321789d54b..ab2921c2b9 100644 --- a/openair1/PHY/LTE_TRANSPORT/transport_common.h +++ b/openair1/PHY/LTE_TRANSPORT/transport_common.h @@ -67,6 +67,7 @@ #if !defined(SI_RNTI) #define SI_RNTI (rnti_t)0xffff + #define SI_RNTI_MBMS (rnti_t)0xfff9 #endif #if !defined(M_RNTI) #define M_RNTI (rnti_t)0xfffd diff --git a/openair1/PHY/LTE_TRANSPORT/transport_common_proto.h b/openair1/PHY/LTE_TRANSPORT/transport_common_proto.h index e4f5d9a17f..1944f06fab 100644 --- a/openair1/PHY/LTE_TRANSPORT/transport_common_proto.h +++ b/openair1/PHY/LTE_TRANSPORT/transport_common_proto.h @@ -270,6 +270,9 @@ int is_pmch_subframe(frame_t frame, int subframe, LTE_DL_FRAME_PARMS *frame_parm */ int is_fembms_cas_subframe(frame_t frame, int subframe, LTE_DL_FRAME_PARMS *frame_parms); +int is_fembms_nonMBSFN_subframe (frame_t frame, int subframe, LTE_DL_FRAME_PARMS *frame_parms); + + /*! \brief Return the status of MBSFN in this frame/subframe @param frame Frame index diff --git a/openair1/PHY/LTE_TRANSPORT/transport_proto.h b/openair1/PHY/LTE_TRANSPORT/transport_proto.h index 3988923bb9..4ce113f78e 100644 --- a/openair1/PHY/LTE_TRANSPORT/transport_proto.h +++ b/openair1/PHY/LTE_TRANSPORT/transport_proto.h @@ -123,6 +123,42 @@ int32_t dlsch_encoding(PHY_VARS_eNB *eNB, time_stats_t *te_stats, time_stats_t *i_stats); +/** \fn dlsch_encoding(PHY_VARS_eNB *eNB, + uint8_t *input_buffer, + LTE_DL_FRAME_PARMS *frame_parms, + uint8_t num_pdcch_symbols, + LTE_eNB_DLSCH_t *dlsch, + int frame, + uint8_t subframe) + \brief This function performs a subset of the bit-coding functions for LTE as described in 36-212, Release 8.Support is limited to turbo-coded channels (DLSCH/ULSCH). The implemented functions are: + - CRC computation and addition + - Code block segmentation and sub-block CRC addition + - Channel coding (Turbo coding) + - Rate matching (sub-block interleaving, bit collection, selection and transmission + - Code block concatenation + @param eNB Pointer to eNB PHY context + @param input_buffer Pointer to input buffer for sub-frame + @param frame_parms Pointer to frame descriptor structure + @param num_pdcch_symbols Number of PDCCH symbols in this subframe + @param dlsch Pointer to dlsch to be encoded + @param frame Frame number + @param subframe Subframe number + @param rm_stats Time statistics for rate-matching + @param te_stats Time statistics for turbo-encoding + @param i_stats Time statistics for interleaving + @returns status +*/ +int32_t dlsch_encoding_fembms_pmch(PHY_VARS_eNB *eNB, + L1_rxtx_proc_t *proc, + uint8_t *a, + uint8_t num_pdcch_symbols, + LTE_eNB_DLSCH_t *dlsch, + int frame, + uint8_t subframe, + time_stats_t *rm_stats, + time_stats_t *te_stats, + time_stats_t *i_stats); + @@ -269,6 +305,30 @@ int mch_modulation(int32_t **txdataF, LTE_DL_FRAME_PARMS *frame_parms, LTE_eNB_DLSCH_t *dlsch); +/* + \brief This function is the top-level routine for generation of the sub-frame signal (frequency-domain) for MCH. + @param txdataF Table of pointers for frequency-domain TX signals + @param amp Amplitude of signal + @param subframe_offset Offset of this subframe in units of subframes (usually 0) + @param frame_parms Pointer to frame descriptor + @param dlsch Pointer to DLSCH descriptor for this allocation +*/ +int mch_modulation_khz_1dot25(int32_t **txdataF, + int16_t amp, + uint32_t subframe_offset, + LTE_DL_FRAME_PARMS *frame_parms, + LTE_eNB_DLSCH_t *dlsch); + + +/** \brief Top-level generation function for eNB TX of MBSFN + @param phy_vars_eNB Pointer to eNB variables + @param a Pointer to transport block + @param abstraction_flag + +*/ +void generate_mch_khz_1dot25(PHY_VARS_eNB *phy_vars_eNB,L1_rxtx_proc_t *proc,uint8_t *a); + + /** \brief Top-level generation function for eNB TX of MBSFN @param phy_vars_eNB Pointer to eNB variables @param a Pointer to transport block @@ -318,6 +378,12 @@ int32_t generate_pilots_slot(PHY_VARS_eNB *phy_vars_eNB, uint16_t slot, int first_pilot_only); +int32_t generate_mbsfn_pilot_khz_1dot25(PHY_VARS_eNB *phy_vars_eNB, + L1_rxtx_proc_t *proc, + int32_t **txdataF, + int16_t amp); + + int32_t generate_mbsfn_pilot(PHY_VARS_eNB *phy_vars_eNB, L1_rxtx_proc_t *proc, int32_t **txdataF, @@ -350,6 +416,13 @@ int32_t generate_pbch(LTE_eNB_PBCH *eNB_pbch, uint8_t *pbch_pdu, uint8_t frame_mod4); +int32_t generate_pbch_fembms(LTE_eNB_PBCH *eNB_pbch, + int32_t **txdataF, + int32_t amp, + LTE_DL_FRAME_PARMS *frame_parms, + uint8_t *pbch_pdu, + uint8_t frame_mod16); + diff --git a/openair1/PHY/LTE_TRANSPORT/ulsch_demodulation.c b/openair1/PHY/LTE_TRANSPORT/ulsch_demodulation.c index f357e385f0..1b23fc99bf 100644 --- a/openair1/PHY/LTE_TRANSPORT/ulsch_demodulation.c +++ b/openair1/PHY/LTE_TRANSPORT/ulsch_demodulation.c @@ -1047,7 +1047,11 @@ void rx_ulsch(PHY_VARS_eNB *eNB, l%(frame_parms->symbols_per_tti/2), l/(frame_parms->symbols_per_tti/2), frame_parms); - lte_ul_channel_estimation(eNB,proc, + lte_ul_channel_estimation(&eNB->frame_parms,proc, + eNB->ulsch[UE_id], + eNB->pusch_vars[UE_id]->drs_ch_estimates, + eNB->pusch_vars[UE_id]->drs_ch_estimates_time, + eNB->pusch_vars[UE_id]->rxdataF_ext, UE_id, l%(frame_parms->symbols_per_tti/2), l/(frame_parms->symbols_per_tti/2)); diff --git a/openair1/PHY/LTE_UE_TRANSPORT/dlsch_demodulation.c b/openair1/PHY/LTE_UE_TRANSPORT/dlsch_demodulation.c index 2fd84f563c..556a9f2d23 100644 --- a/openair1/PHY/LTE_UE_TRANSPORT/dlsch_demodulation.c +++ b/openair1/PHY/LTE_UE_TRANSPORT/dlsch_demodulation.c @@ -821,15 +821,14 @@ int rx_pdsch(PHY_VARS_UE *ue, pllr_symbol_cw0 += llr_offset_symbol; pllr_symbol_cw1 += llr_offset_symbol; - /* - LOG_I(PHY,"compute LLRs [AbsSubframe %d.%d-%d] NbRB %d Qm %d LLRs-Length %d LLR-Offset %d @LLR Buff %p @LLR Buff(symb) %p\n", + LOG_D(PHY,"compute LLRs [AbsSubframe %d.%d-%d] NbRB %d Qm %d LLRs-Length %d LLR-Offset %d @LLR Buff %p @LLR Buff(symb) %p energy: %d\n", frame, subframe,symbol, nb_rb,dlsch0_harq->Qm, pdsch_vars[eNB_id]->llr_length[symbol], pdsch_vars[eNB_id]->llr_offset[symbol], (int16_t*)pdsch_vars[eNB_id]->llr[0], - pllr_symbol_cw0); - */ + pllr_symbol_cw0, + signal_energy(pdsch_vars[eNB_id]->rxdataF_comp0[0], 7*2*frame_parms->N_RB_DL*12)); switch (dlsch0_harq->Qm) { case 2 : if ((rx_type==rx_standard) || (codeword_TB1 == -1)) { diff --git a/openair1/PHY/LTE_UE_TRANSPORT/prach_ue.c b/openair1/PHY/LTE_UE_TRANSPORT/prach_ue.c index e4083863f0..ab7c2b9091 100644 --- a/openair1/PHY/LTE_UE_TRANSPORT/prach_ue.c +++ b/openair1/PHY/LTE_UE_TRANSPORT/prach_ue.c @@ -55,7 +55,7 @@ int32_t generate_prach( PHY_VARS_UE *ue, uint8_t eNB_id, uint8_t subframe, uint1 uint8_t preamble_index = ue->prach_resources[eNB_id]->ra_PreambleIndex; uint8_t tdd_mapindex = ue->prach_resources[eNB_id]->ra_TDD_map_index; int16_t *prachF = ue->prach_vars[eNB_id]->prachF; - static int16_t prach_tmp[45600*2] __attribute__((aligned(32))); + static int16_t prach_tmp[45600*4] __attribute__((aligned(32))); int16_t *prach = prach_tmp; int16_t *prach2; int16_t amp = ue->prach_vars[eNB_id]->amp; diff --git a/openair1/PHY/MODULATION/beamforming.c b/openair1/PHY/MODULATION/beamforming.c index 79e220ac37..b1f419b172 100644 --- a/openair1/PHY/MODULATION/beamforming.c +++ b/openair1/PHY/MODULATION/beamforming.c @@ -155,7 +155,7 @@ int nr_beam_precoding(int32_t **txdataF, memset(&txdataF_BF[aa][symbol*frame_parms->ofdm_symbol_size],0,sizeof(int32_t)*(frame_parms->ofdm_symbol_size)); for (p=0; pL_ssb >> p) & 0x01) { + if ((frame_parms->L_ssb >> (63-p)) & 0x01) { multadd_cpx_vector((int16_t*)&txdataF[p][symbol*frame_parms->ofdm_symbol_size], (int16_t*)beam_weights[p][aa], (int16_t*)&txdataF_BF[aa][symbol*frame_parms->ofdm_symbol_size], diff --git a/openair1/PHY/MODULATION/nr_modulation.c b/openair1/PHY/MODULATION/nr_modulation.c index b27b692e66..652421f77c 100644 --- a/openair1/PHY/MODULATION/nr_modulation.c +++ b/openair1/PHY/MODULATION/nr_modulation.c @@ -20,34 +20,138 @@ */ #include "nr_modulation.h" - -extern short nr_mod_table[NR_MOD_TABLE_SIZE_SHORT]; +#include "PHY/NR_REFSIG/nr_mod_table.h" void nr_modulation(uint32_t *in, uint32_t length, uint16_t mod_order, int16_t *out) { - uint16_t offset; - uint8_t idx, b_idx; + uint16_t mask = ((1<>b_idx)&1)<<(mod_order-j-1); + switch (mod_order) { + +#if defined(__SSE2__) + case 2: + nr_mod_table128 = (__m128i*) nr_qpsk_byte_mod_table; + out128 = (__m128i*) out; + for (i=0; i>((i*2)&0x7)) & mask); + out32[i] = nr_mod_table32[idx]; + i++; } + return; +#else + case 2: + nr_mod_table32 = (int32_t*) nr_qpsk_mod_table; + for (i=0; i>((i*2)&0x1f)) & mask); + out32[i] = nr_mod_table32[idx]; + } + return; +#endif - out[i<<1] = nr_mod_table[(offset+idx)<<1]; - out[(i<<1)+1] = nr_mod_table[((offset+idx)<<1)+1]; + case 4: + out64 = (int64_t*) out; + for (i=0; i>((i*4)&0x7)) & mask); + out32[i] = nr_16qam_mod_table[idx]; + i++; + } + return; + + case 6: + j = 0; + for (i=0; i>12)&4095; + out64[j++] = nr_64qam_mod_table[x1]; + x1 = (x>>24)&4095; + out64[j++] = nr_64qam_mod_table[x1]; + x1 = (x>>36)&4095; + out64[j++] = nr_64qam_mod_table[x1]; + x1 = (x>>48)&4095; + out64[j++] = nr_64qam_mod_table[x1]; + x2 = (x>>60); + x = in64[i*3+1]; + x2 |= x<<4; + x1 = x2&4095; + out64[j++] = nr_64qam_mod_table[x1]; + x1 = (x2>>12)&4095; + out64[j++] = nr_64qam_mod_table[x1]; + x1 = (x2>>24)&4095; + out64[j++] = nr_64qam_mod_table[x1]; + x1 = (x2>>36)&4095; + out64[j++] = nr_64qam_mod_table[x1]; + x1 = (x2>>48)&4095; + out64[j++] = nr_64qam_mod_table[x1]; + x2 = ((x>>56)&0xf0) | (x2>>60); + x = in64[i*3+2]; + x2 |= x<<8; + x1 = x2&4095; + out64[j++] = nr_64qam_mod_table[x1]; + x1 = (x2>>12)&4095; + out64[j++] = nr_64qam_mod_table[x1]; + x1 = (x2>>24)&4095; + out64[j++] = nr_64qam_mod_table[x1]; + x1 = (x2>>36)&4095; + out64[j++] = nr_64qam_mod_table[x1]; + x1 = (x2>>48)&4095; + out64[j++] = nr_64qam_mod_table[x1]; + x2 = ((x>>52)&0xff0) | (x2>>60); + out64[j++] = nr_64qam_mod_table[x2]; + } + i *= 24; + bit_cnt = i * 8; + while (bit_cnt < length) { + x = *((uint32_t*)(in_bytes+i)); + x1 = x&4095; + out64[j++] = nr_64qam_mod_table[x1]; + x1 = (x>>12)&4095; + out64[j++] = nr_64qam_mod_table[x1]; + i += 3; + bit_cnt += 24; + } + return; + + case 8: + nr_mod_table32 = (int32_t*) nr_256qam_mod_table; + for (i=0; isymbols_per_slot * fp->slots_per_frame/10; + const double Tc=(1/480e3/4096); + const double Nu=2048*64*.5; + const double f0= (double)CarrierFreq; + const double Ncp0=16*64 + (144*64*.5); + const double Ncp1=(144*64*.5); + double tl=0,poff,exp_re,exp_im; + double Ncp,Ncpm1=Ncp0; + + poff = 2*M_PI*((Ncp0*Tc))*f0; + exp_re = cos(poff); + exp_im = sin(-poff); + fp->symbol_rotation[0]=(int16_t)floor(exp_re*32767); + fp->symbol_rotation[1]=(int16_t)floor(exp_im*32767); + LOG_I(PHY,"Doing symbol rotation calculation for gNB TX/RX, f0 %f Hz, Nsymb %d\n",f0,nsymb); + LOG_I(PHY,"Symbol rotation %d/%d => (%d,%d)\n",0,nsymb,fp->symbol_rotation[0],fp->symbol_rotation[1]); + for (int l=1;lnumerology_index))) Ncp=Ncp0; + else Ncp=Ncp1; + tl += (Nu+Ncpm1)*Tc; + poff = 2*M_PI*(tl + (Ncp*Tc))*f0; + exp_re = cos(poff); + exp_im = sin(-poff); + fp->symbol_rotation[l<<1]=(int16_t)floor(exp_re*32767); + fp->symbol_rotation[1+(l<<1)]=(int16_t)floor(exp_im*32767); + LOG_I(PHY,"Symbol rotation %d/%d => tl %f (%d,%d) (%f)\n",l,nsymb,tl,fp->symbol_rotation[l<<1],fp->symbol_rotation[1+(l<<1)], + (poff/2/M_PI)-floor(poff/2/M_PI)); + Ncpm1=Ncp; + } +} diff --git a/openair1/PHY/MODULATION/nr_modulation.h b/openair1/PHY/MODULATION/nr_modulation.h index 706b4dc113..31d8754768 100644 --- a/openair1/PHY/MODULATION/nr_modulation.h +++ b/openair1/PHY/MODULATION/nr_modulation.h @@ -103,4 +103,13 @@ int nr_beam_precoding(int32_t **txdataF, int nb_antenna_ports ); +void apply_nr_rotation(NR_DL_FRAME_PARMS *fp, + int16_t* txdata, + int slot, + int first_symbol, + int nsymb, + int length); + +void init_symbol_rotation(NR_DL_FRAME_PARMS *fp,uint64_t CarrierFreq); + #endif diff --git a/openair1/PHY/MODULATION/ofdm_mod.c b/openair1/PHY/MODULATION/ofdm_mod.c index 855e649cc5..92aea419af 100644 --- a/openair1/PHY/MODULATION/ofdm_mod.c +++ b/openair1/PHY/MODULATION/ofdm_mod.c @@ -27,6 +27,7 @@ This section deals with basic functions for OFDM Modulation. + */ #include "PHY/defs_eNB.h" @@ -47,6 +48,7 @@ void normal_prefix_mod(int32_t *txdataF,int32_t *txdata,uint8_t nsymb,LTE_DL_FRA PHY_ofdm_mod(txdataF, // input txdata, // output frame_parms->ofdm_symbol_size, + 1, // number of symbols frame_parms->nb_prefix_samples0, // number of prefix samples CYCLIC_PREFIX); @@ -88,7 +90,7 @@ void PHY_ofdm_mod(int *input, /// pointer to complex input if(nb_symbols == 0) return; - short temp[4096*4] __attribute__((aligned(32))); + short temp[2*2*6144*4] __attribute__((aligned(32))); unsigned short i,j; short k; @@ -125,9 +127,23 @@ void PHY_ofdm_mod(int *input, /// pointer to complex input case 3072: idftsize = IDFT_3072; break; + case 4096: idftsize = IDFT_4096; break; + + case 6144: + idftsize= IDFT_6144; + break; + + case 12288: + idftsize= IDFT_12288; + break; + + case 24576: + idftsize= IDFT_24576; + break; + default: idftsize = IDFT_512; break; @@ -177,7 +193,7 @@ void PHY_ofdm_mod(int *input, /// pointer to complex input /*for (j=0; jslots_per_subframe)*fp->symbols_per_slot; - int aa, l, slot_offset, slot_offsetF; - int32_t **txdataF = eNB_common_vars->txdataF; - int32_t **txdataF_BF = common->txdataF_BF; - int32_t **txdata = common->txdata; - - slot_offset = (next_slot)*(frame_parms->samples_per_tti>>1); - slot_offsetF = (next_slot)*(frame_parms->ofdm_symbol_size)*((frame_parms->Ncp==EXTENDED) ? 6 : 7); - //printf("Thread %d starting ... aa %d (%llu)\n",omp_get_thread_num(),aa,rdtsc()); - for (l=0; lsymbols_per_tti>>1; l++) { - - for (aa=0; aanb_antennas_tx; aa++) { - - //printf("do_OFDM_mod_l, slot=%d, l=%d, NUMBER_OF_OFDM_CARRIERS=%d,OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES=%d\n",next_slot, l,NUMBER_OF_OFDM_CARRIERS,OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES); - VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_BEAM_PRECODING,1); - if (do_precoding==1) beam_precoding(txdataF,txdataF_BF,frame_parms,eNB_common_vars->beam_weights,next_slot,l,aa); - VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_BEAM_PRECODING,0); - - //PMCH case not implemented... - - if (frame_parms->Ncp == EXTENDED) - PHY_ofdm_mod((do_precoding == 1)?txdataF_BF[aa]:&txdataF[aa][slot_offsetF+l*frame_parms->ofdm_symbol_size], // input - &txdata[aa][slot_offset+l*OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES], // output - frame_parms->ofdm_symbol_size, - 1, // number of symbols - frame_parms->nb_prefix_samples, // number of prefix samples - CYCLIC_PREFIX); - else { - if (l==0) { - PHY_ofdm_mod((do_precoding==1)?txdataF_BF[aa]:&txdataF[aa][slot_offsetF+l*frame_parms->ofdm_symbol_size], // input - &txdata[aa][slot_offset], // output - frame_parms->ofdm_symbol_size, - 1, // number of symbols - frame_parms->nb_prefix_samples0, // number of prefix samples - CYCLIC_PREFIX); - - } else { - PHY_ofdm_mod((do_precoding==1)?txdataF_BF[aa]:&txdataF[aa][slot_offsetF+l*frame_parms->ofdm_symbol_size], // input - &txdata[aa][slot_offset+OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES0+(l-1)*OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES], // output - frame_parms->ofdm_symbol_size, - 1, // number of symbols - frame_parms->nb_prefix_samples, // number of prefix samples - CYCLIC_PREFIX); - - //printf("txdata[%d][%d]=%d\n",aa,slot_offset+OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES0+(l-1)*OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES,txdata[aa][slot_offset+OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES0+(l-1)*OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES]); - - } - } - } + for (int sidx=0;sidxsymbol_rotation[2*(sidx+first_symbol+symb_offset)],fp->symbol_rotation[1+2*(sidx+first_symbol+symb_offset)]); + rotate_cpx_vector(trxdata+(sidx*length*2), + &fp->symbol_rotation[2*(sidx+first_symbol+symb_offset)], + trxdata+(sidx*length*2), + length, + 15); } - } -*/ + diff --git a/openair1/PHY/MODULATION/slot_fep_nr.c b/openair1/PHY/MODULATION/slot_fep_nr.c index 7fe8437c4e..2ffdb013a5 100644 --- a/openair1/PHY/MODULATION/slot_fep_nr.c +++ b/openair1/PHY/MODULATION/slot_fep_nr.c @@ -133,8 +133,8 @@ int nr_slot_fep(PHY_VARS_NR_UE *ue, #ifdef DEBUG_FEP // if (ue->frame <100) - /*LOG_I(PHY,*/printf("slot_fep: frame %d: slot %d, symbol %d, nb_prefix_samples %u, nb_prefix_samples0 %u, slot_offset %u, sample_offset %d,rx_offset %u, frame_length_samples %u\n", - ue->proc.proc_rxtx[(Ns)&1].frame_rx, Ns, symbol, nb_prefix_samples, nb_prefix_samples0, slot_offset, sample_offset, rx_offset, frame_length_samples); + /*LOG_I(PHY,*/printf("slot_fep: slot %d, symbol %d, nb_prefix_samples %u, nb_prefix_samples0 %u, slot_offset %u, sample_offset %d,rx_offset %u, frame_length_samples %u\n", + Ns, symbol, nb_prefix_samples, nb_prefix_samples0, slot_offset, sample_offset, rx_offset, frame_length_samples); #endif abs_symbol = Ns * frame_parms->symbols_per_slot + symbol; @@ -198,12 +198,22 @@ int nr_slot_fep(PHY_VARS_NR_UE *ue, } - #ifdef DEBUG_FEP - // if (ue->frame <100) - printf("slot_fep: frame %d: symbol %d rx_offset %u\n", ue->proc.proc_rxtx[(Ns)&1].frame_rx, symbol, rx_offset); - #endif +#ifdef DEBUG_FEP + // if (ue->frame <100) + printf("slot_fep: symbol %d rx_offset %u\n", symbol, rx_offset); +#endif + + int symb_offset = (Ns%frame_parms->slots_per_subframe)*frame_parms->symbols_per_slot; + int32_t rot2 = ((uint32_t*)frame_parms->symbol_rotation)[symbol+symb_offset]; + ((int16_t*)&rot2)[1]=-((int16_t*)&rot2)[1]; + rotate_cpx_vector((int16_t *)&common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[Ns]].rxdataF[aa][frame_parms->ofdm_symbol_size*symbol], + (int16_t*)&rot2, + (int16_t *)&common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[Ns]].rxdataF[aa][frame_parms->ofdm_symbol_size*symbol], + frame_parms->ofdm_symbol_size, + 15); + } - + #ifdef DEBUG_FEP printf("slot_fep: done\n"); @@ -212,10 +222,10 @@ int nr_slot_fep(PHY_VARS_NR_UE *ue, } int nr_slot_fep_init_sync(PHY_VARS_NR_UE *ue, - unsigned char symbol, - unsigned char Ns, - int sample_offset, - int no_prefix) + unsigned char symbol, + unsigned char Ns, + int sample_offset, + int no_prefix) { NR_DL_FRAME_PARMS *frame_parms = &ue->frame_parms; NR_UE_COMMON *common_vars = &ue->common_vars; @@ -308,8 +318,8 @@ int nr_slot_fep_init_sync(PHY_VARS_NR_UE *ue, #ifdef DEBUG_FEP // if (ue->frame <100) - /*LOG_I(PHY,*/printf("slot_fep: frame %d: slot %d, symbol %d, nb_prefix_samples %u, nb_prefix_samples0 %u, slot_offset %u, sample_offset %d,rx_offset %u, frame_length_samples %u\n", - ue->proc.proc_rxtx[(Ns)&1].frame_rx, Ns, symbol, nb_prefix_samples, nb_prefix_samples0, slot_offset, sample_offset, rx_offset, frame_length_samples); + /*LOG_I(PHY,*/printf("slot_fep: slot %d, symbol %d, nb_prefix_samples %u, nb_prefix_samples0 %u, slot_offset %u, sample_offset %d,rx_offset %u, frame_length_samples %u\n", + Ns, symbol, nb_prefix_samples, nb_prefix_samples0, slot_offset, sample_offset, rx_offset, frame_length_samples); #endif abs_symbol = Ns * frame_parms->symbols_per_slot + symbol; @@ -339,7 +349,7 @@ int nr_slot_fep_init_sync(PHY_VARS_NR_UE *ue, #endif - dft(dftsize,(int16_t *) &common_vars->rxdata[aa][(rx_offset) % frame_length_samples], + dft(dftsize,(int16_t *) &common_vars->rxdata[aa][rx_offset], (int16_t *)&common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[Ns]].rxdataF[aa][frame_parms->ofdm_symbol_size*symbol],1); #if UE_TIMING_TRACE stop_meas(&ue->rx_dft_stats); @@ -363,7 +373,7 @@ int nr_slot_fep_init_sync(PHY_VARS_NR_UE *ue, dft(dftsize,(int16_t *)tmp_dft_in, (int16_t *)&common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[Ns]].rxdataF[aa][frame_parms->ofdm_symbol_size*symbol],1); } else { // use dft input from RX buffer directly - dft(dftsize,(int16_t *) &common_vars->rxdata[aa][(rx_offset) % frame_length_samples], + dft(dftsize,(int16_t *) &common_vars->rxdata[aa][rx_offset], (int16_t *)&common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[Ns]].rxdataF[aa][frame_parms->ofdm_symbol_size*symbol],1); } #if UE_TIMING_TRACE @@ -373,10 +383,22 @@ int nr_slot_fep_init_sync(PHY_VARS_NR_UE *ue, } - #ifdef DEBUG_FEP - // if (ue->frame <100) - printf("slot_fep: frame %d: symbol %d rx_offset %u\n", ue->proc.proc_rxtx[(Ns)&1].frame_rx, symbol, rx_offset); - #endif + int symb_offset = (Ns%frame_parms->slots_per_subframe)*frame_parms->symbols_per_slot; + int32_t rot2 = ((uint32_t*)frame_parms->symbol_rotation)[symbol+symb_offset]; + ((int16_t*)&rot2)[1]=-((int16_t*)&rot2)[1]; + +#ifdef DEBUG_FEP + // if (ue->frame <100) + printf("slot_fep: slot %d, symbol %d rx_offset %u, rotation symbol %d %d.%d\n", Ns,symbol, rx_offset, + symbol+symb_offset,((int16_t*)&rot2)[0],((int16_t*)&rot2)[1]); +#endif + + rotate_cpx_vector((int16_t *)&common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[Ns]].rxdataF[aa][frame_parms->ofdm_symbol_size*symbol], + (int16_t*)&rot2, + (int16_t *)&common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[Ns]].rxdataF[aa][frame_parms->ofdm_symbol_size*symbol], + frame_parms->ofdm_symbol_size, + 15); + } @@ -395,12 +417,13 @@ int nr_slot_fep_ul(NR_DL_FRAME_PARMS *frame_parms, int sample_offset, int no_prefix) { - uint32_t slot_offset; - uint32_t rxdata_offset; + int32_t slot_offset, rxdata_offset; unsigned int nb_prefix_samples = (no_prefix ? 0 : frame_parms->nb_prefix_samples); unsigned int nb_prefix_samples0 = (no_prefix ? 0 : frame_parms->nb_prefix_samples0); + int tmp_dft_in[8192] __attribute__ ((aligned (32))); + dft_size_idx_t dftsize; switch (frame_parms->ofdm_symbol_size) { @@ -443,14 +466,38 @@ int nr_slot_fep_ul(NR_DL_FRAME_PARMS *frame_parms, slot_offset = frame_parms->get_samples_slot_timestamp(Ns,frame_parms,0); - if(symbol == 0) rxdata_offset = slot_offset + nb_prefix_samples0 - SOFFSET; else rxdata_offset = slot_offset + nb_prefix_samples0 + (symbol * (frame_parms->ofdm_symbol_size + nb_prefix_samples)) - SOFFSET; - dft(dftsize,(int16_t *)&rxdata[rxdata_offset], - (int16_t *)&rxdataF[symbol * frame_parms->ofdm_symbol_size], 1); + if(sample_offset>rxdata_offset) { + memcpy1((void *)tmp_dft_in, + (void *) &rxdata[frame_parms->samples_per_frame-sample_offset+rxdata_offset], + (sample_offset-rxdata_offset)*sizeof(int)); + memcpy1((void *)&tmp_dft_in[sample_offset-rxdata_offset], + (void *) &rxdata[0], + (frame_parms->ofdm_symbol_size-sample_offset+rxdata_offset)*sizeof(int)); + + dft(dftsize,(int16_t *)&tmp_dft_in, + (int16_t *)&rxdataF[symbol * frame_parms->ofdm_symbol_size], 1); + } + else + dft(dftsize,(int16_t *)&rxdata[rxdata_offset-sample_offset], + (int16_t *)&rxdataF[symbol * frame_parms->ofdm_symbol_size], 1); + + // clear DC carrier from OFDM symbols + rxdataF[symbol * frame_parms->ofdm_symbol_size] = 0; + + int symb_offset = (Ns%frame_parms->slots_per_subframe)*frame_parms->symbols_per_slot; + uint32_t rot2 = ((uint32_t*)frame_parms->symbol_rotation)[symbol+symb_offset]; + ((int16_t*)&rot2)[1]=-((int16_t*)&rot2)[1]; + LOG_D(PHY,"slot %d, symb_offset %d rotating by %d.%d\n",Ns,symb_offset,((int16_t*)&rot2)[0],((int16_t*)&rot2)[1]); + rotate_cpx_vector((int16_t *)&rxdataF[frame_parms->ofdm_symbol_size*symbol], + (int16_t*)&rot2, + (int16_t *)&rxdataF[frame_parms->ofdm_symbol_size*symbol], + frame_parms->ofdm_symbol_size, + 15); return(0); } diff --git a/openair1/PHY/NR_ESTIMATION/nr_adjust_sync_gNB.c b/openair1/PHY/NR_ESTIMATION/nr_measurements_gNB.c similarity index 63% rename from openair1/PHY/NR_ESTIMATION/nr_adjust_sync_gNB.c rename to openair1/PHY/NR_ESTIMATION/nr_measurements_gNB.c index 9c4d1fcc93..ec55eabf31 100644 --- a/openair1/PHY/NR_ESTIMATION/nr_adjust_sync_gNB.c +++ b/openair1/PHY/NR_ESTIMATION/nr_measurements_gNB.c @@ -19,7 +19,7 @@ * contact@openairinterface.org */ -/*! \file PHY/NR_ESTIMATION/nr_adjust_sync_gNB.c +/*! \file PHY/NR_ESTIMATION/nr_measurements_gNB.c * \brief TA estimation for TA updates * \author Ahmed Hussein * \date 2019 @@ -69,3 +69,37 @@ int nr_est_timing_advance_pusch(PHY_VARS_gNB* gNB, int UE_id) return max_pos - sync_pos; } + +void gNB_I0_measurements(PHY_VARS_gNB *gNB) { + + NR_DL_FRAME_PARMS *frame_parms = &gNB->frame_parms; + NR_gNB_COMMON *common_vars = &gNB->common_vars; + PHY_MEASUREMENTS_gNB *measurements = &gNB->measurements; + uint32_t *rb_mask = gNB->rb_mask_ul; + int symbol = gNB->ulmask_symb; + int rb, offset, nb_rb; + uint32_t n0_power_tot, n0_subband_power_temp=0; + int32_t *ul_ch; + + if (symbol>-1) { + n0_power_tot = 0; + for (int aarx=0; aarxnb_antennas_rx; aarx++) { + nb_rb = 0; + for (rb=0; rbN_RB_UL; rb++) { + if ((rb_mask[rb>>5]&(1<<(rb&31))) == 0) { // check that rb was not used in this subframe + nb_rb++; + offset = (frame_parms->first_carrier_offset + (rb*12))%frame_parms->ofdm_symbol_size; + offset += (symbol*frame_parms->ofdm_symbol_size); + ul_ch = &common_vars->rxdataF[aarx][offset]; + //TODO what about DC? + n0_subband_power_temp += signal_energy_nodc(ul_ch,12); + } + } + measurements->n0_power[aarx] = n0_subband_power_temp/nb_rb; + measurements->n0_power_dB[aarx] = dB_fixed(measurements->n0_power[aarx]); + n0_power_tot += measurements->n0_power[aarx]; + } + measurements->n0_power_tot_dB = dB_fixed(n0_power_tot); + } +} + diff --git a/openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c b/openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c index f94a82c111..bfc29ab4f5 100644 --- a/openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c +++ b/openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c @@ -28,12 +28,15 @@ #include "PHY/NR_UE_ESTIMATION/filt16a_32.h" //#define DEBUG_CH +//#define DEBUG_PUSCH +#define dBc(x,y) (dB_fixed(((int32_t)(x))*(x) + ((int32_t)(y))*(y))) int nr_pusch_channel_estimation(PHY_VARS_gNB *gNB, unsigned char Ns, unsigned short p, unsigned char symbol, + int ul_id, unsigned short bwp_start_subcarrier, nfapi_nr_pusch_pdu_t *pusch_pdu) { @@ -43,8 +46,8 @@ int nr_pusch_channel_estimation(PHY_VARS_gNB *gNB, unsigned int pilot_cnt,re_cnt; int16_t ch[2],ch_r[2],ch_l[2],*pil,*rxF,*ul_ch; int16_t *fl,*fm,*fr,*fml,*fmr,*fmm,*fdcl,*fdcr,*fdclh,*fdcrh; - int ch_offset,symbol_offset, UE_id = 0; - int32_t **ul_ch_estimates_time = gNB->pusch_vars[UE_id]->ul_ch_estimates_time; + int ch_offset,symbol_offset ; + int32_t **ul_ch_estimates_time = gNB->pusch_vars[ul_id]->ul_ch_estimates_time; __m128i *ul_ch_128; #ifdef DEBUG_CH @@ -55,7 +58,7 @@ int nr_pusch_channel_estimation(PHY_VARS_gNB *gNB, //uint16_t Nid_cell = (eNB_offset == 0) ? gNB->frame_parms.Nid_cell : gNB->measurements.adj_cell_id[eNB_offset-1]; uint8_t nushift; - int **ul_ch_estimates = gNB->pusch_vars[UE_id]->ul_ch_estimates; + int **ul_ch_estimates = gNB->pusch_vars[ul_id]->ul_ch_estimates; int **rxdataF = gNB->common_vars.rxdataF; nushift = (p>>1)&1; @@ -116,10 +119,16 @@ int nr_pusch_channel_estimation(PHY_VARS_gNB *gNB, //------------------generate DMRS------------------// - nr_pusch_dmrs_rx(gNB, Ns, gNB->nr_gold_pusch_dmrs[pusch_pdu->scid][Ns][symbol], &pilot[0], 1000, 0, nb_rb_pusch, pusch_pdu->dmrs_config_type); + if (pusch_pdu->transform_precoding==1) // if transform precoding is disabled + nr_pusch_dmrs_rx(gNB, Ns, gNB->nr_gold_pusch_dmrs[pusch_pdu->scid][Ns][symbol], &pilot[0], 1000, 0, nb_rb_pusch, pusch_pdu->rb_start*NR_NB_SC_PER_RB, pusch_pdu->dmrs_config_type); + else + nr_pusch_dmrs_rx(gNB, Ns, gNB->nr_gold_pusch_dmrs[pusch_pdu->scid][Ns][symbol], &pilot[0], 1000, 0, nb_rb_pusch, 0, pusch_pdu->dmrs_config_type); //------------------------------------------------// - +#ifdef DEBUG_PUSCH + for (int i=0;i<(6*nb_rb_pusch);i++) + printf("%d+j*(%d)\n",((int16_t*)pilot)[2*i],((int16_t*)pilot)[1+(2*i)]); +#endif for (aarx=0; aarxframe_parms.nb_antennas_rx; aarx++) { pil = (int16_t *)&pilot[0]; @@ -129,8 +138,9 @@ int nr_pusch_channel_estimation(PHY_VARS_gNB *gNB, memset(ul_ch,0,4*(gNB->frame_parms.ofdm_symbol_size)); #ifdef DEBUG_PUSCH + printf("symbol_offset %d, nushift %d\n",symbol_offset,nushift); printf("ch est pilot addr %p RB_DL %d\n",&pilot[0], gNB->frame_parms.N_RB_UL); - printf("k %d, first_carrier %d\n",k,gNB->frame_parms.first_carrier_offset); + printf("bwp_start_subcarrier %d, k %d, first_carrier %d, nb_rb_pusch %d\n",bwp_start_subcarrier,k,gNB->frame_parms.first_carrier_offset,nb_rb_pusch); printf("rxF addr %p p %d\n", rxF,p); printf("ul_ch addr %p nushift %d\n",ul_ch,nushift); #endif @@ -144,8 +154,8 @@ int nr_pusch_channel_estimation(PHY_VARS_gNB *gNB, #ifdef DEBUG_PUSCH printf("ch 0 %d\n",((int32_t)pil[0]*rxF[0] - (int32_t)pil[1]*rxF[1])); - printf("pilot 0 : rxF - > (%d,%d) addr %p ch -> (%d,%d), pil -> (%d,%d) \n",rxF[0],rxF[1],&rxF[0],ch[0],ch[1],pil[0],pil[1]); - printf("data 0 : rxF - > (%d,%d) addr %p ch -> (%d,%d), pil -> (%d,%d) \n",rxF[2],rxF[3],&rxF[2],ch[0],ch[1],pil[0],pil[1]); + printf("pilot 0 : rxF - > (%d,%d) (%d) ch -> (%d,%d) (%d), pil -> (%d,%d) \n",rxF[0],rxF[1],dBc(rxF[0],rxF[1]),ch[0],ch[1],dBc(ch[0],ch[1]),pil[0],pil[1]); + printf("data 0 : rxF - > (%d,%d) (%d)\n",rxF[2],rxF[3],dBc(rxF[2],rxF[3])); #endif multadd_real_vector_complex_scalar(fl, @@ -162,7 +172,8 @@ int nr_pusch_channel_estimation(PHY_VARS_gNB *gNB, ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15); #ifdef DEBUG_PUSCH - printf("pilot 1 : rxF - > (%d,%d) ch -> (%d,%d), pil -> (%d,%d) \n",rxF[0],rxF[1],ch[0],ch[1],pil[0],pil[1]); + printf("pilot 1 : rxF - > (%d,%d) (%d) ch -> (%d,%d) (%d), pil -> (%d,%d) \n",rxF[0],rxF[1],dBc(rxF[0],rxF[1]),ch[0],ch[1],dBc(ch[0],ch[1]),pil[0],pil[1]); + printf("data 1 : rxF - > (%d,%d) (%d)\n",rxF[2],rxF[3],dBc(rxF[2],rxF[3])); #endif multadd_real_vector_complex_scalar(fml, ch, @@ -177,7 +188,8 @@ int nr_pusch_channel_estimation(PHY_VARS_gNB *gNB, ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15); #ifdef DEBUG_PUSCH - printf("pilot 2 : rxF - > (%d,%d) ch -> (%d,%d), pil -> (%d,%d) \n",rxF[0],rxF[1],ch[0],ch[1],pil[0],pil[1]); + printf("pilot 2 : rxF - > (%d,%d) (%d) ch -> (%d,%d) (%d), pil -> (%d,%d) \n",rxF[0],rxF[1],dBc(rxF[0],rxF[1]),ch[0],ch[1],dBc(ch[0],ch[1]),pil[0],pil[1]); + printf("data 2 : rxF - > (%d,%d) (%d)\n",rxF[2],rxF[3],dBc(rxF[2],rxF[3])); #endif multadd_real_vector_complex_scalar(fmm, ch, @@ -198,7 +210,8 @@ int nr_pusch_channel_estimation(PHY_VARS_gNB *gNB, ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15); #ifdef DEBUG_PUSCH - printf("pilot 1 : rxF - > (%d,%d) ch -> (%d,%d), pil -> (%d,%d) \n",rxF[0],rxF[1],ch[0],ch[1],pil[0],pil[1]); + printf("pilot %u : rxF - > (%d,%d) (%d) ch -> (%d,%d) (%d), pil -> (%d,%d) \n",pilot_cnt,rxF[0],rxF[1],dBc(rxF[0],rxF[1]),ch[0],ch[1],dBc(ch[0],ch[1]),pil[0],pil[1]); + printf("data %u : rxF - > (%d,%d) (%d)\n",pilot_cnt,rxF[2],rxF[3],dBc(rxF[2],rxF[3])); #endif multadd_real_vector_complex_scalar(fml, ch, @@ -213,7 +226,8 @@ int nr_pusch_channel_estimation(PHY_VARS_gNB *gNB, ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15); #ifdef DEBUG_PUSCH - printf("pilot %u : rxF - > (%d,%d) ch -> (%d,%d), pil -> (%d,%d) \n",pilot_cnt+1,rxF[0],rxF[1],ch[0],ch[1],pil[0],pil[1]); + printf("pilot %u : rxF - > (%d,%d) (%d) ch -> (%d,%d) (%d), pil -> (%d,%d) \n",pilot_cnt+1,rxF[0],rxF[1],dBc(rxF[0],rxF[1]),ch[0],ch[1],dBc(ch[0],ch[1]),pil[0],pil[1]); + printf("data %u : rxF - > (%d,%d) (%d)\n",pilot_cnt+1,rxF[2],rxF[3],dBc(rxF[2],rxF[3])); #endif multadd_real_vector_complex_scalar(fmm, ch, @@ -234,7 +248,8 @@ int nr_pusch_channel_estimation(PHY_VARS_gNB *gNB, ch[0] = (int16_t)(((int32_t)pil[0]*rxF[0] - (int32_t)pil[1]*rxF[1])>>15); ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15); #ifdef DEBUG_PUSCH - printf("pilot %u : rxF - > (%d,%d) ch -> (%d,%d), pil -> (%d,%d) \n",pilot_cnt,rxF[0],rxF[1],ch[0],ch[1],pil[0],pil[1]); + printf("pilot %u : rxF - > (%d,%d) (%d) ch -> (%d,%d) (%d), pil -> (%d,%d) \n",pilot_cnt,rxF[0],rxF[1],dBc(rxF[0],rxF[1]),ch[0],ch[1],dBc(ch[0],ch[1]),pil[0],pil[1]); + printf("data %u : rxF - > (%d,%d) (%d)\n",pilot_cnt,rxF[2],rxF[3],dBc(rxF[2],rxF[3])); #endif multadd_real_vector_complex_scalar(fm, ch, @@ -252,7 +267,8 @@ int nr_pusch_channel_estimation(PHY_VARS_gNB *gNB, ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15); #ifdef DEBUG_PUSCH printf("ch 0 %d\n",((int32_t)pil[0]*rxF[0] - (int32_t)pil[1]*rxF[1])); - printf("pilot %u: rxF - > (%d,%d) addr %p ch -> (%d,%d), pil -> (%d,%d) \n",pilot_cnt+1,rxF[0],rxF[1],&rxF[0],ch[0],ch[1],pil[0],pil[1]); + printf("pilot %u : rxF - > (%d,%d) (%d) ch -> (%d,%d) (%d), pil -> (%d,%d) \n",pilot_cnt+1,rxF[0],rxF[1],dBc(rxF[0],rxF[1]),ch[0],ch[1],dBc(ch[0],ch[1]),pil[0],pil[1]); + printf("data %u : rxF - > (%d,%d) (%d)\n",pilot_cnt+1,rxF[2],rxF[3],dBc(rxF[2],rxF[3])); #endif multadd_real_vector_complex_scalar(fmr, ch, @@ -267,7 +283,8 @@ int nr_pusch_channel_estimation(PHY_VARS_gNB *gNB, ch[0] = (int16_t)(((int32_t)pil[0]*rxF[0] - (int32_t)pil[1]*rxF[1])>>15); ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15); #ifdef DEBUG_PUSCH - printf("pilot %u: rxF - > (%d,%d) ch -> (%d,%d), pil -> (%d,%d) \n",pilot_cnt+2,rxF[0],rxF[1],ch[0],ch[1],pil[0],pil[1]); + printf("pilot %u: rxF - > (%d,%d) (%d) ch -> (%d,%d) (%d), pil -> (%d,%d) \n",pilot_cnt+2,rxF[0],rxF[1],dBc(rxF[0],rxF[1]),ch[0],ch[1],dBc(ch[0],ch[1]),pil[0],pil[1]); + printf("data %u : rxF - > (%d,%d) (%d)\n",pilot_cnt+2,rxF[2],rxF[3],dBc(rxF[2],rxF[3])); #endif multadd_real_vector_complex_scalar(fr, ch, @@ -275,70 +292,69 @@ int nr_pusch_channel_estimation(PHY_VARS_gNB *gNB, 8); - // check if PRB crosses DC and improve estimates around DC - if ((bwp_start_subcarrier < gNB->frame_parms.ofdm_symbol_size) && (bwp_start_subcarrier+nb_rb_pusch*12 >= gNB->frame_parms.ofdm_symbol_size)) { + // check if PRB crosses DC and improve estimates around DC + if ((bwp_start_subcarrier < gNB->frame_parms.ofdm_symbol_size) && (bwp_start_subcarrier+nb_rb_pusch*12 >= gNB->frame_parms.ofdm_symbol_size)) { + ul_ch = (int16_t *)&ul_ch_estimates[aarx][ch_offset]; + uint16_t idxDC = 2*(gNB->frame_parms.ofdm_symbol_size - bwp_start_subcarrier); + uint16_t idxPil = idxDC/2; + re_offset = k; + pil = (int16_t *)&pilot[0]; + pil += (idxPil-2); + ul_ch += (idxDC-4); + ul_ch = memset(ul_ch, 0, sizeof(int16_t)*10); + re_offset = (re_offset+idxDC/2-2) % gNB->frame_parms.ofdm_symbol_size; + rxF = (int16_t *)&rxdataF[aarx][(symbol_offset+nushift+re_offset)]; + ch[0] = (int16_t)(((int32_t)pil[0]*rxF[0] - (int32_t)pil[1]*rxF[1])>>15); + ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15); + + // for proper allignment of SIMD vectors + if((gNB->frame_parms.N_RB_UL&1)==0) { + + multadd_real_vector_complex_scalar(fdcl, + ch, + ul_ch-4, + 8); + + pil += 4; + re_offset = (re_offset+4) % gNB->frame_parms.ofdm_symbol_size; + rxF = (int16_t *)&rxdataF[aarx][(symbol_offset+nushift+re_offset)]; + ch[0] = (int16_t)(((int32_t)pil[0]*rxF[0] - (int32_t)pil[1]*rxF[1])>>15); + ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15); + + multadd_real_vector_complex_scalar(fdcr, + ch, + ul_ch-4, + 8); + } + else { + multadd_real_vector_complex_scalar(fdclh, + ch, + ul_ch, + 8); + + pil += 4; + re_offset = (re_offset+4) % gNB->frame_parms.ofdm_symbol_size; + rxF = (int16_t *)&rxdataF[aarx][(symbol_offset+nushift+re_offset)]; + ch[0] = (int16_t)(((int32_t)pil[0]*rxF[0] - (int32_t)pil[1]*rxF[1])>>15); + ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15); + + multadd_real_vector_complex_scalar(fdcrh, + ch, + ul_ch, + 8); + } + } +#ifdef DEBUG_PUSCH ul_ch = (int16_t *)&ul_ch_estimates[aarx][ch_offset]; - uint16_t idxDC = 2*(gNB->frame_parms.ofdm_symbol_size - bwp_start_subcarrier); - uint16_t idxPil = idxDC/2; - re_offset = k; - pil = (int16_t *)&pilot[0]; - pil += (idxPil-2); - ul_ch += (idxDC-4); - ul_ch = memset(ul_ch, 0, sizeof(int16_t)*10); - re_offset = (re_offset+idxDC/2-2) % gNB->frame_parms.ofdm_symbol_size; - rxF = (int16_t *)&rxdataF[aarx][(symbol_offset+nushift+re_offset)]; - ch[0] = (int16_t)(((int32_t)pil[0]*rxF[0] - (int32_t)pil[1]*rxF[1])>>15); - ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15); - - // for proper allignment of SIMD vectors - if((gNB->frame_parms.N_RB_UL&1)==0) { - - multadd_real_vector_complex_scalar(fdcl, - ch, - ul_ch-4, - 8); - - pil += 4; - re_offset = (re_offset+4) % gNB->frame_parms.ofdm_symbol_size; - rxF = (int16_t *)&rxdataF[aarx][(symbol_offset+nushift+re_offset)]; - ch[0] = (int16_t)(((int32_t)pil[0]*rxF[0] - (int32_t)pil[1]*rxF[1])>>15); - ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15); - - multadd_real_vector_complex_scalar(fdcr, - ch, - ul_ch-4, - 8); - } else { - - multadd_real_vector_complex_scalar(fdclh, - ch, - ul_ch, - 8); - - pil += 4; - re_offset = (re_offset+4) % gNB->frame_parms.ofdm_symbol_size; - rxF = (int16_t *)&rxdataF[aarx][(symbol_offset+nushift+re_offset)]; - ch[0] = (int16_t)(((int32_t)pil[0]*rxF[0] - (int32_t)pil[1]*rxF[1])>>15); - ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15); - - multadd_real_vector_complex_scalar(fdcrh, - ch, - ul_ch, - 8); + for(uint16_t idxP=0; idxPframe_parms.ofdm_symbol_size) { + switch (gNB->frame_parms.ofdm_symbol_size) { case 128: idft(IDFT_128,(int16_t*) &ul_ch_estimates[aarx][symbol_offset], (int16_t*) ul_ch_estimates_time[aarx], diff --git a/openair1/PHY/NR_ESTIMATION/nr_ul_estimation.h b/openair1/PHY/NR_ESTIMATION/nr_ul_estimation.h index a7789c9224..17d8c998c9 100644 --- a/openair1/PHY/NR_ESTIMATION/nr_ul_estimation.h +++ b/openair1/PHY/NR_ESTIMATION/nr_ul_estimation.h @@ -43,9 +43,12 @@ int nr_pusch_channel_estimation(PHY_VARS_gNB *gNB, unsigned char Ns, unsigned short p, unsigned char symbol, + int ul_id, unsigned short bwp_start_subcarrier, nfapi_nr_pusch_pdu_t *pusch_pdu); +void gNB_I0_measurements(PHY_VARS_gNB *gNB); + int nr_est_timing_advance_pusch(PHY_VARS_gNB* phy_vars_gNB, int UE_id); #endif diff --git a/openair1/PHY/NR_REFSIG/dmrs_nr.c b/openair1/PHY/NR_REFSIG/dmrs_nr.c index 8718fc8610..7042c152fd 100644 --- a/openair1/PHY/NR_REFSIG/dmrs_nr.c +++ b/openair1/PHY/NR_REFSIG/dmrs_nr.c @@ -33,7 +33,32 @@ #include "PHY/NR_REFSIG/ss_pbch_nr.h" #include "PHY/NR_REFSIG/dmrs_nr.h" -/***********************************************************************/ + + +uint8_t allowed_xlsch_re_in_dmrs_symbol(uint16_t k, + uint16_t start_sc, + uint8_t numDmrsCdmGrpsNoData, + uint8_t dmrs_type) { + uint8_t delta; + uint16_t diff; + if (k>start_sc) + diff = k-start_sc; + else + diff = start_sc-k; + for (int i = 0; i 2) - LOG_E(PHY,"Bad PUSCH DMRS config type %d\n", dmrs_type); + LOG_E(PHY,"PUSCH DMRS config type %d not valid\n", dmrs_type+1); if ((p>=1000) && (p<((dmrs_type==pusch_dmrs_type1) ? 1008 : 1012))) { if (gNB->frame_parms.Ncp == NORMAL) { - - for (int i=0; i>5])>>((i<<1)&0x1f))&1)<<1) ^ (((nr_gold_pusch[((i<<1)+1)>>5])>>(((i<<1)+1)&0x1f))&1); - ((int16_t*)output)[i<<1] = mod_table[(NR_MOD_TABLE_QPSK_OFFSET + idx)<<1]; - ((int16_t*)output)[(i<<1)+1] = mod_table[((NR_MOD_TABLE_QPSK_OFFSET + idx)<<1) + 1]; + ((int16_t*)output)[k<<1] = mod_table[(NR_MOD_TABLE_QPSK_OFFSET + idx)<<1]; + ((int16_t*)output)[(k<<1)+1] = mod_table[((NR_MOD_TABLE_QPSK_OFFSET + idx)<<1) + 1]; #ifdef DEBUG_PUSCH - printf("nr_pusch_dmrs_rx dmrs config type %d port %d nb_pusch_rb %d\n", dmrs_type, p, nb_pusch_rb); - printf("wf[%d] = %d wt[%d]= %d\n", i&1, wf[p-1000][i&1], lp, wt[p-1000][lp]); - printf("i %d idx %d pusch gold %u b0-b1 %d-%d mod_dmrs %d %d\n", i, idx, nr_gold_pusch[(i<<1)>>5], (((nr_gold_pusch[(i<<1)>>5])>>((i<<1)&0x1f))&1), - (((nr_gold_pusch[((i<<1)+1)>>5])>>(((i<<1)+1)&0x1f))&1), ((int16_t*)output)[i<<1], ((int16_t*)output)[(i<<1)+1]); + printf("nr_pusch_dmrs_rx dmrs config type %d port %d nb_pusch_rb %d\n", dmrs_type, p, nb_pusch_rb); + printf("wf[%d] = %d wt[%d]= %d\n", i&1, wf[p-1000][i&1], lp, wt[p-1000][lp]); + printf("i %d idx %d pusch gold %u b0-b1 %d-%d mod_dmrs %d %d\n", i, idx, nr_gold_pusch[(i<<1)>>5], (((nr_gold_pusch[(i<<1)>>5])>>((i<<1)&0x1f))&1), + (((nr_gold_pusch[((i<<1)+1)>>5])>>(((i<<1)+1)&0x1f))&1), ((int16_t*)output)[k<<1], ((int16_t*)output)[(k<<1)+1]); #endif + } } else { LOG_E(PHY,"extended cp not supported for PUSCH DMRS yet\n"); @@ -102,7 +105,6 @@ int nr_pusch_dmrs_rx(PHY_VARS_gNB *gNB, } - int nr_pdsch_dmrs_rx(PHY_VARS_NR_UE *ue, unsigned int Ns, unsigned int *nr_gold_pdsch, diff --git a/openair1/PHY/NR_REFSIG/nr_gen_mod_table.c b/openair1/PHY/NR_REFSIG/nr_gen_mod_table.c new file mode 100644 index 0000000000..b0f9e6d03c --- /dev/null +++ b/openair1/PHY/NR_REFSIG/nr_gen_mod_table.c @@ -0,0 +1,87 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +#include "nr_refsig.h" +#include "nr_mod_table.h" + +void nr_generate_modulation_table() { + float sqrt2 = 0.70711; + float sqrt10 = 0.31623; + float sqrt42 = 0.15430; + float sqrt170 = 0.076696; + float val = 32768.0; + uint32_t i,j; + short* table; + + // QPSK + for (i=0; i<4; i++) { + nr_qpsk_mod_table[i*2] = (short)(1-2*(i&1))*val*sqrt2*sqrt2; + nr_qpsk_mod_table[i*2+1] = (short)(1-2*((i>>1)&1))*val*sqrt2*sqrt2; + //printf("%d j%d\n",nr_qpsk_mod_table[i*2],nr_qpsk_mod_table[i*2+1]); + } + +#if defined(__SSE2__) + //QPSK m128 + table = (short*) nr_qpsk_byte_mod_table; + for (i=0; i<256; i++) { + for (j=0; j<4; j++) { + table[i*8+(j*2)] = (short)(1-2*((i>>(j*2))&1))*val*sqrt2*sqrt2; + table[i*8+(j*2)+1] = (short)(1-2*((i>>(j*2+1))&1))*val*sqrt2*sqrt2; + //printf("%d j%d\n",nr_qpsk_byte_mod_table[i*8+(j*2)],nr_qpsk_byte_mod_table[i*8+(j*2)+1]); + } + } +#endif + + //16QAM + table = (short*) nr_16qam_byte_mod_table; + for (i=0; i<256; i++) { + for (j=0; j<2; j++) { + table[i*4+(j*2)] = (short)((1-2*((i>>(j*4))&1))*(2-(1-2*((i>>(j*4+2))&1))))*val*sqrt10*sqrt2; + table[i*4+(j*2)+1] = (short)((1-2*((i>>(j*4+1))&1))*(2-(1-2*((i>>(j*4+3))&1))))*val*sqrt10*sqrt2; + //printf("%d j%d\n",nr_16qam_byte_mod_table[i*4+(j*2)],nr_16qam_byte_mod_table[i*4+(j*2)+1]); + } + } + + table = (short*) nr_16qam_mod_table; + for (i=0; i<16; i++) { + table[i*2] = (short)((1-2*(i&1))*(2-(1-2*((i>>2)&1))))*val*sqrt10*sqrt2; + table[i*2+1] = (short)((1-2*((i>>1)&1))*(2-(1-2*((i>>3)&1))))*val*sqrt10*sqrt2; + //printf("%d j%d\n",table[i*2],table[i*2+1]); + } + + //64QAM + table = (short*) nr_64qam_mod_table; + for (i=0; i<4096; i++) { + for (j=0; j<2; j++) { + table[i*4+(j*2)] = (short)((1-2*((i>>(j*6))&1))*(4-(1-2*((i>>(j*6+2))&1))*(2-(1-2*((i>>(j*6+4))&1)))))*val*sqrt42*sqrt2; + table[i*4+(j*2)+1] = (short)((1-2*((i>>(j*6+1))&1))*(4-(1-2*((i>>(j*6+3))&1))*(2-(1-2*((i>>(j*6+5))&1)))))*val*sqrt42*sqrt2; + //printf("%d j%d\n",table[i*4+(j*2)],table[i*4+(j*2)+1]); + } + } + + //256QAM + table = (short*) nr_256qam_mod_table; + for (i=0; i<256; i++) { + table[i*2] = (short)((1-2*(i&1))*(8-(1-2*((i>>2)&1))*(4-(1-2*((i>>4)&1))*(2-(1-2*((i>>6)&1))))))*val*sqrt170*sqrt2; + table[i*2+1] = (short)((1-2*((i>>1)&1))*(8-(1-2*((i>>3)&1))*(4-(1-2*((i>>5)&1))*(2-(1-2*((i>>7)&1))))))*val*sqrt170*sqrt2; + } +} + diff --git a/openair1/PHY/NR_REFSIG/nr_gen_mod_table.m b/openair1/PHY/NR_REFSIG/nr_gen_mod_table.m index 13a8d4ad09..6e1415bf28 100644 --- a/openair1/PHY/NR_REFSIG/nr_gen_mod_table.m +++ b/openair1/PHY/NR_REFSIG/nr_gen_mod_table.m @@ -45,7 +45,7 @@ for r=0:1 %0 -- 1 LS for j=0:1 %0 -- 1 MS %% Formula is dispalayed -qpsk_table(2*r+j+1) = ((1-r*2)*QPSK + 1j*(1-2*j)*QPSK); +qpsk_table(2*j+r+1) = ((1-r*2)*QPSK + 1j*(1-2*j)*QPSK); end end @@ -61,7 +61,7 @@ for b0=0:1 for b1=0:1 for b2=0:1 for b3=0:1 -qam16_table2(b0*8+b1*4+b2*2+b3*1+1) = qam16_table(b0*2+b2*1+1) + 1j*qam16_table(b1*2+b3*1+1); +qam16_table2(b3*8+b2*4+b1*2+b0*1+1) = qam16_table(b0*2+b2*1+1) + 1j*qam16_table(b1*2+b3*1+1); end end end @@ -84,7 +84,7 @@ for b2=0:1 for b3=0:1 for b4=0:1 for b5=0:1 -qam64_table2(b0*32+b1*16+b2*8+b3*4+b4*2+b5*1+1) = qam64_table(b0*4+b2*2+b4*1+1) + 1j*qam64_table(b1*4+b3*2+b5*1+1); +qam64_table2(b5*32+b4*16+b3*8+b2*4+b1*2+b0*1+1) = qam64_table(b0*4+b2*2+b4*1+1) + 1j*qam64_table(b1*4+b3*2+b5*1+1); end end end @@ -116,7 +116,50 @@ for b6=0:1 for b7=0:1 %%qam64_table2(b0*32+b1*16+b2*8+b3*4+b4*2+b5*1+1) = qam64_table(b0*4+b2*2+b4*1+1) + 1j*qam64_table(b1*4+b3*2+b5*1+1); -qam256_table2(b0*128+b1*64+b2*32+b3*16+b4*8+b5*4+b6*2+b7*1+1) = qam256_table(b0*8+b2*4+b4*2+b6*1+1) + 1j*qam256_table(b1*8+b3*4+b5*2+b7*1+1); +qam256_table2(b7*128+b6*64+b5*32+b4*16+b3*8+b2*4+b1*2+b0*1+1) = qam256_table(b0*8+b2*4+b4*2+b6*1+1) + 1j*qam256_table(b1*8+b3*4+b5*2+b7*1+1); +end +end +end +end +end +end +end +end + +%%QPSK byte +for b0=0:1 +for b1=0:1 +for b2=0:1 +for b3=0:1 +for b4=0:1 +for b5=0:1 +for b6=0:1 +for b7=0:1 +qpsk_byte_table2(b7*128+b6*64+b5*32+b4*16+b3*8+b2*4+b1*2+b0*1+1,:)=[(1-b0*2)*QPSK (1-2*b1)*QPSK (1-b2*2)*QPSK (1-2*b3)*QPSK ... + (1-b4*2)*QPSK (1-2*b5)*QPSK (1-b6*2)*QPSK (1-2*b7)*QPSK]; + +end +end +end +end +end +end +end +end + +%%16QAM byte +qam16_byte_table2=[]; +for b0=0:1 +for b1=0:1 +for b2=0:1 +for b3=0:1 +for b4=0:1 +for b5=0:1 +for b6=0:1 +for b7=0:1 +qam16_byte_table2(b7*128+b6*64+b5*32+b4*16+b3*8+b2*4+b1*2+b0*1+1,:)=[qam16_table(b0*2+b2*1+1) qam16_table(b1*2+b3*1+1) ... + qam16_table(b4*2+b6*1+1) qam16_table(b5*2+b7*1+1) ]; + end end end @@ -133,6 +176,8 @@ save mod_table.mat table table2 = zeros(1,length(table)*2); table2(1:2:end) = real(table); table2(2:2:end) = imag(table); +qpsk_byte_table2=round(K * qpsk_byte_table2'(:)); +qam16_byte_table2=round(K * qam16_byte_table2'(:)); fd = fopen("nr_mod_table.h","w"); fprintf(fd,"#define NR_MOD_TABLE_SIZE_SHORT %d\n", length(table)*2); @@ -144,4 +189,10 @@ fprintf(fd,"#define NR_MOD_TABLE_QAM256_OFFSET %d\n", 87); fprintf(fd,"short nr_mod_table[NR_MOD_TABLE_SIZE_SHORT] = {"); fprintf(fd,"%d,",table2(1:end-1)); fprintf(fd,"%d};\n",table2(end)); +fprintf(fd,"short nr_qpsk_mod_table[2048] = {"); +fprintf(fd,"%d,",qpsk_byte_table2(1:end-1)); +fprintf(fd,"%d};\n",qpsk_byte_table2(end)); +fprintf(fd,"short nr_qam16_mod_table[1024] = {"); +fprintf(fd,"%d,",qam16_byte_table2(1:end-1)); +fprintf(fd,"%d};\n",qam16_byte_table2(end)); fclose(fd); diff --git a/openair1/PHY/NR_REFSIG/nr_gold.c b/openair1/PHY/NR_REFSIG/nr_gold.c index 472d03e649..4b007f1292 100644 --- a/openair1/PHY/NR_REFSIG/nr_gold.c +++ b/openair1/PHY/NR_REFSIG/nr_gold.c @@ -88,6 +88,7 @@ void nr_init_pdsch_dmrs(PHY_VARS_gNB* gNB, uint32_t Nid) uint16_t N_n_scid[NR_MAX_NB_CODEWORDS]={Nid, Nid}; // Not correct, appropriate scrambling IDs have to be updated to support DCI 1_1 uint8_t n_scid=0; // again works only for 1_0 for (uint8_t slot=0; slotslots_per_frame; slot++) { + for (uint8_t symb=0; symbsymbols_per_slot; symb++) { reset = 1; x2 = ((1<<17) * (fp->symbols_per_slot*slot+symb+1) * ((N_n_scid[n_scid]<<1)+1) +((N_n_scid[n_scid]<<1)+n_scid)); diff --git a/openair1/PHY/NR_REFSIG/nr_mod_table.h b/openair1/PHY/NR_REFSIG/nr_mod_table.h index c34dadb663..aa8b99f584 100644 --- a/openair1/PHY/NR_REFSIG/nr_mod_table.h +++ b/openair1/PHY/NR_REFSIG/nr_mod_table.h @@ -28,6 +28,17 @@ #define NR_MOD_TABLE_QAM16_OFFSET 7 #define NR_MOD_TABLE_QAM64_OFFSET 23 #define NR_MOD_TABLE_QAM256_OFFSET 87 -short nr_mod_table[NR_MOD_TABLE_SIZE_SHORT] = {0,0,16384,16384,-16384,-16384,16384,16384,16384,-16384,-16384,16384,-16384,-16384,7327,7327,7327,21981,21981,7327,21981,21981,7327,-7327,7327,-21981,21981,-7327,21981,-21981,-7327,7327,-7327,21981,-21981,7327,-21981,21981,-7327,-7327,-7327,-21981,-21981,-7327,-21981,-21981,10726,10726,10726,3576,3576,10726,3576,3576,10726,17876,10726,25027,3576,17876,3576,25027,17876,10726,17876,3576,25027,10726,25027,3576,17876,17876,17876,25027,25027,17876,25027,25027,10726,-10726,10726,-3576,3576,-10726,3576,-3576,10726,-17876,10726,-25027,3576,-17876,3576,-25027,17876,-10726,17876,-3576,25027,-10726,25027,-3576,17876,-17876,17876,-25027,25027,-17876,25027,-25027,-10726,10726,-10726,3576,-3576,10726,-3576,3576,-10726,17876,-10726,25027,-3576,17876,-3576,25027,-17876,10726,-17876,3576,-25027,10726,-25027,3576,-17876,17876,-17876,25027,-25027,17876,-25027,25027,-10726,-10726,-10726,-3576,-3576,-10726,-3576,-3576,-10726,-17876,-10726,-25027,-3576,-17876,-3576,-25027,-17876,-10726,-17876,-3576,-25027,-10726,-25027,-3576,-17876,-17876,-17876,-25027,-25027,-17876,-25027,-25027,8886,8886,8886,12439,12439,8886,12439,12439,8886,5332,8886,1778,12439,5332,12439,1778,5332,8886,5332,12439,1778,8886,1778,12439,5332,5332,5332,1778,1778,5332,1778,1778,8886,19547,8886,15993,12439,19547,12439,15993,8886,23101,8886,26655,12439,23101,12439,26655,5332,19547,5332,15993,1778,19547,1778,15993,5332,23101,5332,26655,1778,23101,1778,26655,19547,8886,19547,12439,15993,8886,15993,12439,19547,5332,19547,1778,15993,5332,15993,1778,23101,8886,23101,12439,26655,8886,26655,12439,23101,5332,23101,1778,26655,5332,26655,1778,19547,19547,19547,15993,15993,19547,15993,15993,19547,23101,19547,26655,15993,23101,15993,26655,23101,19547,23101,15993,26655,19547,26655,15993,23101,23101,23101,26655,26655,23101,26655,26655,8886,-8886,8886,-12439,12439,-8886,12439,-12439,8886,-5332,8886,-1778,12439,-5332,12439,-1778,5332,-8886,5332,-12439,1778,-8886,1778,-12439,5332,-5332,5332,-1778,1778,-5332,1778,-1778,8886,-19547,8886,-15993,12439,-19547,12439,-15993,8886,-23101,8886,-26655,12439,-23101,12439,-26655,5332,-19547,5332,-15993,1778,-19547,1778,-15993,5332,-23101,5332,-26655,1778,-23101,1778,-26655,19547,-8886,19547,-12439,15993,-8886,15993,-12439,19547,-5332,19547,-1778,15993,-5332,15993,-1778,23101,-8886,23101,-12439,26655,-8886,26655,-12439,23101,-5332,23101,-1778,26655,-5332,26655,-1778,19547,-19547,19547,-15993,15993,-19547,15993,-15993,19547,-23101,19547,-26655,15993,-23101,15993,-26655,23101,-19547,23101,-15993,26655,-19547,26655,-15993,23101,-23101,23101,-26655,26655,-23101,26655,-26655,-8886,8886,-8886,12439,-12439,8886,-12439,12439,-8886,5332,-8886,1778,-12439,5332,-12439,1778,-5332,8886,-5332,12439,-1778,8886,-1778,12439,-5332,5332,-5332,1778,-1778,5332,-1778,1778,-8886,19547,-8886,15993,-12439,19547,-12439,15993,-8886,23101,-8886,26655,-12439,23101,-12439,26655,-5332,19547,-5332,15993,-1778,19547,-1778,15993,-5332,23101,-5332,26655,-1778,23101,-1778,26655,-19547,8886,-19547,12439,-15993,8886,-15993,12439,-19547,5332,-19547,1778,-15993,5332,-15993,1778,-23101,8886,-23101,12439,-26655,8886,-26655,12439,-23101,5332,-23101,1778,-26655,5332,-26655,1778,-19547,19547,-19547,15993,-15993,19547,-15993,15993,-19547,23101,-19547,26655,-15993,23101,-15993,26655,-23101,19547,-23101,15993,-26655,19547,-26655,15993,-23101,23101,-23101,26655,-26655,23101,-26655,26655,-8886,-8886,-8886,-12439,-12439,-8886,-12439,-12439,-8886,-5332,-8886,-1778,-12439,-5332,-12439,-1778,-5332,-8886,-5332,-12439,-1778,-8886,-1778,-12439,-5332,-5332,-5332,-1778,-1778,-5332,-1778,-1778,-8886,-19547,-8886,-15993,-12439,-19547,-12439,-15993,-8886,-23101,-8886,-26655,-12439,-23101,-12439,-26655,-5332,-19547,-5332,-15993,-1778,-19547,-1778,-15993,-5332,-23101,-5332,-26655,-1778,-23101,-1778,-26655,-19547,-8886,-19547,-12439,-15993,-8886,-15993,-12439,-19547,-5332,-19547,-1778,-15993,-5332,-15993,-1778,-23101,-8886,-23101,-12439,-26655,-8886,-26655,-12439,-23101,-5332,-23101,-1778,-26655,-5332,-26655,-1778,-19547,-19547,-19547,-15993,-15993,-19547,-15993,-15993,-19547,-23101,-19547,-26655,-15993,-23101,-15993,-26655,-23101,-19547,-23101,-15993,-26655,-19547,-26655,-15993,-23101,-23101,-23101,-26655,-26655,-23101,-26655,-26655}; +short nr_qpsk_mod_table[8]; + +int32_t nr_16qam_mod_table[16]; +#if defined(__SSE2__) +__m128i nr_qpsk_byte_mod_table[2048]; +#endif + +int64_t nr_16qam_byte_mod_table[1024]; + +int64_t nr_64qam_mod_table[4096]; + +int32_t nr_256qam_mod_table[512]; #endif diff --git a/openair1/PHY/NR_REFSIG/nr_refsig.h b/openair1/PHY/NR_REFSIG/nr_refsig.h index d18f6405d7..ab9beb780a 100644 --- a/openair1/PHY/NR_REFSIG/nr_refsig.h +++ b/openair1/PHY/NR_REFSIG/nr_refsig.h @@ -48,11 +48,15 @@ int nr_pusch_dmrs_rx(PHY_VARS_gNB *gNB, unsigned short p, unsigned char lp, unsigned short nb_pusch_rb, + uint32_t re_offset, uint8_t dmrs_type); void init_scrambling_luts(void); +void nr_generate_modulation_table(void); + extern __m64 byte2m64_re[256]; extern __m64 byte2m64_im[256]; +extern __m128i byte2m128i[256]; #endif diff --git a/openair1/PHY/NR_REFSIG/scrambling_luts.c b/openair1/PHY/NR_REFSIG/scrambling_luts.c index 04c9edc2a3..b0a20faae7 100644 --- a/openair1/PHY/NR_REFSIG/scrambling_luts.c +++ b/openair1/PHY/NR_REFSIG/scrambling_luts.c @@ -27,10 +27,13 @@ #include "PHY/impl_defs_nr.h" #include "PHY/sse_intrin.h" +#include __m64 byte2m64_re[256]; __m64 byte2m64_im[256]; +__m128i byte2m128i[256]; + void init_byte2m64(void) { for (int s=0;s<256;s++) { @@ -55,10 +58,24 @@ void init_byte2m64(void) { } } +void init_byte2m128i(void) { + + for (int s=0;s<256;s++) { + byte2m128i[s] = _mm_insert_epi16(byte2m128i[s],(1-2*(s&1)),0); + byte2m128i[s] = _mm_insert_epi16(byte2m128i[s],(1-2*((s>>1)&1)),1); + byte2m128i[s] = _mm_insert_epi16(byte2m128i[s],(1-2*((s>>2)&1)),2); + byte2m128i[s] = _mm_insert_epi16(byte2m128i[s],(1-2*((s>>3)&1)),3); + byte2m128i[s] = _mm_insert_epi16(byte2m128i[s],(1-2*((s>>4)&1)),4); + byte2m128i[s] = _mm_insert_epi16(byte2m128i[s],(1-2*((s>>5)&1)),5); + byte2m128i[s] = _mm_insert_epi16(byte2m128i[s],(1-2*((s>>6)&1)),6); + byte2m128i[s] = _mm_insert_epi16(byte2m128i[s],(1-2*((s>>7)&1)),7); + } +} + void init_scrambling_luts(void) { init_byte2m64(); - + init_byte2m128i(); } #endif diff --git a/openair1/PHY/NR_TRANSPORT/nr_dci.c b/openair1/PHY/NR_TRANSPORT/nr_dci.c index dca8857c15..c49791f0b2 100644 --- a/openair1/PHY/NR_TRANSPORT/nr_dci.c +++ b/openair1/PHY/NR_TRANSPORT/nr_dci.c @@ -131,12 +131,13 @@ uint16_t nr_get_dci_size(nfapi_nr_dci_format_e format, void nr_pdcch_scrambling(uint32_t *in, uint32_t size, uint32_t Nid, - uint32_t n_RNTI, + uint32_t scrambling_RNTI, uint32_t *out) { uint8_t reset; uint32_t x1, x2, s=0; reset = 1; - x2 = (n_RNTI<<16) + Nid; + x2 = (scrambling_RNTI<<16) + Nid; + LOG_D(PHY,"PDCCH Scrambling x2 %x : scrambling_RNTI %x \n", x2, scrambling_RNTI); for (int i=0; i>1]; // 3 for the max coreset duration + int16_t mod_dmrs[NR_MAX_CSET_DURATION][NR_MAX_PDCCH_DMRS_LENGTH>>1] __attribute__((aligned(16))); // 3 for the max coreset duration uint16_t cset_start_sc; uint8_t cset_start_symb, cset_nsymb; int k,l,k_prime,dci_idx, dmrs_idx; @@ -179,15 +182,17 @@ uint8_t nr_generate_dci_top(nfapi_nr_dl_tti_pdcch_pdu *pdcch_pdu, if (pdcch_pdu) pdcch_pdu_rel15 = &pdcch_pdu->pdcch_pdu_rel15; - else if (ul_dci_pdu) pdcch_pdu_rel15 = &ul_dci_pdu->pdcch_pdu.pdcch_pdu_rel15; + else if (ul_dci_pdu) pdcch_pdu_rel15 = &ul_dci_pdu->pdcch_pdu_rel15; + + nr_fill_cce_list(gNB,0,pdcch_pdu_rel15); get_coreset_rballoc(pdcch_pdu_rel15->FreqDomainResource,&n_rb,&rb_offset); // compute rb_offset and n_prb based on frequency allocation if (pdcch_pdu_rel15->CoreSetType == NFAPI_NR_CSET_CONFIG_MIB_SIB1) { - cset_start_sc = frame_parms.first_carrier_offset + (frame_parms.ssb_start_subcarrier/NR_NB_SC_PER_RB + - rb_offset)*NR_NB_SC_PER_RB; + cset_start_sc = frame_parms.first_carrier_offset + + (frame_parms.ssb_start_subcarrier/NR_NB_SC_PER_RB + rb_offset)*NR_NB_SC_PER_RB; } else cset_start_sc = frame_parms.first_carrier_offset + rb_offset*NR_NB_SC_PER_RB; @@ -207,8 +212,8 @@ uint8_t nr_generate_dci_top(nfapi_nr_dl_tti_pdcch_pdu *pdcch_pdu, AssertFatal(pdcch_pdu_rel15->CceRegMappingType == NFAPI_NR_CCE_REG_MAPPING_NON_INTERLEAVED, "Interleaved CCE REG MAPPING not supported\n"); uint32_t dmrs_length = (pdcch_pdu_rel15->CceRegMappingType == NFAPI_NR_CCE_REG_MAPPING_NON_INTERLEAVED)? - (n_rb*6) : (pdcch_pdu_rel15->AggregationLevel[d]*36/cset_nsymb); //2(QPSK)*3(per RB)*6(REG per CCE) - uint32_t encoded_length = pdcch_pdu_rel15->AggregationLevel[d]*108; //2(QPSK)*9(per RB)*6(REG per CCE) + (n_rb*6) : (pdcch_pdu_rel15->dci_pdu.AggregationLevel[d]*36/cset_nsymb); //2(QPSK)*3(per RB)*6(REG per CCE) + uint32_t encoded_length = pdcch_pdu_rel15->dci_pdu.AggregationLevel[d]*108; //2(QPSK)*9(per RB)*6(REG per CCE) LOG_D(PHY, "DMRS length per symbol %d\t DCI encoded length %d (precoder_granularity %d,reg_mapping %d)\n", dmrs_length, encoded_length,pdcch_pdu_rel15->precoderGranularity,pdcch_pdu_rel15->CceRegMappingType); dmrs_length += rb_offset*6; // To accommodate more DMRS symbols in case of rb offset @@ -229,18 +234,20 @@ uint8_t nr_generate_dci_top(nfapi_nr_dl_tti_pdcch_pdu *pdcch_pdu, /// DCI payload processing // CRC attachment + Scrambling + Channel coding + Rate matching uint32_t encoder_output[NR_MAX_DCI_SIZE_DWORD]; - uint16_t n_RNTI = pdcch_pdu_rel15->RNTI[d]; - uint16_t Nid = pdcch_pdu_rel15->ScramblingId[d]; - + + uint16_t n_RNTI = pdcch_pdu_rel15->dci_pdu.RNTI[d]; + uint16_t Nid = pdcch_pdu_rel15->dci_pdu.ScramblingId[d]; + uint16_t scrambling_RNTI = pdcch_pdu_rel15->dci_pdu.ScramblingRNTI[d]; + t_nrPolar_params *currentPtr = nr_polar_params(NR_POLAR_DCI_MESSAGE_TYPE, - pdcch_pdu_rel15->PayloadSizeBits[d], - pdcch_pdu_rel15->AggregationLevel[d], + pdcch_pdu_rel15->dci_pdu.PayloadSizeBits[d], + pdcch_pdu_rel15->dci_pdu.AggregationLevel[d], 0,NULL); - polar_encoder_fast((uint64_t*)pdcch_pdu_rel15->Payload[d], encoder_output, n_RNTI,1,currentPtr); + polar_encoder_fast((uint64_t*)pdcch_pdu_rel15->dci_pdu.Payload[d], (void*)encoder_output, n_RNTI,1,currentPtr); #ifdef DEBUG_CHANNEL_CODING - printf("polar rnti %x,length %d, L %d\n",n_RNTI, pdcch_pdu_rel15->PayloadSizeBits[d],pdcch_pdu_rel15->AggregationLevel[d]); + printf("polar rnti %x,length %d, L %d\n",n_RNTI, pdcch_pdu_rel15->dci_pdu.PayloadSizeBits[d],pdcch_pdu_rel15->dci_pdu.AggregationLevel[d]); printf("DCI PDU: [0]->0x%lx \t [1]->0x%lx\n", - ((uint64_t*)pdcch_pdu_rel15->Payload[d])[0], ((uint64_t*)pdcch_pdu_rel15->Payload[d])[1]); + ((uint64_t*)pdcch_pdu_rel15->dci_pdu.Payload[d])[0], ((uint64_t*)pdcch_pdu_rel15->dci_pdu.Payload[d])[1]); printf("Encoded Payload (length:%d dwords):\n", encoded_length>>5); for (int i=0; i>5; i++) @@ -250,7 +257,7 @@ uint8_t nr_generate_dci_top(nfapi_nr_dl_tti_pdcch_pdu *pdcch_pdu, #endif /// Scrambling uint32_t scrambled_output[NR_MAX_DCI_SIZE_DWORD]= {0}; - nr_pdcch_scrambling(encoder_output, encoded_length, Nid, n_RNTI, scrambled_output); + nr_pdcch_scrambling(encoder_output, encoded_length, Nid, scrambling_RNTI, scrambled_output); #ifdef DEBUG_CHANNEL_CODING printf("scrambled output: [0]->0x%08x \t [1]->0x%08x \t [2]->0x%08x \t [3]->0x%08x\t [4]->0x%08x\t [5]->0x%08x\t \ [6]->0x%08x \t [7]->0x%08x \t [8]->0x%08x \t [9]->0x%08x\t [10]->0x%08x\t [11]->0x%08x\n", @@ -258,7 +265,7 @@ uint8_t nr_generate_dci_top(nfapi_nr_dl_tti_pdcch_pdu *pdcch_pdu, scrambled_output[6], scrambled_output[7], scrambled_output[8], scrambled_output[9], scrambled_output[10],scrambled_output[11] ); #endif /// QPSK modulation - int16_t mod_dci[NR_MAX_DCI_SIZE>>1]; + int16_t mod_dci[NR_MAX_DCI_SIZE>>1] __attribute__((aligned(16))); nr_modulation(scrambled_output, encoded_length, DMRS_MOD_ORDER, mod_dci); //Qm = 2 as DMRS is QPSK modulated #ifdef DEBUG_DCI @@ -272,9 +279,9 @@ uint8_t nr_generate_dci_top(nfapi_nr_dl_tti_pdcch_pdu *pdcch_pdu, if (cset_start_sc >= frame_parms.ofdm_symbol_size) cset_start_sc -= frame_parms.ofdm_symbol_size; - //Reorder REG list for a freq first mapping - uint8_t nb_regs = pdcch_pdu_rel15->AggregationLevel[d]*NR_NB_REG_PER_CCE; - uint8_t reg_idx0 = pdcch_pdu_rel15->CceIndex[d]*NR_NB_REG_PER_CCE; + /*Reorder REG list for a freq first mapping*/ + uint8_t reg_idx0 = pdcch_pdu_rel15->dci_pdu.CceIndex[d]*NR_NB_REG_PER_CCE; + uint8_t nb_regs = pdcch_pdu_rel15->dci_pdu.AggregationLevel[d]*NR_NB_REG_PER_CCE; //Mapping the encoded DCI along with the DMRS for (int reg_idx=reg_idx0; reg_idx<(nb_regs+reg_idx0); reg_idx++) { @@ -296,8 +303,8 @@ uint8_t nr_generate_dci_top(nfapi_nr_dl_tti_pdcch_pdu *pdcch_pdu, for (int m=0; mCceRegMappingType == NFAPI_NR_CCE_REG_MAPPING_NON_INTERLEAVED) { - ((int16_t *)txdataF)[(l*frame_parms.ofdm_symbol_size + k)<<1] = (2*amp * mod_dmrs[l][dmrs_idx<<1]) >> 15; - ((int16_t *)txdataF)[((l*frame_parms.ofdm_symbol_size + k)<<1) + 1] = (2*amp * mod_dmrs[l][(dmrs_idx<<1) + 1]) >> 15; + ((int16_t *)txdataF)[(l*frame_parms.ofdm_symbol_size + k)<<1] = (amp * mod_dmrs[l][dmrs_idx<<1]) >> 15; + ((int16_t *)txdataF)[((l*frame_parms.ofdm_symbol_size + k)<<1) + 1] = (amp * mod_dmrs[l][(dmrs_idx<<1) + 1]) >> 15; #ifdef DEBUG_PDCCH_DMRS printf("PDCCH DMRS: l %d position %d => (%d,%d)\n",l,k,((int16_t *)txdataF)[(l*frame_parms.ofdm_symbol_size + k)<<1], ((int16_t *)txdataF)[((l*frame_parms.ofdm_symbol_size + k)<<1)+1]); @@ -322,6 +329,7 @@ uint8_t nr_generate_dci_top(nfapi_nr_dl_tti_pdcch_pdu *pdcch_pdu, k -= frame_parms.ofdm_symbol_size; } // m } // reg_idx + } // for (int d=0;dnumDlDci;d++) return 0; } @@ -501,4 +509,4 @@ uint8_t nr_generate_dci_top(nfapi_nr_dl_tti_pdcch_pdu *pdcch_pdu, } // reg_idx } // for (int d=0;dnumDlDci;d++) return 0; -} \ No newline at end of file +} diff --git a/openair1/PHY/NR_TRANSPORT/nr_dci.h b/openair1/PHY/NR_TRANSPORT/nr_dci.h index 047139aa63..288f525219 100644 --- a/openair1/PHY/NR_TRANSPORT/nr_dci.h +++ b/openair1/PHY/NR_TRANSPORT/nr_dci.h @@ -29,9 +29,10 @@ uint16_t nr_get_dci_size(nfapi_nr_dci_format_e format, nfapi_nr_rnti_type_e rnti_type, uint16_t N_RB); -uint8_t nr_generate_dci_top(nfapi_nr_dl_tti_pdcch_pdu *pdcch_pdu, - nfapi_nr_ul_dci_request_pdus_t *ul_dci_pdu, - uint32_t **gold_pdcch_dmrs, +uint8_t nr_generate_dci_top(PHY_VARS_gNB *gNB, + nfapi_nr_dl_tti_pdcch_pdu *pdcch_pdu, + nfapi_nr_dl_tti_pdcch_pdu *ul_pdcch_pdu, + uint32_t **gold_pdcch_dmrs, int32_t *txdataF, int16_t amp, NR_DL_FRAME_PARMS frame_parms); @@ -42,15 +43,21 @@ void nr_pdcch_scrambling(uint32_t *in, uint32_t n_RNTI, uint32_t *out); +int16_t find_nr_pdcch(int frame,int slot, PHY_VARS_gNB *gNB,find_type_t type); + void nr_fill_dci(PHY_VARS_gNB *gNB, int frame, - int slot); + int slot, + nfapi_nr_dl_tti_pdcch_pdu *pdcch_pdu); + +int16_t find_nr_ul_dci(int frame,int slot, PHY_VARS_gNB *gNB,find_type_t type); void nr_fill_ul_dci(PHY_VARS_gNB *gNB, int frame, - int slot); + int slot, + nfapi_nr_ul_dci_request_pdus_t *pdcch_pdu); -void nr_fill_cce_list(PHY_VARS_gNB *gNB, uint8_t m); +void nr_fill_cce_list(PHY_VARS_gNB *gNB, uint8_t m,nfapi_nr_dl_tti_pdcch_pdu_rel15_t *); void get_coreset_rballoc(uint8_t *FreqDomainResource,int *n_rb,int *rb_offset); diff --git a/openair1/PHY/NR_TRANSPORT/nr_dci_tools.c b/openair1/PHY/NR_TRANSPORT/nr_dci_tools.c index c7b14571b7..2b64a3062c 100644 --- a/openair1/PHY/NR_TRANSPORT/nr_dci_tools.c +++ b/openair1/PHY/NR_TRANSPORT/nr_dci_tools.c @@ -118,11 +118,11 @@ void nr_fill_cce_list(PHY_VARS_gNB *gNB, uint16_t n_shift, uint8_t m) { */ -void nr_fill_cce_list(PHY_VARS_gNB *gNB, uint8_t m) { +void nr_fill_cce_list(PHY_VARS_gNB *gNB, uint8_t m, nfapi_nr_dl_tti_pdcch_pdu_rel15_t *pdcch_pdu_rel15) { nr_cce_t* cce; nr_reg_t* reg; - nfapi_nr_dl_tti_pdcch_pdu_rel15_t* pdcch_pdu_rel15 = &gNB->pdcch_pdu->pdcch_pdu_rel15; + int bsize = pdcch_pdu_rel15->RegBundleSize; int R = pdcch_pdu_rel15->InterleaverSize; int n_shift = pdcch_pdu_rel15->ShiftIndex; @@ -139,8 +139,10 @@ void nr_fill_cce_list(PHY_VARS_gNB *gNB, uint8_t m) { int N_reg = n_rb * pdcch_pdu_rel15->DurationSymbols; int C=-1; + AssertFatal(N_reg > 0,"N_reg cannot be 0\n"); + for (int d=0;dnumDlDci;d++) { - int L = pdcch_pdu_rel15->AggregationLevel[d]; + int L = pdcch_pdu_rel15->dci_pdu.AggregationLevel[d]; if (pdcch_pdu_rel15->CoreSetType == NFAPI_NR_CSET_CONFIG_MIB_SIB1) AssertFatal(L>=4, "Invalid aggregation level for SIB1 configured PDCCH %d\n", L); @@ -151,10 +153,10 @@ void nr_fill_cce_list(PHY_VARS_gNB *gNB, uint8_t m) { C = N_reg/(bsize*R); } - LOG_D(PHY, "CCE list generation for candidate %d: bundle size %d ilv size %d CceIndex %d\n", m, bsize, R, pdcch_pdu_rel15->CceIndex[d]); + LOG_D(PHY, "CCE list generation for candidate %d: bundle size %d ilv size %d CceIndex %d\n", m, bsize, R, pdcch_pdu_rel15->dci_pdu.CceIndex[d]); for (uint8_t cce_idx=0; cce_idxcce_list[d][cce_idx]; - cce->cce_idx = pdcch_pdu_rel15->CceIndex[d] + cce_idx; + cce->cce_idx = pdcch_pdu_rel15->dci_pdu.CceIndex[d] + cce_idx; LOG_D(PHY, "cce_idx %d\n", cce->cce_idx); if (pdcch_pdu_rel15->CceRegMappingType == NFAPI_NR_CCE_REG_MAPPING_INTERLEAVED) { @@ -200,27 +202,51 @@ void nr_fill_cce_list(PHY_VARS_gNB *gNB, uint8_t m) { ret |= ((field>>i)&1)<<(size-i-1); return ret; }*/ +int16_t find_nr_pdcch(int frame,int slot, PHY_VARS_gNB *gNB,find_type_t type) { + + uint16_t i; + int16_t first_free_index=-1; + + AssertFatal(gNB!=NULL,"gNB is null\n"); + for (i=0; ipdcch_pdu[i].frame,gNB->pdcch_pdu[i].slot,first_free_index); + if ((gNB->pdcch_pdu[i].frame == frame) && + (gNB->pdcch_pdu[i].slot==slot)) return i; + else if ( gNB->pdcch_pdu[i].frame==-1 && first_free_index==-1) first_free_index=i; + } + if (type == SEARCH_EXIST) return -1; + + return first_free_index; +} + void nr_fill_dci(PHY_VARS_gNB *gNB, int frame, - int slot) { + int slot, + nfapi_nr_dl_tti_pdcch_pdu *pdcch_pdu) { - nfapi_nr_dl_tti_pdcch_pdu_rel15_t *pdcch_pdu_rel15 = &gNB->pdcch_pdu->pdcch_pdu_rel15; + nfapi_nr_dl_tti_pdcch_pdu_rel15_t *pdcch_pdu_rel15 = &pdcch_pdu->pdcch_pdu_rel15; NR_gNB_DLSCH_t *dlsch; + int pdcch_id = find_nr_pdcch(frame,slot,gNB,SEARCH_EXIST_OR_FREE); + AssertFatal(pdcch_id>=0 && pdcch_idpdcch_pdu[pdcch_id].pdcch_pdu,(void*)pdcch_pdu,sizeof(*pdcch_pdu)); + gNB->pdcch_pdu[pdcch_id].frame = frame; + gNB->pdcch_pdu[pdcch_id].slot = slot; + for (int i=0;inumDlDci;i++) { - //uint64_t *dci_pdu = (uint64_t*)pdcch_pdu_rel15->Payload[i]; + //uint64_t *dci_pdu = (uint64_t*)pdcch_pdu_rel15->dci_pdu.Payload[i]; - - int dlsch_id = find_nr_dlsch(pdcch_pdu_rel15->RNTI[i],gNB,SEARCH_EXIST_OR_FREE); + int dlsch_id = find_nr_dlsch(pdcch_pdu_rel15->dci_pdu.RNTI[i],gNB,SEARCH_EXIST_OR_FREE); if( (dlsch_id<0) || (dlsch_id>=NUMBER_OF_NR_DLSCH_MAX) ){ - LOG_E(PHY,"illegal dlsch_id found!!! rnti %04x dlsch_id %d\n",(unsigned int)pdcch_pdu_rel15->RNTI[i],dlsch_id); + LOG_E(PHY,"illegal dlsch_id found!!! rnti %04x dlsch_id %d\n",(unsigned int)pdcch_pdu_rel15->dci_pdu.RNTI[i],dlsch_id); return; } dlsch = gNB->dlsch[dlsch_id][0]; - int harq_pid = 0;//extract_harq_pid(i,pdu_rel15); + int num_slots_tdd = (gNB->frame_parms.slots_per_frame)>>(7-gNB->gNB_config.tdd_table.tdd_period.value); + int harq_pid = slot % num_slots_tdd; dlsch->slot_tx[slot] = 1; dlsch->harq_ids[frame%2][slot] = harq_pid; @@ -228,9 +254,9 @@ void nr_fill_dci(PHY_VARS_gNB *gNB, "illegal harq_pid %d\n",harq_pid); dlsch->harq_mask |= (1<rnti = pdcch_pdu_rel15->RNTI[i]; + dlsch->rnti = pdcch_pdu_rel15->dci_pdu.RNTI[i]; - nr_fill_cce_list(gNB,0); + // nr_fill_cce_list(gNB,0); /* LOG_D(PHY, "DCI PDU: [0]->0x%lx \t [1]->0x%lx \n",dci_pdu[0], dci_pdu[1]); LOG_D(PHY, "DCI type %d payload (size %d) generated on candidate %d\n", dci_alloc->pdcch_params.dci_format, dci_alloc->size, cand_idx); @@ -239,19 +265,45 @@ void nr_fill_dci(PHY_VARS_gNB *gNB, } } + + +int16_t find_nr_ul_dci(int frame,int slot, PHY_VARS_gNB *gNB,find_type_t type) { + + uint16_t i; + int16_t first_free_index=-1; + + AssertFatal(gNB!=NULL,"gNB is null\n"); + for (i=0; iul_pdcch_pdu[i].frame,gNB->ul_pdcch_pdu[i].slot,first_free_index); + if ((gNB->ul_pdcch_pdu[i].frame == frame) && + (gNB->ul_pdcch_pdu[i].slot==slot)) return i; + else if (gNB->ul_pdcch_pdu[i].frame==-1 && first_free_index==-1) first_free_index=i; + } + if (type == SEARCH_EXIST) return -1; + + return first_free_index; +} + + void nr_fill_ul_dci(PHY_VARS_gNB *gNB, int frame, - int slot) { + int slot, + nfapi_nr_ul_dci_request_pdus_t *pdcch_pdu) { - nfapi_nr_dl_tti_pdcch_pdu_rel15_t *pdcch_pdu_rel15 = &gNB->ul_dci_pdu->pdcch_pdu.pdcch_pdu_rel15; + nfapi_nr_dl_tti_pdcch_pdu_rel15_t *pdcch_pdu_rel15 = &pdcch_pdu->pdcch_pdu.pdcch_pdu_rel15; + int pdcch_id = find_nr_ul_dci(frame,slot,gNB,SEARCH_EXIST_OR_FREE); + AssertFatal(pdcch_id>=0 && pdcch_idul_pdcch_pdu[pdcch_id].pdcch_pdu,(void*)pdcch_pdu,sizeof(*pdcch_pdu)); + gNB->ul_pdcch_pdu[pdcch_id].frame = frame; + gNB->ul_pdcch_pdu[pdcch_id].slot = slot; for (int i=0;inumDlDci;i++) { - //uint64_t *dci_pdu = (uint64_t*)pdcch_pdu_rel15->Payload[i]; + //uint64_t *dci_pdu = (uint64_t*)pdcch_pdu_rel15->dci_pdu.Payload[i]; // if there's no DL DCI then generate CCE list - if (gNB->pdcch_pdu) nr_fill_cce_list(gNB,0); + // nr_fill_cce_list(gNB,0); /* LOG_D(PHY, "DCI PDU: [0]->0x%lx \t [1]->0x%lx \n",dci_pdu[0], dci_pdu[1]); LOG_D(PHY, "DCI type %d payload (size %d) generated on candidate %d\n", dci_alloc->pdcch_params.dci_format, dci_alloc->size, cand_idx); diff --git a/openair1/PHY/NR_TRANSPORT/nr_dlsch.c b/openair1/PHY/NR_TRANSPORT/nr_dlsch.c index 4518280f6b..4461edb33b 100644 --- a/openair1/PHY/NR_TRANSPORT/nr_dlsch.c +++ b/openair1/PHY/NR_TRANSPORT/nr_dlsch.c @@ -34,6 +34,8 @@ #include "nr_dci.h" #include "nr_sch_dmrs.h" #include "PHY/MODULATION/nr_modulation.h" +#include "PHY/NR_REFSIG/dmrs_nr.h" +#include "common/utils/LOG/vcd_signal_dumper.h" //#define DEBUG_DLSCH //#define DEBUG_DLSCH_MAPPING @@ -47,7 +49,7 @@ void nr_pdsch_codeword_scrambling(uint8_t *in, uint8_t reset, b_idx; uint32_t x1, x2, s=0; - + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_gNB_PDSCH_CODEWORD_SCRAMBLING, 1); reset = 1; x2 = (n_RNTI<<15) + (q<<14) + Nid; @@ -62,7 +64,7 @@ void nr_pdsch_codeword_scrambling(uint8_t *in, *out ^= (((in[i])&1) ^ ((s>>b_idx)&1))<harq_processes[harq_pid]; - nfapi_nr_dl_tti_pdsch_pdu_rel15_t *rel15 = &harq->pdsch_pdu.pdsch_pdu_rel15; - uint32_t scrambled_output[NR_MAX_NB_CODEWORDS][NR_MAX_PDSCH_ENCODED_LENGTH>>5]; - int16_t **mod_symbs = (int16_t**)dlsch->mod_symbs; - int16_t **tx_layers = (int16_t**)dlsch->txdataF; - int8_t Wf[2], Wt[2], l0, l_prime[2], delta; + NR_gNB_DLSCH_t *dlsch; + uint32_t ***pdsch_dmrs = gNB->nr_gold_pdsch_dmrs[slot]; + int32_t** txdataF = gNB->common_vars.txdataF; + int16_t amp = AMP; + NR_DL_FRAME_PARMS *frame_parms = &gNB->frame_parms; + int xOverhead = 0; + time_stats_t *dlsch_encoding_stats=&gNB->dlsch_encoding_stats; + time_stats_t *dlsch_scrambling_stats=&gNB->dlsch_scrambling_stats; + time_stats_t *dlsch_modulation_stats=&gNB->dlsch_modulation_stats; + time_stats_t *tinput=&gNB->tinput; + time_stats_t *tprep=&gNB->tprep; + time_stats_t *tparity=&gNB->tparity; + time_stats_t *toutput=&gNB->toutput; + time_stats_t *dlsch_rate_matching_stats=&gNB->dlsch_rate_matching_stats; + time_stats_t *dlsch_interleaving_stats=&gNB->dlsch_interleaving_stats; + time_stats_t *dlsch_segmentation_stats=&gNB->dlsch_segmentation_stats; - uint8_t dmrs_Type = rel15->dmrsConfigType; - int nb_re_dmrs = (dmrs_Type== NFAPI_NR_DMRS_TYPE1) ? 6:4; - uint16_t n_dmrs = ((rel15->rbSize+rel15->rbStart)*nb_re_dmrs)<<1; - int16_t mod_dmrs[n_dmrs<<1]; + for (int dlsch_id=0;dlsch_iddlsch[dlsch_id][0]; + if (dlsch->slot_tx[slot] == 0) continue; - uint16_t nb_re = ((12*rel15->NrOfSymbols)-nb_re_dmrs-xOverhead)*rel15->rbSize*rel15->NrOfCodewords; - uint8_t Qm = rel15->qamModOrder[0]; - uint32_t encoded_length = nb_re*Qm; - - /// CRC, coding, interleaving and rate matching - AssertFatal(harq->pdu!=NULL,"harq->pdu is null\n"); - start_meas(dlsch_encoding_stats); - nr_dlsch_encoding(harq->pdu, frame, slot, dlsch, frame_parms,tinput,tprep,tparity,toutput, - dlsch_rate_matching_stats, - dlsch_interleaving_stats, - dlsch_segmentation_stats); - stop_meas(dlsch_encoding_stats); + int harq_pid = dlsch->harq_ids[frame%2][slot]; + NR_DL_gNB_HARQ_t *harq = dlsch->harq_processes[harq_pid]; + nfapi_nr_dl_tti_pdsch_pdu_rel15_t *rel15 = &harq->pdsch_pdu.pdsch_pdu_rel15; + uint32_t scrambled_output[NR_MAX_NB_CODEWORDS][NR_MAX_PDSCH_ENCODED_LENGTH>>5]; + int16_t **mod_symbs = (int16_t**)dlsch->mod_symbs; + int16_t **tx_layers = (int16_t**)dlsch->txdataF; + int8_t Wf[2], Wt[2], l0, l_prime[2], delta; + uint8_t dmrs_Type = rel15->dmrsConfigType; + int nb_re_dmrs; + uint16_t n_dmrs; + if (rel15->dmrsConfigType==NFAPI_NR_DMRS_TYPE1) { + nb_re_dmrs = 6*rel15->numDmrsCdmGrpsNoData; + n_dmrs = ((rel15->rbSize+rel15->rbStart)*6)<<1; + } + else { + nb_re_dmrs = 4*rel15->numDmrsCdmGrpsNoData; + n_dmrs = ((rel15->rbSize+rel15->rbStart)*4)<<1; + } + uint16_t nb_re; + nb_re = ((12*rel15->NrOfSymbols)-nb_re_dmrs-xOverhead)*rel15->rbSize*rel15->NrOfCodewords; + uint8_t Qm = rel15->qamModOrder[0]; + uint32_t encoded_length = nb_re*Qm; + int16_t mod_dmrs[n_dmrs<<1] __attribute__ ((aligned(16))); + + + /// CRC, coding, interleaving and rate matching + AssertFatal(harq->pdu!=NULL,"harq->pdu is null\n"); + start_meas(dlsch_encoding_stats); + nr_dlsch_encoding(gNB, + harq->pdu, frame, slot, dlsch, frame_parms,tinput,tprep,tparity,toutput, + dlsch_rate_matching_stats, + dlsch_interleaving_stats, + dlsch_segmentation_stats); + stop_meas(dlsch_encoding_stats); #ifdef DEBUG_DLSCH - printf("PDSCH encoding:\nPayload:\n"); - for (int i=0; iB>>7; i++) { - for (int j=0; j<16; j++) - printf("0x%02x\t", harq->pdu[(i<<4)+j]); - printf("\n"); - } - printf("\nEncoded payload:\n"); - for (int i=0; i>3; i++) { - for (int j=0; j<8; j++) - printf("%d", harq->f[(i<<3)+j]); - printf("\t"); - } - printf("\n"); -#endif - - - - /// scrambling - start_meas(dlsch_scrambling_stats); - for (int q=0; qNrOfCodewords; q++) - memset((void*)scrambled_output[q], 0, (encoded_length>>5)*sizeof(uint32_t)); - for (int q=0; qNrOfCodewords; q++) - nr_pdsch_codeword_scrambling_optim(harq->f, - encoded_length, - q, - rel15->dlDmrsScramblingId, - rel15->rnti, - scrambled_output[q]); - - stop_meas(dlsch_scrambling_stats); -#ifdef DEBUG_DLSCH - printf("PDSCH scrambling:\n"); - for (int i=0; i>8; i++) { - for (int j=0; j<8; j++) - printf("0x%08x\t", scrambled_output[0][(i<<3)+j]); - printf("\n"); - } -#endif - - /// Modulation - start_meas(dlsch_modulation_stats); - for (int q=0; qNrOfCodewords; q++) - nr_modulation(scrambled_output[q], - encoded_length, - Qm, - mod_symbs[q]); - stop_meas(dlsch_modulation_stats); -#ifdef DEBUG_DLSCH - printf("PDSCH Modulation: Qm %d(%d)\n", Qm, nb_re); - for (int i=0; i>3; i++) { - for (int j=0; j<8; j++) { - printf("%d %d\t", mod_symbs[0][((i<<3)+j)<<1], mod_symbs[0][(((i<<3)+j)<<1)+1]); + printf("PDSCH encoding:\nPayload:\n"); + for (int i=0; iB>>7; i++) { + for (int j=0; j<16; j++) + printf("0x%02x\t", harq->pdu[(i<<4)+j]); + printf("\n"); + } + printf("\nEncoded payload:\n"); + for (int i=0; i>3; i++) { + for (int j=0; j<8; j++) + printf("%d", harq->f[(i<<3)+j]); + printf("\t"); } printf("\n"); - } #endif - - - /// Layer mapping - nr_layer_mapping(mod_symbs, - rel15->nrOfLayers, - nb_re, - tx_layers); + + + + /// scrambling + start_meas(dlsch_scrambling_stats); + for (int q=0; qNrOfCodewords; q++) + memset((void*)scrambled_output[q], 0, (encoded_length>>5)*sizeof(uint32_t)); + for (int q=0; qNrOfCodewords; q++) + nr_pdsch_codeword_scrambling_optim(harq->f, + encoded_length, + q, + rel15->dlDmrsScramblingId, + rel15->rnti, + scrambled_output[q]); + + stop_meas(dlsch_scrambling_stats); #ifdef DEBUG_DLSCH - printf("Layer mapping (%d layers):\n", rel15->nrOfLayers); - for (int l=0; lnrOfLayers; l++) - for (int i=0; i<(nb_re/rel15->nrOfLayers)>>3; i++) { - printf("layer %d, Re %d..%d : ",l,i<<3,(i<<3)+7); + printf("PDSCH scrambling:\n"); + for (int i=0; i>8; i++) { + for (int j=0; j<8; j++) + printf("0x%08x\t", scrambled_output[0][(i<<3)+j]); + printf("\n"); + } +#endif + + /// Modulation + start_meas(dlsch_modulation_stats); + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_gNB_PDSCH_MODULATION, 1); + for (int q=0; qNrOfCodewords; q++) + nr_modulation(scrambled_output[q], + encoded_length, + Qm, + mod_symbs[q]); + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_gNB_PDSCH_MODULATION, 0); + stop_meas(dlsch_modulation_stats); +#ifdef DEBUG_DLSCH + printf("PDSCH Modulation: Qm %d(%d)\n", Qm, nb_re); + for (int i=0; i>3; i++) { for (int j=0; j<8; j++) { - printf("l%d %d\t", tx_layers[l][((i<<3)+j)<<1], tx_layers[l][(((i<<3)+j)<<1)+1]); + printf("%d %d\t", mod_symbs[0][((i<<3)+j)<<1], mod_symbs[0][(((i<<3)+j)<<1)+1]); } printf("\n"); } #endif - - /// Antenna port mapping - //to be moved to init phase potentially, for now tx_layers 1-8 are mapped on antenna ports 1000-1007 - - /// DMRS QPSK modulation - - - l0 = get_l0(rel15->dlDmrsSymbPos); - nr_modulation(pdsch_dmrs[l0][0], n_dmrs, DMRS_MOD_ORDER, mod_dmrs); // currently only codeword 0 is modulated. Qm = 2 as DMRS is QPSK modulated - + + + /// Layer mapping + nr_layer_mapping(mod_symbs, + rel15->nrOfLayers, + nb_re, + tx_layers); #ifdef DEBUG_DLSCH - printf("DMRS modulation (single symbol %d, %d symbols, type %d):\n", l0, n_dmrs>>1, dmrs_Type); - for (int i=0; i>4; i++) { - for (int j=0; j<8; j++) { - printf("%d %d\t", mod_dmrs[((i<<3)+j)<<1], mod_dmrs[(((i<<3)+j)<<1)+1]); - } - printf("\n"); - } -#endif - - - /// Resource mapping - - // Non interleaved VRB to PRB mapping - uint16_t start_sc = frame_parms->first_carrier_offset + rel15->rbStart*NR_NB_SC_PER_RB; - if (start_sc >= frame_parms->ofdm_symbol_size) - start_sc -= frame_parms->ofdm_symbol_size; - -#ifdef DEBUG_DLSCH_MAPPING - printf("PDSCH resource mapping started (start SC %d\tstart symbol %d\tN_PRB %d\tnb_re %d,nb_layers %d)\n", - start_sc, rel15->StartSymbolIndex, rel15->rbSize, nb_re,rel15->nrOfLayers); -#endif - for (int ap=0; apnrOfLayers; ap++) { - - // DMRS params for this ap - get_Wt(Wt, ap, dmrs_Type); - get_Wf(Wf, ap, dmrs_Type); - delta = get_delta(ap, dmrs_Type); - l_prime[0] = 0; // single symbol ap 0 - uint8_t dmrs_symbol = l0+l_prime[0]; -#ifdef DEBUG_DLSCH_MAPPING - printf("DMRS Type %d params for ap %d: Wt %d %d \t Wf %d %d \t delta %d \t l_prime %d \t l0 %d\tDMRS symbol %d\n", - 1+dmrs_Type,ap, Wt[0], Wt[1], Wf[0], Wf[1], delta, l_prime[0], l0, dmrs_symbol); -#endif - uint8_t k_prime=0; - uint16_t m=0, n=0, dmrs_idx=0, k=0; - - int txdataF_offset = (slot%2)*frame_parms->samples_per_slot_wCP; - if (dmrs_Type == NFAPI_NR_DMRS_TYPE1) // another if condition to be included to check pdsch config type (reference of k) - dmrs_idx = rel15->rbStart*6; - else - dmrs_idx = rel15->rbStart*4; - - for (int l=rel15->StartSymbolIndex; lStartSymbolIndex+rel15->NrOfSymbols; l++) { - k = start_sc; - for (int i=0; irbSize*NR_NB_SC_PER_RB; i++) { - if ((l == dmrs_symbol) && (k == ((start_sc+get_dmrs_freq_idx(n, k_prime, delta, dmrs_Type))%(frame_parms->ofdm_symbol_size)))) { - ((int16_t*)txdataF[ap])[((l*frame_parms->ofdm_symbol_size + k)<<1) + (2*txdataF_offset)] = (Wt[l_prime[0]]*Wf[k_prime]*amp*mod_dmrs[dmrs_idx<<1]) >> 15; - ((int16_t*)txdataF[ap])[((l*frame_parms->ofdm_symbol_size + k)<<1) + 1 + (2*txdataF_offset)] = (Wt[l_prime[0]]*Wf[k_prime]*amp*mod_dmrs[(dmrs_idx<<1) + 1]) >> 15; -#ifdef DEBUG_DLSCH_MAPPING - printf("dmrs_idx %d\t l %d \t k %d \t k_prime %d \t n %d \t txdataF: %d %d\n", - dmrs_idx, l, k, k_prime, n, ((int16_t*)txdataF[ap])[((l*frame_parms->ofdm_symbol_size + k)<<1) + (2*txdataF_offset)], - ((int16_t*)txdataF[ap])[((l*frame_parms->ofdm_symbol_size + k)<<1) + 1 + (2*txdataF_offset)]); -#endif - dmrs_idx++; - k_prime++; - k_prime&=1; - n+=(k_prime)?0:1; - } - - else { - - ((int16_t*)txdataF[ap])[((l*frame_parms->ofdm_symbol_size + k)<<1) + (2*txdataF_offset)] = (amp * tx_layers[ap][m<<1]) >> 15; - ((int16_t*)txdataF[ap])[((l*frame_parms->ofdm_symbol_size + k)<<1) + 1 + (2*txdataF_offset)] = (amp * tx_layers[ap][(m<<1) + 1]) >> 15; -#ifdef DEBUG_DLSCH_MAPPING - printf("m %d\t l %d \t k %d \t txdataF: %d %d\n", -m, l, k, ((int16_t*)txdataF[ap])[((l*frame_parms->ofdm_symbol_size + k)<<1) + (2*txdataF_offset)], - ((int16_t*)txdataF[ap])[((l*frame_parms->ofdm_symbol_size + k)<<1) + 1 + (2*txdataF_offset)]); -#endif - m++; - } - if (++k >= frame_parms->ofdm_symbol_size) - k -= frame_parms->ofdm_symbol_size; + printf("Layer mapping (%d layers):\n", rel15->nrOfLayers); + for (int l=0; lnrOfLayers; l++) + for (int i=0; i<(nb_re/rel15->nrOfLayers)>>3; i++) { + printf("layer %d, Re %d..%d : ",l,i<<3,(i<<3)+7); + for (int j=0; j<8; j++) { + printf("l%d %d\t", tx_layers[l][((i<<3)+j)<<1], tx_layers[l][(((i<<3)+j)<<1)+1]); + } + printf("\n"); } +#endif + + /// Antenna port mapping + //to be moved to init phase potentially, for now tx_layers 1-8 are mapped on antenna ports 1000-1007 + + /// DMRS QPSK modulation + + + l0 = get_l0(rel15->dlDmrsSymbPos); + nr_modulation(pdsch_dmrs[l0][0], n_dmrs, DMRS_MOD_ORDER, mod_dmrs); // currently only codeword 0 is modulated. Qm = 2 as DMRS is QPSK modulated + +#ifdef DEBUG_DLSCH + printf("DMRS modulation (single symbol %d, %d symbols, type %d):\n", l0, n_dmrs>>1, dmrs_Type); + for (int i=0; i>4; i++) { + for (int j=0; j<8; j++) { + printf("%d %d\t", mod_dmrs[((i<<3)+j)<<1], mod_dmrs[(((i<<3)+j)<<1)+1]); + } + printf("\n"); } - } +#endif + + + /// Resource mapping + + // Non interleaved VRB to PRB mapping + uint16_t start_sc = frame_parms->first_carrier_offset + rel15->rbStart*NR_NB_SC_PER_RB; + if (start_sc >= frame_parms->ofdm_symbol_size) + start_sc -= frame_parms->ofdm_symbol_size; + +#ifdef DEBUG_DLSCH_MAPPING + printf("PDSCH resource mapping started (start SC %d\tstart symbol %d\tN_PRB %d\tnb_re %d,nb_layers %d)\n", + start_sc, rel15->StartSymbolIndex, rel15->rbSize, nb_re,rel15->nrOfLayers); +#endif + for (int ap=0; apnrOfLayers; ap++) { + + // DMRS params for this ap + get_Wt(Wt, ap, dmrs_Type); + get_Wf(Wf, ap, dmrs_Type); + delta = get_delta(ap, dmrs_Type); + l_prime[0] = 0; // single symbol ap 0 + uint8_t dmrs_symbol = l0+l_prime[0]; +#ifdef DEBUG_DLSCH_MAPPING + printf("DMRS Type %d params for ap %d: Wt %d %d \t Wf %d %d \t delta %d \t l_prime %d \t l0 %d\tDMRS symbol %d\n", + 1+dmrs_Type,ap, Wt[0], Wt[1], Wf[0], Wf[1], delta, l_prime[0], l0, dmrs_symbol); +#endif + uint8_t k_prime=0; + uint16_t m=0, n=0, dmrs_idx=0, k=0; + + int txdataF_offset = (slot%2)*frame_parms->samples_per_slot_wCP; + if (dmrs_Type == NFAPI_NR_DMRS_TYPE1) // another if condition to be included to check pdsch config type (reference of k) + dmrs_idx = rel15->rbStart*6; + else + dmrs_idx = rel15->rbStart*4; + + for (int l=rel15->StartSymbolIndex; lStartSymbolIndex+rel15->NrOfSymbols; l++) { + k = start_sc; + for (int i=0; irbSize*NR_NB_SC_PER_RB; i++) { + if ((l == dmrs_symbol) && (k == ((start_sc+get_dmrs_freq_idx(n, k_prime, delta, dmrs_Type))%(frame_parms->ofdm_symbol_size)))) { + ((int16_t*)txdataF[ap])[((l*frame_parms->ofdm_symbol_size + k)<<1) + (2*txdataF_offset)] = (Wt[l_prime[0]]*Wf[k_prime]*amp*mod_dmrs[dmrs_idx<<1]) >> 15; + ((int16_t*)txdataF[ap])[((l*frame_parms->ofdm_symbol_size + k)<<1) + 1 + (2*txdataF_offset)] = (Wt[l_prime[0]]*Wf[k_prime]*amp*mod_dmrs[(dmrs_idx<<1) + 1]) >> 15; +#ifdef DEBUG_DLSCH_MAPPING + printf("dmrs_idx %d\t l %d \t k %d \t k_prime %d \t n %d \t txdataF: %d %d\n", + dmrs_idx, l, k, k_prime, n, ((int16_t*)txdataF[ap])[((l*frame_parms->ofdm_symbol_size + k)<<1) + (2*txdataF_offset)], + ((int16_t*)txdataF[ap])[((l*frame_parms->ofdm_symbol_size + k)<<1) + 1 + (2*txdataF_offset)]); +#endif + dmrs_idx++; + k_prime++; + k_prime&=1; + n+=(k_prime)?0:1; + } + + else { + if( (l != dmrs_symbol) || allowed_xlsch_re_in_dmrs_symbol(k,start_sc,rel15->numDmrsCdmGrpsNoData,dmrs_Type)) { + ((int16_t*)txdataF[ap])[((l*frame_parms->ofdm_symbol_size + k)<<1) + (2*txdataF_offset)] = (amp * tx_layers[ap][m<<1]) >> 15; + ((int16_t*)txdataF[ap])[((l*frame_parms->ofdm_symbol_size + k)<<1) + 1 + (2*txdataF_offset)] = (amp * tx_layers[ap][(m<<1) + 1]) >> 15; +#ifdef DEBUG_DLSCH_MAPPING + printf("m %d\t l %d \t k %d \t txdataF: %d %d\n", + m, l, k, ((int16_t*)txdataF[ap])[((l*frame_parms->ofdm_symbol_size + k)<<1) + (2*txdataF_offset)], + ((int16_t*)txdataF[ap])[((l*frame_parms->ofdm_symbol_size + k)<<1) + 1 + (2*txdataF_offset)]); +#endif + m++; + } + } + if (++k >= frame_parms->ofdm_symbol_size) + k -= frame_parms->ofdm_symbol_size; + } //RE loop + } // symbol loop + }// layer loop + dlsch->slot_tx[slot]=0; + }// dlsch loop return 0; } + +void dump_pdsch_stats(PHY_VARS_gNB *gNB) { + + for (int i=0;idlsch_stats[i].rnti > 0) + LOG_I(PHY,"DLSCH RNTI %x: round_trials %d(%1.1e):%d(%1.1e):%d(%1.1e):%d, current_Qm %d, current_RI %d, total_bytes TX %d\n", + gNB->dlsch_stats[i].rnti, + gNB->dlsch_stats[i].round_trials[0], + (double)gNB->dlsch_stats[i].round_trials[1]/gNB->dlsch_stats[i].round_trials[0], + gNB->dlsch_stats[i].round_trials[1], + (double)gNB->dlsch_stats[i].round_trials[2]/gNB->dlsch_stats[i].round_trials[0], + gNB->dlsch_stats[i].round_trials[2], + (double)gNB->dlsch_stats[i].round_trials[3]/gNB->dlsch_stats[i].round_trials[0], + gNB->dlsch_stats[i].round_trials[3], + gNB->dlsch_stats[i].current_Qm, + gNB->dlsch_stats[i].current_RI, + gNB->dlsch_stats[i].total_bytes_tx); + +} + +void clear_pdsch_stats(PHY_VARS_gNB *gNB) { + + for (int i=0;idlsch_stats[i],0,sizeof(gNB->dlsch_stats[i])); +} diff --git a/openair1/PHY/NR_TRANSPORT/nr_dlsch.h b/openair1/PHY/NR_TRANSPORT/nr_dlsch.h index f48905b68c..23ec756531 100644 --- a/openair1/PHY/NR_TRANSPORT/nr_dlsch.h +++ b/openair1/PHY/NR_TRANSPORT/nr_dlsch.h @@ -69,28 +69,10 @@ void nr_fill_dlsch(PHY_VARS_gNB *gNB, nfapi_nr_dl_tti_pdsch_pdu *pdsch_pdu, unsigned char *sdu); -uint8_t nr_generate_pdsch(NR_gNB_DLSCH_t *dlsch, - uint32_t ***pdsch_dmrs, - int32_t** txdataF, - int16_t amp, - int frame, - uint8_t slot, - NR_DL_FRAME_PARMS *frame_parms, - int xOverhead, - time_stats_t *dlsch_encoding_stats, - time_stats_t *dlsch_scrambling_stats, - time_stats_t *dlsch_modulation_stats, - time_stats_t *tinput, - time_stats_t *tprep, - time_stats_t *tparity, - time_stats_t *toutput, - time_stats_t *dlsch_rate_matching_stats, - time_stats_t *dlsch_interleaving_stats, - time_stats_t *dlsch_segmentation_stats); - - - -void free_gNB_dlsch(NR_gNB_DLSCH_t **dlschptr,uint16_t N_RB); +uint8_t nr_generate_pdsch(PHY_VARS_gNB *gNB, + int frame, + int slot); +void free_gNB_dlsch(NR_gNB_DLSCH_t **dlschptr, uint16_t N_RB); void clean_gNB_dlsch(NR_gNB_DLSCH_t *dlsch); @@ -98,7 +80,10 @@ void clean_gNB_ulsch(NR_gNB_ULSCH_t *ulsch); int16_t find_nr_dlsch(uint16_t rnti, PHY_VARS_gNB *gNB,find_type_t type); -int nr_dlsch_encoding(unsigned char *a,int frame, +NR_gNB_SCH_STATS_t *find_nr_dlsch_stats(uint16_t rnti, PHY_VARS_gNB *gNB,find_type_t type); + +int nr_dlsch_encoding(PHY_VARS_gNB *gNB, + unsigned char *a,int frame, uint8_t slot, NR_gNB_DLSCH_t *dlsch, NR_DL_FRAME_PARMS* frame_parms, @@ -113,4 +98,8 @@ int nr_dlsch_encoding(unsigned char *a,int frame, void nr_emulate_dlsch_payload(uint8_t* payload, uint16_t size); +void dump_pdsch_stats(PHY_VARS_gNB *gNB); + +void clear_pdsch_stats(PHY_VARS_gNB *gNB); + #endif diff --git a/openair1/PHY/NR_TRANSPORT/nr_dlsch_coding.c b/openair1/PHY/NR_TRANSPORT/nr_dlsch_coding.c index f120864184..e5841d3262 100644 --- a/openair1/PHY/NR_TRANSPORT/nr_dlsch_coding.c +++ b/openair1/PHY/NR_TRANSPORT/nr_dlsch_coding.c @@ -36,7 +36,7 @@ #include "PHY/CODING/coding_defs.h" #include "PHY/CODING/lte_interleaver_inline.h" #include "PHY/CODING/nrLDPC_extern.h" -#include "PHY/NR_TRANSPORT/nr_transport.h" +#include "PHY/NR_TRANSPORT/nr_transport_proto.h" #include "PHY/NR_TRANSPORT/nr_transport_common_proto.h" #include "PHY/NR_TRANSPORT/nr_dlsch.h" #include "openair2/LAYER2/NR_MAC_gNB/mac_proto.h" @@ -49,7 +49,7 @@ //#define DEBUG_DLSCH_FREE 1 -void free_gNB_dlsch(NR_gNB_DLSCH_t **dlschptr,uint16_t N_RB) +void free_gNB_dlsch(NR_gNB_DLSCH_t **dlschptr, uint16_t N_RB) { int i; int r; @@ -61,7 +61,7 @@ void free_gNB_dlsch(NR_gNB_DLSCH_t **dlschptr,uint16_t N_RB) if (N_RB != 273) { a_segments = a_segments*N_RB; - a_segments = a_segments/273; + a_segments = a_segments/273 +1; } @@ -130,7 +130,7 @@ void free_gNB_dlsch(NR_gNB_DLSCH_t **dlschptr,uint16_t N_RB) } free16(dlsch,sizeof(NR_gNB_DLSCH_t)); - dlsch = NULL; + *dlschptr = NULL; } } @@ -150,7 +150,7 @@ NR_gNB_DLSCH_t *new_gNB_dlsch(NR_DL_FRAME_PARMS *frame_parms, if (N_RB != 273) { a_segments = a_segments*N_RB; - a_segments = a_segments/273; + a_segments = a_segments/273 +1; } uint16_t dlsch_bytes = a_segments*1056; // allocated bytes per segment @@ -309,7 +309,8 @@ void clean_gNB_dlsch(NR_gNB_DLSCH_t *dlsch) } } -int nr_dlsch_encoding(unsigned char *a, +int nr_dlsch_encoding(PHY_VARS_gNB *gNB, + unsigned char *a, int frame, uint8_t slot, NR_gNB_DLSCH_t *dlsch, @@ -326,7 +327,8 @@ int nr_dlsch_encoding(unsigned char *a, nfapi_nr_dl_tti_pdsch_pdu_rel15_t *rel15 = &dlsch->harq_processes[harq_pid]->pdsch_pdu.pdsch_pdu_rel15; uint16_t nb_rb = rel15->rbSize; uint8_t nb_symb_sch = rel15->NrOfSymbols; - uint32_t A, Z, Kb, F=0; + uint32_t A, Kb, F=0; + static uint32_t Z = 0; uint32_t *Zc = &Z; uint8_t mod_order = rel15->qamModOrder[0]; uint16_t Kr=0,r; @@ -335,16 +337,46 @@ int nr_dlsch_encoding(unsigned char *a, uint32_t E; uint8_t Ilbrm = 1; uint32_t Tbslbrm = 950984; //max tbs - uint8_t nb_re_dmrs = rel15->dmrsConfigType==NFAPI_NR_DMRS_TYPE1 ? 6:4; + uint8_t nb_re_dmrs; + + if (rel15->dmrsConfigType==NFAPI_NR_DMRS_TYPE1) + nb_re_dmrs = 6*rel15->numDmrsCdmGrpsNoData; + else + nb_re_dmrs = 4*rel15->numDmrsCdmGrpsNoData; + uint16_t length_dmrs = get_num_dmrs(rel15->dlDmrsSymbPos); uint16_t R=rel15->targetCodeRate[0]; float Coderate = 0.0; uint8_t Nl = 4; - VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_ENCODING, VCD_FUNCTION_IN); + dlsch->harq_processes[harq_pid]->round = nr_rv_round_map[rel15->rvIndex[0]]; + + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_gNB_DLSCH_ENCODING, VCD_FUNCTION_IN); A = rel15->TBSize[0]<<3; + NR_gNB_SCH_STATS_t *stats=NULL; + int first_free=-1; + for (int i=0;idlsch_stats[i].rnti == 0 && first_free == -1) { + first_free = i; + stats=&gNB->dlsch_stats[i]; + } + if (gNB->dlsch_stats[i].rnti == dlsch->rnti) { + stats=&gNB->dlsch_stats[i]; + break; + } + } + + if (stats) { + stats->round_trials[dlsch->harq_processes[harq_pid]->round]++; + stats->rnti = dlsch->rnti; + if (dlsch->harq_processes[harq_pid]->round == 0){ + stats->total_bytes_tx += rel15->TBSize[0]; + stats->current_RI = rel15->nrOfLayers; + stats->current_Qm = rel15->qamModOrder[0]; + } + } G = nr_get_G(nb_rb, nb_symb_sch, nb_re_dmrs, length_dmrs,mod_order,rel15->nrOfLayers); LOG_D(PHY,"dlsch coding A %d G %d mod_order %d\n", A,G, mod_order); @@ -459,6 +491,9 @@ int nr_dlsch_encoding(unsigned char *a, } + F = dlsch->harq_processes[harq_pid]->F; + + Kr = dlsch->harq_processes[harq_pid]->K; for (r=0; rharq_processes[harq_pid]->C; r++) { if (F>0) { @@ -530,7 +565,7 @@ int nr_dlsch_encoding(unsigned char *a, r_offset += E; } - VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_ENCODING, VCD_FUNCTION_OUT); + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_gNB_DLSCH_ENCODING, VCD_FUNCTION_OUT); return 0; } diff --git a/openair1/PHY/NR_TRANSPORT/nr_dlsch_tools.c b/openair1/PHY/NR_TRANSPORT/nr_dlsch_tools.c index 2e6fc707bd..5ce2c45a7d 100644 --- a/openair1/PHY/NR_TRANSPORT/nr_dlsch_tools.c +++ b/openair1/PHY/NR_TRANSPORT/nr_dlsch_tools.c @@ -255,44 +255,27 @@ void nr_emulate_dlsch_payload(uint8_t* pdu, uint16_t size) { } int16_t find_nr_dlsch(uint16_t rnti, PHY_VARS_gNB *gNB,find_type_t type) { - - uint16_t i; - int16_t first_free_index=-1; - - AssertFatal(gNB!=NULL,"gNB is null\n"); - for (i=0; idlsch[i]!=NULL,"gNB->dlsch[%d] is null\n",i); - AssertFatal(gNB->dlsch[i][0]!=NULL,"gNB->dlsch[%d][0] is null\n",i); - LOG_D(PHY,"searching for rnti %x : dlsch_index %d=> harq_mask %x, rnti %x, first_free_index %d\n", rnti,i,gNB->dlsch[i][0]->harq_mask,gNB->dlsch[i][0]->rnti,first_free_index); - if ((gNB->dlsch[i][0]->harq_mask >0) && - (gNB->dlsch[i][0]->rnti==rnti)) return i; - else if ((gNB->dlsch[i][0]->harq_mask == 0) && (first_free_index==-1)) first_free_index=i; - } - if (type == SEARCH_EXIST) return -1; - if (first_free_index != -1) - gNB->dlsch[first_free_index][0]->rnti = 0; - return first_free_index; + + uint16_t i; + int16_t first_free_index=-1; + + AssertFatal(gNB!=NULL,"gNB is null\n"); + for (i=0; idlsch[i]!=NULL,"gNB->dlsch[%d] is null\n",i); + AssertFatal(gNB->dlsch[i][0]!=NULL,"gNB->dlsch[%d][0] is null\n",i); + LOG_D(PHY,"searching for rnti %x : dlsch_index %d=> harq_mask %x, rnti %x, first_free_index %d\n", rnti,i, + gNB->dlsch[i][0]->harq_mask,gNB->dlsch[i][0]->rnti,first_free_index); + if ((gNB->dlsch[i][0]->harq_mask >0) && + (gNB->dlsch[i][0]->rnti==rnti)) return i; + else if ((gNB->dlsch[i][0]->harq_mask == 0) && (first_free_index==-1)) first_free_index=i; + } + if (type == SEARCH_EXIST) return -1; + if (first_free_index != -1) + gNB->dlsch[first_free_index][0]->rnti = 0; + return first_free_index; + } -int16_t find_nr_ulsch(uint16_t rnti, PHY_VARS_gNB *gNB,find_type_t type) { - - uint16_t i; - int16_t first_free_index=-1; - - AssertFatal(gNB!=NULL,"gNB is null\n"); - for (i=0; iulsch[i]!=NULL,"gNB->ulsch[%d] is null\n",i); - AssertFatal(gNB->ulsch[i][0]!=NULL,"gNB->ulsch[%d][0] is null\n",i); - LOG_D(PHY,"searching for rnti %x : ulsch_index %d=> harq_mask %x, rnti %x, first_free_index %d\n", rnti,i,gNB->ulsch[i][0]->harq_mask,gNB->ulsch[i][0]->rnti,first_free_index); - if ((gNB->ulsch[i][0]->harq_mask >0) && - (gNB->ulsch[i][0]->rnti==rnti)) return i; - else if ((gNB->ulsch[i][0]->harq_mask == 0) && (first_free_index==-1)) first_free_index=i; - } - if (type == SEARCH_EXIST) return -1; - if (first_free_index != -1) - gNB->ulsch[first_free_index][0]->rnti = 0; - return first_free_index; -} void nr_fill_dlsch(PHY_VARS_gNB *gNB, int frame, @@ -309,33 +292,10 @@ void nr_fill_dlsch(PHY_VARS_gNB *gNB, NR_DL_gNB_HARQ_t **harq = dlsch->harq_processes; /// DLSCH struct memcpy((void*)&harq[dlsch->harq_ids[frame%2][slot]]->pdsch_pdu, (void*)pdsch_pdu, sizeof(nfapi_nr_dl_tti_pdsch_pdu)); - gNB->num_pdsch_rnti++; + gNB->num_pdsch_rnti[slot]++; AssertFatal(sdu!=NULL,"sdu is null\n"); harq[dlsch->harq_ids[frame%2][slot]]->pdu = sdu; } -void nr_fill_ulsch(PHY_VARS_gNB *gNB, - int frame, - int slot, - nfapi_nr_pusch_pdu_t *ulsch_pdu) { - - - int ulsch_id = find_nr_ulsch(ulsch_pdu->rnti,gNB,SEARCH_EXIST_OR_FREE); - AssertFatal( (ulsch_id>=0) && (ulsch_idrnti,ulsch_id); - - NR_gNB_ULSCH_t *ulsch = gNB->ulsch[ulsch_id][0]; - int harq_pid = ulsch_pdu->pusch_data.harq_process_id; - ulsch->rnti = ulsch_pdu->rnti; - //ulsch->rnti_type; - ulsch->harq_mask |= 1<harq_process_id[slot] = harq_pid; - - memcpy((void*)&ulsch->harq_processes[harq_pid]->ulsch_pdu, (void*)ulsch_pdu, sizeof(nfapi_nr_pusch_pdu_t)); - - LOG_D(PHY,"Initializing nFAPI for ULSCH, UE %d, harq_pid %d\n",ulsch_id,harq_pid); - -} - diff --git a/openair1/PHY/NR_TRANSPORT/nr_pbch.c b/openair1/PHY/NR_TRANSPORT/nr_pbch.c index b6a4787193..bd1278b2eb 100644 --- a/openair1/PHY/NR_TRANSPORT/nr_pbch.c +++ b/openair1/PHY/NR_TRANSPORT/nr_pbch.c @@ -32,7 +32,7 @@ */ #include "PHY/defs_gNB.h" -#include "PHY/NR_TRANSPORT/nr_transport.h" +#include "PHY/NR_TRANSPORT/nr_transport_proto.h" #include "PHY/LTE_REFSIG/lte_refsig.h" #include "PHY/sse_intrin.h" @@ -40,7 +40,7 @@ //#define DEBUG_PBCH_ENCODING //#define DEBUG_PBCH_DMRS -extern short nr_mod_table[NR_MOD_TABLE_SIZE_SHORT]; +extern short nr_qpsk_mod_table[8]; uint8_t nr_pbch_payload_interleaving_pattern[32] = {16, 23, 18, 17, 8, 30, 10, 6, 24, 7, 0, 5, 3, 2, 1, 4, 9, 11, 12, 13, 14, 15, 19, 20, 21, 22, 25, 26, 27, 28, 29, 31 @@ -61,9 +61,9 @@ int nr_generate_pbch_dmrs(uint32_t *gold_pbch_dmrs, /// QPSK modulation for (int m=0; m>5])>>((m<<1)&0x1f))&1)<<1) ^ (((gold_pbch_dmrs[((m<<1)+1)>>5])>>(((m<<1)+1)&0x1f))&1); - mod_dmrs[m<<1] = nr_mod_table[(NR_MOD_TABLE_QPSK_OFFSET + idx)<<1]; - mod_dmrs[(m<<1)+1] = nr_mod_table[((NR_MOD_TABLE_QPSK_OFFSET + idx)<<1) + 1]; + idx = (((gold_pbch_dmrs[(m<<1)>>5])>>((m<<1)&0x1f))&3); + mod_dmrs[m<<1] = nr_qpsk_mod_table[idx<<1]; + mod_dmrs[(m<<1)+1] = nr_qpsk_mod_table[(idx<<1) + 1]; #ifdef DEBUG_PBCH_DMRS printf("m %d idx %d gold seq %d b0-b1 %d-%d mod_dmrs %d %d\n", m, idx, gold_pbch_dmrs[(m<<1)>>5], (((gold_pbch_dmrs[(m<<1)>>5])>>((m<<1)&0x1f))&1), (((gold_pbch_dmrs[((m<<1)+1)>>5])>>(((m<<1)+1)&0x1f))&1), mod_dmrs[(m<<1)], mod_dmrs[(m<<1)+1]); @@ -297,7 +297,7 @@ int nr_generate_pbch(NR_gNB_PBCH *pbch, a_reversed |= (((uint64_t)pbch->pbch_a_prime>>i)&1)<<(31-i); /// CRC, coding and rate matching - polar_encoder_fast (&a_reversed, (uint32_t *)pbch->pbch_e, 0, 0, + polar_encoder_fast (&a_reversed, (void*)pbch->pbch_e, 0, 0, nr_polar_params( NR_POLAR_PBCH_MESSAGE_TYPE, NR_POLAR_PBCH_PAYLOAD_BITS, NR_POLAR_PBCH_AGGREGATION_LEVEL,0,NULL) ); #ifdef DEBUG_PBCH_ENCODING @@ -323,9 +323,9 @@ int nr_generate_pbch(NR_gNB_PBCH *pbch, /// QPSK modulation for (int i=0; i>1; i++) { - idx = (((pbch->pbch_e[(i<<1)>>5]>>((i<<1)&0x1f))&1)<<1) ^ ((pbch->pbch_e[((i<<1)+1)>>5]>>(((i<<1)+1)&0x1f))&1); - mod_pbch_e[i<<1] = nr_mod_table[(NR_MOD_TABLE_QPSK_OFFSET + idx)<<1]; - mod_pbch_e[(i<<1)+1] = nr_mod_table[((NR_MOD_TABLE_QPSK_OFFSET + idx)<<1)+1]; + idx = ((pbch->pbch_e[(i<<1)>>5]>>((i<<1)&0x1f))&3); + mod_pbch_e[i<<1] = nr_qpsk_mod_table[idx<<1]; + mod_pbch_e[(i<<1)+1] = nr_qpsk_mod_table[(idx<<1)+1]; #ifdef DEBUG_PBCH printf("i %d idx %d mod_pbch %d %d\n", i, idx, mod_pbch_e[2*i], mod_pbch_e[2*i+1]); #endif diff --git a/openair1/PHY/NR_TRANSPORT/nr_prach.c b/openair1/PHY/NR_TRANSPORT/nr_prach.c index 5c4d048a77..e263c2c2cc 100644 --- a/openair1/PHY/NR_TRANSPORT/nr_prach.c +++ b/openair1/PHY/NR_TRANSPORT/nr_prach.c @@ -31,141 +31,246 @@ */ #include "PHY/defs_gNB.h" -#include "PHY/NR_TRANSPORT/nr_transport.h" -#include "PHY/NR_TRANSPORT/nr_transport_proto_common.h" +#include "PHY/NR_TRANSPORT/nr_transport_proto.h" +#include "PHY/NR_TRANSPORT/nr_transport_common_proto.h" -extern uint16_t NCS_unrestricted_delta_f_RA_125[16]; -extern uint16_t NCS_restricted_TypeA_delta_f_RA_125[15]; -extern uint16_t NCS_restricted_TypeB_delta_f_RA_125[13]; -extern uint16_t NCS_unrestricted_delta_f_RA_5[16]; -extern uint16_t NCS_restricted_TypeA_delta_f_RA_5[16]; -extern uint16_t NCS_restricted_TypeB_delta_f_RA_5[14]; -extern uint16_t NCS_unrestricted_delta_f_RA_15[16]; extern uint16_t prach_root_sequence_map_0_3[838]; extern uint16_t prach_root_sequence_map_abc[138]; -extern int64_t table_6_3_3_2_2_prachConfig_Index [256][9]; -extern int64_t table_6_3_3_2_3_prachConfig_Index [256][9]; -extern int64_t table_6_3_3_2_4_prachConfig_Index [256][10]; extern uint16_t nr_du[838]; -extern int16_t nr_ru[2*839]; +extern const char *prachfmt[9]; + +void init_prach_list(PHY_VARS_gNB *gNB) { + + AssertFatal(gNB!=NULL,"gNB is null\n"); + for (int i=0; iprach_vars.list[i].frame=-1; +} + +int16_t find_nr_prach(PHY_VARS_gNB *gNB,int frame,int slot, int numRA, find_type_t type) { + + uint16_t i; + int16_t first_free_index=-1; + + AssertFatal(gNB!=NULL,"gNB is null\n"); + for (i=0; i %d.%d numRA %d\n", frame,slot,numRA,i, + gNB->prach_vars.list[i].frame,gNB->prach_vars.list[i].slot,gNB->prach_vars.list[i].pdu.num_ra); + if ((gNB->prach_vars.list[i].frame == frame) && + (gNB->prach_vars.list[i].slot == slot) && + (gNB->prach_vars.list[i].pdu.num_ra == numRA)) return i; + else if ((gNB->prach_vars.list[i].frame == -1) && (first_free_index==-1)) first_free_index=i; + } + if (type == SEARCH_EXIST) return -1; + + return first_free_index; +} + +void nr_fill_prach(PHY_VARS_gNB *gNB, + int SFN, + int Slot, + nfapi_nr_prach_pdu_t *prach_pdu) { + + int prach_id = find_nr_prach(gNB,SFN,Slot,prach_pdu->num_ra,SEARCH_EXIST_OR_FREE); + AssertFatal( (prach_id>=0) && (prach_idnum_ra,prach_id); + + gNB->prach_vars.list[prach_id].frame=SFN; + gNB->prach_vars.list[prach_id].slot=Slot; + memcpy((void*)&gNB->prach_vars.list[prach_id].pdu,(void*)prach_pdu,sizeof(*prach_pdu)); + +} + +void init_prach_ru_list(RU_t *ru) { + + AssertFatal(ru!=NULL,"ruis null\n"); + for (int i=0; iprach_list[i].frame=-1; + pthread_mutex_init(&ru->prach_list_mutex,NULL); +} + +int16_t find_nr_prach_ru(RU_t *ru,int frame,int slot, find_type_t type) { + + uint16_t i; + int16_t first_free_index=-1; + + AssertFatal(ru!=NULL,"ru is null\n"); + pthread_mutex_lock(&ru->prach_list_mutex); + for (i=0; i %d.%d\n", frame,slot,i, + ru->prach_list[i].frame,ru->prach_list[i].slot); + if ((ru->prach_list[i].frame == frame) && + (ru->prach_list[i].slot == slot)) { + pthread_mutex_unlock(&ru->prach_list_mutex); + return i; + } + else if ((ru->prach_list[i].frame == -1) && (first_free_index==-1)) first_free_index=i; + } + pthread_mutex_unlock(&ru->prach_list_mutex); + if (type == SEARCH_EXIST) return -1; + + return first_free_index; +} + +void nr_fill_prach_ru(RU_t *ru, + int SFN, + int Slot, + nfapi_nr_prach_pdu_t *prach_pdu) { + + int prach_id = find_nr_prach_ru(ru,SFN,Slot,SEARCH_EXIST_OR_FREE); + AssertFatal( (prach_id>=0) && (prach_idprach_list_mutex); + ru->prach_list[prach_id].frame = SFN; + ru->prach_list[prach_id].slot = Slot; + ru->prach_list[prach_id].fmt = prach_pdu->prach_format; + ru->prach_list[prach_id].numRA = prach_pdu->num_ra; + ru->prach_list[prach_id].prachStartSymbol = prach_pdu->prach_start_symbol; + pthread_mutex_unlock(&ru->prach_list_mutex); + +} + +void free_nr_ru_prach_entry(RU_t *ru, + int prach_id) { + + pthread_mutex_lock(&ru->prach_list_mutex); + ru->prach_list[prach_id].frame=-1; + pthread_mutex_unlock(&ru->prach_list_mutex); + +} + void rx_nr_prach_ru(RU_t *ru, + int prachFormat, + int numRA, + int prachStartSymbol, int frame, - int subframe) { + int slot) { AssertFatal(ru!=NULL,"ru is null\n"); int16_t **rxsigF=NULL; NR_DL_FRAME_PARMS *fp=ru->nr_frame_parms; - int16_t prach_ConfigIndex = fp->prach_config_common.prach_ConfigInfo.prach_ConfigIndex; + int slot2=slot; + int16_t *prach[ru->nb_rx]; - uint8_t prach_fmt = get_nr_prach_fmt(prach_ConfigIndex,fp->frame_type,fp->freq_range); + int prach_sequence_length = ru->config.prach_config.prach_sequence_length.value; + + int msg1_frequencystart = ru->config.prach_config.num_prach_fd_occasions_list[numRA].k1.value; rxsigF = ru->prach_rxsigF; AssertFatal(ru->if_south == LOCAL_RF,"we shouldn't call this if if_south != LOCAL_RF\n"); - for (int aa=0; aanb_rx; aa++) - prach[aa] = (int16_t*)&ru->common.rxdata[aa][(subframe*fp->samples_per_subframe)-ru->N_TA_offset]; - + for (int aa=0; aanb_rx; aa++){ + if (prach_sequence_length == 0) slot2=(slot/fp->slots_per_subframe)*fp->slots_per_subframe; + prach[aa] = (int16_t*)&ru->common.rxdata[aa][(slot2*fp->get_samples_per_slot(slot,fp))-ru->N_TA_offset]; + } + int dftlen=0; int mu = fp->numerology_index; - int Ncp; + int Ncp = 0; int16_t *prach2; - - switch (prach_fmt) { - case 0: - Ncp = 3168; - break; - - case 1: - Ncp = 21024; - break; - - case 2: - Ncp = 4688; - break; - - case 3: - Ncp = 3168; - break; - - case 0xa1: - Ncp = 288/(1<idx,frame,slot2,prachFormat,msg1_frequencystart); + AssertFatal(prachFormat<4,"Illegal prach format %d for length 839\n",prachFormat); + switch (prachFormat) { + case 0: + Ncp = 3168; + break; + + case 1: + Ncp = 21024; + break; + + case 2: + Ncp = 4688; + break; + + case 3: + Ncp = 3168; + break; + + } } + else { + LOG_D(PHY,"PRACH (ru %d) in %d.%d, format %s, msg1_frequencyStart %d,startSymbol %d\n", + ru->idx,frame,slot,prachfmt[prachFormat],msg1_frequencystart,prachStartSymbol); + switch (prachFormat) { + case 0: //A1 + Ncp = 288/(1<N_RB_UL, ru->nb_rx, Ncp); + LOG_D(PHY,"rx_prach: Doing PRACH FFT for nb_rx:%d Ncp:%d\n",ru->nb_rx, Ncp); } AssertFatal(mu==1,"only 30 kHz SCS handled for now\n"); // Note: Assumes PUSCH SCS @ 30 kHz, take values for formats 0-2 and adjust for others below int kbar = 1; int K = 24; - if (prach_fmt == 3) { + if (prach_sequence_length == 0 && prachFormat == 3) { K=4; kbar=10; } - else if (prach_fmt > 3) { + else if (prach_sequence_length == 1) { // Note: Assumes that PRACH SCS is same as PUSCH SCS K=1; kbar=2; } - int n_ra_prb = fp->prach_config_common.prach_ConfigInfo.msg1_frequencystart; + int n_ra_prb = msg1_frequencystart; int k = (12*n_ra_prb) - 6*fp->N_RB_UL; - int N_ZC = (prach_fmt<4)?839:139; + int N_ZC = (prach_sequence_length==0)?839:139; if (k<0) k+=(fp->ofdm_symbol_size); k*=K; k+=kbar; int reps=1; - int dftlen=0; for (int aa=0; aanb_rx; aa++) { AssertFatal(prach[aa]!=NULL,"prach[%d] is null\n",aa); - // do DFT if (fp->N_RB_UL <= 100) AssertFatal(1==0,"N_RB_UL %d not support for NR PRACH yet\n",fp->N_RB_UL); @@ -173,175 +278,232 @@ void rx_nr_prach_ru(RU_t *ru, if (fp->threequarter_fs==0) { //40 MHz @ 61.44 Ms/s //50 MHz @ 61.44 Ms/s - prach2 = prach[aa] + (Ncp<<2); - if (prach_fmt == 0 || prach_fmt == 1 || prach_fmt == 2) - dft(DFT_49152,prach2,rxsigF[aa],1); - if (prach_fmt == 1 || prach_fmt == 2) { - dft(DFT_49152,prach2+98304,rxsigF[aa]+98304,1); - reps++; - } - if (prach_fmt == 2) { - dft(DFT_49152,prach2+(98304*2),rxsigF[aa]+(98304*2),1); - dft(DFT_49152,prach2+(98304*3),rxsigF[aa]+(98304*3),1); - reps+=2; - } - if (prach_fmt == 3) { - for (int i=0;i<4;i++) dft(DFT_12288,prach2+(i*12288*2),rxsigF[aa]+(i*12288*2),1); - reps=4; - } - if (prach_fmt >3) { - dft(DFT_2048,prach2,rxsigF[aa],1); - if (prach_fmt != 0xc0) { - dft(DFT_2048,prach2+4096,rxsigF[aa]+4096,1); + prach2 = prach[aa] + (Ncp<<2); // Ncp is for 30.72 Ms/s, so multiply by 2 for I/Q, and 2 to bring to 61.44 Ms/s + if (prach_sequence_length == 0) { + if (prachFormat == 0 || prachFormat == 1 || prachFormat == 2) { + dftlen=49152; + dft(DFT_49152,prach2,rxsigF[aa],1); + } + if (prachFormat == 1 || prachFormat == 2) { + dft(DFT_49152,prach2+98304,rxsigF[aa]+98304,1); reps++; } - } - if (prach_fmt == 0xa2 || prach_fmt == 0xa3 || prach_fmt == 0xb2 || prach_fmt == 0xb3 || prach_fmt == 0xb4 || prach_fmt == 0xc2) { - dft(DFT_2048,prach2+4096*2,rxsigF[aa]+4096*2,1); - dft(DFT_2048,prach2+4096*3,rxsigF[aa]+4096*3,1); - reps+=2; - } - if (prach_fmt == 0xa3 || prach_fmt == 0xb3 || prach_fmt == 0xc2) { - dft(DFT_2048,prach2+4096*4,rxsigF[aa]+4096*4,1); - dft(DFT_2048,prach2+4096*5,rxsigF[aa]+4096*5,1); - reps+=2; - } - if (prach_fmt == 0xc2) { - for (int i=6;i<11;i++) dft(DFT_2048,prach2+(3072*i),rxsigF[aa]+(3072*i),1); - reps+=6; + if (prachFormat == 2) { + dft(DFT_49152,prach2+(98304*2),rxsigF[aa]+(98304*2),1); + dft(DFT_49152,prach2+(98304*3),rxsigF[aa]+(98304*3),1); + reps+=2; + } + if (prachFormat == 3) { + dftlen=12288; + for (int i=0;i<4;i++) dft(DFT_12288,prach2+(i*12288*2),rxsigF[aa]+(i*12288*2),1); + reps=4; + } + }// 839 sequence + else { + if ((mu==0 && + (prachStartSymbol == 0 || prachStartSymbol == 7)) || + (mu==1 && prachStartSymbol == 0)) prach2+=64; // 32 samples @ 61.44 Ms/s in first symbol of each half subframe (15/30 kHz only) + + if (mu==0) AssertFatal(1==0,"Shouldn't get here\n"); + else if (mu==1) { + dftlen=2048; + dft(DFT_2048,prach2,rxsigF[aa],1); + if (prachFormat != 7) { // !=C0 + dft(DFT_2048,prach2+4096,rxsigF[aa]+4096,1); + reps++; + } + if (prachFormat == 1 || prachFormat == 2 || prachFormat == 4 || prachFormat == 5 || prachFormat == 6 || prachFormat == 8) { + dft(DFT_2048,prach2+4096*2,rxsigF[aa]+4096*2,1); + dft(DFT_2048,prach2+4096*3,rxsigF[aa]+4096*3,1); + reps+=2; + } + if (prachFormat == 2 || prachFormat == 5 || prachFormat == 6) { + dft(DFT_2048,prach2+4096*4,rxsigF[aa]+4096*4,1); + dft(DFT_2048,prach2+4096*5,rxsigF[aa]+4096*5,1); + reps+=2; + } + if (prachFormat == 6) { + for (int i=6;i<12;i++) dft(DFT_2048,prach2+(4096*i),rxsigF[aa]+(4096*i),1); + reps+=6; + } + } + else if (mu==2) AssertFatal(1==0,"Shouldn't get here\n"); + else if (mu==3) AssertFatal(1==0,"Shouldn't get here\n"); + else if (mu==4) AssertFatal(1==0,"Shouldn't get here\n"); } - } else { + } else { // threequarter sampling // 40 MHz @ 46.08 Ms/s - prach2 = prach[aa] + (3*Ncp); - AssertFatal(fp->N_RB_UL <= 107,"cannot do 108..136 PRBs with 3/4 sampling\n"); - if (prach_fmt == 0 || prach_fmt == 1 || prach_fmt == 2) { - dft(DFT_36864,prach2,rxsigF[aa],1); - reps++; - } - if (prach_fmt == 1 || prach_fmt == 2) { - dft(DFT_36864,prach2+73728,rxsigF[aa]+73728,1); - reps++; - } - if (prach_fmt == 2) { - dft(DFT_36864,prach2+(98304*2),rxsigF[aa]+(98304*2),1); - dft(DFT_36864,prach2+(98304*3),rxsigF[aa]+(98304*3),1); - reps+=2; - } - if (prach_fmt == 3) { - for (int i=0;i<4;i++) dft(DFT_9216,prach2+(i*9216*2),rxsigF[aa]+(i*9216*2),1); - reps=4; - } - if (prach_fmt >3) { - dft(DFT_1536,prach2,rxsigF[aa],1); - if (prach_fmt != 0xc0) { - dft(DFT_1536,prach2+3072,rxsigF[aa]+3072,1); + prach2 = prach[aa] + (3*Ncp); // 46.08 is 1.5 * 30.72, times 2 for I/Q + if (prach_sequence_length == 0) { + AssertFatal(fp->N_RB_UL <= 107,"cannot do 108..136 PRBs with 3/4 sampling\n"); + if (prachFormat == 0 || prachFormat == 1 || prachFormat == 2) { + dftlen=36864; + dft(DFT_36864,prach2,rxsigF[aa],1); reps++; } - } - if (prach_fmt == 0xa2 || prach_fmt == 0xa3 || prach_fmt == 0xb2 || prach_fmt == 0xb3 || prach_fmt == 0xb4 || prach_fmt == 0xc2) { - dft(DFT_1536,prach2+3072*2,rxsigF[aa]+3072*2,1); - dft(DFT_1536,prach2+3072*3,rxsigF[aa]+3072*3,1); - reps+=2; - } - if (prach_fmt == 0xa3 || prach_fmt == 0xb3 || prach_fmt == 0xc2) { - dft(DFT_1536,prach2+3072*4,rxsigF[aa]+3072*4,1); - dft(DFT_1536,prach2+3072*5,rxsigF[aa]+3072*5,1); - reps+=2; - } - if (prach_fmt == 0xc2) { - for (int i=6;i<11;i++) dft(DFT_1536,prach2+(3072*i),rxsigF[aa]+(3072*i),1); - reps+=6; - } - } - } + if (prachFormat == 1 || prachFormat == 2) { + dft(DFT_36864,prach2+73728,rxsigF[aa]+73728,1); + reps++; + } + if (prachFormat == 2) { + dft(DFT_36864,prach2+(73728*2),rxsigF[aa]+(73728*2),1); + dft(DFT_36864,prach2+(73728*3),rxsigF[aa]+(73728*3),1); + reps+=2; + } + if (prachFormat == 3) { + dftlen=9216; + for (int i=0;i<4;i++) dft(DFT_9216,prach2+(i*9216*2),rxsigF[aa]+(i*9216*2),1); + reps=4; + } + } else { + if ((mu==0 && + (prachStartSymbol == 0 || prachStartSymbol == 7)) || + (mu==1 && prachStartSymbol == 0)) prach2+=48; // 24 samples @ 46.08 Ms/s in first symbol of each half subframe (15/30 kHz only) + if (mu==0) AssertFatal(1==0,"Shouldn't get here\n"); + else if (mu==1) { + dftlen=1536; + dft(DFT_1536,prach2,rxsigF[aa],1); + if (prachFormat != 7) { + dft(DFT_1536,prach2+3072,rxsigF[aa]+3072,1); + reps++; + } + + if (prachFormat == 1 || prachFormat == 2 || prachFormat == 4 || prachFormat == 5 || prachFormat == 6 || prachFormat == 8) { + dft(DFT_1536,prach2+3072*2,rxsigF[aa]+3072*2,1); + dft(DFT_1536,prach2+3072*3,rxsigF[aa]+3072*3,1); + reps+=2; + } + if (prachFormat == 2 || prachFormat == 5 || prachFormat == 6) { + dft(DFT_1536,prach2+3072*4,rxsigF[aa]+3072*4,1); + dft(DFT_1536,prach2+3072*5,rxsigF[aa]+3072*5,1); + reps+=2; + } + if (prachFormat == 6) { + for (int i=6;i<12;i++) dft(DFT_1536,prach2+(3072*i),rxsigF[aa]+(3072*i),1); + reps+=6; + } + }// mu==1 + else if (mu==2) AssertFatal(1==0,"Shouldn't get here\n"); + else if (mu==3) AssertFatal(1==0,"Shouldn't get here\n"); + else if (mu==4) AssertFatal(1==0,"Shouldn't get here\n"); + } // short format + } // 3/4 sampling + } // <=50 MHz BW else if (fp->N_RB_UL <= 273) { if (fp->threequarter_fs==0) { prach2 = prach[aa] + (Ncp<<3); - dftlen=98304; - //80,90,100 MHz @ 61.44 Ms/s - if (prach_fmt == 0 || prach_fmt == 1 || prach_fmt == 2) - dft(DFT_98304,prach2,rxsigF[aa],1); - if (prach_fmt == 1 || prach_fmt == 2) { - dft(DFT_98304,prach2+196608,rxsigF[aa]+196608,1); - reps++; - } - if (prach_fmt == 1 || prach_fmt == 2) { - dft(DFT_98304,prach2+196608,rxsigF[aa]+196608,1); - dft(DFT_98304,prach2+(196608*2),rxsigF[aa]+(196608*2),1); - reps+=2; - } - if (prach_fmt == 3) { - dft(DFT_24576,prach2+(2*49152),rxsigF[aa]+(2*49152),1); - reps=4; - dftlen=24576; - } - if (prach_fmt >3) { - dftlen=4096; - dft(DFT_4096,prach2,rxsigF[aa],1); - if (prach_fmt != 0xc0) { - dft(DFT_4096,prach2+8192,rxsigF[aa]+8192,1); + //80,90,100 MHz @ 122.88 Ms/s + + if (prach_sequence_length == 0) { + if (prachFormat == 0 || prachFormat == 1 || prachFormat == 2) { + dftlen=98304; + dft(DFT_98304,prach2,rxsigF[aa],1); + } + if (prachFormat == 1 || prachFormat == 2) { + dft(DFT_98304,prach2+196608,rxsigF[aa]+196608,1); reps++; } - } - if (prach_fmt == 0xa2 || prach_fmt == 0xa3 || prach_fmt == 0xb2 || prach_fmt == 0xb3 || prach_fmt == 0xb4 || prach_fmt == 0xc2) { - dft(DFT_4096,prach2+8192*2,rxsigF[aa]+8192*2,1); - dft(DFT_4096,prach2+8192*3,rxsigF[aa]+8192*3,1); - reps+=2; - } - if (prach_fmt == 0xa3 || prach_fmt == 0xb3 || prach_fmt == 0xc2) { - dft(DFT_4096,prach2+8192*4,rxsigF[aa]+8192*4,1); - dft(DFT_4096,prach2+8192*5,rxsigF[aa]+8192*5,1); - reps+=2; - } - if (prach_fmt == 0xc2) { - for (int i=6;i<11;i++) dft(DFT_4096,prach2+(8192*i),rxsigF[aa]+(8192*i),1); - reps+=6; + if (prachFormat == 2) { + dft(DFT_98304,prach2+(196608*2),rxsigF[aa]+(196608*2),1); + dft(DFT_98304,prach2+(196608*3),rxsigF[aa]+(196608*3),1); + reps+=2; + } + if (prachFormat == 3) { + dftlen=24576; + for (int i=0;i<4;i++) dft(DFT_24576,prach2+(i*2*24576),rxsigF[aa]+(i*2*24576),1); + reps=4; + } + } + else { + if ((mu==0 && + (prachStartSymbol == 0 || prachStartSymbol == 7)) || + (mu==1 && prachStartSymbol == 0)) prach2+=128; // 64 samples @ 122.88 Ms/s in first symbol of each half subframe (15/30 kHz only) + + if (mu==0) AssertFatal(1==0,"Shouldn't get here\n"); + else if (mu==1) { + dftlen=4096; + dft(DFT_4096,prach2,rxsigF[aa],1); + if (prachFormat != 7) { //!=C0 + dft(DFT_4096,prach2+8192,rxsigF[aa]+8192,1); + reps++; + } + + if (prachFormat == 1 || prachFormat == 2 || prachFormat == 4 || prachFormat == 5 || prachFormat == 6 || prachFormat == 8) { + dft(DFT_4096,prach2+8192*2,rxsigF[aa]+8192*2,1); + dft(DFT_4096,prach2+8192*3,rxsigF[aa]+8192*3,1); + reps+=2; + } + if (prachFormat == 2 || prachFormat == 5 || prachFormat == 6) { + dft(DFT_4096,prach2+8192*4,rxsigF[aa]+8192*4,1); + dft(DFT_4096,prach2+8192*5,rxsigF[aa]+8192*5,1); + reps+=2; + } + if (prachFormat == 6) { + for (int i=6;i<12;i++) dft(DFT_4096,prach2+(8192*i),rxsigF[aa]+(8192*i),1); + reps+=6; + } + } + else if (mu==2) AssertFatal(1==0,"Shouldn't get here\n"); + else if (mu==3) AssertFatal(1==0,"Shouldn't get here\n"); + else if (mu==4) AssertFatal(1==0,"Shouldn't get here\n"); } } else { AssertFatal(fp->N_RB_UL <= 217,"cannot do more than 217 PRBs with 3/4 sampling\n"); prach2 = prach[aa] + (6*Ncp); - // 80 MHz @ 46.08 Ms/s - dftlen=73728; - if (prach_fmt == 0 || prach_fmt == 1 || prach_fmt == 2) { - dft(DFT_73728,prach2,rxsigF[aa],1); - reps++; - } - if (prach_fmt == 1 || prach_fmt == 2) { - dft(DFT_73728,prach2+(2*73728),rxsigF[aa]+(2*73728),1); - reps++; - } - if (prach_fmt == 3) { - dft(DFT_73728,prach2+(4*73728),rxsigF[aa]+(4*73728),1); - reps=4; - dftlen=18432; - } - - if (prach_fmt >3) { - dftlen=3072; - dft(DFT_3072,prach2,rxsigF[aa],1); - if (prach_fmt != 0xc0) { - dft(DFT_3072,prach2+6144,rxsigF[aa]+6144,1); + // 80 MHz @ 92.16 Ms/s + if (prach_sequence_length == 0) { + if (prachFormat == 0 || prachFormat == 1 || prachFormat == 2) { + dftlen=73728; + dft(DFT_73728,prach2,rxsigF[aa],1); reps++; } - } - if (prach_fmt == 0xa2 || prach_fmt == 0xa3 || prach_fmt == 0xb2 || prach_fmt == 0xb3 || prach_fmt == 0xb4 || prach_fmt == 0xc2) { - dft(DFT_3072,prach2+6144*2,rxsigF[aa]+6144*2,1); - dft(DFT_3072,prach2+6144*3,rxsigF[aa]+6144*3,1); - reps+=2; - } - if (prach_fmt == 0xa3 || prach_fmt == 0xb3 || prach_fmt == 0xc2) { - dft(DFT_3072,prach2+6144*4,rxsigF[aa]+6144*4,1); - dft(DFT_3072,prach2+6144*5,rxsigF[aa]+6144*5,1); - reps+=2; - } - if (prach_fmt == 0xc2) { - for (int i=6;i<11;i++) dft(DFT_3072,prach2+(6144*i),rxsigF[aa]+(6144*i),1); - reps+=6; + if (prachFormat == 1 || prachFormat == 2) { + dft(DFT_73728,prach2+(2*73728),rxsigF[aa]+(2*73728),1); + reps++; + } + if (prachFormat == 3) { + dftlen=18432; + for (int i=0;i<4;i++) dft(DFT_18432,prach2+(i*2*18432),rxsigF[aa]+(i*2*18432),1); + reps=4; + } + } else { + if ((mu==0 && + (prachStartSymbol == 0 || prachStartSymbol == 7)) || + (mu==1 && prachStartSymbol == 0)) prach2+=96; // 64 samples @ 122.88 Ms/s in first symbol of each half subframe (15/30 kHz only) + + if (mu==0) AssertFatal(1==0,"Shouldn't get here\n"); + else if (mu==1) { + dftlen=3072; + dft(DFT_3072,prach2,rxsigF[aa],1); + if (prachFormat != 7) { //!=C0 + dft(DFT_3072,prach2+6144,rxsigF[aa]+6144,1); + reps++; + } + + if (prachFormat == 1 || prachFormat == 2 || prachFormat == 4 || prachFormat == 5 || prachFormat == 6 || prachFormat == 8) { + dft(DFT_3072,prach2+6144*2,rxsigF[aa]+6144*2,1); + dft(DFT_3072,prach2+6144*3,rxsigF[aa]+6144*3,1); + reps+=2; + } + if (prachFormat == 2 || prachFormat == 5 || prachFormat == 6) { + dft(DFT_3072,prach2+6144*4,rxsigF[aa]+6144*4,1); + dft(DFT_3072,prach2+6144*5,rxsigF[aa]+6144*5,1); + reps+=2; + } + if (prachFormat == 6) { + for (int i=6;i<12;i++) dft(DFT_3072,prach2+(6144*i),rxsigF[aa]+(6144*i),1); + reps+=6; + } + } + else if (mu==2) AssertFatal(1==0,"Shouldn't get here\n"); + else if (mu==3) AssertFatal(1==0,"Shouldn't get here\n"); + else if (mu==4) AssertFatal(1==0,"Shouldn't get here\n"); } } } //Coherent combining of PRACH repetitions (assumes channel does not change, to be revisted for "long" PRACH) + LOG_D(PHY,"Doing PRACH combining of %d reptitions N_ZC %d\n",reps,N_ZC); int16_t rxsigF_tmp[N_ZC<<1]; // if (k+N_ZC > dftlen) { // PRACH signal is split around DC int16_t *rxsigF2=rxsigF[aa]; @@ -350,7 +512,7 @@ void rx_nr_prach_ru(RU_t *ru, for (int j=0;jgNB_config.prach_config; NR_DL_FRAME_PARMS *fp; - lte_frame_type_t frame_type; + uint16_t rootSequenceIndex; - uint8_t prach_ConfigIndex; - uint8_t Ncs_config; + int numrootSequenceIndex; uint8_t restricted_set; - uint8_t n_ra_prb; + uint8_t n_ra_prb=0xFF; int16_t *prachF=NULL; int nb_rx; @@ -404,59 +567,35 @@ void rx_nr_prach(PHY_VARS_gNB *gNB, int16_t prach_ifft_tmp[2048*2] __attribute__((aligned(32))); int32_t *prach_ifft=(int32_t*)NULL; - nr_frequency_range_e freq_range; + fp = &gNB->frame_parms; - fp = &gNB->frame_parms; - nb_rx = fp->nb_antennas_rx; + nb_rx = gNB->gNB_config.carrier_config.num_rx_ant.value; - frame_type = fp->frame_type; - freq_range = fp->freq_range; - rootSequenceIndex = fp->prach_config_common.rootSequenceIndex; - prach_ConfigIndex = fp->prach_config_common.prach_ConfigInfo.prach_ConfigIndex; - Ncs_config = fp->prach_config_common.prach_ConfigInfo.zeroCorrelationZoneConfig; - restricted_set = fp->prach_config_common.prach_ConfigInfo.highSpeedFlag; - + rootSequenceIndex = cfg->num_prach_fd_occasions_list[0].prach_root_sequence_index.value; + numrootSequenceIndex = cfg->num_prach_fd_occasions_list[0].num_root_sequences.value; + NCS = prach_pdu->num_cs;//cfg->num_prach_fd_occasions_list[0].prach_zero_corr_conf.value; + int prach_sequence_length = cfg->prach_sequence_length.value; - uint8_t prach_fmt = get_nr_prach_fmt(prach_ConfigIndex,frame_type,freq_range); - uint16_t N_ZC = (prach_fmt <4)?839:139; + int msg1_frequencystart = cfg->num_prach_fd_occasions_list[0].k1.value; + // int num_unused_root_sequences = cfg->num_prach_fd_occasions_list[0].num_unused_root_sequences.value; + // cfg->num_prach_fd_occasions_list[0].unused_root_sequences_list + + restricted_set = cfg->restricted_set_config.value; + + uint8_t prach_fmt = prach_pdu->prach_format; + uint16_t N_ZC = (prach_sequence_length==0)?839:139; + + LOG_D(PHY,"L1 PRACH RX: rooSequenceIndex %d, numRootSeqeuences %d, NCS %d, N_ZC %d \n", rootSequenceIndex,numrootSequenceIndex,NCS,N_ZC); prach_ifft = gNB->prach_vars.prach_ifft; prachF = gNB->prach_vars.prachF; if (LOG_DEBUGFLAG(PRACH)){ - if ((frame&1023) < 20) LOG_D(PHY,"PRACH (gNB) : running rx_prach for subframe %d, msg1_frequencystart %d, prach_ConfigIndex %d , rootSequenceIndex %d\n", subframe,fp->prach_config_common.prach_ConfigInfo.msg1_frequencystart,prach_ConfigIndex,rootSequenceIndex); + if ((frame&1023) < 20) LOG_D(PHY,"PRACH (gNB) : running rx_prach for subframe %d, msg1_frequencystart %d, rootSequenceIndex %d\n", subframe,msg1_frequencystart,rootSequenceIndex); } - - - - - - int restricted_Type = 0; //this is hardcoded ('0' for restricted_TypeA; and '1' for restricted_TypeB). FIXME - if (prach_fmt<3){ - if (restricted_set == 0) { - NCS = NCS_unrestricted_delta_f_RA_125[Ncs_config]; - } else { - if (restricted_Type == 0) NCS = NCS_restricted_TypeA_delta_f_RA_125[Ncs_config]; // for TypeA, this is hardcoded. FIXME - if (restricted_Type == 1) NCS = NCS_restricted_TypeB_delta_f_RA_125[Ncs_config]; // for TypeB, this is hardcoded. FIXME - } - } - if (prach_fmt==3){ - if (restricted_set == 0) { - NCS = NCS_unrestricted_delta_f_RA_5[Ncs_config]; - } else { - if (restricted_Type == 0) NCS = NCS_restricted_TypeA_delta_f_RA_5[Ncs_config]; // for TypeA, this is hardcoded. FIXME - if (restricted_Type == 1) NCS = NCS_restricted_TypeB_delta_f_RA_5[Ncs_config]; // for TypeB, this is hardcoded. FIXME - } - } - if (prach_fmt>3){ - NCS = NCS_unrestricted_delta_f_RA_15[Ncs_config]; - } - - AssertFatal(NCS!=99,"NCS has not been set\n"); - start_meas(&gNB->rx_prach); - prach_root_sequence_map = (prach_fmt<4) ? prach_root_sequence_map_0_3 : prach_root_sequence_map_abc; + prach_root_sequence_map = (cfg->prach_sequence_length.value==0) ? prach_root_sequence_map_0_3 : prach_root_sequence_map_abc; // PDP is oversampled, e.g. 1024 sample instead of 839 // Adapt the NCS (zero-correlation zones) with oversampling factor e.g. 1024/839 @@ -469,16 +608,19 @@ void rx_nr_prach(PHY_VARS_gNB *gNB, *max_preamble_energy=0; + *max_preamble_delay=0; + *max_preamble=0; + for (preamble_index=0 ; preamble_index<64 ; preamble_index++) { if (LOG_DEBUGFLAG(PRACH)){ int en = dB_fixed(signal_energy((int32_t*)&rxsigF[0][0],(N_ZC==839) ? 840: 140)); - if (en>60) LOG_I(PHY,"frame %d, subframe %d : Trying preamble %d \n",frame,subframe,preamble_index); + if (en>60) LOG_D(PHY,"frame %d, subframe %d : Trying preamble %d \n",frame,subframe,preamble_index); } if (restricted_set == 0) { // This is the relative offset in the root sequence table (5.7.2-4 from 36.211) for the given preamble index preamble_offset = ((NCS==0)? preamble_index : (preamble_index/(N_ZC/NCS))); - + if (preamble_offset != preamble_offset_old) { preamble_offset_old = preamble_offset; new_dft = 1; @@ -508,13 +650,6 @@ void rx_nr_prach(PHY_VARS_gNB *gNB, // current root depending on rootSequenceIndex int index = (rootSequenceIndex + preamble_offset) % N_ZC; - if (prach_fmt<4) { - // prach_root_sequence_map points to prach_root_sequence_map0_3 - DevAssert( index < sizeof(prach_root_sequence_map_0_3) / sizeof(prach_root_sequence_map_0_3[0]) ); - } else { - // prach_root_sequence_map points to prach_root_sequence_map4 - DevAssert( index < sizeof(prach_root_sequence_map_abc) / sizeof(prach_root_sequence_map_abc[0]) ); - } u = prach_root_sequence_map[index]; uint16_t n_group_ra = 0; @@ -559,14 +694,21 @@ void rx_nr_prach(PHY_VARS_gNB *gNB, // Compute DFT of RX signal (conjugate input, results in conjugate output) for each new rootSequenceIndex if (LOG_DEBUGFLAG(PRACH)) { int en = dB_fixed(signal_energy((int32_t*)&rxsigF[0][0],840)); - if (en>60) LOG_I(PHY,"frame %d, subframe %d : preamble index %d, NCS %d, NCS_config %d, N_ZC/NCS %d: offset %d, preamble shift %d , en %d)\n", - frame,subframe,preamble_index,NCS,Ncs_config,N_ZC/NCS,preamble_offset,preamble_shift,en); + if (en>60) LOG_I(PHY,"frame %d, subframe %d : preamble index %d, NCS %d, N_ZC/NCS %d: offset %d, preamble shift %d , en %d)\n", + frame,subframe,preamble_index,NCS,N_ZC/NCS,preamble_offset,preamble_shift,en); } + LOG_D(PHY,"PRACH RX preamble_index %d, preamble_offset %d\n",preamble_index,preamble_offset); + + if (new_dft == 1) { new_dft = 0; Xu=(int16_t*)gNB->X_u[preamble_offset-first_nonzero_root_idx]; + + LOG_D(PHY,"PRACH RX new dft preamble_offset-first_nonzero_root_idx %d\n",preamble_offset-first_nonzero_root_idx); + + memset(prach_ifft,0,((N_ZC==839) ? 2048 : 256)*sizeof(int32_t)); @@ -590,32 +732,31 @@ void rx_nr_prach(PHY_VARS_gNB *gNB, idft(IDFT_1024,prachF,prach_ifft_tmp,1); // compute energy and accumulate over receive antennas for (i=0;i<2048;i++) - prach_ifft[i] += (prach_ifft_tmp[i<<1]*prach_ifft_tmp[i<<1] + prach_ifft_tmp[1+(i<<1)]*prach_ifft_tmp[1+(i<<1)])>>10; + prach_ifft[i] += ((int32_t)prach_ifft_tmp[i<<1]*(int32_t)prach_ifft_tmp[i<<1] + (int32_t)prach_ifft_tmp[1+(i<<1)]*(int32_t)prach_ifft_tmp[1+(i<<1)])>>10; } else { idft(IDFT_256,prachF,prach_ifft_tmp,1); log2_ifft_size = 8; // compute energy and accumulate over receive antennas and repetitions for BR for (i=0;i<256;i++) - prach_ifft[i] += (prach_ifft_tmp[i<<1]*prach_ifft_tmp[(i<<1)] + prach_ifft_tmp[1+(i<<1)]*prach_ifft_tmp[1+(i<<1)])>>10; + prach_ifft[i] += ((int32_t)prach_ifft_tmp[i<<1]*(int32_t)prach_ifft_tmp[(i<<1)] + (int32_t)prach_ifft_tmp[1+(i<<1)]*(int32_t)prach_ifft_tmp[1+(i<<1)])>>10; } - if (LOG_DUMPFLAG(PRACH)) { + if (LOG_DUMPFLAG(PRACH)) { if (aa==0) LOG_M("prach_rxF_comp0.m","prach_rxF_comp0",prachF,1024,1,1); if (aa==1) LOG_M("prach_rxF_comp1.m","prach_rxF_comp1",prachF,1024,1,1); - } + } }// antennas_rx } // new dft // check energy in nth time shift, for preamble_shift2 = ((preamble_shift==0) ? 0 : ((preamble_shift<*max_preamble_energy) { + LOG_D(PHY,"preamble_index %d, delay %d en %d dB > %d dB\n",preamble_index,i,levdB,*max_preamble_energy); *max_preamble_energy = levdB; *max_preamble_delay = i; // Note: This has to be normalized to the 30.72 Ms/s sampling rate *max_preamble = preamble_index; @@ -623,9 +764,34 @@ void rx_nr_prach(PHY_VARS_gNB *gNB, } }// preamble_index + + // The conversion from *max_preamble_delay from TA value is done here. + // It is normalized to the 30.72 Ms/s, considering the numerology, N_RB and the sampling rate + // See table 6.3.3.1 -1 and -2 in 38211. + + // Format 0, 1, 2: 24576 samples @ 30.72 Ms/s, 98304 samples @ 122.88 Ms/s + // By solving: + // max_preamble_delay * ( (24576*(fs/30.72M)) / 1024 ) / fs = TA * 16 * 64 / 2^mu * Tc + + // Format 3: 6144 samples @ 30.72 Ms/s, 24576 samples @ 122.88 Ms/s + // By solving: + // max_preamble_delay * ( (6144*(fs/30.72M)) / 1024 ) / fs = TA * 16 * 64 / 2^mu * Tc + + // Format >3: 2048/2^mu samples @ 30.72 Ms/s, 2048/2^mu * 4 samples @ 122.88 Ms/s + // By solving: + // max_preamble_delay * ( (2048/2^mu*(fs/30.72M)) / 256 ) / fs = TA * 16 * 64 / 2^mu * Tc + uint16_t *TA = max_preamble_delay; + int mu = fp->numerology_index; + if (cfg->prach_sequence_length.value==0) { + if (prach_fmt == 0 || prach_fmt == 1 || prach_fmt == 2) *TA = *TA*3*(1<60) { + //int en = dB_fixed(signal_energy((int32_t*)&rxsigF[0][0],840)); + // if (en>60) { int k = (12*n_ra_prb) - 6*fp->N_RB_UL; if (k<0) k+=fp->ofdm_symbol_size; @@ -639,9 +805,9 @@ void rx_nr_prach(PHY_VARS_gNB *gNB, LOG_M("prach_rxF_comp0.m","prach_rxF_comp0",prachF,1024,1,1); LOG_M("Xu.m","xu",Xu,N_ZC,1,1); LOG_M("prach_ifft0.m","prach_t0",prach_ifft,1024,1,1); - } + // } } /* LOG_DUMPFLAG(PRACH) */ - if (gNB) stop_meas(&gNB->rx_prach); + stop_meas(&gNB->rx_prach); } diff --git a/openair1/PHY/NR_TRANSPORT/nr_prach.h b/openair1/PHY/NR_TRANSPORT/nr_prach.h index 1e2b758035..d158e04c79 100644 --- a/openair1/PHY/NR_TRANSPORT/nr_prach.h +++ b/openair1/PHY/NR_TRANSPORT/nr_prach.h @@ -37,18 +37,6 @@ uint16_t nr_du[838]; /************************************* * The following tables defined for NR **************************************/ -// Table 6.3.3.1-5 (38.211) NCS for preamble formats with delta_f_RA = 1.25 KHz -uint16_t NCS_unrestricted_delta_f_RA_125[16] = {0,13,15,18,22,26,32,38,46,59,76,93,119,167,279,419}; -uint16_t NCS_restricted_TypeA_delta_f_RA_125[15] = {15,18,22,26,32,38,46,55,68,82,100,128,158,202,237}; // high-speed case set Type A -uint16_t NCS_restricted_TypeB_delta_f_RA_125[13] = {15,18,22,26,32,38,46,55,68,82,100,118,137}; // high-speed case set Type B - -// Table 6.3.3.1-6 (38.211) NCS for preamble formats with delta_f_RA = 5 KHz -uint16_t NCS_unrestricted_delta_f_RA_5[16] = {0,13,26,33,38,41,49,55,64,76,93,119,139,209,279,419}; -uint16_t NCS_restricted_TypeA_delta_f_RA_5[16] = {36,57,72,81,89,94,103,112,121,132,137,152,173,195,216,237}; // high-speed case set Type A -uint16_t NCS_restricted_TypeB_delta_f_RA_5[14] = {36,57,60,63,65,68,71,77,81,85,97,109,122,137}; // high-speed case set Type B - -// Table 6.3.3.1-7 (38.211) NCS for preamble formats with delta_f_RA = 15 * 2mu KHz where mu = {0,1,2,3} -uint16_t NCS_unrestricted_delta_f_RA_15[16] = {0,2,4,6,8,10,12,13,15,17,19,23,27,34,46,69}; //Table 6.3.3.1-3: Mapping from logical index i to sequence number u for preamble formats with L_RA = 839 uint16_t prach_root_sequence_map_0_3[838] = { @@ -105,787 +93,3 @@ uint16_t prach_root_sequence_map_abc[138] = { 51, 88 , 52, 87 , 53, 86 , 54, 85 , 55, 84 , 56, 83 , 57, 82 , 58, 81 , 59, 80 , 60, 79 , 61, 78 , 62, 77 , 63, 76 , 64, 75 , 65, 74 , 66, 73 , 67, 72 , 68, 71 , 69, 70 }; - -// Table 6.3.3.2-2: Random access configurations for FR1 and paired spectrum/supplementary uplink -// the column 5, (SFN_nbr is a bitmap where we set bit to '1' in the position of the subframe where the RACH can be sent. -// E.g. in row 4, and column 5 we have set value 512 ('1000000000') which means RACH can be sent at subframe 9. -// E.g. in row 20 and column 5 we have set value 66 ('0001000010') which means RACH can be sent at subframe 1 or 6 -int64_t table_6_3_3_2_2_prachConfig_Index [256][9] = { -//format, format, x, y, SFN_nbr, star_symb, slots_sfn, occ_slot, duration -{0, -1, 16, 1, 2, 0, -1, -1, 0}, // (subframe number) 1 -{0, -1, 16, 1, 16, 0, -1, -1, 0}, // (subframe number) 4 -{0, -1, 16, 1, 128, 0, -1, -1, 0}, // (subframe number) 7 -{0, -1, 16, 1, 512, 0, -1, -1, 0}, // (subframe number) 9 -{0, -1, 8, 1, 2, 0, -1, -1, 0}, // (subframe number) 1 -{0, -1, 8, 1, 16, 0, -1, -1, 0}, // (subframe number) 4 -{0, -1, 8, 1, 128, 0, -1, -1, 0}, // (subframe number) 7 -{0, -1, 8, 1, 512, 0, -1, -1, 0}, // (subframe number) 9 -{0, -1, 4, 1, 2, 0, -1, -1, 0}, // (subframe number) 1 -{0, -1, 4, 1, 16, 0, -1, -1, 0}, // (subframe number) 4 -{0, -1, 4, 1, 128, 0, -1, -1, 0}, // (subframe number) 7 -{0, -1, 4, 1, 512, 0, -1, -1, 0}, // (subframe number) 9 -{0, -1, 2, 1, 2, 0, -1, -1, 0}, // (subframe number) 1 -{0, -1, 2, 1, 16, 0, -1, -1, 0}, // (subframe number) 4 -{0, -1, 2, 1, 128, 0, -1, -1, 0}, // (subframe number) 7 -{0, -1, 2, 1, 512, 0, -1, -1, 0}, // (subframe number) 9 -{0, -1, 1, 0, 2, 0, -1, -1, 0}, // (subframe number) 1 -{0, -1, 1, 0, 16, 0, -1, -1, 0}, // (subframe number) 4 -{0, -1, 1, 0, 128, 0, -1, -1, 0}, // (subframe number) 7 -{0, -1, 1, 0, 66, 0, -1, -1, 0}, // (subframe number) 1,6 -{0, -1, 1, 0, 132, 0, -1, -1, 0}, // (subframe number) 2,7 -{0, -1, 1, 0, 264, 0, -1, -1, 0}, // (subframe number) 3,8 -{0, -1, 1, 0, 146, 0, -1, -1, 0}, // (subframe number) 1,4,7 -{0, -1, 1, 0, 292, 0, -1, -1, 0}, // (subframe number) 2,5,8 -{0, -1, 1, 0, 584, 0, -1, -1, 0}, // (subframe number) 3, 6, 9 -{0, -1, 1, 0, 341, 0, -1, -1, 0}, // (subframe number) 0,2,4,6,8 -{0, -1, 1, 0, 682, 0, -1, -1, 0}, // (subframe number) 1,3,5,7,9 -{0, -1, 1, 0, 1023, 0, -1, -1, 0}, // (subframe number) 0,1,2,3,4,5,6,7,8,9 -{1, -1, 16, 1, 2, 0, -1, -1, 0}, // (subframe number) 1 -{1, -1, 16, 1, 16, 0, -1, -1, 0}, // (subframe number) 4 -{1, -1, 16, 1, 128, 0, -1, -1, 0}, // (subframe number) 7 -{1, -1, 16, 1, 512, 0, -1, -1, 0}, // (subframe number) 9 -{1, -1, 8, 1, 2, 0, -1, -1, 0}, // (subframe number) 1 -{1, -1, 8, 1, 16, 0, -1, -1, 0}, // (subframe number) 4 -{1, -1, 8, 1, 128, 0, -1, -1, 0}, // (subframe number) 7 -{1, -1, 8, 1, 512, 0, -1, -1, 0}, // (subframe number) 9 -{1, -1, 4, 1, 2, 0, -1, -1, 0}, // (subframe number) 1 -{1, -1, 4, 1, 16, 0, -1, -1, 0}, // (subframe number) 4 -{1, -1, 4, 1, 128, 0, -1, -1, 0}, // (subframe number) 7 -{1, -1, 4, 1, 512, 0, -1, -1, 0}, // (subframe number) 9 -{1, -1, 2, 1, 2, 0, -1, -1, 0}, // (subframe number) 1 -{1, -1, 2, 1, 16, 0, -1, -1, 0}, // (subframe number) 4 -{1, -1, 2, 1, 128, 0, -1, -1, 0}, // (subframe number) 7 -{1, -1, 2, 1, 512, 0, -1, -1, 0}, // (subframe number) 9 -{1, -1, 1, 0, 2, 0, -1, -1, 0}, // (subframe number) 1 -{1, -1, 1, 0, 16, 0, -1, -1, 0}, // (subframe number) 4 -{1, -1, 1, 0, 128, 0, -1, -1, 0}, // (subframe number) 7 -{1, -1, 1, 0, 66, 0, -1, -1, 0}, // (subframe number) 1,6 -{1, -1, 1, 0, 132, 0, -1, -1, 0}, // (subframe number) 2,7 -{1, -1, 1, 0, 264, 0, -1, -1, 0}, // (subframe number) 3,8 -{1, -1, 1, 0, 146, 0, -1, -1, 0}, // (subframe number) 1,4,7 -{1, -1, 1, 0, 292, 0, -1, -1, 0}, // (subframe number) 2,5,8 -{1, -1, 1, 0, 584, 0, -1, -1, 0}, // (subframe number) 3,6,9 -{2, -1, 16, 1, 2, 0, -1, -1, 0}, // (subframe number) 1 -{2, -1, 8, 1, 2, 0, -1, -1, 0}, // (subframe number) 1 -{2, -1, 4, 0, 2, 0, -1, -1, 0}, // (subframe number) 1 -{2, -1, 2, 0, 2, 0, -1, -1, 0}, // (subframe number) 1 -{2, -1, 2, 0, 32, 0, -1, -1, 0}, // (subframe number) 5 -{2, -1, 1, 0, 2, 0, -1, -1, 0}, // (subframe number) 1 -{2, -1, 1, 0, 32, 0, -1, -1, 0}, // (subframe number) 5 -{3, -1, 16, 1, 2, 0, -1, -1, 0}, // (subframe number) 1 -{3, -1, 16, 1, 16, 0, -1, -1, 0}, // (subframe number) 4 -{3, -1, 16, 1, 128, 0, -1, -1, 0}, // (subframe number) 7 -{3, -1, 16, 1, 512, 0, -1, -1, 0}, // (subframe number) 9 -{3, -1, 8, 1, 2, 0, -1, -1, 0}, // (subframe number) 1 -{3, -1, 8, 1, 16, 0, -1, -1, 0}, // (subframe number) 4 -{3, -1, 8, 1, 128, 0, -1, -1, 0}, // (subframe number) 7 -{3, -1, 4, 1, 2, 0, -1, -1, 0}, // (subframe number) 1 -{3, -1, 4, 1, 16, 0, -1, -1, 0}, // (subframe number) 4 -{3, -1, 4, 1, 128, 0, -1, -1, 0}, // (subframe number) 7 -{3, -1, 4, 1, 512, 0, -1, -1, 0}, // (subframe number) 9 -{3, -1, 2, 1, 2, 0, -1, -1, 0}, // (subframe number) 1 -{3, -1, 2, 1, 16, 0, -1, -1, 0}, // (subframe number) 4 -{3, -1, 2, 1, 128, 0, -1, -1, 0}, // (subframe number) 7 -{3, -1, 2, 1, 512, 0, -1, -1, 0}, // (subframe number) 9 -{3, -1, 1, 0, 2, 0, -1, -1, 0}, // (subframe number) 1 -{3, -1, 1, 0, 16, 0, -1, -1, 0}, // (subframe number) 4 -{3, -1, 1, 0, 128, 0, -1, -1, 0}, // (subframe number) 7 -{3, -1, 1, 0, 66, 0, -1, -1, 0}, // (subframe number) 1,6 -{3, -1, 1, 0, 132, 0, -1, -1, 0}, // (subframe number) 2,7 -{3, -1, 1, 0, 264, 0, -1, -1, 0}, // (subframe number) 3,8 -{3, -1, 1, 0, 146, 0, -1, -1, 0}, // (subframe number) 1,4,7 -{3, -1, 1, 0, 292, 0, -1, -1, 0}, // (subframe number) 2,5,8 -{3, -1, 1, 0, 584, 0, -1, -1, 0}, // (subframe number) 3, 6, 9 -{3, -1, 1, 0, 341, 0, -1, -1, 0}, // (subframe number) 0,2,4,6,8 -{3, -1, 1, 0, 682, 0, -1, -1, 0}, // (subframe number) 1,3,5,7,9 -{3, -1, 1, 0, 1023, 0, -1, -1, 0}, // (subframe number) 0,1,2,3,4,5,6,7,8,9 -{0xa1, -1, 16, 0, 528, 0, 1, 6, 2}, // (subframe number) 4,9 -{0xa1, -1, 16, 1, 16, 0, 2, 6, 2}, // (subframe number) 4 -{0xa1, -1, 8, 0, 528, 0, 1, 6, 2}, // (subframe number) 4,9 -{0xa1, -1, 8, 1, 16, 0, 2, 6, 2}, // (subframe number) 4 -{0xa1, -1, 4, 0, 528, 0, 1, 6, 2}, // (subframe number) 4,9 -{0xa1, -1, 4, 1, 528, 0, 1, 6, 2}, // (subframe number) 4,9 -{0xa1, -1, 4, 0, 16, 0, 2, 6, 2}, // (subframe number) 4 -{0xa1, -1, 2, 0, 528, 0, 1, 6, 2}, // (subframe number) 4,9 -{0xa1, -1, 2, 0, 2, 0, 2, 6, 2}, // (subframe number) 1 -{0xa1, -1, 2, 0, 16, 0, 2, 6, 2}, // (subframe number) 4 -{0xa1, -1, 2, 0, 128, 0, 2, 6, 2}, // (subframe number) 7 -{0xa1, -1, 1, 0, 16, 0, 1, 6, 2}, // (subframe number) 4 -{0xa1, -1, 1, 0, 66, 0, 1, 6, 2}, // (subframe number) 1,6 -{0xa1, -1, 1, 0, 528, 0, 1, 6, 2}, // (subframe number) 4,9 -{0xa1, -1, 1, 0, 2, 0, 2, 6, 2}, // (subframe number) 1 -{0xa1, -1, 1, 0, 128, 0, 2, 6, 2}, // (subframe number) 7 -{0xa1, -1, 1, 0, 132, 0, 2, 6, 2}, // (subframe number) 2,7 -{0xa1, -1, 1, 0, 146, 0, 2, 6, 2}, // (subframe number) 1,4,7 -{0xa1, -1, 1, 0, 341, 0, 2, 6, 2}, // (subframe number) 0,2,4,6,8 -{0xa1, -1, 1, 0, 1023, 0, 2, 6, 2}, // (subframe number) 0,1,2,3,4,5,6,7,8,9 -{0xa1, -1, 1, 0, 682, 0, 2, 6, 2}, // (subframe number) 1,3,5,7,9 -{0xa1, 0xb1, 2, 0, 528, 0, 1, 7, 2}, // (subframe number) 4,9 -{0xa1, 0xb1, 2, 0, 16, 0, 2, 7, 2}, // (subframe number) 4 -{0xa1, 0xb1, 1, 0, 16, 0, 1, 7, 2}, // (subframe number) 4 -{0xa1, 0xb1, 1, 0, 66, 0, 1, 7, 2}, // (subframe number) 1,6 -{0xa1, 0xb1, 1, 0, 528, 0, 1, 7, 2}, // (subframe number) 4,9 -{0xa1, 0xb1, 1, 0, 2, 0, 2, 7, 2}, // (subframe number) 1 -{0xa1, 0xb1, 1, 0, 128, 0, 2, 7, 2}, // (subframe number) 7 -{0xa1, 0xb1, 1, 0, 146, 0, 2, 7, 2}, // (subframe number) 1,4,7 -{0xa1, 0xb1, 1, 0, 341, 0, 2, 7, 2}, // (subframe number) 0,2,4,6,8 -{0xa2, -1, 16, 1, 580, 0, 1, 3, 4}, // (subframe number) 2,6,9 -{0xa2, -1, 16, 1, 16, 0, 2, 3, 4}, // (subframe number) 4 -{0xa2, -1, 8, 1, 580, 0, 1, 3, 4}, // (subframe number) 2,6,9 -{0xa2, -1, 8, 1, 16, 0, 2, 3, 4}, // (subframe number) 4 -{0xa2, -1, 4, 0, 580, 0, 1, 3, 4}, // (subframe number) 2,6,9 -{0xa2, -1, 4, 0, 16, 0, 2, 3, 4}, // (subframe number) 4 -{0xa2, -1, 2, 1, 580, 0, 1, 3, 4}, // (subframe number) 2,6,9 -{0xa2, -1, 2, 0, 2, 0, 2, 3, 4}, // (subframe number) 1 -{0xa2, -1, 2, 0, 16, 0, 2, 3, 4}, // (subframe number) 4 -{0xa2, -1, 2, 0, 128, 0, 2, 3, 4}, // (subframe number) 7 -{0xa2, -1, 1, 0, 16, 0, 1, 3, 4}, // (subframe number) 4 -{0xa2, -1, 1, 0, 66, 0, 1, 3, 4}, // (subframe number) 1,6 -{0xa2, -1, 1, 0, 528, 0, 1, 3, 4}, // (subframe number) 4,9 -{0xa2, -1, 1, 0, 2, 0, 2, 3, 4}, // (subframe number) 1 -{0xa2, -1, 1, 0, 128, 0, 2, 3, 4}, // (subframe number) 7 -{0xa2, -1, 1, 0, 132, 0, 2, 3, 4}, // (subframe number) 2,7 -{0xa2, -1, 1, 0, 146, 0, 2, 3, 4}, // (subframe number) 1,4,7 -{0xa2, -1, 1, 0, 341, 0, 2, 3, 4}, // (subframe number) 0,2,4,6,8 -{0xa2, -1, 1, 0, 1023, 0, 2, 3, 4}, // (subframe number) 0,1,2,3,4,5,6,7,8,9 -{0xa2, -1, 1, 0, 682, 0, 2, 3, 4}, // (subframe number) 1,3,5,7,9 -{0xa2, 0xb2, 2, 1, 580, 0, 1, 3, 4}, // (subframe number) 2,6,9 -{0xa2, 0xb2, 2, 0, 16, 0, 2, 3, 4}, // (subframe number) 4 -{0xa2, 0xb2, 1, 0, 16, 0, 1, 3, 4}, // (subframe number) 4 -{0xa2, 0xb2, 1, 0, 66, 0, 1, 3, 4}, // (subframe number) 1,6 -{0xa2, 0xb2, 1, 0, 528, 0, 1, 3, 4}, // (subframe number) 4,9 -{0xa2, 0xb2, 1, 0, 2, 0, 2, 3, 4}, // (subframe number) 1 -{0xa2, 0xb2, 1, 0, 128, 0, 2, 3, 4}, // (subframe number) 7 -{0xa2, 0xb2, 1, 0, 146, 0, 2, 3, 4}, // (subframe number) 1,4,7 -{0xa2, 0xb2, 1, 0, 341, 0, 2, 3, 4}, // (subframe number) 0,2,4,6,8 -{0xa2, 0xb2, 1, 0, 1023, 0, 2, 3, 4}, // (subframe number) 0,1,2,3,4,5,6,7,8,9 -{0xa3, -1, 16, 1, 528, 0, 1, 2, 6}, // (subframe number) 4,9 -{0xa3, -1, 16, 1, 16, 0, 2, 2, 6}, // (subframe number) 4 -{0xa3, -1, 8, 1, 528, 0, 1, 2, 6}, // (subframe number) 4,9 -{0xa3, -1, 8, 1, 16, 0, 2, 2, 6}, // (subframe number) 4 -{0xa3, -1, 4, 0, 528, 0, 1, 2, 6}, // (subframe number) 4,9 -{0xa3, -1, 4, 0, 16, 0, 2, 2, 6}, // (subframe number) 4 -{0xa3, -1, 2, 1, 580, 0, 2, 2, 6}, // (subframe number) 2,6,9 -{0xa3, -1, 2, 0, 2, 0, 2, 2, 6}, // (subframe number) 1 -{0xa3, -1, 2, 0, 16, 0, 2, 2, 6}, // (subframe number) 4 -{0xa3, -1, 2, 0, 128, 0, 2, 2, 6}, // (subframe number) 7 -{0xa3, -1, 1, 0, 16, 0, 1, 2, 6}, // (subframe number) 4 -{0xa3, -1, 1, 0, 66, 0, 1, 2, 6}, // (subframe number) 1,6 -{0xa3, -1, 1, 0, 528, 0, 1, 2, 6}, // (subframe number) 4,9 -{0xa3, -1, 1, 0, 2, 0, 2, 2, 6}, // (subframe number) 1 -{0xa3, -1, 1, 0, 128, 0, 2, 2, 6}, // (subframe number) 7 -{0xa3, -1, 1, 0, 132, 0, 2, 2, 6}, // (subframe number) 2,7 -{0xa3, -1, 1, 0, 146, 0, 2, 2, 6}, // (subframe number) 1,4,7 -{0xa3, -1, 1, 0, 341, 0, 2, 2, 6}, // (subframe number) 0,2,4,6,8 -{0xa3, -1, 1, 0, 1023, 0, 2, 2, 6}, // (subframe number) 0,1,2,3,4,5,6,7,8,9 -{0xa3, -1, 1, 0, 682, 0, 2, 2, 6}, // (subframe number) 1,3,5,7,9 -{0xa3, 0xb3, 2, 1, 580, 0, 2, 2, 6}, // (subframe number) 2,6,9 -{0xa3, 0xb3, 2, 0, 16, 0, 2, 2, 6}, // (subframe number) 4 -{0xa3, 0xb3, 1, 0, 16, 0, 1, 2, 6}, // (subframe number) 4 -{0xa3, 0xb3, 1, 0, 66, 0, 1, 2, 6}, // (subframe number) 1,6 -{0xa3, 0xb3, 1, 0, 528, 0, 1, 2, 6}, // (subframe number) 4,9 -{0xa3, 0xb3, 1, 0, 2, 0, 2, 2, 6}, // (subframe number) 1 -{0xa3, 0xb3, 1, 0, 128, 0, 2, 2, 6}, // (subframe number) 7 -{0xa3, 0xb3, 1, 0, 146, 0, 2, 2, 6}, // (subframe number) 1,4,7 -{0xa3, 0xb3, 1, 0, 341, 0, 2, 2, 6}, // (subframe number) 0,2,4,6,8 -{0xa3, 0xb3, 1, 0, 1023, 0, 2, 2, 6}, // (subframe number) 0,1,2,3,4,5,6,7,8,9 -{0xb1, -1, 16, 0, 528, 0, 1, 7, 2}, // (subframe number) 4,9 -{0xb1, -1, 16, 1, 16, 0, 2, 7, 2}, // (subframe number) 4 -{0xb1, -1, 8, 0, 528, 0, 1, 7, 2}, // (subframe number) 4,9 -{0xb1, -1, 8, 1, 16, 0, 2, 7, 2}, // (subframe number) 4 -{0xb1, -1, 4, 0, 528, 0, 1, 7, 2}, // (subframe number) 4,9 -{0xb1, -1, 4, 1, 528, 0, 1, 7, 2}, // (subframe number) 4,9 -{0xb1, -1, 4, 0, 16, 0, 2, 7, 2}, // (subframe number) 4 -{0xb1, -1, 2, 0, 528, 0, 1, 7, 2}, // (subframe number) 4,9 -{0xb1, -1, 2, 0, 2, 0, 2, 7, 2}, // (subframe number) 1 -{0xb1, -1, 2, 0, 16, 0, 2, 7, 2}, // (subframe number) 4 -{0xb1, -1, 2, 0, 128, 0, 2, 7, 2}, // (subframe number) 7 -{0xb1, -1, 1, 0, 16, 0, 1, 7, 2}, // (subframe number) 4 -{0xb1, -1, 1, 0, 66, 0, 1, 7, 2}, // (subframe number) 1,6 -{0xb1, -1, 1, 0, 528, 0, 1, 7, 2}, // (subframe number) 4,9 -{0xb1, -1, 1, 0, 2, 0, 2, 7, 2}, // (subframe number) 1 -{0xb1, -1, 1, 0, 128, 0, 2, 7, 2}, // (subframe number) 7 -{0xb1, -1, 1, 0, 132, 0, 2, 7, 2}, // (subframe number) 2,7 -{0xb1, -1, 1, 0, 146, 0, 2, 7, 2}, // (subframe number) 1,4,7 -{0xb1, -1, 1, 0, 341, 0, 2, 7, 2}, // (subframe number) 0,2,4,6,8 -{0xb1, -1, 1, 0, 1023, 0, 2, 7, 2}, // (subframe number) 0,1,2,3,4,5,6,7,8,9 -{0xb1, -1, 1, 0, 682, 0, 2, 7, 2}, // (subframe number) 1,3,5,7,9 -{0xb4, -1, 16, 0, 528, 0, 2, 1, 12}, // (subframe number) 4,9 -{0xb4, -1, 16, 1, 16, 0, 2, 1, 12}, // (subframe number) 4 -{0xb4, -1, 8, 0, 528, 0, 2, 1, 12}, // (subframe number) 4,9 -{0xb4, -1, 8, 1, 16, 0, 2, 1, 12}, // (subframe number) 4 -{0xb4, -1, 4, 0, 528, 0, 2, 1, 12}, // (subframe number) 4,9 -{0xb4, -1, 4, 0, 16, 0, 2, 1, 12}, // (subframe number) 4 -{0xb4, -1, 4, 1, 528, 0, 2, 1, 12}, // (subframe number) 4,9 -{0xb4, -1, 2, 0, 528, 0, 2, 1, 12}, // (subframe number) 4,9 -{0xb4, -1, 2, 0, 2, 0, 2, 1, 12}, // (subframe number) 1 -{0xb4, -1, 2, 0, 16, 0, 2, 1, 12}, // (subframe number) 4 -{0xb4, -1, 2, 0, 128, 0, 2, 1, 12}, // (subframe number) 7 -{0xb4, -1, 1, 0, 2, 0, 2, 1, 12}, // (subframe number) 1 -{0xb4, -1, 1, 0, 16, 0, 2, 1, 12}, // (subframe number) 4 -{0xb4, -1, 1, 0, 128, 0, 2, 1, 12}, // (subframe number) 7 -{0xb4, -1, 1, 0, 66, 0, 2, 1, 12}, // (subframe number) 1,6 -{0xb4, -1, 1, 0, 132, 0, 2, 1, 12}, // (subframe number) 2,7 -{0xb4, -1, 1, 0, 528, 0, 2, 1, 12}, // (subframe number) 4,9 -{0xb4, -1, 1, 0, 146, 0, 2, 1, 12}, // (subframe number) 1,4,7 -{0xb4, -1, 1, 0, 341, 0, 2, 1, 12}, // (subframe number) 0,2,4,6,8 -{0xb4, -1, 1, 0, 1023, 0, 2, 1, 12}, // (subframe number) 0,1,2,3,4,5,6,7,8,9 -{0xb4, -1, 1, 0, 682, 0, 2, 1, 12}, // (subframe number) 1,3,5,7,9 -{0xc0, -1, 8, 1, 16, 0, 2, 7, 2}, // (subframe number) 4 -{0xc0, -1, 4, 1, 528, 0, 1, 7, 2}, // (subframe number) 4,9 -{0xc0, -1, 4, 0, 16, 0, 2, 7, 2}, // (subframe number) 4 -{0xc0, -1, 2, 0, 528, 0, 1, 7, 2}, // (subframe number) 4,9 -{0xc0, -1, 2, 0, 2, 0, 2, 7, 2}, // (subframe number) 1 -{0xc0, -1, 2, 0, 16, 0, 2, 7, 2}, // (subframe number) 4 -{0xc0, -1, 2, 0, 128, 0, 2, 7, 2}, // (subframe number) 7 -{0xc0, -1, 1, 0, 16, 0, 1, 7, 2}, // (subframe number) 4 -{0xc0, -1, 1, 0, 66, 0, 1, 7, 2}, // (subframe number) 1,6 -{0xc0, -1, 1, 0, 528, 0, 1, 7, 2}, // (subframe number) 4,9 -{0xc0, -1, 1, 0, 2, 0, 2, 7, 2}, // (subframe number) 1 -{0xc0, -1, 1, 0, 128, 0, 2, 7, 2}, // (subframe number) 7 -{0xc0, -1, 1, 0, 132, 0, 2, 7, 2}, // (subframe number) 2,7 -{0xc0, -1, 1, 0, 146, 0, 2, 7, 2}, // (subframe number) 1,4,7 -{0xc0, -1, 1, 0, 341, 0, 2, 7, 2}, // (subframe number) 0,2,4,6,8 -{0xc0, -1, 1, 0, 1023, 0, 2, 7, 2}, // (subframe number) 0,1,2,3,4,5,6,7,8,9 -{0xc0, -1, 1, 0, 682, 0, 2, 7, 2}, // (subframe number) 1,3,5,7,9 -{0xc2, -1, 16, 1, 528, 0, 1, 2, 6}, // (subframe number) 4,9 -{0xc2, -1, 16, 1, 16, 0, 2, 2, 6}, // (subframe number) 4 -{0xc2, -1, 8, 1, 528, 0, 1, 2, 6}, // (subframe number) 4,9 -{0xc2, -1, 8, 1, 16, 0, 2, 2, 6}, // (subframe number) 4 -{0xc2, -1, 4, 0, 528, 0, 1, 2, 6}, // (subframe number) 4,9 -{0xc2, -1, 4, 0, 16, 0, 2, 2, 6}, // (subframe number) 4 -{0xc2, -1, 2, 1, 580, 0, 2, 2, 6}, // (subframe number) 2,6,9 -{0xc2, -1, 2, 0, 2, 0, 2, 2, 6}, // (subframe number) 1 -{0xc2, -1, 2, 0, 16, 0, 2, 2, 6}, // (subframe number) 4 -{0xc2, -1, 2, 0, 128, 0, 2, 2, 6}, // (subframe number) 7 -{0xc2, -1, 1, 0, 16, 0, 1, 2, 6}, // (subframe number) 4 -{0xc2, -1, 1, 0, 66, 0, 1, 2, 6}, // (subframe number) 1,6 -{0xc2, -1, 1, 0, 528, 0, 1, 2, 6}, // (subframe number) 4,9 -{0xc2, -1, 1, 0, 2, 0, 2, 2, 6}, // (subframe number) 1 -{0xc2, -1, 1, 0, 128, 0, 2, 2, 6}, // (subframe number) 7 -{0xc2, -1, 1, 0, 132, 0, 2, 2, 6}, // (subframe number) 2,7 -{0xc2, -1, 1, 0, 146, 0, 2, 2, 6}, // (subframe number) 1,4,7 -{0xc2, -1, 1, 0, 341, 0, 2, 2, 6}, // (subframe number) 0,2,4,6,8 -{0xc2, -1, 1, 0, 1023, 0, 2, 2, 6}, // (subframe number) 0,1,2,3,4,5,6,7,8,9 -{0xc2, -1, 1, 0, 682, 0, 2, 2, 6} // (subframe number) 1,3,5,7,9 -}; -// Table 6.3.3.2-3: Random access configurations for FR1 and unpaired spectrum -int64_t table_6_3_3_2_3_prachConfig_Index [256][9] = { -//format, format, x, y, SFN_nbr, star_symb, slots_sfn, occ_slot, duration -{0, -1, 16, 1, 512, 0, -1, -1, 0}, // (subrame number 9) -{0, -1, 8, 1, 512, 0, -1, -1, 0}, // (subrame number 9) -{0, -1, 4, 1, 512, 0, -1, -1, 0}, // (subrame number 9) -{0, -1, 2, 0, 512, 0, -1, -1, 0}, // (subrame number 9) -{0, -1, 2, 1, 512, 0, -1, -1, 0}, // (subrame number 9) -{0, -1, 2, 0, 16, 0, -1, -1, 0}, // (subrame number 4) -{0, -1, 2, 1, 16, 0, -1, -1, 0}, // (subrame number 4) -{0, -1, 1, 0, 512, 0, -1, -1, 0}, // (subrame number 9) -{0, -1, 1, 0, 256, 0, -1, -1, 0}, // (subrame number 8) -{0, -1, 1, 0, 128, 0, -1, -1, 0}, // (subrame number 7) -{0, -1, 1, 0, 64, 0, -1, -1, 0}, // (subrame number 6) -{0, -1, 1, 0, 32, 0, -1, -1, 0}, // (subrame number 5) -{0, -1, 1, 0, 16, 0, -1, -1, 0}, // (subrame number 4) -{0, -1, 1, 0, 8, 0, -1, -1, 0}, // (subrame number 3) -{0, -1, 1, 0, 4, 0, -1, -1, 0}, // (subrame number 2) -{0, -1, 1, 0, 66, 0, -1, -1, 0}, // (subrame number 1,6) -{0, -1, 1, 0, 66, 7, -1, -1, 0}, // (subrame number 1,6) -{0, -1, 1, 0, 528, 0, -1, -1, 0}, // (subrame number 4,9) -{0, -1, 1, 0, 264, 0, -1, -1, 0}, // (subrame number 3,8) -{0, -1, 1, 0, 132, 0, -1, -1, 0}, // (subrame number 2,7) -{0, -1, 1, 0, 768, 0, -1, -1, 0}, // (subrame number 8,9) -{0, -1, 1, 0, 784, 0, -1, -1, 0}, // (subrame number 4,8,9) -{0, -1, 1, 0, 536, 0, -1, -1, 0}, // (subrame number 3,4,9) -{0, -1, 1, 0, 896, 0, -1, -1, 0}, // (subrame number 7,8,9) -{0, -1, 1, 0, 792, 0, -1, -1, 0}, // (subrame number 3,4,8,9) -{0, -1, 1, 0, 960, 0, -1, -1, 0}, // (subrame number 6,7,8,9) -{0, -1, 1, 0, 594, 0, -1, -1, 0}, // (subrame number 1,4,6,9) -{0, -1, 1, 0, 682, 0, -1, -1, 0}, // (subrame number 1,3,5,7,9) -{1, -1, 16, 1, 128, 0, -1, -1, 0}, // (subrame number 7) -{1, -1, 8, 1, 128, 0, -1, -1, 0}, // (subrame number 7) -{1, -1, 4, 1, 128, 0, -1, -1, 0}, // (subrame number 7) -{1, -1, 2, 0, 128, 0, -1, -1, 0}, // (subrame number 7) -{1, -1, 2, 1, 128, 0, -1, -1, 0}, // (subrame number 7) -{1, -1, 1, 0, 128, 0, -1, -1, 0}, // (subrame number 7) -{2, -1, 16, 1, 64, 0, -1, -1, 0}, // (subrame number 6) -{2, -1, 8, 1, 64, 0, -1, -1, 0}, // (subrame number 6) -{2, -1, 4, 1, 64, 0, -1, -1, 0}, // (subrame number 6) -{2, -1, 2, 0, 64, 7, -1, -1, 0}, // (subrame number 6) -{2, -1, 2, 1, 64, 7, -1, -1, 0}, // (subrame number 6) -{2, -1, 1, 0, 64, 7, -1, -1, 0}, // (subrame number 6) -{3, -1, 16, 1, 512, 0, -1, -1, 0}, // (subrame number 9) -{3, -1, 8, 1, 512, 0, -1, -1, 0}, // (subrame number 9) -{3, -1, 4, 1, 512, 0, -1, -1, 0}, // (subrame number 9) -{3, -1, 2, 0, 512, 0, -1, -1, 0}, // (subrame number 9) -{3, -1, 2, 1, 512, 0, -1, -1, 0}, // (subrame number 9) -{3, -1, 2, 0, 16, 0, -1, -1, 0}, // (subrame number 4) -{3, -1, 2, 1, 16, 0, -1, -1, 0}, // (subrame number 4) -{3, -1, 1, 0, 512, 0, -1, -1, 0}, // (subrame number 9) -{3, -1, 1, 0, 256, 0, -1, -1, 0}, // (subrame number 8) -{3, -1, 1, 0, 128, 0, -1, -1, 0}, // (subrame number 7) -{3, -1, 1, 0, 64, 0, -1, -1, 0}, // (subrame number 6) -{3, -1, 1, 0, 32, 0, -1, -1, 0}, // (subrame number 5) -{3, -1, 1, 0, 16, 0, -1, -1, 0}, // (subrame number 4) -{3, -1, 1, 0, 8, 0, -1, -1, 0}, // (subrame number 3) -{3, -1, 1, 0, 4, 0, -1, -1, 0}, // (subrame number 2) -{3, -1, 1, 0, 66, 0, -1, -1, 0}, // (subrame number 1,6) -{3, -1, 1, 0, 66, 7, -1, -1, 0}, // (subrame number 1,6) -{3, -1, 1, 0, 528, 0, -1, -1, 0}, // (subrame number 4,9) -{3, -1, 1, 0, 264, 0, -1, -1, 0}, // (subrame number 3,8) -{3, -1, 1, 0, 132, 0, -1, -1, 0}, // (subrame number 2,7) -{3, -1, 1, 0, 768, 0, -1, -1, 0}, // (subrame number 8,9) -{3, -1, 1, 0, 784, 0, -1, -1, 0}, // (subrame number 4,8,9) -{3, -1, 1, 0, 536, 0, -1, -1, 0}, // (subrame number 3,4,9) -{3, -1, 1, 0, 896, 0, -1, -1, 0}, // (subrame number 7,8,9) -{3, -1, 1, 0, 792, 0, -1, -1, 0}, // (subrame number 3,4,8,9) -{3, -1, 1, 0, 594, 0, -1, -1, 0}, // (subrame number 1,4,6,9) -{3, -1, 1, 0, 682, 0, -1, -1, 0}, // (subrame number 1,3,5,7,9) -{0xa1, -1, 16, 1, 512, 0, 2, 6, 2}, // (subrame number 9) -{0xa1, -1, 8, 1, 512, 0, 2, 6, 2}, // (subrame number 9) -{0xa1, -1, 4, 1, 512, 0, 1, 6, 2}, // (subrame number 9) -{0xa1, -1, 2, 1, 512, 0, 1, 6, 2}, // (subrame number 9) -{0xa1, -1, 2, 1, 528, 7, 1, 3, 2}, // (subrame number 4,9) -{0xa1, -1, 2, 1, 640, 7, 1, 3, 2}, // (subrame number 7,9) -{0xa1, -1, 2, 1, 640, 0, 1, 6, 2}, // (subrame number 7,9) -{0xa1, -1, 2, 1, 768, 0, 2, 6, 2}, // (subrame number 8,9) -{0xa1, -1, 2, 1, 528, 0, 2, 6, 2}, // (subrame number 4,9) -{0xa1, -1, 2, 1, 924, 0, 1, 6, 2}, // (subrame number 2,3,4,7,8,9) -{0xa1, -1, 1, 0, 512, 0, 2, 6, 2}, // (subrame number 9) -{0xa1, -1, 1, 0, 512, 7, 1, 3, 2}, // (subrame number 9) -{0xa1, -1, 1, 0, 512, 0, 1, 6, 2}, // (subrame number 9) -{0xa1, -1, 1, 0, 768, 0, 2, 6, 2}, // (subrame number 8,9) -{0xa1, -1, 1, 0, 528, 0, 1, 6, 2}, // (subrame number 4,9) -{0xa1, -1, 1, 0, 640, 7, 1, 3, 2}, // (subrame number 7,9) -{0xa1, -1, 1, 0, 792, 0, 1, 6, 2}, // (subrame number 3,4,8,9) -{0xa1, -1, 1, 0, 792, 0, 2, 6, 2}, // (subrame number 3,4,8,9) -{0xa1, -1, 1, 0, 682, 0, 1, 6, 2}, // (subrame number 1,3,5,7,9) -{0xa1, -1, 1, 0, 1023, 7, 1, 3, 2}, // (subrame number 0,1,2,3,4,5,6,7,8,9) -{0xa2, -1, 16, 1, 512, 0, 2, 3, 4}, // (subrame number 9) -{0xa2, -1, 8, 1, 512, 0, 2, 3, 4}, // (subrame number 9) -{0xa2, -1, 4, 1, 512, 0, 1, 3, 4}, // (subrame number 9) -{0xa2, -1, 2, 1, 640, 0, 1, 3, 4}, // (subrame number 7,9) -{0xa2, -1, 2, 1, 768, 0, 2, 3, 4}, // (subrame number 8,9) -{0xa2, -1, 2, 1, 640, 9, 1, 1, 4}, // (subrame number 7,9) -{0xa2, -1, 2, 1, 528, 9, 1, 1, 4}, // (subrame number 4,9) -{0xa2, -1, 2, 1, 528, 0, 2, 3, 4}, // (subrame number 4,9) -{0xa2, -1, 16, 1, 924, 0, 1, 3, 4}, // (subrame number 2,3,4,7,8,9) -{0xa2, -1, 1, 0, 4, 0, 1, 3, 4}, // (subrame number 2) -{0xa2, -1, 1, 0, 128, 0, 1, 3, 4}, // (subrame number 7) -{0xa2, -1, 2, 1, 512, 0, 1, 3, 4}, // (subrame number 9) -{0xa2, -1, 1, 0, 512, 0, 2, 3, 4}, // (subrame number 9) -{0xa2, -1, 1, 0, 512, 9, 1, 1, 4}, // (subrame number 9) -{0xa2, -1, 1, 0, 512, 0, 1, 3, 4}, // (subrame number 9) -{0xa2, -1, 1, 0, 132, 0, 1, 3, 4}, // (subrame number 2,7) -{0xa2, -1, 1, 0, 768, 0, 2, 3, 4}, // (subrame number 8,9) -{0xa2, -1, 1, 0, 528, 0, 1, 3, 4}, // (subrame number 4,9) -{0xa2, -1, 1, 0, 640, 9, 1, 1, 4}, // (subrame number 7,9) -{0xa2, -1, 1, 0, 792, 0, 1, 3, 4}, // (subrame number 3,4,8,9) -{0xa2, -1, 1, 0, 792, 0, 2, 3, 4}, // (subrame number 3,4,8,9) -{0xa2, -1, 1, 0, 682, 0, 1, 3, 4}, // (subrame number 1,3,5,7,9) -{0xa2, -1, 1, 0, 1023, 9, 1, 1, 4}, // (subrame number 0,1,2,3,4,5,6,7,8,9) -{0xa3, -1, 16, 1, 512, 0, 2, 2, 6}, // (subrame number 9) -{0xa3, -1, 8, 1, 512, 0, 2, 2, 6}, // (subrame number 9) -{0xa3, -1, 4, 1, 512, 0, 1, 2, 6}, // (subrame number 9) -{0xa3, -1, 2, 1, 528, 7, 1, 1, 6}, // (subrame number 4,9) -{0xa3, -1, 2, 1, 640, 7, 1, 1, 6}, // (subrame number 7,9) -{0xa3, -1, 2, 1, 640, 0, 1, 2, 6}, // (subrame number 7,9) -{0xa3, -1, 2, 1, 528, 0, 2, 2, 6}, // (subrame number 4,9) -{0xa3, -1, 2, 1, 768, 0, 2, 2, 6}, // (subrame number 8,9) -{0xa3, -1, 2, 1, 924, 0, 1, 2, 6}, // (subrame number 2,3,4,7,8,9) -{0xa3, -1, 1, 0, 4, 0, 1, 2, 6}, // (subrame number 2) -{0xa3, -1, 1, 0, 128, 0, 1, 2, 6}, // (subrame number 7) -{0xa3, -1, 2, 1, 512, 0, 1, 2, 6}, // (subrame number 9) -{0xa3, -1, 1, 0, 512, 0, 2, 2, 6}, // (subrame number 9) -{0xa3, -1, 1, 0, 512, 7, 1, 1, 6}, // (subrame number 9) -{0xa3, -1, 1, 0, 512, 0, 1, 2, 6}, // (subrame number 9) -{0xa3, -1, 1, 0, 132, 0, 1, 2, 6}, // (subrame number 2,7) -{0xa3, -1, 1, 0, 768, 0, 2, 2, 6}, // (subrame number 8,9) -{0xa3, -1, 1, 0, 528, 0, 1, 2, 6}, // (subrame number 4,9) -{0xa3, -1, 1, 0, 640, 7, 1, 1, 6}, // (subrame number 7,9) -{0xa3, -1, 1, 0, 792, 0, 1, 2, 6}, // (subrame number 3,4,8,9) -{0xa3, -1, 1, 0, 792, 0, 2, 2, 6}, // (subrame number 3,4,8,9) -{0xa3, -1, 1, 0, 682, 0, 1, 2, 6}, // (subrame number 1,3,5,7,9) -{0xa3, -1, 1, 0, 1023, 7, 1, 1, 6}, // (subrame number 0,1,2,3,4,5,6,7,8,9) -{0xb1, -1, 4, 1, 512, 2, 1, 6, 2}, // (subrame number 9) -{0xb1, -1, 2, 1, 512, 2, 1, 6, 2}, // (subrame number 9) -{0xb1, -1, 2, 1, 640, 2, 1, 6, 2}, // (subrame number 7,9) -{0xb1, -1, 2, 1, 528, 8, 1, 3, 2}, // (subrame number 4,9) -{0xb1, -1, 2, 1, 528, 2, 2, 6, 2}, // (subrame number 4,9) -{0xb1, -1, 1, 0, 512, 2, 2, 6, 2}, // (subrame number 9) -{0xb1, -1, 1, 0, 512, 8, 1, 3, 2}, // (subrame number 9) -{0xb1, -1, 1, 0, 512, 2, 1, 6, 2}, // (subrame number 9) -{0xb1, -1, 1, 0, 768, 2, 2, 6, 2}, // (subrame number 8,9) -{0xb1, -1, 1, 0, 528, 2, 1, 6, 2}, // (subrame number 4,9) -{0xb1, -1, 1, 0, 640, 8, 1, 3, 2}, // (subrame number 7,9) -{0xb1, -1, 1, 0, 682, 2, 1, 6, 2}, // (subrame number 1,3,5,7,9) -{0xb4, -1, 16, 1, 512, 0, 2, 1, 12}, // (subrame number 9) -{0xb4, -1, 8, 1, 512, 0, 2, 1, 12}, // (subrame number 9) -{0xb4, -1, 4, 1, 512, 2, 1, 1, 12}, // (subrame number 9) -{0xb4, -1, 2, 1, 512, 0, 1, 1, 12}, // (subrame number 9) -{0xb4, -1, 2, 1, 512, 2, 1, 1, 12}, // (subrame number 9) -{0xb4, -1, 2, 1, 640, 2, 1, 1, 12}, // (subrame number 7,9) -{0xb4, -1, 2, 1, 528, 2, 1, 1, 12}, // (subrame number 4,9) -{0xb4, -1, 2, 1, 528, 0, 2, 1, 12}, // (subrame number 4,9) -{0xb4, -1, 2, 1, 768, 0, 2, 1, 12}, // (subrame number 8,9) -{0xb4, -1, 2, 1, 924, 0, 1, 1, 12}, // (subrame number 2,3,4,7,8,9) -{0xb4, -1, 1, 0, 2, 0, 1, 1, 12}, // (subrame number 1) -{0xb4, -1, 1, 0, 4, 0, 1, 1, 12}, // (subrame number 2) -{0xb4, -1, 1, 0, 16, 0, 1, 1, 12}, // (subrame number 4) -{0xb4, -1, 1, 0, 128, 0, 1, 1, 12}, // (subrame number 7) -{0xb4, -1, 1, 0, 512, 0, 1, 1, 12}, // (subrame number 9) -{0xb4, -1, 1, 0, 512, 2, 1, 1, 12}, // (subrame number 9) -{0xb4, -1, 1, 0, 512, 0, 2, 1, 12}, // (subrame number 9) -{0xb4, -1, 1, 0, 528, 2, 1, 1, 12}, // (subrame number 4,9) -{0xb4, -1, 1, 0, 640, 2, 1, 1, 12}, // (subrame number 7,9) -{0xb4, -1, 1, 0, 768, 0, 2, 1, 12}, // (subrame number 8,9) -{0xb4, -1, 1, 0, 792, 2, 1, 1, 12}, // (subrame number 3,4,8,9) -{0xb4, -1, 1, 0, 682, 2, 1, 1, 12}, // (subrame number 1,3,5,7,9) -{0xb4, -1, 1, 0, 1023, 0, 2, 1, 12}, // (subrame number 0,1,2,3,4,5,6,7,8,9) -{0xb4, -1, 1, 0, 1023, 2, 1, 1, 12}, // (subrame number 0,1,2,3,4,5,6,7,8,9) -{0xc0, -1, 16, 1, 512, 2, 2, 6, 2}, // (subrame number 9) -{0xc0, -1, 8, 1, 512, 2, 2, 6, 2}, // (subrame number 9) -{0xc0, -1, 4, 1, 512, 2, 1, 6, 2}, // (subrame number 9) -{0xc0, -1, 2, 1, 512, 2, 1, 6, 2}, // (subrame number 9) -{0xc0, -1, 2, 1, 768, 2, 2, 6, 2}, // (subrame number 8,9) -{0xc0, -1, 2, 1, 640, 2, 1, 6, 2}, // (subrame number 7,9) -{0xc0, -1, 2, 1, 640, 8, 1, 3, 2}, // (subrame number 7,9) -{0xc0, -1, 2, 1, 528, 8, 1, 3, 2}, // (subrame number 4,9) -{0xc0, -1, 2, 1, 528, 2, 2, 6, 2}, // (subrame number 4,9) -{0xc0, -1, 2, 1, 924, 2, 1, 6, 2}, // (subrame number 2,3,4,7,8,9) -{0xc0, -1, 1, 0, 512, 2, 2, 6, 2}, // (subrame number 9) -{0xc0, -1, 1, 0, 512, 8, 1, 3, 2}, // (subrame number 9) -{0xc0, -1, 1, 0, 512, 2, 1, 6, 2}, // (subrame number 9) -{0xc0, -1, 1, 0, 768, 2, 2, 6, 2}, // (subrame number 8,9) -{0xc0, -1, 1, 0, 528, 2, 1, 6, 2}, // (subrame number 4,9) -{0xc0, -1, 1, 0, 640, 8, 1, 3, 2}, // (subrame number 7,9) -{0xc0, -1, 1, 0, 792, 2, 1, 6, 2}, // (subrame number 3,4,8,9) -{0xc0, -1, 1, 0, 792, 2, 2, 6, 2}, // (subrame number 3,4,8,9) -{0xc0, -1, 1, 0, 682, 2, 1, 6, 2}, // (subrame number 1,3,5,7,9) -{0xc0, -1, 1, 0, 1023, 8, 1, 3, 2}, // (subrame number 0,1,2,3,4,5,6,7,8,9) -{0xc2, -1, 16, 1, 512, 2, 2, 2, 6}, // (subrame number 9) -{0xc2, -1, 8, 1, 512, 2, 2, 2, 6}, // (subrame number 9) -{0xc2, -1, 4, 1, 512, 2, 1, 2, 6}, // (subrame number 9) -{0xc2, -1, 2, 1, 512, 2, 1, 2, 6}, // (subrame number 9) -{0xc2, -1, 2, 1, 768, 2, 2, 2, 6}, // (subrame number 8,9) -{0xc2, -1, 2, 1, 640, 2, 1, 2, 6}, // (subrame number 7,9) -{0xc2, -1, 2, 1, 640, 8, 1, 1, 6}, // (subrame number 7,9) -{0xc2, -1, 2, 1, 528, 8, 1, 1, 6}, // (subrame number 4,9) -{0xc2, -1, 2, 1, 528, 2, 2, 2, 6}, // (subrame number 4,9) -{0xc2, -1, 2, 1, 924, 2, 1, 2, 6}, // (subrame number 2,3,4,7,8,9) -{0xc2, -1, 8, 1, 512, 8, 2, 1, 6}, // (subrame number 9) -{0xc2, -1, 4, 1, 512, 8, 1, 1, 6}, // (subrame number 9) -{0xc2, -1, 1, 0, 512, 2, 2, 2, 6}, // (subrame number 9) -{0xc2, -1, 1, 0, 512, 8, 1, 1, 6}, // (subrame number 9) -{0xc2, -1, 1, 0, 512, 2, 1, 2, 6}, // (subrame number 9) -{0xc2, -1, 1, 0, 768, 2, 2, 2, 6}, // (subrame number 8,9) -{0xc2, -1, 1, 0, 528, 2, 1, 2, 6}, // (subrame number 4,9) -{0xc2, -1, 1, 0, 640, 8, 1, 1, 6}, // (subrame number 7,9) -{0xc2, -1, 1, 0, 792, 2, 1, 2, 6}, // (subrame number 3,4,8,9) -{0xc2, -1, 1, 0, 792, 2, 2, 2, 6}, // (subrame number 3,4,8,9) -{0xc2, -1, 1, 0, 682, 2, 1, 2, 6}, // (subrame number 1,3,5,7,9) -{0xc2, -1, 1, 0, 1023, 8, 1, 1, 6}, // (subrame number 0,1,2,3,4,5,6,7,8,9) -{0xa1, 0xb1, 2, 1, 512, 2, 1, 6, 2}, // (subrame number 9) -{0xa1, 0xb1, 2, 1, 528, 8, 1, 3, 2}, // (subrame number 4,9) -{0xa1, 0xb1, 2, 1, 640, 8, 1, 3, 2}, // (subrame number 7,9) -{0xa1, 0xb1, 2, 1, 640, 2, 1, 6, 2}, // (subrame number 7,9) -{0xa1, 0xb1, 2, 1, 528, 2, 2, 6, 2}, // (subrame number 4,9) -{0xa1, 0xb1, 2, 1, 768, 2, 2, 6, 2}, // (subrame number 8,9) -{0xa1, 0xb1, 1, 0, 512, 2, 2, 6, 2}, // (subrame number 9) -{0xa1, 0xb1, 1, 0, 512, 8, 1, 3, 2}, // (subrame number 9) -{0xa1, 0xb1, 1, 0, 512, 2, 1, 6, 2}, // (subrame number 9) -{0xa1, 0xb1, 1, 0, 768, 2, 2, 6, 2}, // (subrame number 8,9) -{0xa1, 0xb1, 1, 0, 528, 2, 1, 6, 2}, // (subrame number 4,9) -{0xa1, 0xb1, 1, 0, 640, 8, 1, 3, 2}, // (subrame number 7,9) -{0xa1, 0xb1, 1, 0, 792, 2, 2, 6, 2}, // (subrame number 3,4,8,9) -{0xa1, 0xb1, 1, 0, 682, 2, 1, 6, 2}, // (subrame number 1,3,5,7,9) -{0xa1, 0xb1, 1, 0, 1023, 8, 1, 3, 2}, // (subrame number 0,1,2,3,4,5,6,7,8,9) -{0xa2, 0xb2, 2, 1, 512, 0, 1, 3, 4}, // (subrame number 9) -{0xa2, 0xb2, 2, 1, 528, 6, 1, 2, 4}, // (subrame number 4,9) -{0xa2, 0xb2, 2, 1, 640, 6, 1, 2, 4}, // (subrame number 7,9) -{0xa2, 0xb2, 2, 1, 528, 0, 2, 3, 4}, // (subrame number 4,9) -{0xa2, 0xb2, 2, 1, 768, 0, 2, 3, 4}, // (subrame number 8,9) -{0xa2, 0xb2, 1, 0, 512, 0, 2, 3, 4}, // (subrame number 9) -{0xa2, 0xb2, 1, 0, 512, 6, 1, 2, 4}, // (subrame number 9) -{0xa2, 0xb2, 1, 0, 512, 0, 1, 3, 4}, // (subrame number 9) -{0xa2, 0xb2, 1, 0, 768, 0, 2, 3, 4}, // (subrame number 8,9) -{0xa2, 0xb2, 1, 0, 528, 0, 1, 3, 4}, // (subrame number 4,9) -{0xa2, 0xb2, 1, 0, 640, 6, 1, 2, 4}, // (subrame number 7,9) -{0xa2, 0xb2, 1, 0, 792, 0, 1, 3, 4}, // (subrame number 3,4,8,9) -{0xa2, 0xb2, 1, 0, 792, 0, 2, 3, 4}, // (subrame number 3,4,8,9) -{0xa2, 0xb2, 1, 0, 682, 0, 1, 3, 4}, // (subrame number 1,3,5,7,9) -{0xa2, 0xb2, 1, 0, 1023, 6, 1, 2, 4}, // (subrame number 0,1,2,3,4,5,6,7,8,9) -{0xa3, 0xb3, 2, 1, 512, 0, 1, 2, 6}, // (subrame number 9) -{0xa3, 0xb3, 2, 1, 528, 2, 1, 2, 6}, // (subrame number 4,9) -{0xa3, 0xb3, 2, 1, 640, 0, 1, 2, 6}, // (subrame number 7,9) -{0xa3, 0xb3, 2, 1, 640, 2, 1, 2, 6}, // (subrame number 7,9) -{0xa3, 0xb3, 2, 1, 528, 0, 2, 2, 6}, // (subrame number 4,9) -{0xa3, 0xb3, 2, 1, 768, 0, 2, 2, 6}, // (subrame number 8,9) -{0xa3, 0xb3, 1, 0, 512, 0, 2, 2, 6}, // (subrame number 9) -{0xa3, 0xb3, 1, 0, 512, 2, 1, 2, 6}, // (subrame number 9) -{0xa3, 0xb3, 1, 0, 512, 0, 1, 2, 6}, // (subrame number 9) -{0xa3, 0xb3, 1, 0, 768, 0, 2, 2, 6}, // (subrame number 8,9) -{0xa3, 0xb3, 1, 0, 528, 0, 1, 2, 6}, // (subrame number 4,9) -{0xa3, 0xb3, 1, 0, 640, 2, 1, 2, 6}, // (subrame number 7,9) -{0xa3, 0xb3, 1, 0, 792, 0, 2, 2, 6}, // (subrame number 3,4,8,9) -{0xa3, 0xb3, 1, 0, 682, 0, 1, 2, 6}, // (subrame number 1,3,5,7,9) -{0xa3, 0xb3, 1, 0, 1023, 2, 1, 2, 6} // (subrame number 0,1,2,3,4,5,6,7,8,9) -}; -// Table 6.3.3.2-4: Random access configurations for FR2 and unpaired spectrum -int64_t table_6_3_3_2_4_prachConfig_Index [256][10] = { -//format, format, x, y, y, SFN_nbr, star_symb, slots_sfn, occ_slot, duration -{0xa1, -1, 16, 1, -1, 567489872400, 0, 2, 6, 2}, // (subframe number :4,9,14,19,24,29,34,39) -{0xa1, -1, 16, 1, -1, 586406201480, 0, 1, 6, 2}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xa1, -1, 8, 1, 2, 550293209600, 0, 2, 6, 2}, // (subframe number :9,19,29,39) -{0xa1, -1, 8, 1, -1, 567489872400, 0, 2, 6, 2}, // (subframe number :4,9,14,19,24,29,34,39) -{0xa1, -1, 8, 1, -1, 586406201480, 0, 1, 6, 2}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xa1, -1, 4, 1, -1, 567489872400, 0, 1, 6, 2}, // (subframe number :4,9,14,19,24,29,34,39) -{0xa1, -1, 4, 1, -1, 567489872400, 0, 2, 6, 2}, // (subframe number :4,9,14,19,24,29,34,39) -{0xa1, -1, 4, 1, -1, 586406201480, 0, 1, 6, 2}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xa1, -1, 2, 1, -1, 551911719040, 0, 2, 6, 2}, // (subframe number :7,15,23,31,39) -{0xa1, -1, 2, 1, -1, 567489872400, 0, 1, 6, 2}, // (subframe number :4,9,14,19,24,29,34,39) -{0xa1, -1, 2, 1, -1, 567489872400, 0, 2, 6, 2}, // (subframe number :4,9,14,19,24,29,34,39) -{0xa1, -1, 2, 1, -1, 586406201480, 0, 1, 6, 2}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xa1, -1, 1, 0, -1, 549756338176, 7, 1, 3, 2}, // (subframe number :19,39) -{0xa1, -1, 1, 0, -1, 168, 0, 1, 6, 2}, // (subframe number :3,5,7) -{0xa1, -1, 1, 0, -1, 567489331200, 7, 1, 3, 2}, // (subframe number :24,29,34,39) -{0xa1, -1, 1, 0, -1, 550293209600, 7, 2, 3, 2}, // (subframe number :9,19,29,39) -{0xa1, -1, 1, 0, -1, 687195422720, 0, 1, 6, 2}, // (subframe number :17,19,37,39) -{0xa1, -1, 1, 0, -1, 550293209600, 0, 2, 6, 2}, // (subframe number :9,19,29,39) -{0xa1, -1, 1, 0, -1, 567489872400, 0, 1, 6, 2}, // (subframe number :4,9,14,19,24,29,34,39) -{0xa1, -1, 1, 0, -1, 567489872400, 7, 1, 3, 2}, // (subframe number :4,9,14,19,24,29,34,39) -{0xa1, -1, 1, 0, -1, 10920, 7, 1, 3, 2}, // (subframe number :3,5,7,9,11,13) -{0xa1, -1, 1, 0, -1, 586405642240, 7, 1, 3, 2}, // (subframe number :23,27,31,35,39) -{0xa1, -1, 1, 0, -1, 551911719040, 0, 1, 6, 2}, // (subframe number :7,15,23,31,39) -{0xa1, -1, 1, 0, -1, 586405642240, 0, 1, 6, 2}, // (subframe number :23,27,31,35,39) -{0xa1, -1, 1, 0, -1, 965830828032, 7, 2, 3, 2}, // (subframe number :13,14,15, 29,30,31,37,38,39) -{0xa1, -1, 1, 0, -1, 586406201480, 7, 1, 3, 2}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xa1, -1, 1, 0, -1, 586406201480, 0, 1, 6, 2}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xa1, -1, 1, 0, -1, 733007751850, 0, 1, 6, 2}, // (subframe number :1,3,5,7,…,37,39) -{0xa1, -1, 1, 0, -1, 1099511627775, 7, 1, 3, 2}, // (subframe number :0,1,2,…,39) -{0xa2, -1, 16, 1, -1, 567489872400, 0, 2, 3, 4}, // (subframe number :4,9,14,19,24,29,34,39) -{0xa2, -1, 16, 1, -1, 586406201480, 0, 1, 3, 4}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xa2, -1, 8, 1, -1, 567489872400, 0, 2, 3, 4}, // (subframe number :4,9,14,19,24,29,34,39) -{0xa2, -1, 8, 1, -1, 586406201480, 0, 1, 3, 4}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xa2, -1, 8, 1, 2, 550293209600, 0, 2, 3, 4}, // (subframe number :9,19,29,39) -{0xa2, -1, 4, 1, -1, 567489872400, 0, 1, 3, 4}, // (subframe number :4,9,14,19,24,29,34,39) -{0xa2, -1, 4, 1, -1, 567489872400, 0, 2, 3, 4}, // (subframe number :4,9,14,19,24,29,34,39) -{0xa2, -1, 4, 1, -1, 586406201480, 0, 1, 3, 4}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xa2, -1, 2, 1, -1, 551911719040, 0, 2, 3, 4}, // (subframe number :7,15,23,31,39) -{0xa2, -1, 2, 1, -1, 567489872400, 0, 1, 3, 4}, // (subframe number :4,9,14,19,24,29,34,39) -{0xa2, -1, 2, 1, -1, 567489872400, 0, 2, 3, 4}, // (subframe number :4,9,14,19,24,29,34,39) -{0xa2, -1, 2, 1, -1, 586406201480, 0, 1, 3, 4}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xa2, -1, 1, 0, -1, 549756338176, 5, 1, 2, 4}, // (subframe number :19,39) -{0xa2, -1, 1, 0, -1, 168, 0, 1, 3, 4}, // (subframe number :3,5,7) -{0xa2, -1, 1, 0, -1, 567489331200, 5, 1, 2, 4}, // (subframe number :24,29,34,39) -{0xa2, -1, 1, 0, -1, 550293209600, 5, 2, 2, 4}, // (subframe number :9,19,29,39) -{0xa2, -1, 1, 0, -1, 687195422720, 0, 1, 3, 4}, // (subframe number :17,19,37,39) -{0xa2, -1, 1, 0, -1, 550293209600, 0, 2, 3, 4}, // (subframe number :9, 19, 29, 39) -{0xa2, -1, 1, 0, -1, 551911719040, 0, 1, 3, 4}, // (subframe number :7,15,23,31,39) -{0xa2, -1, 1, 0, -1, 586405642240, 5, 1, 2, 4}, // (subframe number :23,27,31,35,39) -{0xa2, -1, 1, 0, -1, 586405642240, 0, 1, 3, 4}, // (subframe number :23,27,31,35,39) -{0xa2, -1, 1, 0, -1, 10920, 5, 1, 2, 4}, // (subframe number :3,5,7,9,11,13) -{0xa2, -1, 1, 0, -1, 10920, 0, 1, 3, 4}, // (subframe number :3,5,7,9,11,13) -{0xa2, -1, 1, 0, -1, 567489872400, 5, 1, 2, 4}, // (subframe number :4,9,14,19,24,29,34,39) -{0xa2, -1, 1, 0, -1, 567489872400, 0, 1, 3, 4}, // (subframe number :4,9,14,19,24,29,34,39) -{0xa2, -1, 1, 0, -1, 965830828032, 5, 2, 2, 4}, // (subframe number :13,14,15, 29,30,31,37,38,39) -{0xa2, -1, 1, 0, -1, 586406201480, 5, 1, 2, 4}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xa2, -1, 1, 0, -1, 586406201480, 0, 1, 3, 4}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xa2, -1, 1, 0, -1, 733007751850, 0, 1, 3, 4}, // (subframe number :1,3,5,7,…,37,39) -{0xa2, -1, 1, 0, -1, 1099511627775, 5, 1, 2, 4}, // (subframe number :0,1,2,…,39) -{0xa3, -1, 16, 1, -1, 567489872400, 0, 2, 2, 6}, // (subframe number :4,9,14,19,24,29,34,39) -{0xa3, -1, 16, 1, -1, 586406201480, 0, 1, 2, 6}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xa3, -1, 8, 1, -1, 567489872400, 0, 2, 2, 6}, // (subframe number :4,9,14,19,24,29,34,39) -{0xa3, -1, 8, 1, -1, 586406201480, 0, 1, 2, 6}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xa3, -1, 8, 1, 2, 550293209600, 0, 2, 2, 6}, // (subframe number :9,19,29,39) -{0xa3, -1, 4, 1, -1, 567489872400, 0, 1, 2, 6}, // (subframe number :4,9,14,19,24,29,34,39) -{0xa3, -1, 4, 1, -1, 567489872400, 0, 2, 2, 6}, // (subframe number :4,9,14,19,24,29,34,39) -{0xa3, -1, 4, 1, -1, 586406201480, 0, 1, 2, 6}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xa3, -1, 2, 1, -1, 567489872400, 0, 1, 2, 6}, // (subframe number :4,9,14,19,24,29,34,39) -{0xa3, -1, 2, 1, -1, 567489872400, 0, 2, 2, 6}, // (subframe number :4,9,14,19,24,29,34,39) -{0xa3, -1, 2, 1, -1, 586406201480, 0, 1, 2, 6}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xa3, -1, 1, 0, -1, 549756338176, 7, 1, 1, 6}, // (subframe number :19,39) -{0xa3, -1, 1, 0, -1, 168, 0, 1, 2, 6}, // (subframe number :3,5,7) -{0xa3, -1, 1, 0, -1, 10752, 2, 1, 2, 6}, // (subframe number :9,11,13) -{0xa3, -1, 1, 0, -1, 567489331200, 7, 1, 1, 6}, // (subframe number :24,29,34,39) -{0xa3, -1, 1, 0, -1, 550293209600, 7, 2, 1, 6}, // (subframe number :9,19,29,39) -{0xa3, -1, 1, 0, -1, 687195422720, 0, 1, 2, 6}, // (subframe number :17,19,37,39) -{0xa3, -1, 1, 0, -1, 550293209600, 0, 2, 2, 6}, // (subframe number :9,19,29,39) -{0xa3, -1, 1, 0, -1, 551911719040, 0, 1, 2, 6}, // (subframe number :7,15,23,31,39) -{0xa3, -1, 1, 0, -1, 586405642240, 7, 1, 1, 6}, // (subframe number :23,27,31,35,39) -{0xa3, -1, 1, 0, -1, 586405642240, 0, 1, 2, 6}, // (subframe number :23,27,31,35,39) -{0xa3, -1, 1, 0, -1, 10920, 0, 1, 2, 6}, // (subframe number :3,5,7,9,11,13) -{0xa3, -1, 1, 0, -1, 10920, 7, 1, 1, 6}, // (subframe number :3,5,7,9,11,13) -{0xa3, -1, 1, 0, -1, 567489872400, 0, 1, 2, 6}, // (subframe number :4,9,14,19,24,29,34,39) -{0xa3, -1, 1, 0, -1, 567489872400, 7, 1, 1, 6}, // (subframe number :4,9,14,19,24,29,34,39) -{0xa3, -1, 1, 0, -1, 965830828032, 7, 2, 1, 6}, // (subframe number :13,14,15, 29,30,31,37,38,39) -{0xa3, -1, 1, 0, -1, 586406201480, 7, 1, 1, 6}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xa3, -1, 1, 0, -1, 586406201480, 0, 1, 2, 6}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xa3, -1, 1, 0, -1, 733007751850, 0, 1, 2, 6}, // (subframe number :1,3,5,7,…,37,39) -{0xa3, -1, 1, 0, -1, 1099511627775, 7, 1, 1, 6}, // (subframe number :0,1,2,…,39) -{0xb1, -1, 16, 1, -1, 567489872400, 2, 2, 6, 2}, // (subframe number :4,9,14,19,24,29,34,39) -{0xb1, -1, 8, 1, -1, 567489872400, 2, 2, 6, 2}, // (subframe number :4,9,14,19,24,29,34,39) -{0xb1, -1, 8, 1, 2, 550293209600, 2, 2, 6, 2}, // (subframe number :9,19,29,39) -{0xb1, -1, 4, 1, -1, 567489872400, 2, 2, 6, 2}, // (subframe number :4,9,14,19,24,29,34,39) -{0xb1, -1, 2, 1, -1, 567489872400, 2, 2, 6, 2}, // (subframe number :4,9,14,19,24,29,34,39) -{0xb1, -1, 2, 1, -1, 586406201480, 2, 1, 6, 2}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xb1, -1, 1, 0, -1, 549756338176, 8, 1, 3, 2}, // (subframe number :19,39) -{0xb1, -1, 1, 0, -1, 168, 2, 1, 6, 2}, // (subframe number :3,5,7) -{0xb1, -1, 1, 0, -1, 567489331200, 8, 1, 3, 2}, // (subframe number :24,29,34,39) -{0xb1, -1, 1, 0, -1, 550293209600, 8, 2, 3, 2}, // (subframe number :9,19,29,39) -{0xb1, -1, 1, 0, -1, 687195422720, 2, 1, 6, 2}, // (subframe number :17,19,37,39) -{0xb1, -1, 1, 0, -1, 550293209600, 2, 2, 6, 2}, // (subframe number :9,19,29,39) -{0xb1, -1, 1, 0, -1, 551911719040, 2, 1, 6, 2}, // (subframe number :7,15,23,31,39) -{0xb1, -1, 1, 0, -1, 586405642240, 8, 1, 3, 2}, // (subframe number :23,27,31,35,39) -{0xb1, -1, 1, 0, -1, 586405642240, 2, 1, 6, 2}, // (subframe number :23,27,31,35,39) -{0xb1, -1, 1, 0, -1, 10920, 8, 1, 3, 2}, // (subframe number :3,5,7,9,11,13) -{0xb1, -1, 1, 0, -1, 567489872400, 8, 1, 3, 2}, // (subframe number :4,9,14,19,24,29,34,39) -{0xb1, -1, 1, 0, -1, 567489872400, 2, 1, 6, 2}, // (subframe number :4,9,14,19,24,29,34,39) -{0xb1, -1, 1, 0, -1, 586406201480, 8, 1, 3, 2}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xb1, -1, 1, 0, -1, 965830828032, 8, 2, 3, 2}, // (subframe number :13,14,15, 29,30,31,37,38,39) -{0xb1, -1, 1, 0, -1, 586406201480, 2, 1, 6, 2}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xb1, -1, 1, 0, -1, 733007751850, 2, 1, 6, 2}, // (subframe number :1,3,5,7,…,37,39) -{0xb1, -1, 1, 0, -1, 1099511627775, 8, 1, 3, 2}, // (subframe number :0,1,2,…,39) -{0xb4, -1, 16, 1, 2, 567489872400, 0, 2, 1, 12}, // (subframe number :4,9,14,19,24,29,34,39) -{0xb4, -1, 16, 1, 2, 586406201480, 0, 1, 1, 12}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xb4, -1, 8, 1, 2, 567489872400, 0, 2, 1, 12}, // (subframe number :4,9,14,19,24,29,34,39) -{0xb4, -1, 8, 1, 2, 586406201480, 0, 1, 1, 12}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xb4, -1, 8, 1, 2, 550293209600, 0, 2, 1, 12}, // (subframe number :9,19,29,39) -{0xb4, -1, 4, 1, -1, 567489872400, 0, 1, 1, 12}, // (subframe number :4,9,14,19,24,29,34,39) -{0xb4, -1, 4, 1, -1, 567489872400, 0, 2, 1, 12}, // (subframe number :4,9,14,19,24,29,34,39) -{0xb4, -1, 4, 1, 2, 586406201480, 0, 1, 1, 12}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xb4, -1, 2, 1, -1, 551911719040, 2, 2, 1, 12}, // (subframe number :7,15,23,31,39) -{0xb4, -1, 2, 1, -1, 567489872400, 0, 1, 1, 12}, // (subframe number :4,9,14,19,24,29,34,39) -{0xb4, -1, 2, 1, -1, 567489872400, 0, 2, 1, 12}, // (subframe number :4,9,14,19,24,29,34,39) -{0xb4, -1, 2, 1, -1, 586406201480, 0, 1, 1, 12}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xb4, -1, 1, 0, -1, 549756338176, 2, 2, 1, 12}, // (subframe number :19, 39) -{0xb4, -1, 1, 0, -1, 687195422720, 0, 1, 1, 12}, // (subframe number :17, 19, 37, 39) -{0xb4, -1, 1, 0, -1, 567489331200, 2, 1, 1, 12}, // (subframe number :24,29,34,39) -{0xb4, -1, 1, 0, -1, 550293209600, 2, 2, 1, 12}, // (subframe number :9,19,29,39) -{0xb4, -1, 1, 0, -1, 550293209600, 0, 2, 1, 12}, // (subframe number :9,19,29,39) -{0xb4, -1, 1, 0, -1, 551911719040, 0, 1, 1, 12}, // (subframe number :7,15,23,31,39) -{0xb4, -1, 1, 0, -1, 551911719040, 0, 2, 1, 12}, // (subframe number :7,15,23,31,39) -{0xb4, -1, 1, 0, -1, 586405642240, 0, 1, 1, 12}, // (subframe number :23,27,31,35,39) -{0xb4, -1, 1, 0, -1, 586405642240, 2, 2, 1, 12}, // (subframe number :23,27,31,35,39) -{0xb4, -1, 1, 0, -1, 698880, 0, 1, 1, 12}, // (subframe number :9,11,13,15,17,19) -{0xb4, -1, 1, 0, -1, 10920, 2, 1, 1, 12}, // (subframe number :3,5,7,9,11,13) -{0xb4, -1, 1, 0, -1, 567489872400, 0, 1, 1, 12}, // (subframe number :4,9,14,19,24,29,34,39) -{0xb4, -1, 1, 0, -1, 567489872400, 2, 2, 1, 12}, // (subframe number :4,9,14,19,24,29,34,39) -{0xb4, -1, 1, 0, -1, 965830828032, 2, 2, 1, 12}, // (subframe number :13,14,15, 29,30,31,37,38,39) -{0xb4, -1, 1, 0, -1, 586406201480, 0, 1, 1, 12}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xb4, -1, 1, 0, -1, 586406201480, 2, 1, 1, 12}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xb4, -1, 1, 0, -1, 44739240, 2, 1, 1, 12}, // (subframe number :3, 5, 7, …, 23,25) -{0xb4, -1, 1, 0, -1, 44739240, 0, 2, 1, 12}, // (subframe number :3, 5, 7, …, 23,25) -{0xb4, -1, 1, 0, -1, 733007751850, 0, 1, 1, 12}, // (subframe number :1,3,5,7,…,37,39) -{0xb4, -1, 1, 0, -1, 1099511627775, 2, 1, 1, 12}, // (subframe number :0, 1, 2,…, 39) -{0xc0, -1, 16, 1, -1, 567489872400, 0, 2, 7, 2}, // (subframe number :4,9,14,19,24,29,34,39) -{0xc0, -1, 16, 1, -1, 586406201480, 0, 1, 7, 2}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xc0, -1, 8, 1, -1, 567489872400, 0, 1, 7, 2}, // (subframe number :4,9,14,19,24,29,34,39) -{0xc0, -1, 8, 1, -1, 586406201480, 0, 1, 7, 2}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xc0, -1, 8, 1, 2, 550293209600, 0, 2, 7, 2}, // (subframe number :9,19,29,39) -{0xc0, -1, 4, 1, -1, 567489872400, 0, 1, 7, 2}, // (subframe number :4,9,14,19,24,29,34,39) -{0xc0, -1, 4, 1, -1, 567489872400, 0, 2, 7, 2}, // (subframe number :4,9,14,19,24,29,34,39) -{0xc0, -1, 4, 1, -1, 586406201480, 0, 1, 7, 2}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xc0, -1, 2, 1, -1, 551911719040, 0, 2, 7, 2}, // (subframe number :7,15,23,31,39) -{0xc0, -1, 2, 1, -1, 567489872400, 0, 1, 7, 2}, // (subframe number :4,9,14,19,24,29,34,39) -{0xc0, -1, 2, 1, -1, 567489872400, 0, 2, 7, 2}, // (subframe number :4,9,14,19,24,29,34,39) -{0xc0, -1, 2, 1, -1, 586406201480, 0, 1, 7, 2}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xc0, -1, 1, 0, -1, 549756338176, 8, 1, 3, 2}, // (subframe number :19,39) -{0xc0, -1, 1, 0, -1, 168, 0, 1, 7, 2}, // (subframe number :3,5,7) -{0xc0, -1, 1, 0, -1, 567489331200, 8, 1, 3, 2}, // (subframe number :24,29,34,39) -{0xc0, -1, 1, 0, -1, 550293209600, 8, 2, 3, 2}, // (subframe number :9,19,29,39) -{0xc0, -1, 1, 0, -1, 687195422720, 0, 1, 7, 2}, // (subframe number :17,19,37,39) -{0xc0, -1, 1, 0, -1, 550293209600, 0, 2, 7, 2}, // (subframe number :9,19,29,39) -{0xc0, -1, 1, 0, -1, 586405642240, 8, 1, 3, 2}, // (subframe number :23,27,31,35,39) -{0xc0, -1, 1, 0, -1, 551911719040, 0, 1, 7, 2}, // (subframe number :7,15,23,31,39) -{0xc0, -1, 1, 0, -1, 586405642240, 0, 1, 7, 2}, // (subframe number :23,27,31,35,39) -{0xc0, -1, 1, 0, -1, 10920, 8, 1, 3, 2}, // (subframe number :3,5,7,9,11,13) -{0xc0, -1, 1, 0, -1, 567489872400, 8, 1, 3, 2}, // (subframe number :4,9,14,19,24,29,34,39) -{0xc0, -1, 1, 0, -1, 567489872400, 0, 1, 7, 2}, // (subframe number :4,9,14,19,24,29,34,39) -{0xc0, -1, 1, 0, -1, 965830828032, 8, 2, 3, 2}, // (subframe number :13,14,15, 29,30,31,37,38,39) -{0xc0, -1, 1, 0, -1, 586406201480, 8, 1, 3, 2}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xc0, -1, 1, 0, -1, 586406201480, 0, 1, 7, 2}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xc0, -1, 1, 0, -1, 733007751850, 0, 1, 7, 2}, // (subframe number :1,3,5,7,…,37,39) -{0xc0, -1, 1, 0, -1, 1099511627775, 8, 1, 3, 2}, // (subframe number :0,1,2,…,39) -{0xc2, -1, 16, 1, -1, 567489872400, 0, 2, 2, 6}, // (subframe number :4,9,14,19,24,29,34,39) -{0xc2, -1, 16, 1, -1, 586406201480, 0, 1, 2, 6}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xc2, -1, 8, 1, -1, 567489872400, 0, 2, 2, 6}, // (subframe number :4,9,14,19,24,29,34,39) -{0xc2, -1, 8, 1, -1, 586406201480, 0, 1, 2, 6}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xc2, -1, 8, 1, 2, 550293209600, 0, 2, 2, 6}, // (subframe number :9,19,29,39) -{0xc2, -1, 4, 1, -1, 567489872400, 0, 1, 2, 6}, // (subframe number :4,9,14,19,24,29,34,39) -{0xc2, -1, 4, 1, -1, 567489872400, 0, 2, 2, 6}, // (subframe number :4,9,14,19,24,29,34,39) -{0xc2, -1, 4, 1, -1, 586406201480, 0, 1, 2, 6}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xc2, -1, 2, 1, -1, 551911719040, 2, 2, 2, 6}, // (subframe number :7,15,23,31,39) -{0xc2, -1, 2, 1, -1, 567489872400, 0, 1, 2, 6}, // (subframe number :4,9,14,19,24,29,34,39) -{0xc2, -1, 2, 1, -1, 567489872400, 0, 2, 2, 6}, // (subframe number :4,9,14,19,24,29,34,39) -{0xc2, -1, 2, 1, -1, 586406201480, 0, 1, 2, 6}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xc2, -1, 1, 0, -1, 549756338176, 2, 1, 2, 6}, // (subframe number :19,39) -{0xc2, -1, 1, 0, -1, 168, 0, 1, 2, 6}, // (subframe number :3,5,7) -{0xc2, -1, 1, 0, -1, 567489331200, 7, 1, 1, 6}, // (subframe number :24,29,34,39) -{0xc2, -1, 1, 0, -1, 550293209600, 7, 2, 1, 6}, // (subframe number :9,19,29,39) -{0xc2, -1, 1, 0, -1, 687195422720, 0, 1, 2, 6}, // (subframe number :17,19,37,39) -{0xc2, -1, 1, 0, -1, 550293209600, 2, 2, 2, 6}, // (subframe number :9,19,29,39) -{0xc2, -1, 1, 0, -1, 551911719040, 2, 1, 2, 6}, // (subframe number :7,15,23,31,39) -{0xc2, -1, 1, 0, -1, 10920, 7, 1, 1, 6}, // (subframe number :3,5,7,9,11,13) -{0xc2, -1, 1, 0, -1, 586405642240, 7, 2, 1, 6}, // (subframe number :23,27,31,35,39) -{0xc2, -1, 1, 0, -1, 586405642240, 0, 1, 2, 6}, // (subframe number :23,27,31,35,39) -{0xc2, -1, 1, 0, -1, 567489872400, 7, 2, 1, 6}, // (subframe number :4,9,14,19,24,29,34,39) -{0xc2, -1, 1, 0, -1, 567489872400, 2, 1, 2, 6}, // (subframe number :4,9,14,19,24,29,34,39) -{0xc2, -1, 1, 0, -1, 965830828032, 7, 2, 1, 6}, // (subframe number :13,14,15, 29,30,31,37,38,39) -{0xc2, -1, 1, 0, -1, 586406201480, 7, 1, 1, 6}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xc2, -1, 1, 0, -1, 586406201480, 0, 1, 2, 6}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xc2, -1, 1, 0, -1, 733007751850, 0, 1, 2, 6}, // (subframe number :1,3,5,7,…,37,39) -{0xc2, -1, 1, 0, -1, 1099511627775, 7, 1, 1, 6}, // (subframe number :0,1,2,…,39) -{0xa1, 0xb1, 16, 1, -1, 567489872400, 2, 1, 6, 2}, // (subframe number :4,9,14,19,24,29,34,39) -{0xa1, 0xb1, 16, 1, -1, 586406201480, 2, 1, 6, 2}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xa1, 0xb1, 8, 1, -1, 567489872400, 2, 1, 6, 2}, // (subframe number :4,9,14,19,24,29,34,39) -{0xa1, 0xb1, 8, 1, -1, 586406201480, 2, 1, 6, 2}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xa1, 0xb1, 4, 1, -1, 567489872400, 2, 1, 6, 2}, // (subframe number :4,9,14,19,24,29,34,39) -{0xa1, 0xb1, 4, 1, -1, 586406201480, 2, 1, 6, 2}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xa1, 0xb1, 2, 1, -1, 567489872400, 2, 1, 6, 2}, // (subframe number :4,9,14,19,24,29,34,39) -{0xa1, 0xb1, 1, 0, -1, 549756338176, 8, 1, 3, 2}, // (subframe number :19,39) -{0xa1, 0xb1, 1, 0, -1, 550293209600, 8, 1, 3, 2}, // (subframe number :9,19,29,39) -{0xa1, 0xb1, 1, 0, -1, 687195422720, 2, 1, 6, 2}, // (subframe number :17,19,37,39) -{0xa1, 0xb1, 1, 0, -1, 550293209600, 2, 2, 6, 2}, // (subframe number :9,19,29,39) -{0xa1, 0xb1, 1, 0, -1, 586405642240, 8, 1, 3, 2}, // (subframe number :23,27,31,35,39) -{0xa1, 0xb1, 1, 0, -1, 551911719040, 2, 1, 6, 2}, // (subframe number :7,15,23,31,39) -{0xa1, 0xb1, 1, 0, -1, 586405642240, 2, 1, 6, 2}, // (subframe number :23,27,31,35,39) -{0xa1, 0xb1, 1, 0, -1, 567489872400, 8, 1, 3, 2}, // (subframe number :4,9,14,19,24,29,34,39) -{0xa1, 0xb1, 1, 0, -1, 567489872400, 2, 1, 6, 2}, // (subframe number :4,9,14,19,24,29,34,39) -{0xa1, 0xb1, 1, 0, -1, 586406201480, 2, 1, 6, 2}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xa1, 0xb1, 1, 0, -1, 733007751850, 2, 1, 6, 2}, // (subframe number :1,3,5,7,…,37,39) -{0xa2, 0xb2, 16, 1, -1, 567489872400, 2, 1, 3, 4}, // (subframe number :4,9,14,19,24,29,34,39) -{0xa2, 0xb2, 16, 1, -1, 586406201480, 2, 1, 3, 4}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xa2, 0xb2, 8, 1, -1, 567489872400, 2, 1, 3, 4}, // (subframe number :4,9,14,19,24,29,34,39) -{0xa2, 0xb2, 8, 1, -1, 586406201480, 2, 1, 3, 4}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xa2, 0xb2, 4, 1, -1, 567489872400, 2, 1, 3, 4}, // (subframe number :4,9,14,19,24,29,34,39) -{0xa2, 0xb2, 4, 1, -1, 586406201480, 2, 1, 3, 4}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xa2, 0xb2, 2, 1, -1, 567489872400, 2, 1, 3, 4}, // (subframe number :4,9,14,19,24,29,34,39) -{0xa2, 0xb2, 1, 0, -1, 549756338176, 6, 1, 2, 4}, // (subframe number :19,39) -{0xa2, 0xb2, 1, 0, -1, 550293209600, 6, 1, 2, 4}, // (subframe number :9,19,29,39) -{0xa2, 0xb2, 1, 0, -1, 687195422720, 2, 1, 3, 4}, // (subframe number :17,19,37,39) -{0xa2, 0xb2, 1, 0, -1, 550293209600, 2, 2, 3, 4}, // (subframe number :9,19,29,39) -{0xa2, 0xb2, 1, 0, -1, 586405642240, 6, 1, 2, 4}, // (subframe number :23,27,31,35,39) -{0xa2, 0xb2, 1, 0, -1, 551911719040, 2, 1, 3, 4}, // (subframe number :7,15,23,31,39) -{0xa2, 0xb2, 1, 0, -1, 586405642240, 2, 1, 3, 4}, // (subframe number :23,27,31,35,39) -{0xa2, 0xb2, 1, 0, -1, 567489872400, 6, 1, 2, 4}, // (subframe number :4,9,14,19,24,29,34,39) -{0xa2, 0xb2, 1, 0, -1, 567489872400, 2, 1, 3, 4}, // (subframe number :4,9,14,19,24,29,34,39) -{0xa2, 0xb2, 1, 0, -1, 586406201480, 2, 1, 3, 4}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xa2, 0xb2, 1, 0, -1, 733007751850, 2, 1, 3, 4}, // (subframe number :1,3,5,7,…,37,39) -{0xa3, 0xb3, 16, 1, -1, 567489872400, 2, 1, 2, 6}, // (subframe number :4,9,14,19,24,29,34,39) -{0xa3, 0xb3, 16, 1, -1, 586406201480, 2, 1, 2, 6}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xa3, 0xb3, 8, 1, -1, 567489872400, 2, 1, 2, 6}, // (subframe number :4,9,14,19,24,29,34,39) -{0xa3, 0xb3, 8, 1, -1, 586406201480, 2, 1, 2, 6}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xa3, 0xb3, 4, 1, -1, 567489872400, 2, 1, 2, 6}, // (subframe number :4,9,14,19,24,29,34,39) -{0xa3, 0xb3, 4, 1, -1, 586406201480, 2, 1, 2, 6}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xa3, 0xb3, 2, 1, -1, 567489872400, 2, 1, 2, 6}, // (subframe number :4,9,14,19,24,29,34,39) -{0xa3, 0xb3, 1, 0, -1, 549756338176, 2, 1, 2, 6}, // (subframe number :19,39) -{0xa3, 0xb3, 1, 0, -1, 550293209600, 2, 1, 2, 6}, // (subframe number :9,19,29,39) -{0xa3, 0xb3, 1, 0, -1, 687195422720, 2, 1, 2, 6}, // (subframe number :17,19,37,39) -{0xa3, 0xb3, 1, 0, -1, 550293209600, 2, 2, 2, 6}, // (subframe number :9,19,29,39) -{0xa3, 0xb3, 1, 0, -1, 551911719040, 2, 1, 2, 6}, // (subframe number :7,15,23,31,39) -{0xa3, 0xb3, 1, 0, -1, 586405642240, 2, 1, 2, 6}, // (subframe number :23,27,31,35,39) -{0xa3, 0xb3, 1, 0, -1, 586405642240, 2, 2, 2, 6}, // (subframe number :23,27,31,35,39) -{0xa3, 0xb3, 1, 0, -1, 567489872400, 2, 1, 2, 6}, // (subframe number :4,9,14,19,24,29,34,39) -{0xa3, 0xb3, 1, 0, -1, 567489872400, 2, 2, 2, 6}, // (subframe number :4,9,14,19,24,29,34,39) -{0xa3, 0xb3, 1, 0, -1, 586406201480, 2, 1, 2, 6}, // (subframe number :3,7,11,15,19,23,27,31,35,39) -{0xa3, 0xb3, 1, 0, -1, 733007751850, 2, 1, 2, 6} // (subframe number :1,3,5,7,…,37,39) -}; diff --git a/openair1/PHY/NR_TRANSPORT/nr_prach_common.c b/openair1/PHY/NR_TRANSPORT/nr_prach_common.c index e1b80a87a2..a95c519d43 100644 --- a/openair1/PHY/NR_TRANSPORT/nr_prach_common.c +++ b/openair1/PHY/NR_TRANSPORT/nr_prach_common.c @@ -34,15 +34,15 @@ #include "PHY/impl_defs_nr.h" #include "PHY/defs_nr_UE.h" #include "PHY/NR_TRANSPORT/nr_prach.h" -#include "PHY/NR_TRANSPORT/nr_transport_proto_common.h" +#include "PHY/NR_TRANSPORT/nr_transport_common_proto.h" #include "common/utils/LOG/log.h" #include "common/utils/LOG/vcd_signal_dumper.h" - +#include "openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h" #include "T.h" -void init_nr_prach_tables(int N_ZC); -void dump_nr_prach_config(NR_DL_FRAME_PARMS *frame_parms,uint8_t subframe) { + +/*void dump_nr_prach_config(NR_DL_FRAME_PARMS *frame_parms,uint8_t subframe) { FILE *fd; @@ -76,23 +76,13 @@ void dump_nr_prach_config(NR_DL_FRAME_PARMS *frame_parms,uint8_t subframe) { fprintf(fd,"prach_config: n_ra_prboffset = %d\n",frame_parms->prach_config_common.prach_ConfigInfo.msg1_frequencystart); fclose(fd); -} +}*/ // This function computes the du -void nr_fill_du(uint8_t prach_fmt) +void nr_fill_du(uint16_t N_ZC,uint16_t *prach_root_sequence_map) { uint16_t iu,u,p; - uint16_t N_ZC; - uint16_t *prach_root_sequence_map; - - if (prach_fmt<4) { - N_ZC = 839; - prach_root_sequence_map = prach_root_sequence_map_0_3; - } else { - N_ZC = 139; - prach_root_sequence_map = prach_root_sequence_map_abc; - } for (iu=0; iu<(N_ZC-1); iu++) { @@ -107,214 +97,49 @@ void nr_fill_du(uint8_t prach_fmt) } -int is_nr_prach_subframe(NR_DL_FRAME_PARMS *frame_parms,uint32_t frame, uint8_t subframe) { - - uint8_t prach_ConfigIndex = frame_parms->prach_config_common.prach_ConfigInfo.prach_ConfigIndex; - /* - // For FR1 paired - if (((frame%table_6_3_3_2_2_prachConfig_Index[prach_ConfigIndex][2]) == table_6_3_3_2_2_prachConfig_Index[prach_ConfigIndex][3]) && - ((table_6_3_3_2_2_prachConfig_Index[prach_ConfigIndex][4]&(1<slots_per_subframe; - // when were in the last slot of the subframe and this is a PRACH subframe ,return 1 - if (((slot%fp->slots_per_subframe) == fp->slots_per_subframe-1)&& - (is_nr_prach_subframe(fp,frame,subframe))) return (1); - else return(0); -} - -uint16_t get_nr_prach_fmt(int prach_ConfigIndex,lte_frame_type_t frame_type, nr_frequency_range_e fr) -{ - - if (frame_type==FDD) return (table_6_3_3_2_2_prachConfig_Index[prach_ConfigIndex][0]); // if using table 6.3.3.2-2: Random access configurations for FR1 and paired spectrum/supplementary uplink - else if (fr==nr_FR1) return (table_6_3_3_2_3_prachConfig_Index[prach_ConfigIndex][0]); // if using table 6.3.3.2-3: Random access configurations for FR1 and unpaired spectrum - else AssertFatal(1==0,"FR2 prach configuration not supported yet\n"); - // For FR2 not implemented. FIXME -} - -void compute_nr_prach_seq(uint16_t rootSequenceIndex, - uint8_t prach_ConfigIndex, - uint8_t zeroCorrelationZoneConfig, - uint8_t highSpeedFlag, - lte_frame_type_t frame_type, - nr_frequency_range_e fr, - uint32_t X_u[64][839]) -{ +void compute_nr_prach_seq(uint8_t short_sequence, + uint8_t num_sequences, + uint8_t rootSequenceIndex, + uint32_t X_u[64][839]){ // Compute DFT of x_u => X_u[k] = x_u(inv(u)*k)^* X_u[k] = exp(j\pi u*inv(u)*k*(inv(u)*k+1)/N_ZC) - unsigned int k,inv_u,i,NCS=0,num_preambles; + unsigned int k,inv_u,i; int N_ZC; - uint8_t prach_fmt = get_nr_prach_fmt(prach_ConfigIndex,frame_type,fr); + uint16_t *prach_root_sequence_map; - uint16_t u, preamble_offset; - uint16_t n_shift_ra,n_shift_ra_bar, d_start,numshift; - uint8_t not_found; + uint16_t u; VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_UE_COMPUTE_PRACH, VCD_FUNCTION_IN); -#ifdef NR_PRACH_DEBUG - LOG_I(PHY,"compute_prach_seq: NCS_config %d, prach_fmt %x\n",zeroCorrelationZoneConfig, prach_fmt); -#endif + LOG_D(PHY,"compute_prach_seq: prach short sequence %x, num_sequences %d, rootSequenceIndex %d\n", short_sequence, num_sequences, rootSequenceIndex); - - N_ZC = (prach_fmt < 4) ? 839 : 139; + N_ZC = (short_sequence) ? 139 : 839; //init_prach_tables(N_ZC); //moved to phy_init_lte_ue/eNB, since it takes to long in real-time init_nr_prach_tables(N_ZC); - if (prach_fmt < 4) { - prach_root_sequence_map = prach_root_sequence_map_0_3; - } else { + if (short_sequence) { // FIXME cannot be reached prach_root_sequence_map = prach_root_sequence_map_abc; - } - - -#ifdef PRACH_DEBUG - LOG_I( PHY, "compute_prach_seq: done init prach_tables\n" ); -#endif - - - - - int restricted_Type = 0; //this is hardcoded ('0' for restricted_TypeA; and '1' for restricted_TypeB). FIXME - - if (highSpeedFlag== 0) { - -#ifdef PRACH_DEBUG - LOG_I(PHY,"Low speed prach : NCS_config %d\n",zeroCorrelationZoneConfig); -#endif - - AssertFatal(zeroCorrelationZoneConfig<=15, - "FATAL, Illegal Ncs_config for unrestricted format %"PRIu8"\n", zeroCorrelationZoneConfig ); - if (prach_fmt<3) NCS = NCS_unrestricted_delta_f_RA_125[zeroCorrelationZoneConfig]; - if (prach_fmt==3) NCS = NCS_unrestricted_delta_f_RA_5[zeroCorrelationZoneConfig]; - if (prach_fmt>3) NCS = NCS_unrestricted_delta_f_RA_15[zeroCorrelationZoneConfig]; - - num_preambles = (NCS==0) ? 64 : ((64*NCS)/N_ZC); - - if (NCS>0) num_preambles++; - - preamble_offset = 0; } else { - -#ifdef PRACH_DEBUG - LOG_I( PHY, "high speed prach : NCS_config %"PRIu8"\n", zeroCorrelationZoneConfig ); -#endif - - AssertFatal(zeroCorrelationZoneConfig<=14, - "FATAL, Illegal Ncs_config for restricted format %"PRIu8"\n", zeroCorrelationZoneConfig ); - if (prach_fmt<3){ - if (restricted_Type == 0) NCS = NCS_restricted_TypeA_delta_f_RA_125[zeroCorrelationZoneConfig]; // for TypeA, this is hardcoded. FIXME - if (restricted_Type == 1) NCS = NCS_restricted_TypeB_delta_f_RA_125[zeroCorrelationZoneConfig]; // for TypeB, this is hardcoded. FIXME - } - if (prach_fmt==3){ - if (restricted_Type == 0) NCS = NCS_restricted_TypeA_delta_f_RA_5[zeroCorrelationZoneConfig]; // for TypeA, this is hardcoded. FIXME - if (restricted_Type == 1) NCS = NCS_restricted_TypeB_delta_f_RA_5[zeroCorrelationZoneConfig]; // for TypeB, this is hardcoded. FIXME - } - if (prach_fmt>3){ - - } - - nr_fill_du(prach_fmt); - - num_preambles = 64; // compute ZC sequence for 64 possible roots - // find first non-zero shift root (stored in preamble_offset) - not_found = 1; - preamble_offset = 0; - - while (not_found == 1) { - // current root depending on rootSequenceIndex - int index = (rootSequenceIndex + preamble_offset) % N_ZC; - - if (prach_fmt<4) { - // prach_root_sequence_map points to prach_root_sequence_map0_3 - DevAssert( index < sizeof(prach_root_sequence_map_0_3) / sizeof(prach_root_sequence_map_0_3[0]) ); - } else { - // prach_root_sequence_map points to prach_root_sequence_map4 - DevAssert( index < sizeof(prach_root_sequence_map_abc) / sizeof(prach_root_sequence_map_abc[0]) ); - } - - u = prach_root_sequence_map[index]; - - uint16_t n_group_ra = 0; - - if ( (nr_du[u]<(N_ZC/3)) && (nr_du[u]>=NCS) ) { - n_shift_ra = nr_du[u]/NCS; - d_start = (nr_du[u]<<1) + (n_shift_ra * NCS); - n_group_ra = N_ZC/d_start; - n_shift_ra_bar = max(0,(N_ZC-(nr_du[u]<<1)-(n_group_ra*d_start))/N_ZC); - } else if ( (nr_du[u]>=(N_ZC/3)) && (nr_du[u]<=((N_ZC - NCS)>>1)) ) { - n_shift_ra = (N_ZC - (nr_du[u]<<1))/NCS; - d_start = N_ZC - (nr_du[u]<<1) + (n_shift_ra * NCS); - n_group_ra = nr_du[u]/d_start; - n_shift_ra_bar = min(n_shift_ra,max(0,(nr_du[u]- (n_group_ra*d_start))/NCS)); - } else { - n_shift_ra = 0; - n_shift_ra_bar = 0; - } - - // This is the number of cyclic shifts for the current root u - numshift = (n_shift_ra*n_group_ra) + n_shift_ra_bar; - - // skip to next root and recompute parameters if numshift==0 - if (numshift>0) - not_found = 0; - else - preamble_offset++; - } + prach_root_sequence_map = prach_root_sequence_map_0_3; } -#ifdef PRACH_DEBUG + LOG_D( PHY, "compute_prach_seq: done init prach_tables\n" ); - if (NCS>0) - LOG_I( PHY, "Initializing %u preambles for PRACH (NCS_config %"PRIu8", NCS %u, N_ZC/NCS %u)\n", - num_preambles, zeroCorrelationZoneConfig, NCS, N_ZC/NCS ); + for (i=0; i u=%d\n",index,u); inv_u = nr_ZC_inv[u]; // multiplicative inverse of u @@ -322,8 +147,8 @@ void compute_nr_prach_seq(uint16_t rootSequenceIndex, // for the unrestricted case X_u[0] is the first root indicated by the rootSequenceIndex for (k=0; k -#include "nfapi_interface.h" - -// Functions below implement 36-211 and 36-212 - -/** @addtogroup _PHY_TRANSPORT_ - * @{ - */ - -void fill_UE_dlsch_MCH(PHY_VARS_NR_UE *ue,int mcs,int ndi,int rvidx,int eNB_id); - -int rx_pmch(PHY_VARS_NR_UE *phy_vars_ue, - unsigned char eNB_id, - uint8_t subframe, - unsigned char symbol); - -/** \brief Dump OCTAVE/MATLAB files for PMCH debugging - @param phy_vars_ue Pointer to UE variables - @param eNB_id index of eNB in ue variables - @param coded_bits_per_codeword G from 36.211 - @param subframe Index of subframe - @returns 0 on success -*/ -void dump_mch(PHY_VARS_NR_UE *phy_vars_ue,uint8_t eNB_id,uint16_t coded_bits_per_codeword,int subframe); - - - -/** \brief This function computes the LLRs for ML (max-logsum approximation) dual-stream QPSK/QPSK reception. - @param stream0_in Input from channel compensated (MR combined) stream 0 - @param stream1_in Input from channel compensated (MR combined) stream 1 - @param stream0_out Output from LLR unit for stream0 - @param rho01 Cross-correlation between channels (MR combined) - @param length in complex channel outputs*/ -void qpsk_qpsk(int16_t *stream0_in, - int16_t *stream1_in, - int16_t *stream0_out, - int16_t *rho01, - int32_t length); - -/** \brief This function perform LLR computation for dual-stream (QPSK/QPSK) transmission. - @param frame_parms Frame descriptor structure - @param rxdataF_comp Compensated channel output - @param rxdataF_comp_i Compensated channel output for interference - @param rho_i Correlation between channel of signal and inteference - @param dlsch_llr llr output - @param symbol OFDM symbol index in sub-frame - @param first_symbol_flag flag to indicate this is the first symbol of the dlsch - @param nb_rb number of RBs for this allocation - @param pbch_pss_sss_adj Number of channel bits taken by PBCH/PSS/SSS - @param llr128p pointer to pointer to symbol in dlsch_llr*/ -int32_t nr_dlsch_qpsk_qpsk_llr(NR_DL_FRAME_PARMS *frame_parms, - int32_t **rxdataF_comp, - int32_t **rxdataF_comp_i, - int32_t **rho_i, - int16_t *dlsch_llr, - uint8_t symbol, - uint32_t len, - uint8_t first_symbol_flag, - uint16_t nb_rb, - uint16_t pbch_pss_sss_adj, - int16_t **llr128p); - -/** \brief This function computes the LLRs for ML (max-logsum approximation) dual-stream QPSK/16QAM reception. - @param stream0_in Input from channel compensated (MR combined) stream 0 - @param stream1_in Input from channel compensated (MR combined) stream 1 - @param ch_mag_i Input from scaled channel magnitude square of h0'*g1 - @param stream0_out Output from LLR unit for stream0 - @param rho01 Cross-correlation between channels (MR combined) - @param length in complex channel outputs*/ -void qpsk_qam16(int16_t *stream0_in, - int16_t *stream1_in, - short *ch_mag_i, - int16_t *stream0_out, - int16_t *rho01, - int32_t length); - -/** \brief This function perform LLR computation for dual-stream (QPSK/16QAM) transmission. - @param frame_parms Frame descriptor structure - @param rxdataF_comp Compensated channel output - @param rxdataF_comp_i Compensated channel output for interference - @param rho_i Correlation between channel of signal and inteference - @param dlsch_llr llr output - @param symbol OFDM symbol index in sub-frame - @param first_symbol_flag flag to indicate this is the first symbol of the dlsch - @param nb_rb number of RBs for this allocation - @param pbch_pss_sss_adj Number of channel bits taken by PBCH/PSS/SSS - @param llr128p pointer to pointer to symbol in dlsch_llr*/ -int32_t nr_dlsch_qpsk_16qam_llr(NR_DL_FRAME_PARMS *frame_parms, - int32_t **rxdataF_comp, - int32_t **rxdataF_comp_i, - int **dl_ch_mag_i, //|h_1|^2*(2/sqrt{10}) - int32_t **rho_i, - int16_t *dlsch_llr, - uint8_t symbol, - uint8_t first_symbol_flag, - uint16_t nb_rb, - uint16_t pbch_pss_sss_adj, - int16_t **llr128p); - - -/** \brief This function computes the LLRs for ML (max-logsum approximation) dual-stream QPSK/64QAM reception. - @param stream0_in Input from channel compensated (MR combined) stream 0 - @param stream1_in Input from channel compensated (MR combined) stream 1 - @param ch_mag_i Input from scaled channel magnitude square of h0'*g1 - @param stream0_out Output from LLR unit for stream0 - @param rho01 Cross-correlation between channels (MR combined) - @param length in complex channel outputs*/ -void qpsk_qam64(int16_t *stream0_in, - int16_t *stream1_in, - short *ch_mag_i, - int16_t *stream0_out, - int16_t *rho01, - int32_t length); - -/** \brief This function perform LLR computation for dual-stream (QPSK/64QAM) transmission. - @param frame_parms Frame descriptor structure - @param rxdataF_comp Compensated channel output - @param rxdataF_comp_i Compensated channel output for interference - @param rho_i Correlation between channel of signal and inteference - @param dlsch_llr llr output - @param symbol OFDM symbol index in sub-frame - @param first_symbol_flag flag to indicate this is the first symbol of the dlsch - @param nb_rb number of RBs for this allocation - @param pbch_pss_sss_adj Number of channel bits taken by PBCH/PSS/SSS - @param llr128p pointer to pointer to symbol in dlsch_llr*/ -int32_t nr_dlsch_qpsk_64qam_llr(NR_DL_FRAME_PARMS *frame_parms, - int32_t **rxdataF_comp, - int32_t **rxdataF_comp_i, - int **dl_ch_mag_i, //|h_1|^2*(2/sqrt{10}) - int32_t **rho_i, - int16_t *dlsch_llr, - uint8_t symbol, - uint8_t first_symbol_flag, - uint16_t nb_rb, - uint16_t pbch_pss_sss_adj, - int16_t **llr128p); - - -/** \brief This function computes the LLRs for ML (max-logsum approximation) dual-stream 16QAM/QPSK reception. - @param stream0_in Input from channel compensated (MR combined) stream 0 - @param stream1_in Input from channel compensated (MR combined) stream 1 - @param ch_mag Input from scaled channel magnitude square of h0'*g0 - @param stream0_out Output from LLR unit for stream0 - @param rho01 Cross-correlation between channels (MR combined) - @param length in complex channel outputs*/ -void qam16_qpsk(short *stream0_in, - short *stream1_in, - short *ch_mag, - short *stream0_out, - short *rho01, - int length); -/** \brief This function perform LLR computation for dual-stream (16QAM/QPSK) transmission. - @param frame_parms Frame descriptor structure - @param rxdataF_comp Compensated channel output - @param rxdataF_comp_i Compensated channel output for interference - @param ch_mag Input from scaled channel magnitude square of h0'*g0 - @param rho_i Correlation between channel of signal and inteference - @param dlsch_llr llr output - @param symbol OFDM symbol index in sub-frame - @param first_symbol_flag flag to indicate this is the first symbol of the dlsch - @param nb_rb number of RBs for this allocation - @param pbch_pss_sss_adj Number of channel bits taken by PBCH/PSS/SSS - @param llr16p pointer to pointer to symbol in dlsch_llr*/ -int nr_dlsch_16qam_qpsk_llr(NR_DL_FRAME_PARMS *frame_parms, - int **rxdataF_comp, - int **rxdataF_comp_i, - int **dl_ch_mag, //|h_0|^2*(2/sqrt{10}) - int **rho_i, - short *dlsch_llr, - unsigned char symbol, - unsigned char first_symbol_flag, - unsigned short nb_rb, - uint16_t pbch_pss_sss_adjust, - short **llr16p); - -/** \brief This function computes the LLRs for ML (max-logsum approximation) dual-stream 16QAM/16QAM reception. - @param stream0_in Input from channel compensated (MR combined) stream 0 - @param stream1_in Input from channel compensated (MR combined) stream 1 - @param ch_mag Input from scaled channel magnitude square of h0'*g0 - @param ch_mag_i Input from scaled channel magnitude square of h0'*g1 - @param stream0_out Output from LLR unit for stream0 - @param rho01 Cross-correlation between channels (MR combined) - @param length in complex channel outputs*/ -void qam16_qam16(short *stream0_in, - short *stream1_in, - short *ch_mag, - short *ch_mag_i, - short *stream0_out, - short *rho01, - int length); - -/** \brief This function perform LLR computation for dual-stream (16QAM/16QAM) transmission. - @param frame_parms Frame descriptor structure - @param rxdataF_comp Compensated channel output - @param rxdataF_comp_i Compensated channel output for interference - @param ch_mag Input from scaled channel magnitude square of h0'*g0 - @param ch_mag_i Input from scaled channel magnitude square of h0'*g1 - @param rho_i Correlation between channel of signal and inteference - @param dlsch_llr llr output - @param symbol OFDM symbol index in sub-frame - @param first_symbol_flag flag to indicate this is the first symbol of the dlsch - @param nb_rb number of RBs for this allocation - @param pbch_pss_sss_adj Number of channel bits taken by PBCH/PSS/SSS - @param llr16p pointer to pointer to symbol in dlsch_llr*/ -int nr_dlsch_16qam_16qam_llr(NR_DL_FRAME_PARMS *frame_parms, - int **rxdataF_comp, - int **rxdataF_comp_i, - int **dl_ch_mag, //|h_0|^2*(2/sqrt{10}) - int **dl_ch_mag_i, //|h_1|^2*(2/sqrt{10}) - int **rho_i, - short *dlsch_llr, - unsigned char symbol, - uint32_t len, - unsigned char first_symbol_flag, - unsigned short nb_rb, - uint16_t pbch_pss_sss_adjust, - short **llr16p); - -/** \brief This function computes the LLRs for ML (max-logsum approximation) dual-stream 16QAM/64QAM reception. - @param stream0_in Input from channel compensated (MR combined) stream 0 - @param stream1_in Input from channel compensated (MR combined) stream 1 - @param ch_mag Input from scaled channel magnitude square of h0'*g0 - @param ch_mag_i Input from scaled channel magnitude square of h0'*g1 - @param stream0_out Output from LLR unit for stream0 - @param rho01 Cross-correlation between channels (MR combined) - @param length in complex channel outputs*/ -void qam16_qam64(short *stream0_in, - short *stream1_in, - short *ch_mag, - short *ch_mag_i, - short *stream0_out, - short *rho01, - int length); - -/** \brief This function perform LLR computation for dual-stream (16QAM/64QAM) transmission. - @param frame_parms Frame descriptor structure - @param rxdataF_comp Compensated channel output - @param rxdataF_comp_i Compensated channel output for interference - @param ch_mag Input from scaled channel magnitude square of h0'*g0 - @param ch_mag_i Input from scaled channel magnitude square of h0'*g1 - @param rho_i Correlation between channel of signal and inteference - @param dlsch_llr llr output - @param symbol OFDM symbol index in sub-frame - @param first_symbol_flag flag to indicate this is the first symbol of the dlsch - @param nb_rb number of RBs for this allocation - @param pbch_pss_sss_adj Number of channel bits taken by PBCH/PSS/SSS - @param llr16p pointer to pointer to symbol in dlsch_llr*/ -int nr_dlsch_16qam_64qam_llr(NR_DL_FRAME_PARMS *frame_parms, - int **rxdataF_comp, - int **rxdataF_comp_i, - int **dl_ch_mag, //|h_0|^2*(2/sqrt{10}) - int **dl_ch_mag_i, //|h_1|^2*(2/sqrt{10}) - int **rho_i, - short *dlsch_llr, - unsigned char symbol, - unsigned char first_symbol_flag, - unsigned short nb_rb, - uint16_t pbch_pss_sss_adjust, - short **llr16p); - -/** \brief This function computes the LLRs for ML (max-logsum approximation) dual-stream 64QAM/64QAM reception. - @param stream0_in Input from channel compensated (MR combined) stream 0 - @param stream1_in Input from channel compensated (MR combined) stream 1 - @param ch_mag Input from scaled channel magnitude square of h0'*g0 - @param stream0_out Output from LLR unit for stream0 - @param rho01 Cross-correlation between channels (MR combined) - @param length in complex channel outputs*/ -void qam64_qpsk(short *stream0_in, - short *stream1_in, - short *ch_mag, - short *stream0_out, - short *rho01, - int length); - -/** \brief This function perform LLR computation for dual-stream (64QAM/64QAM) transmission. - @param frame_parms Frame descriptor structure - @param rxdataF_comp Compensated channel output - @param rxdataF_comp_i Compensated channel output for interference - @param ch_mag Input from scaled channel magnitude square of h0'*g0 - @param rho_i Correlation between channel of signal and inteference - @param dlsch_llr llr output - @param symbol OFDM symbol index in sub-frame - @param first_symbol_flag flag to indicate this is the first symbol of the dlsch - @param nb_rb number of RBs for this allocation - @param pbch_pss_sss_adj Number of channel bits taken by PBCH/PSS/SSS - @param llr16p pointer to pointer to symbol in dlsch_llr*/ -int nr_dlsch_64qam_qpsk_llr(NR_DL_FRAME_PARMS *frame_parms, - int **rxdataF_comp, - int **rxdataF_comp_i, - int **dl_ch_mag, - int **rho_i, - short *dlsch_llr, - unsigned char symbol, - unsigned char first_symbol_flag, - unsigned short nb_rb, - uint16_t pbch_pss_sss_adjust, - short **llr16p); - -/** \brief This function computes the LLRs for ML (max-logsum approximation) dual-stream 64QAM/16QAM reception. - @param stream0_in Input from channel compensated (MR combined) stream 0 - @param stream1_in Input from channel compensated (MR combined) stream 1 - @param ch_mag Input from scaled channel magnitude square of h0'*g0 - @param ch_mag_i Input from scaled channel magnitude square of h0'*g1 - @param stream0_out Output from LLR unit for stream0 - @param rho01 Cross-correlation between channels (MR combined) - @param length in complex channel outputs*/ -void qam64_qam16(short *stream0_in, - short *stream1_in, - short *ch_mag, - short *ch_mag_i, - short *stream0_out, - short *rho01, - int length); - -/** \brief This function computes the LLRs for ML (max-logsum approximation) dual-stream 64QAM/16QAM reception. - @param stream0_in Input from channel compensated (MR combined) stream 0 - @param stream1_in Input from channel compensated (MR combined) stream 1 - @param ch_mag Input from scaled channel magnitude square of h0'*g0 - @param ch_mag_i Input from scaled channel magnitude square of h0'*g1 - @param stream0_out Output from LLR unit for stream0 - @param rho01 Cross-correlation between channels (MR combined) - @param length in complex channel outputs*/ -void qam64_qam16_avx2(short *stream0_in, - short *stream1_in, - short *ch_mag, - short *ch_mag_i, - short *stream0_out, - short *rho01, - int length); - -/** \brief This function perform LLR computation for dual-stream (64QAM/16QAM) transmission. - @param frame_parms Frame descriptor structure - @param rxdataF_comp Compensated channel output - @param rxdataF_comp_i Compensated channel output for interference - @param ch_mag Input from scaled channel magnitude square of h0'*g0 - @param ch_mag_i Input from scaled channel magnitude square of h0'*g1 - @param rho_i Correlation between channel of signal and inteference - @param dlsch_llr llr output - @param symbol OFDM symbol index in sub-frame - @param first_symbol_flag flag to indicate this is the first symbol of the dlsch - @param nb_rb number of RBs for this allocation - @param pbch_pss_sss_adj Number of channel bits taken by PBCH/PSS/SSS - @param llr16p pointer to pointer to symbol in dlsch_llr*/ -int nr_dlsch_64qam_16qam_llr(NR_DL_FRAME_PARMS *frame_parms, - int **rxdataF_comp, - int **rxdataF_comp_i, - int **dl_ch_mag, - int **dl_ch_mag_i, - int **rho_i, - short *dlsch_llr, - unsigned char symbol, - unsigned char first_symbol_flag, - unsigned short nb_rb, - uint16_t pbch_pss_sss_adjust, - short **llr16p); - -/** \brief This function computes the LLRs for ML (max-logsum approximation) dual-stream 64QAM/64QAM reception. - @param stream0_in Input from channel compensated (MR combined) stream 0 - @param stream1_in Input from channel compensated (MR combined) stream 1 - @param ch_mag Input from scaled channel magnitude square of h0'*g0 - @param ch_mag_i Input from scaled channel magnitude square of h0'*g1 - @param stream0_out Output from LLR unit for stream0 - @param rho01 Cross-correlation between channels (MR combined) - @param length in complex channel outputs*/ -void qam64_qam64(short *stream0_in, - short *stream1_in, - short *ch_mag, - short *ch_mag_i, - short *stream0_out, - short *rho01, - int length); - -/** \brief This function computes the LLRs for ML (max-logsum approximation) dual-stream 64QAM/64QAM reception. - @param stream0_in Input from channel compensated (MR combined) stream 0 - @param stream1_in Input from channel compensated (MR combined) stream 1 - @param ch_mag Input from scaled channel magnitude square of h0'*g0 - @param ch_mag_i Input from scaled channel magnitude square of h0'*g1 - @param stream0_out Output from LLR unit for stream0 - @param rho01 Cross-correlation between channels (MR combined) - @param length in complex channel outputs*/ -void qam64_qam64_avx2(int32_t *stream0_in, - int32_t *stream1_in, - int32_t *ch_mag, - int32_t *ch_mag_i, - int16_t *stream0_out, - int32_t *rho01, - int length); - -/** \brief This function perform LLR computation for dual-stream (64QAM/64QAM) transmission. - @param frame_parms Frame descriptor structure - @param rxdataF_comp Compensated channel output - @param rxdataF_comp_i Compensated channel output for interference - @param ch_mag Input from scaled channel magnitude square of h0'*g0 - @param ch_mag_i Input from scaled channel magnitude square of h0'*g1 - @param rho_i Correlation between channel of signal and inteference - @param dlsch_llr llr output - @param symbol OFDM symbol index in sub-frame - @param first_symbol_flag flag to indicate this is the first symbol of the dlsch - @param nb_rb number of RBs for this allocation - @param pbch_pss_sss_adj Number of channel bits taken by PBCH/PSS/SSS - @param llr16p pointer to pointer to symbol in dlsch_llr*/ -int nr_dlsch_64qam_64qam_llr(NR_DL_FRAME_PARMS *frame_parms, - int **rxdataF_comp, - int **rxdataF_comp_i, - int **dl_ch_mag, - int **dl_ch_mag_i, - int **rho_i, - short *dlsch_llr, - unsigned char symbol, - uint32_t len, - unsigned char first_symbol_flag, - unsigned short nb_rb, - uint16_t pbch_pss_sss_adjust, - //short **llr16p, - uint32_t llr_offset); - - -/** \brief This function generates log-likelihood ratios (decoder input) for single-stream QPSK received waveforms. - @param frame_parms Frame descriptor structure - @param rxdataF_comp Compensated channel output - @param dlsch_llr llr output - @param symbol OFDM symbol index in sub-frame - @param first_symbol_flag - @param nb_rb number of RBs for this allocation - @param pbch_pss_sss_adj Number of channel bits taken by PBCH/PSS/SSS - @param llr128p pointer to pointer to symbol in dlsch_llr - @param beamforming_mode beamforming mode -*/ -int32_t nr_dlsch_qpsk_llr(NR_DL_FRAME_PARMS *frame_parms, - int32_t **rxdataF_comp, - int16_t *dlsch_llr, - uint8_t symbol, - uint32_t len, - uint8_t first_symbol_flag, - uint16_t nb_rb, - uint8_t beamforming_mode); - -/** - \brief This function generates log-likelihood ratios (decoder input) for single-stream 16QAM received waveforms - @param frame_parms Frame descriptor structure - @param rxdataF_comp Compensated channel output - @param dlsch_llr llr output - @param dl_ch_mag Squared-magnitude of channel in each resource element position corresponding to allocation and weighted for mid-point in 16QAM constellation - @param symbol OFDM symbol index in sub-frame - @param first_symbol_flag - @param nb_rb number of RBs for this allocation - @param pbch_pss_sss_adjust Adjustment factor in RE for PBCH/PSS/SSS allocations - @param llr128p pointer to pointer to symbol in dlsch_llr - @param beamforming_mode beamforming mode -*/ - -int32_t nr_dlsch_qpsk_llr_SIC(NR_DL_FRAME_PARMS *frame_parms, - int **rxdataF_comp, - int32_t **sic_buffer, - int **rho_i, - short *dlsch_llr, - uint8_t num_pdcch_symbols, - uint16_t nb_rb, - uint8_t subframe, - uint16_t mod_order_0, - uint32_t rb_alloc); - -void nr_dlsch_16qam_llr(NR_DL_FRAME_PARMS *frame_parms, - int32_t **rxdataF_comp, - int16_t *dlsch_llr, - int32_t **dl_ch_mag, - uint8_t symbol, - uint32_t len, - uint8_t first_symbol_flag, - uint16_t nb_rb, - int16_t **llr32p, - uint8_t beamforming_mode); -/** - \brief This function generates log-likelihood ratios (decoder input) for single-stream 16QAM received waveforms - @param frame_parms Frame descriptor structure - @param rxdataF_comp Compensated channel output - @param dlsch_llr llr output - @param dl_ch_mag Squared-magnitude of channel in each resource element position corresponding to allocation, weighted by first mid-point of 64-QAM constellation - @param dl_ch_magb Squared-magnitude of channel in each resource element position corresponding to allocation, weighted by second mid-point of 64-QAM constellation - @param symbol OFDM symbol index in sub-frame - @param first_symbol_flag - @param nb_rb number of RBs for this allocation - @param pbch_pss_sss_adjust PBCH/PSS/SSS RE adjustment (in REs) - @param beamforming_mode beamforming mode -*/ -void nr_dlsch_16qam_llr_SIC (NR_DL_FRAME_PARMS *frame_parms, - int32_t **rxdataF_comp, - int32_t **sic_buffer, //Q15 - int32_t **rho_i, - int16_t *dlsch_llr, - uint8_t num_pdcch_symbols, - int32_t **dl_ch_mag, - uint16_t nb_rb, - uint8_t subframe, - uint16_t mod_order_0, - uint32_t rb_alloc); - -void dlsch_64qam_llr_SIC(NR_DL_FRAME_PARMS *frame_parms, - int32_t **rxdataF_comp, - int32_t **sic_buffer, //Q15 - int32_t **rho_i, - int16_t *dlsch_llr, - uint8_t num_pdcch_symbols, - int32_t **dl_ch_mag, - int32_t **dl_ch_magb, - uint16_t nb_rb, - uint8_t subframe, - uint16_t mod_order_0, - uint32_t rb_alloc); - -void nr_dlsch_64qam_llr(NR_DL_FRAME_PARMS *frame_parms, - int32_t **rxdataF_comp, - int16_t *dlsch_llr, - int32_t **dl_ch_mag, - int32_t **dl_ch_magb, - uint8_t symbol, - uint32_t len, - uint8_t first_symbol_flag, - uint16_t nb_rb, - uint32_t llr_offset, - uint8_t beamforming_mode); - - -/** \fn dlsch_siso(NR_DL_FRAME_PARMS *frame_parms, - int32_t **rxdataF_comp, - int32_t **rxdataF_comp_i, - uint8_t l, - uint16_t nb_rb) - \brief This function does the first stage of llr computation for SISO, by just extracting the pilots, PBCH and primary/secondary synchronization sequences. - @param frame_parms Frame descriptor structure - @param rxdataF_comp Compensated channel output - @param rxdataF_comp_i Compensated channel output for interference - @param l symbol in sub-frame - @param nb_rb Number of RBs in this allocation -*/ - -void dlsch_siso(NR_DL_FRAME_PARMS *frame_parms, - int32_t **rxdataF_comp, - int32_t **rxdataF_comp_i, - uint8_t l, - uint16_t nb_rb); - -/** \fn dlsch_alamouti(NR_DL_FRAME_PARMS *frame_parms, - int32_t **rxdataF_comp, - int32_t **dl_ch_mag, - int32_t **dl_ch_magb, - uint8_t symbol, - uint16_t nb_rb) - \brief This function does Alamouti combining on RX and prepares LLR inputs by skipping pilots, PBCH and primary/secondary synchronization signals. - @param frame_parms Frame descriptor structure - @param rxdataF_comp Compensated channel output - @param dl_ch_mag First squared-magnitude of channel (16QAM and 64QAM) for LLR computation. Alamouti combining should be performed on this as well. Result is stored in first antenna position - @param dl_ch_magb Second squared-magnitude of channel (64QAM only) for LLR computation. Alamouti combining should be performed on this as well. Result is stored in first antenna position - @param symbol Symbol in sub-frame - @param nb_rb Number of RBs in this allocation -*/ -void dlsch_alamouti(NR_DL_FRAME_PARMS *frame_parms, - int32_t **rxdataF_comp, - int32_t **dl_ch_mag, - int32_t **dl_ch_magb, - uint8_t symbol, - uint16_t nb_rb); - -/** \fn dlsch_antcyc(NR_DL_FRAME_PARMS *frame_parms, - int32_t **rxdataF_comp, - int32_t **dl_ch_mag, - int32_t **dl_ch_magb, - uint8_t symbol, - uint16_t nb_rb) - \brief This function does antenna selection (based on antenna cycling pattern) on RX and prepares LLR inputs by skipping pilots, PBCH and primary/secondary synchronization signals. Note that this is not LTE, it is just included for comparison purposes. - @param frame_parms Frame descriptor structure - @param rxdataF_comp Compensated channel output - @param dl_ch_mag First squared-magnitude of channel (16QAM and 64QAM) for LLR computation. Alamouti combining should be performed on this as well. Result is stored in first antenna position - @param dl_ch_magb Second squared-magnitude of channel (64QAM only) for LLR computation. Alamouti combining should be performed on this as well. Result is stored in first antenna position - @param symbol Symbol in sub-frame - @param nb_rb Number of RBs in this allocation -*/ -void dlsch_antcyc(NR_DL_FRAME_PARMS *frame_parms, - int32_t **rxdataF_comp, - int32_t **dl_ch_mag, - int32_t **dl_ch_magb, - uint8_t symbol, - uint16_t nb_rb); - -/** \fn dlsch_detection_mrc(NR_DL_FRAME_PARMS *frame_parms, - int32_t **rxdataF_comp, - int32_t **rxdataF_comp_i, - int32_t **rho, - int32_t **rho_i, - int32_t **dl_ch_mag, - int32_t **dl_ch_magb, - uint8_t symbol, - uint16_t nb_rb, - uint8_t dual_stream_UE) - - \brief This function does maximal-ratio combining for dual-antenna receivers. - @param frame_parms Frame descriptor structure - @param rxdataF_comp Compensated channel output - @param rxdataF_comp_i Compensated channel output for interference - @param rho Cross correlation between spatial channels - @param rho_i Cross correlation between signal and inteference channels - @param dl_ch_mag First squared-magnitude of channel (16QAM and 64QAM) for LLR computation. Alamouti combining should be performed on this as well. Result is stored in first antenna position - @param dl_ch_magb Second squared-magnitude of channel (64QAM only) for LLR computation. Alamouti combining should be performed on this as well. Result is stored in first antenna position - @param symbol Symbol in sub-frame - @param nb_rb Number of RBs in this allocation - @param dual_stream_UE Flag to indicate dual-stream detection -*/ -void dlsch_detection_mrc(NR_DL_FRAME_PARMS *frame_parms, - int32_t **rxdataF_comp, - int32_t **rxdataF_comp_i, - int32_t **rho, - int32_t **rho_i, - int32_t **dl_ch_mag, - int32_t **dl_ch_magb, - int32_t **dl_ch_mag_i, - int32_t **dl_ch_magb_i, - uint8_t symbol, - uint16_t nb_rb, - uint8_t dual_stream_UE); - -void dlsch_detection_mrc_TM34(NR_DL_FRAME_PARMS *frame_parms, - NR_UE_PDSCH *lte_ue_pdsch_vars, - int harq_pid, - int round, - unsigned char symbol, - unsigned short nb_rb, - unsigned char dual_stream_UE); - -/** \fn dlsch_extract_rbs_single(int32_t **rxdataF, - int32_t **dl_ch_estimates, - int32_t **rxdataF_ext, - int32_t **dl_ch_estimates_ext, - uint16_t pmi, - uint8_t *pmi_ext, - uint32_t *rb_alloc, - uint8_t symbol, - uint8_t subframe, - NR_DL_FRAME_PARMS *frame_parms) - \brief This function extracts the received resource blocks, both channel estimates and data symbols, - for the current allocation and for single antenna eNB transmission. - @param rxdataF Raw FFT output of received signal - @param dl_ch_estimates Channel estimates of current slot - @param rxdataF_ext FFT output for RBs in this allocation - @param dl_ch_estimates_ext Channel estimates for RBs in this allocation - @param pmi subband Precoding matrix indicator - @param pmi_ext Extracted PMI for chosen RBs - @param rb_alloc RB allocation vector - @param symbol Symbol to extract - @param subframe Subframe number - @param vrb_type Flag to indicate distributed VRB type - @param high_speed_flag - @param frame_parms Pointer to frame descriptor -*/ -/*uint16_t nr_dlsch_extract_rbs_single(int32_t **rxdataF, - int32_t **dl_ch_estimates, - int32_t **rxdataF_ext, - int32_t **dl_ch_estimates_ext, - uint16_t pmi, - uint8_t *pmi_ext, - uint32_t *rb_alloc, - uint8_t symbol, - uint8_t subframe, - uint32_t high_speed_flag, - NR_DL_FRAME_PARMS *frame_parms);*/ - -unsigned short nr_dlsch_extract_rbs_single(int **rxdataF, - int **dl_ch_estimates, - int **rxdataF_ext, - int **dl_ch_estimates_ext, - unsigned short pmi, - unsigned char *pmi_ext, - unsigned char symbol, - uint8_t pilots, - unsigned short start_rb, - unsigned short nb_pdsch_rb, - unsigned char nr_tti_rx, - uint32_t high_speed_flag, - NR_DL_FRAME_PARMS *frame_parms); - -/** \fn dlsch_extract_rbs_dual(int32_t **rxdataF, - int32_t **dl_ch_estimates, - int32_t **rxdataF_ext, - int32_t **dl_ch_estimates_ext, - uint16_t pmi, - uint8_t *pmi_ext, - uint32_t *rb_alloc, - uint8_t symbol, - NR_DL_FRAME_PARMS *frame_parms) - \brief This function extracts the received resource blocks, both channel estimates and data symbols, - for the current allocation and for dual antenna eNB transmission. - @param rxdataF Raw FFT output of received signal - @param dl_ch_estimates Channel estimates of current slot - @param rxdataF_ext FFT output for RBs in this allocation - @param dl_ch_estimates_ext Channel estimates for RBs in this allocation - @param pmi subband Precoding matrix indicator - @param pmi_ext Extracted PMI for chosen RBs - @param rb_alloc RB allocation vector - @param symbol Symbol to extract - @param subframe Subframe index - @param high_speed_flag - @param frame_parms Pointer to frame descriptor -*/ -unsigned short nr_dlsch_extract_rbs_dual(int **rxdataF, - int **dl_ch_estimates, - int **rxdataF_ext, - int **dl_ch_estimates_ext, - unsigned short pmi, - unsigned char *pmi_ext, - unsigned char symbol, - uint8_t pilots, - unsigned short start_rb, - unsigned short nb_rb_pdsch, - unsigned char nr_tti_rx, - uint32_t high_speed_flag, - NR_DL_FRAME_PARMS *frame_parms, - MIMO_mode_t mimo_mode); - -/** \fn dlsch_extract_rbs_TM7(int32_t **rxdataF, - int32_t **dl_bf_ch_estimates, - int32_t **rxdataF_ext, - int32_t **dl_bf_ch_estimates_ext, - uint32_t *rb_alloc, - uint8_t symbol, - uint8_t subframe, - uint32_t high_speed_flag, - NR_DL_FRAME_PARMS *frame_parms) - \brief This function extracts the received resource blocks, both channel estimates and data symbols, - for the current allocation and for single antenna eNB transmission. - @param rxdataF Raw FFT output of received signal - @param dl_bf_ch_estimates Beamforming channel estimates of current slot - @param rxdataF_ext FFT output for RBs in this allocation - @param dl_bf_ch_estimates_ext Beamforming channel estimates for RBs in this allocation - @param rb_alloc RB allocation vector - @param symbol Symbol to extract - @param subframe Subframe number - @param high_speed_flag - @param frame_parms Pointer to frame descriptor -*/ -uint16_t dlsch_extract_rbs_TM7(int32_t **rxdataF, - int32_t **dl_bf_ch_estimates, - int32_t **rxdataF_ext, - int32_t **dl_bf_ch_estimates_ext, - uint32_t *rb_alloc, - uint8_t symbol, - uint8_t subframe, - uint32_t high_speed_flag, - NR_DL_FRAME_PARMS *frame_parms); - -/** \brief This function performs channel compensation (matched filtering) on the received RBs for this allocation. In addition, it computes the squared-magnitude of the channel with weightings for 16QAM/64QAM detection as well as dual-stream detection (cross-correlation) - @param rxdataF_ext Frequency-domain received signal in RBs to be demodulated - @param dl_ch_estimates_ext Frequency-domain channel estimates in RBs to be demodulated - @param dl_ch_mag First Channel magnitudes (16QAM/64QAM) - @param dl_ch_magb Second weighted Channel magnitudes (64QAM) - @param rxdataF_comp Compensated received waveform - @param rho Cross-correlation between two spatial channels on each RX antenna - @param frame_parms Pointer to frame descriptor - @param symbol Symbol on which to operate - @param first_symbol_flag set to 1 on first DLSCH symbol - @param mod_order Modulation order of allocation - @param nb_rb Number of RBs in allocation - @param output_shift Rescaling for compensated output (should be energy-normalizing) - @param phy_measurements Pointer to UE PHY measurements -*/ -void nr_dlsch_channel_compensation(int32_t **rxdataF_ext, - int32_t **dl_ch_estimates_ext, - int32_t **dl_ch_mag, - int32_t **dl_ch_magb, - int32_t **rxdataF_comp, - int32_t **rho, - NR_DL_FRAME_PARMS *frame_parms, - uint8_t symbol, - uint8_t start_symbol, - uint8_t first_symbol_flag, - uint8_t mod_order, - uint16_t nb_rb, - uint8_t output_shift, - PHY_NR_MEASUREMENTS *phy_measurements); - -void nr_dlsch_channel_compensation_core(int **rxdataF_ext, - int **dl_ch_estimates_ext, - int **dl_ch_mag, - int **dl_ch_magb, - int **rxdataF_comp, - int **rho, - unsigned char n_tx, - unsigned char n_rx, - unsigned char mod_order, - unsigned char output_shift, - int length, - int start_point); - -void nr_dlsch_deinterleaving(uint8_t symbol, - uint8_t start_symbol, - uint16_t L, - uint16_t *llr, - uint16_t *llr_deint, - uint16_t nb_rb_pdsch); - -void dlsch_dual_stream_correlation(NR_DL_FRAME_PARMS *frame_parms, - unsigned char symbol, - unsigned short nb_rb, - int **dl_ch_estimates_ext, - int **dl_ch_estimates_ext_i, - int **dl_ch_rho_ext, - unsigned char output_shift); - -void dlsch_dual_stream_correlationTM34(NR_DL_FRAME_PARMS *frame_parms, - unsigned char symbol, - unsigned short nb_rb, - int **dl_ch_estimates_ext, - int **dl_ch_estimates_ext_i, - int **dl_ch_rho_ext, - unsigned char output_shift0, - unsigned char output_shift1); -//This function is used to compute multiplications in Hhermitian * H matrix -void conjch0_mult_ch1(int *ch0, - int *ch1, - int32_t *ch0conj_ch1, - unsigned short nb_rb, - unsigned char output_shift0); - -void construct_HhH_elements(int *ch0conj_ch0, - int *ch1conj_ch1, - int *ch2conj_ch2, - int *ch3conj_ch3, - int *ch0conj_ch1, - int *ch1conj_ch0, - int *ch2conj_ch3, - int *ch3conj_ch2, - int32_t *after_mf_00, - int32_t *after_mf_01, - int32_t *after_mf_10, - int32_t *after_mf_11, - unsigned short nb_rb); - -void squared_matrix_element(int32_t *Hh_h_00, - int32_t *Hh_h_00_sq, - unsigned short nb_rb); - -void dlsch_channel_level_TM34_meas(int *ch00, - int *ch01, - int *ch10, - int *ch11, - int *avg_0, - int *avg_1, - unsigned short nb_rb); - -void nr_dlsch_channel_level_median(int **dl_ch_estimates_ext, - int32_t *median, - int n_tx, - int n_rx, - int length, - int start_point); - -void nr_dlsch_detection_mrc_core(int **rxdataF_comp, - int **rxdataF_comp_i, - int **rho, - int **rho_i, - int **dl_ch_mag, - int **dl_ch_magb, - int **dl_ch_mag_i, - int **dl_ch_magb_i, - unsigned char n_tx, - unsigned char n_rx, - int length, - int start_point); - -void det_HhH(int32_t *after_mf_00, - int32_t *after_mf_01, - int32_t *after_mf_10, - int32_t *after_mf_11, - int32_t *det_fin_128, - unsigned short nb_rb); - -void numer(int32_t *Hh_h_00_sq, - int32_t *Hh_h_01_sq, - int32_t *Hh_h_10_sq, - int32_t *Hh_h_11_sq, - int32_t *num_fin, - unsigned short nb_rb); - -uint8_t rank_estimation_tm3_tm4(int *dl_ch_estimates_00, - int *dl_ch_estimates_01, - int *dl_ch_estimates_10, - int *dl_ch_estimates_11, - unsigned short nb_rb); - -void dlsch_channel_compensation_TM56(int **rxdataF_ext, - int **dl_ch_estimates_ext, - int **dl_ch_mag, - int **dl_ch_magb, - int **rxdataF_comp, - unsigned char *pmi_ext, - NR_DL_FRAME_PARMS *frame_parms, - PHY_NR_MEASUREMENTS *phy_measurements, - int eNB_id, - unsigned char symbol, - unsigned char mod_order, - unsigned short nb_rb, - unsigned char output_shift, - unsigned char dl_power_off); - - -void dlsch_channel_compensation_TM34(NR_DL_FRAME_PARMS *frame_parms, - NR_UE_PDSCH *lte_ue_pdsch_vars, - PHY_NR_MEASUREMENTS *phy_measurements, - int eNB_id, - unsigned char symbol, - unsigned char mod_order0, - unsigned char mod_order1, - int harq_pid, - int round, - MIMO_mode_t mimo_mode, - unsigned short nb_rb, - unsigned char output_shift0, - unsigned char output_shift1); - - -/** \brief This function computes the average channel level over all allocated RBs and antennas (TX/RX) in order to compute output shift for compensated signal - @param dl_ch_estimates_ext Channel estimates in allocated RBs - @param frame_parms Pointer to frame descriptor - @param avg Pointer to average signal strength - @param pilots_flag Flag to indicate pilots in symbol - @param nb_rb Number of allocated RBs -*/ -void nr_dlsch_channel_level(int **dl_ch_estimates_ext, - NR_DL_FRAME_PARMS *frame_parms, - int32_t *avg, - uint8_t symbol, - uint32_t len, - unsigned short nb_rb); - - -void dlsch_channel_level_TM34(int **dl_ch_estimates_ext, - NR_DL_FRAME_PARMS *frame_parms, - unsigned char *pmi_ext, - int *avg_0, - int *avg_1, - uint8_t symbol, - unsigned short nb_rb, - MIMO_mode_t mimo_mode); - - -void dlsch_channel_level_TM56(int32_t **dl_ch_estimates_ext, - NR_DL_FRAME_PARMS *frame_parms, - unsigned char *pmi_ext, - int32_t *avg, - uint8_t symbol_mod, - uint16_t nb_rb); - -void dlsch_channel_level_TM7(int32_t **dl_bf_ch_estimates_ext, - NR_DL_FRAME_PARMS *frame_parms, - int32_t *avg, - uint8_t pilots_flag, - uint16_t nb_rb); - -void nr_dlsch_scale_channel(int32_t **dl_ch_estimates_ext, - NR_DL_FRAME_PARMS *frame_parms, - NR_UE_DLSCH_t **dlsch_ue, - uint8_t symbol, - uint8_t start_symbol, - uint16_t nb_rb); - -/** \brief This is the top-level entry point for DLSCH decoding in UE. It should be replicated on several - threads (on multi-core machines) corresponding to different HARQ processes. The routine first - computes the segmentation information, followed by rate dematching and sub-block deinterleaving the of the - received LLRs computed by dlsch_demodulation for each transport block segment. It then calls the - turbo-decoding algorithm for each segment and stops after either after unsuccesful decoding of at least - one segment or correct decoding of all segments. Only the segment CRCs are check for the moment, the - overall CRC is ignored. Finally transport block reassembly is performed. - @param phy_vars_ue Pointer to ue variables - @param dlsch_llr Pointer to LLR values computed by dlsch_demodulation - @param lte_frame_parms Pointer to frame descriptor - @param dlsch Pointer to DLSCH descriptor - @param frame Frame number - @param subframe Subframe number - @param num_pdcch_symbols Number of PDCCH symbols - @param is_crnti indicates if PDSCH belongs to a CRNTI (necessary for parallelizing decoding threads) - @param llr8_flag If 1, indicate that the 8-bit turbo decoder should be used - @returns 0 on success, 1 on unsuccessful decoding -*/ - -uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue, - short *dlsch_llr, - NR_DL_FRAME_PARMS *frame_parms, - NR_UE_DLSCH_t *dlsch, - NR_DL_UE_HARQ_t *harq_process, - uint32_t frame, - uint16_t nb_symb_sch, - uint8_t nr_tti_rx, - uint8_t harq_pid, - uint8_t is_crnti, - uint8_t llr8_flag); - -uint32_t nr_dlsch_decoding_mthread(PHY_VARS_NR_UE *phy_vars_ue, - UE_nr_rxtx_proc_t *proc, - int eNB_id, - short *dlsch_llr, - NR_DL_FRAME_PARMS *frame_parms, - NR_UE_DLSCH_t *dlsch, - NR_DL_UE_HARQ_t *harq_process, - uint32_t frame, - uint16_t nb_symb_sch, - uint8_t nr_tti_rx, - uint8_t harq_pid, - uint8_t is_crnti, - uint8_t llr8_flag); - -void *nr_dlsch_decoding_2thread0(void *arg); - -void *nr_dlsch_decoding_2thread1(void *arg); - -void nr_dlsch_unscrambling(int16_t* llr, - uint32_t size, - uint8_t q, - uint32_t Nid, - uint32_t n_RNTI); - -uint32_t dlsch_decoding_emul(PHY_VARS_NR_UE *phy_vars_ue, - uint8_t subframe, - PDSCH_t dlsch_id, - uint8_t eNB_id); - -/** \brief This function is the top-level entry point to PDSCH demodulation, after frequency-domain transformation and channel estimation. It performs - - RB extraction (signal and channel estimates) - - channel compensation (matched filtering) - - RE extraction (pilot, PBCH, synch. signals) - - antenna combining (MRC, Alamouti, cycling) - - LLR computation - This function supports TM1, 2, 3, 5, and 6. - @param PHY_VARS_NR_UE Pointer to PHY variables - @param type Type of PDSCH (SI_PDSCH,RA_PDSCH,PDSCH,PMCH) - @param eNB_id eNb index (Nid1) 0,1,2 - @param eNB_id_i Interfering eNB index (Nid1) 0,1,2, or 3 in case of MU-MIMO IC receiver - @param subframe Subframe number - @param symbol Symbol on which to act (within sub-frame) - @param first_symbol_flag set to 1 on first DLSCH symbol - @param rx_type. rx_type=RX_IC_single_stream will enable interference cancellation of a second stream when decoding the first stream. In case of TM1, 2, 5, and this can cancel interference from a neighbouring cell given by eNB_id_i. In case of TM5, eNB_id_i should be set to n_connected_eNB to perform multi-user interference cancellation. In case of TM3, eNB_id_i should be set to eNB_id to perform co-channel interference cancellation; this option should be used together with an interference cancellation step [...]. In case of TM3, if rx_type=RX_IC_dual_stream, both streams will be decoded by applying the IC single stream receiver twice. - @param i_mod Modulation order of the interfering stream -*/ -int32_t nr_rx_pdsch(PHY_VARS_NR_UE *phy_vars_ue, - PDSCH_t type, - uint8_t eNB_id, - uint8_t eNB_id_i, - uint32_t frame, - uint8_t subframe, - uint8_t symbol, - uint8_t first_symbol_flag, - RX_type_t rx_type, - uint8_t i_mod, - uint8_t harq_pid); - -/*! \brief Extract PSS and SSS resource elements - @param phy_vars_ue Pointer to UE variables - @param[out] pss_ext contain the PSS signals after the extraction - @param[out] sss_ext contain the SSS signals after the extraction - @returns 0 on success -*/ -int pss_sss_extract(PHY_VARS_NR_UE *phy_vars_ue, - int32_t pss_ext[4][72], - int32_t sss_ext[4][72], - uint8_t subframe); - -/*! \brief Extract only PSS resource elements - @param phy_vars_ue Pointer to UE variables - @param[out] pss_ext contain the PSS signals after the extraction - @returns 0 on success -*/ -int pss_only_extract(PHY_VARS_NR_UE *phy_vars_ue, - int32_t pss_ext[4][72], - uint8_t subframe); - -/*! \brief Extract only SSS resource elements - @param phy_vars_ue Pointer to UE variables - @param[out] sss_ext contain the SSS signals after the extraction - @returns 0 on success -*/ -int sss_only_extract(PHY_VARS_NR_UE *phy_vars_ue, - int32_t sss_ext[4][72], - uint8_t subframe); - -/*! \brief Performs detection of SSS to find cell ID and other framing parameters (FDD/TDD, normal/extended prefix) - @param phy_vars_ue Pointer to UE variables - @param tot_metric Pointer to variable containing maximum metric under framing hypothesis (to be compared to other hypotheses - @param flip_max Pointer to variable indicating if start of frame is in second have of RX buffer (i.e. PSS/SSS is flipped) - @param phase_max Pointer to variable (0 ... 6) containing rought phase offset between PSS and SSS (can be used for carrier - frequency adjustment. 0 means -pi/3, 6 means pi/3. - @returns 0 on success -*/ -int rx_sss(PHY_VARS_NR_UE *phy_vars_ue,int32_t *tot_metric,uint8_t *flip_max,uint8_t *phase_max); - -/*! \brief receiver for the PBCH - \returns number of tx antennas or -1 if error -*/ -int nr_rx_pbch( PHY_VARS_NR_UE *ue, - UE_nr_rxtx_proc_t *proc, - NR_UE_PBCH *nr_ue_pbch_vars, - NR_DL_FRAME_PARMS *frame_parms, - uint8_t eNB_id, - uint8_t i_ssb, - MIMO_mode_t mimo_mode, - uint32_t high_speed_flag); - -int nr_pbch_detection(UE_nr_rxtx_proc_t *proc, - PHY_VARS_NR_UE *ue, - int pbch_initial_symbol, - runmode_t mode); - -uint16_t rx_pbch_emul(PHY_VARS_NR_UE *phy_vars_ue, - uint8_t eNB_id, - uint8_t pbch_phase); - - -/*! \brief PBCH unscrambling - This is similar to pbch_scrabling with the difference that inputs are signed s16s (llr values) and instead of flipping bits we change signs. - \param frame_parms Pointer to frame descriptor - \param llr Output of the demodulator - \param length Length of the sequence - \param frame_mod4 Frame number modulo 4*/ -void pbch_unscrambling(NR_DL_FRAME_PARMS *frame_parms, - int8_t* llr, - uint32_t length, - uint8_t frame_mod4); - - -void generate_64qam_table(void); -void generate_16qam_table(void); -void generate_qpsk_table(void); - -uint16_t extract_crc(uint8_t *dci,uint8_t DCI_LENGTH); - -/*! \brief LLR from two streams. This function takes two streams (qpsk modulated) and calculates the LLR, considering one stream as interference. - \param stream0_in pointer to first stream0 - \param stream1_in pointer to first stream1 - \param stream0_out pointer to output stream - \param rho01 pointer to correlation matrix - \param length*/ -void qpsk_qpsk_TM3456(short *stream0_in, - short *stream1_in, - short *stream0_out, - short *rho01, - int length - ); - -/** \brief Attempt decoding of a particular DCI with given length and format. - @param DCI_LENGTH length of DCI in bits - @param DCI_FMT Format of DCI - @param e e-sequence (soft bits) - @param decoded_output Output of Viterbi decoder -*/ -void dci_decoding(uint8_t DCI_LENGTH, - uint8_t DCI_FMT, - int8_t *e, - uint8_t *decoded_output); - -/** \brief Do 36.213 DCI decoding procedure by searching different RNTI options and aggregation levels. Currently does - not employ the complexity reducing procedure based on RNTI. - @param phy_vars_ue UE variables - @param dci_alloc Pointer to DCI_ALLOC_t array to store results for DLSCH/ULSCH programming - @param do_common If 1 perform search in common search-space else ue-specific search-space - @param eNB_id eNB Index on which to act - @param subframe Index of subframe - @returns bitmap of occupied CCE positions (i.e. those detected) -*/ -uint16_t dci_decoding_procedure(PHY_VARS_NR_UE *phy_vars_ue, - DCI_ALLOC_t *dci_alloc, - int do_common, - int16_t eNB_id, - uint8_t subframe); - -uint16_t dci_CRNTI_decoding_procedure(PHY_VARS_NR_UE *ue, - DCI_ALLOC_t *dci_alloc, - uint8_t DCIFormat, - uint8_t agregationLevel, - int16_t eNB_id, - uint8_t subframe); - -uint16_t dci_decoding_procedure_emul(NR_UE_PDCCH **lte_ue_pdcch_vars, - uint8_t num_ue_spec_dci, - uint8_t num_common_dci, - DCI_ALLOC_t *dci_alloc_tx, - DCI_ALLOC_t *dci_alloc_rx, - int16_t eNB_id); - -/** \brief Compute Q (modulation order) based on I_MCS PDSCH. Implements table 7.1.7.1-1 from 36.213. - @param I_MCS */ -uint8_t get_Qm(uint8_t I_MCS); - -/** \brief Compute Q (modulation order) based on I_MCS for PUSCH. Implements table 8.6.1-1 from 36.213. - @param I_MCS */ -uint8_t get_Qm_ul(uint8_t I_MCS); - -/** \brief Compute I_TBS (transport-block size) based on I_MCS for PDSCH. Implements table 7.1.7.1-1 from 36.213. - @param I_MCS */ -uint8_t get_I_TBS(uint8_t I_MCS); - -/** \brief Compute I_TBS (transport-block size) based on I_MCS for PUSCH. Implements table 8.6.1-1 from 36.213. - @param I_MCS */ -unsigned char get_I_TBS_UL(unsigned char I_MCS); - -/** \brief Compute Q (modulation order) based on downlink I_MCS. Implements table 7.1.7.1-1 from 36.213. - @param I_MCS - @param nb_rb - @return Transport block size */ -uint32_t get_TBS_DL(uint8_t mcs, uint16_t nb_rb); - -/** \brief Compute Q (modulation order) based on uplink I_MCS. Implements table 7.1.7.1-1 from 36.213. - @param I_MCS - @param nb_rb - @return Transport block size */ -uint32_t get_TBS_UL(uint8_t mcs, uint16_t nb_rb); - -/* \brief Return bit-map of resource allocation for a given DCI rballoc (RIV format) and vrb type - @param N_RB_DL number of PRB on DL - @param indicator for even/odd slot - @param vrb vrb index - @param Ngap Gap indicator -*/ -uint32_t get_prb(int N_RB_DL,int odd_slot,int vrb,int Ngap); - -/* \brief Return prb for a given vrb index - @param vrb_type VRB type (0=localized,1=distributed) - @param rb_alloc_dci rballoc field from DCI -*/ -uint32_t get_rballoc(vrb_t vrb_type,uint16_t rb_alloc_dci); - - -/* \brief Return bit-map of resource allocation for a given DCI rballoc (RIV format) and vrb type - @returns Transmission mode (1-7) -*/ -uint8_t get_transmission_mode(module_id_t Mod_id, uint8_t CC_id, rnti_t rnti); - - -/* \brief - @param ra_header Header of resource allocation (0,1) (See sections 7.1.6.1/7.1.6.2 of 36.213 Rel8.6) - @param rb_alloc Bitmap allocation from DCI (format 1,2) - @returns number of physical resource blocks -*/ -uint32_t conv_nprb(uint8_t ra_header,uint32_t rb_alloc,int N_RB_DL); - -int get_G(NR_DL_FRAME_PARMS *frame_parms,uint16_t nb_rb,uint32_t *rb_alloc,uint8_t mod_order,uint8_t Nl,uint8_t num_pdcch_symbols,int frame,uint8_t subframe, uint8_t beamforming_mode); - -int adjust_G(NR_DL_FRAME_PARMS *frame_parms,uint32_t *rb_alloc,uint8_t mod_order,uint8_t subframe); -int adjust_G2(NR_DL_FRAME_PARMS *frame_parms,uint32_t *rb_alloc,uint8_t mod_order,uint8_t subframe,uint8_t symbol); - - -#ifndef modOrder -#define modOrder(I_MCS,I_TBS) ((I_MCS-I_TBS)*2+2) // Find modulation order from I_TBS and I_MCS -#endif - -/** \fn uint8_t I_TBS2I_MCS(uint8_t I_TBS); - \brief This function maps I_tbs to I_mcs according to Table 7.1.7.1-1 in 3GPP TS 36.213 V8.6.0. Where there is two supported modulation orders for the same I_TBS then either high or low modulation is chosen by changing the equality of the two first comparisons in the if-else statement. - \param I_TBS Index of Transport Block Size - \return I_MCS given I_TBS -*/ -uint8_t I_TBS2I_MCS(uint8_t I_TBS); - -/** \fn uint8_t SE2I_TBS(float SE, - uint8_t N_PRB, - uint8_t symbPerRB); - \brief This function maps a requested throughput in number of bits to I_tbs. The throughput is calculated as a function of modulation order, RB allocation and number of symbols per RB. The mapping orginates in the "Transport block size table" (Table 7.1.7.2.1-1 in 3GPP TS 36.213 V8.6.0) - \param SE Spectral Efficiency (before casting to integer, multiply by 1024, remember to divide result by 1024!) - \param N_PRB Number of PhysicalResourceBlocks allocated \sa lte_frame_parms->N_RB_DL - \param symbPerRB Number of symbols per resource block allocated to this channel - \return I_TBS given an SE and an N_PRB -*/ -uint8_t SE2I_TBS(float SE, - uint8_t N_PRB, - uint8_t symbPerRB); -/** \brief This function generates the sounding reference symbol (SRS) for the uplink according to 36.211 v8.6.0. If IFFT_FPGA is defined, the SRS is quantized to a QPSK sequence. - @param frame_parms LTE DL Frame Parameters - @param soundingrs_ul_config_dedicated Dynamic configuration from RRC during Connection Establishment - @param txdataF pointer to the frequency domain TX signal - @returns 0 on success*/ -int generate_srs(NR_DL_FRAME_PARMS *frame_parms, - SOUNDINGRS_UL_CONFIG_DEDICATED *soundingrs_ul_config_dedicated, - int *txdataF, - int16_t amp, - uint32_t subframe); - - -/*! - \brief This function is similar to generate_srs_tx but generates a conjugate sequence for channel estimation. If IFFT_FPGA is defined, the SRS is quantized to a QPSK sequence. - @param phy_vars_ue Pointer to PHY_VARS structure - @param eNB_id Index of destination eNB for this SRS - @param amp Linear amplitude of SRS - @param subframe Index of subframe on which to act - @returns 0 on success, -1 on error with message -*/ - -int32_t generate_srs_tx(PHY_VARS_NR_UE *phy_vars_ue, - uint8_t eNB_id, - int16_t amp, - uint32_t subframe); - -/*! - \brief This function generates the downlink reference signal for the PUSCH according to 36.211 v8.6.0. The DRS occuies the RS defined by rb_alloc and the symbols 2 and 8 for extended CP and 3 and 10 for normal CP. -*/ - -int32_t generate_drs_pusch(PHY_VARS_NR_UE *phy_vars_ue, - UE_nr_rxtx_proc_t *proc, - uint8_t eNB_id, - int16_t amp, - uint32_t subframe, - uint32_t first_rb, - uint32_t nb_rb, - uint8_t ant); - -/*! - \brief This function initializes the Group Hopping, Sequence Hopping and nPRS sequences for PUCCH/PUSCH according to 36.211 v8.6.0. It should be called after configuration of UE (reception of SIB2/3) and initial configuration of eNB (or after reconfiguration of cell-specific parameters). - @param frame_parms Pointer to a NR_DL_FRAME_PARMS structure (eNB or UE)*/ -void init_ul_hopping(NR_DL_FRAME_PARMS *frame_parms); - - -/*! - \brief This function implements the initialization of paging parameters for UE (See Section 7, 36.304).It must be called after setting IMSImod1024 during UE startup and after receiving SIB2 - @param ue Pointer to UE context - @param defaultPagingCycle T from 36.304 (0=32,1=64,2=128,3=256) - @param nB nB from 36.304 (0=4T,1=2T,2=T,3=T/2,4=T/4,5=T/8,6=T/16,7=T/32*/ -int init_ue_paging_info(PHY_VARS_NR_UE *ue, long defaultPagingCycle, long nB); - -int32_t compareints (const void * a, const void * b); - - -void ulsch_modulation(int32_t **txdataF, - int16_t amp, - frame_t frame, - uint32_t subframe, - NR_DL_FRAME_PARMS *frame_parms, - NR_UE_ULSCH_t *ulsch); - - - - - - -int generate_ue_dlsch_params_from_dci(int frame, - uint8_t subframe, - void *dci_pdu, - rnti_t rnti, - DCI_format_t dci_format, - NR_UE_PDCCH *pdcch_vars, - NR_UE_PDSCH *pdsch_vars, - NR_UE_DLSCH_t **dlsch, - NR_DL_FRAME_PARMS *frame_parms, - PDSCH_CONFIG_DEDICATED *pdsch_config_dedicated, - uint16_t si_rnti, - uint16_t ra_rnti, - uint16_t p_rnti, - uint8_t beamforming_mode, - uint16_t tc_rnti); - - -int generate_ue_ulsch_params_from_dci(void *dci_pdu, - rnti_t rnti, - uint8_t subframe, - DCI_format_t dci_format, - PHY_VARS_NR_UE *phy_vars_ue, - UE_nr_rxtx_proc_t *proc, - uint16_t si_rnti, - uint16_t ra_rnti, - uint16_t p_rnti, - uint16_t cba_rnti, - uint8_t eNB_id, - uint8_t use_srs); - -int32_t generate_ue_ulsch_params_from_rar(PHY_VARS_NR_UE *phy_vars_ue, - UE_nr_rxtx_proc_t *proc, - uint8_t eNB_id); -double sinr_eff_cqi_calc(PHY_VARS_NR_UE *phy_vars_ue, - uint8_t eNB_id, - uint8_t subframe); - -uint8_t sinr2cqi(double sinr,uint8_t trans_mode); - - -int dump_dci(NR_DL_FRAME_PARMS *frame_parms, DCI_ALLOC_t *dci); - -int dump_ue_stats(PHY_VARS_NR_UE *phy_vars_ue, UE_nr_rxtx_proc_t *proc, char* buffer, int length, runmode_t mode, int input_level_dBm); - -void init_transport_channels(uint8_t); - -void generate_RIV_tables(void); - -/*! - \brief Encoding of PUSCH/ACK/RI/ACK from 36-212. - @param a Pointer to ulsch SDU - @param frame_parms Pointer to Frame parameters - @param ulsch Pointer to ulsch descriptor - @param harq_pid HARQ process ID - @param tmode Transmission mode (1-7) - @param control_only_flag Generate PUSCH with control information only - @param Nbundled Parameter for ACK/NAK bundling (36.213 Section 7.3) -*/ -uint32_t ulsch_encoding(uint8_t *a, - PHY_VARS_NR_UE *phy_vars_ue, - uint8_t harq_pid, - uint8_t eNB_id, - uint8_t subframe_rx, - uint8_t tmode, - uint8_t control_only_flag, - uint8_t Nbundled); - -void print_CQI(void *o,UCI_format_t uci_format,uint8_t eNB_id,int N_RB_DL); - -void fill_CQI(NR_UE_ULSCH_t *ulsch,PHY_NR_MEASUREMENTS *meas,uint8_t eNB_id, uint8_t harq_pid,int N_RB_DL, rnti_t rnti, uint8_t trans_mode,double sinr_eff); - -void reset_cba_uci(void *o); - -/** \brief This routine computes the subband PMI bitmap based on measurements (0,1,2,3 for rank 0 and 0,1 for rank 1) in the format needed for UCI - @param meas pointer to measurements - @param eNB_id eNB_id - @param nb_subbands number of subbands - @returns subband PMI bitmap -*/ -uint16_t quantize_subband_pmi(PHY_NR_MEASUREMENTS *meas,uint8_t eNB_id,int nb_subbands); - -int32_t pmi_convert_rank1_from_rank2(uint16_t pmi_alloc, int tpmi, int nb_rb); - -uint16_t quantize_subband_pmi2(PHY_NR_MEASUREMENTS *meas,uint8_t eNB_id,uint8_t a_id,int nb_subbands); - - - -uint64_t cqi2hex(uint32_t cqi); - -uint16_t computeRIV(uint16_t N_RB_DL,uint16_t RBstart,uint16_t Lcrbs); - - -/** \brief This routine extracts a single subband PMI from a bitmap coming from UCI or the pmi_extend function - @param N_RB_DL number of resource blocks - @param mimo_mode - @param pmi_alloc subband PMI bitmap - @param rb resource block for which to extract PMI - @returns subband PMI -*/ -uint8_t get_pmi(uint8_t N_RB_DL,MIMO_mode_t mode, uint32_t pmi_alloc,uint16_t rb); - -int get_nCCE_offset_l1(int *CCE_table, - const unsigned char L, - const int nCCE, - const int common_dci, - const unsigned short rnti, - const unsigned char subframe); - -uint16_t get_nCCE(uint8_t num_pdcch_symbols,NR_DL_FRAME_PARMS *frame_parms,uint8_t mi); - -uint16_t get_nquad(uint8_t num_pdcch_symbols,NR_DL_FRAME_PARMS *frame_parms,uint8_t mi); - -uint8_t get_mi(NR_DL_FRAME_PARMS *frame,uint8_t subframe); - -uint16_t get_nCCE_mac(uint8_t Mod_id,uint8_t CC_id,int num_pdcch_symbols,int subframe); - -uint8_t get_num_pdcch_symbols(uint8_t num_dci,DCI_ALLOC_t *dci_alloc,NR_DL_FRAME_PARMS *frame_parms,uint8_t subframe); - -void pdcch_interleaving(NR_DL_FRAME_PARMS *frame_parms,int32_t **z, int32_t **wbar,uint8_t n_symbols_pdcch,uint8_t mi); - -void pdcch_unscrambling(NR_DL_FRAME_PARMS *frame_parms, - uint8_t subframe, - int8_t* llr, - uint32_t length); - - - -void dlsch_unscrambling(NR_DL_FRAME_PARMS *frame_parms, - int mbsfn_flag, - NR_UE_DLSCH_t *dlsch, - int G, - int16_t* llr, - uint8_t q, - uint8_t Ns); - -void init_ncs_cell(NR_DL_FRAME_PARMS *frame_parms,uint8_t ncs_cell[20][7]); - -void generate_pucch1x(int32_t **txdataF, - NR_DL_FRAME_PARMS *frame_parms, - uint8_t ncs_cell[20][7], - PUCCH_FMT_t fmt, - PUCCH_CONFIG_DEDICATED *pucch_config_dedicated, - uint16_t n1_pucch, - uint8_t shortened_format, - uint8_t *payload, - int16_t amp, - uint8_t subframe); - -void generate_pucch2x(int32_t **txdataF, - NR_DL_FRAME_PARMS *fp, - uint8_t ncs_cell[20][7], - PUCCH_FMT_t fmt, - PUCCH_CONFIG_DEDICATED *pucch_config_dedicated, - uint16_t n2_pucch, - uint8_t *payload, - int A, - int B2, - int16_t amp, - uint8_t subframe, - uint16_t rnti); - -void generate_pucch3x(int32_t **txdataF, - NR_DL_FRAME_PARMS *frame_parms, - uint8_t ncs_cell[20][7], - PUCCH_FMT_t fmt, - PUCCH_CONFIG_DEDICATED *pucch_config_dedicated, - uint16_t n3_pucch, - uint8_t shortened_format, - uint8_t *payload, - int16_t amp, - uint8_t subframe, - uint16_t rnti); - - -void init_ulsch_power_LUT(void); - -/*! - \brief Check for PRACH TXop in subframe - @param frame_parms Pointer to NR_DL_FRAME_PARMS - @param frame frame index to check - @param subframe subframe index to check - @returns 0 on success -*/ -int is_prach_subframe(NR_DL_FRAME_PARMS *frame_parms,frame_t frame, uint8_t subframe); - -/*! - \brief Generate PRACH waveform - @param phy_vars_ue Pointer to ue top-level descriptor - @param eNB_id Index of destination eNB - @param subframe subframe index to operate on - @param index of preamble (0-63) - @param Nf System frame number - @returns 0 on success - -*/ -int32_t generate_prach(PHY_VARS_NR_UE *phy_vars_ue,uint8_t eNB_id,uint8_t subframe,uint16_t Nf); - - -/*! - \brief Helper for MAC, returns number of available PRACH in TDD for a particular configuration index - @param frame_parms Pointer to NR_DL_FRAME_PARMS structure - @returns 0-5 depending on number of available prach -*/ -uint8_t get_num_prach_tdd(module_id_t Mod_id); - -/*! - \brief Return the PRACH format as a function of the Configuration Index and Frame type. - @param prach_ConfigIndex PRACH Configuration Index - @param frame_type 0-FDD, 1-TDD - @returns 0-1 accordingly -*/ -uint8_t get_prach_fmt(uint8_t prach_ConfigIndex,lte_frame_type_t frame_type); - -uint16_t get_nr_prach_fmt(int prach_ConfigIndex,lte_frame_type_t frame_type, nr_frequency_range_e fr); - -/*! - \brief Helper for MAC, returns frequency index of PRACH resource in TDD for a particular configuration index - @param frame_parms Pointer to NR_DL_FRAME_PARMS structure - @returns 0-5 depending on number of available prach -*/ -uint8_t get_fid_prach_tdd(module_id_t Mod_id,uint8_t tdd_map_index); - -/*! - \brief Comp ute DFT of PRACH ZC sequences. Used for generation of prach in UE and reception of PRACH in eNB. - @param rootSequenceIndex PRACH root sequence - #param prach_ConfigIndex PRACH Configuration Index - @param zeroCorrelationZoneConfig PRACH ncs_config - @param highSpeedFlat PRACH High-Speed Flag - @param frame_type TDD/FDD flag - @param Xu DFT output -*/ -void compute_prach_seq(uint16_t rootSequenceIndex, - uint8_t prach_ConfigIndex, - uint8_t zeroCorrelationZoneConfig, - uint8_t highSpeedFlag, - lte_frame_type_t frame_type, - uint32_t X_u[64][839]); - - -void init_prach_tables(int N_ZC); - -void init_unscrambling_lut(void); -void init_scrambling_lut(void); - -/*! - \brief Return the status of MBSFN in this frame/subframe - @param frame Frame index - @param subframe Subframe index - @param frame_parms Pointer to frame parameters - @returns 1 if subframe is for MBSFN -*/ -int is_pmch_subframe(frame_t frame, int subframe, NR_DL_FRAME_PARMS *frame_parms); - -uint8_t is_not_pilot(uint8_t pilots, uint8_t re, uint8_t nushift, uint8_t use2ndpilots); - -uint8_t is_not_UEspecRS(int8_t lprime, uint8_t re, uint8_t nushift, uint8_t Ncp, uint8_t beamforming_mode); - -uint32_t dlsch_decoding_abstraction(double *dlsch_MIPB, - NR_DL_FRAME_PARMS *lte_frame_parms, - NR_UE_DLSCH_t *dlsch, - uint8_t subframe, - uint8_t num_pdcch_symbols); - -// DL power control functions -double get_pa_dB(uint8_t pa); - - -double computeRhoA_UE(PDSCH_CONFIG_DEDICATED *pdsch_config_dedicated, - NR_UE_DLSCH_t *dlsch_ue, - uint8_t dl_power_off, - uint8_t n_antenna_port); - -double computeRhoB_UE(PDSCH_CONFIG_DEDICATED *pdsch_config_dedicated, - PDSCH_CONFIG_COMMON *pdsch_config_common, - uint8_t n_antenna_port, - NR_UE_DLSCH_t *dlsch_ue, - uint8_t dl_power_off); - -/*void compute_sqrt_RhoAoRhoB(PDSCH_CONFIG_DEDICATED *pdsch_config_dedicated, - PDSCH_CONFIG_COMMON *pdsch_config_common, - uint8_t n_antenna_port, - NR_UE_DLSCH_t *dlsch_ue); -*/ - -uint8_t get_prach_prb_offset(NR_DL_FRAME_PARMS *frame_parms, - uint8_t prach_ConfigIndex, - uint8_t n_ra_prboffset, - uint8_t tdd_mapindex, uint16_t Nf); - -uint32_t lte_gold_generic(uint32_t *x1, uint32_t *x2, uint8_t reset); - -int nr_rx_pdsch(PHY_VARS_NR_UE *ue, - PDSCH_t type, - unsigned char eNB_id, - unsigned char eNB_id_i, //if this == ue->n_connected_eNB, we assume MU interference - uint32_t frame, - uint8_t nr_tti_rx, - unsigned char symbol, - unsigned char first_symbol_flag, - RX_type_t rx_type, - unsigned char i_mod, - unsigned char harq_pid); - -uint32_t nr_get_G(uint16_t nb_rb, uint16_t nb_symb_sch,uint8_t nb_re_dmrs,uint16_t length_dmrs, uint8_t Qm, uint8_t Nl) ; - -uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue, - short *dlsch_llr, - NR_DL_FRAME_PARMS *frame_parms, - NR_UE_DLSCH_t *dlsch, - NR_DL_UE_HARQ_t *harq_process, - uint32_t frame, - uint16_t nb_symb_sch, - uint8_t nr_tti_rx, - uint8_t harq_pid, - uint8_t is_crnti, - uint8_t llr8_flag); - -/**@}*/ -#endif diff --git a/openair1/PHY/NR_TRANSPORT/nr_ulsch.c b/openair1/PHY/NR_TRANSPORT/nr_ulsch.c index 2bc623a66c..0040f01544 100644 --- a/openair1/PHY/NR_TRANSPORT/nr_ulsch.c +++ b/openair1/PHY/NR_TRANSPORT/nr_ulsch.c @@ -33,14 +33,61 @@ #include #include "PHY/NR_TRANSPORT/nr_transport_common_proto.h" #include "PHY/NR_TRANSPORT/nr_ulsch.h" -#include "PHY/LTE_REFSIG/lte_refsig.h" +#include "PHY/NR_REFSIG/nr_refsig.h" + +int16_t find_nr_ulsch(uint16_t rnti, PHY_VARS_gNB *gNB,find_type_t type) { + + uint16_t i; + int16_t first_free_index=-1; + + AssertFatal(gNB!=NULL,"gNB is null\n"); + for (i=0; iulsch[i]!=NULL,"gNB->ulsch[%d] is null\n",i); + AssertFatal(gNB->ulsch[i][0]!=NULL,"gNB->ulsch[%d][0] is null\n",i); + LOG_D(PHY,"searching for rnti %x : ulsch_index %d=> harq_mask %x, rnti %x, first_free_index %d\n", rnti,i,gNB->ulsch[i][0]->harq_mask,gNB->ulsch[i][0]->rnti,first_free_index); + if ((gNB->ulsch[i][0]->harq_mask >0) && + (gNB->ulsch[i][0]->rnti==rnti)) return i; + else if ((gNB->ulsch[i][0]->harq_mask == 0) && (first_free_index==-1)) first_free_index=i; + } + if (type == SEARCH_EXIST) return -1; + if (first_free_index != -1) + gNB->ulsch[first_free_index][0]->rnti = 0; + return first_free_index; +} + +void nr_fill_ulsch(PHY_VARS_gNB *gNB, + int frame, + int slot, + nfapi_nr_pusch_pdu_t *ulsch_pdu) { + + + int ulsch_id = find_nr_ulsch(ulsch_pdu->rnti,gNB,SEARCH_EXIST_OR_FREE); + AssertFatal( (ulsch_id>=0) && (ulsch_idrnti,ulsch_id); + + NR_gNB_ULSCH_t *ulsch = gNB->ulsch[ulsch_id][0]; + int harq_pid = ulsch_pdu->pusch_data.harq_process_id; + ulsch->rnti = ulsch_pdu->rnti; + //ulsch->rnti_type; + ulsch->harq_mask |= 1<harq_process_id[slot] = harq_pid; + + ulsch->harq_processes[harq_pid]->frame=frame; + ulsch->harq_processes[harq_pid]->slot=slot; + ulsch->harq_processes[harq_pid]->handled= 0; + ulsch->harq_processes[harq_pid]->status= NR_ACTIVE; + memcpy((void*)&ulsch->harq_processes[harq_pid]->ulsch_pdu, (void*)ulsch_pdu, sizeof(nfapi_nr_pusch_pdu_t)); + + LOG_D(PHY,"Initializing nFAPI for ULSCH, UE %d, harq_pid %d\n",ulsch_id,harq_pid); + +} void nr_ulsch_unscrambling(int16_t* llr, - uint32_t size, - uint8_t q, - uint32_t Nid, - uint32_t n_RNTI) -{ + uint32_t size, + uint8_t q, + uint32_t Nid, + uint32_t n_RNTI) { + uint8_t reset; uint32_t x1, x2, s=0; @@ -56,3 +103,62 @@ void nr_ulsch_unscrambling(int16_t* llr, llr[i] = -llr[i]; } } + +void nr_ulsch_unscrambling_optim(int16_t* llr, + uint32_t size, + uint8_t q, + uint32_t Nid, + uint32_t n_RNTI) { + +#if defined(__x86_64__) || defined(__i386__) + uint32_t x1, x2, s=0; + + x2 = (n_RNTI<<15) + Nid; + + uint8_t *s8=(uint8_t *)&s; + __m128i *llr128 = (__m128i*)llr; + int j=0; + s = lte_gold_generic(&x1, &x2, 1); + + for (int i=0; i<((size>>5)+((size&0x1f) > 0 ? 1 : 0)); i++,j+=4) { + llr128[j] = _mm_mullo_epi16(llr128[j],byte2m128i[s8[0]]); + llr128[j+1] = _mm_mullo_epi16(llr128[j+1],byte2m128i[s8[1]]); + llr128[j+2] = _mm_mullo_epi16(llr128[j+2],byte2m128i[s8[2]]); + llr128[j+3] = _mm_mullo_epi16(llr128[j+3],byte2m128i[s8[3]]); + s = lte_gold_generic(&x1, &x2, 0); + } +#else + + nr_ulsch_unscrambling(llr, + size, + q, + Nid, + n_RNTI); +#endif +} + +void dump_pusch_stats(PHY_VARS_gNB *gNB) { + + for (int i=0;iulsch_stats[i].rnti>0) + LOG_I(PHY,"ULSCH RNTI %x: round_trials %d(%1.1e):%d(%1.1e):%d(%1.1e):%d, current_Qm %d, current_RI %d, total_bytes RX/SCHED %d/%d\n", + gNB->ulsch_stats[i].rnti, + gNB->ulsch_stats[i].round_trials[0], + (double)gNB->ulsch_stats[i].round_trials[1]/gNB->ulsch_stats[i].round_trials[0], + gNB->ulsch_stats[i].round_trials[1], + (double)gNB->ulsch_stats[i].round_trials[2]/gNB->ulsch_stats[i].round_trials[0], + gNB->ulsch_stats[i].round_trials[2], + (double)gNB->ulsch_stats[i].round_trials[3]/gNB->ulsch_stats[i].round_trials[0], + gNB->ulsch_stats[i].round_trials[3], + gNB->ulsch_stats[i].current_Qm, + gNB->ulsch_stats[i].current_RI, + gNB->ulsch_stats[i].total_bytes_rx, + gNB->ulsch_stats[i].total_bytes_tx); + +} + +void clear_pusch_stats(PHY_VARS_gNB *gNB) { + + for (int i=0;iulsch_stats[i],0,sizeof(gNB->ulsch_stats[i])); +} diff --git a/openair1/PHY/NR_TRANSPORT/nr_ulsch.h b/openair1/PHY/NR_TRANSPORT/nr_ulsch.h index 7ff52ae692..a9845b6bbb 100644 --- a/openair1/PHY/NR_TRANSPORT/nr_ulsch.h +++ b/openair1/PHY/NR_TRANSPORT/nr_ulsch.h @@ -75,9 +75,19 @@ void nr_ulsch_unscrambling(int16_t* llr, uint32_t n_RNTI); +void nr_ulsch_unscrambling_optim(int16_t* llr, + uint32_t size, + uint8_t q, + uint32_t Nid, + uint32_t n_RNTI); + void nr_ulsch_procedures(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx, int UE_id, uint8_t harq_pid); int16_t find_nr_ulsch(uint16_t rnti, PHY_VARS_gNB *gNB,find_type_t type); + +void dump_pusch_stats(PHY_VARS_gNB *gNB); + +void clear_pusch_stats(PHY_VARS_gNB *gNB); diff --git a/openair1/PHY/NR_TRANSPORT/nr_ulsch_decoding.c b/openair1/PHY/NR_TRANSPORT/nr_ulsch_decoding.c index 6c6ff4fd05..7980206eb4 100644 --- a/openair1/PHY/NR_TRANSPORT/nr_ulsch_decoding.c +++ b/openair1/PHY/NR_TRANSPORT/nr_ulsch_decoding.c @@ -67,7 +67,7 @@ void free_gNB_ulsch(NR_gNB_ULSCH_t **ulschptr,uint8_t N_RB_UL) if (ulsch) { if (N_RB_UL != 273) { a_segments = a_segments*N_RB_UL; - a_segments = a_segments/273; + a_segments = a_segments/273 +1; } @@ -119,11 +119,10 @@ NR_gNB_ULSCH_t *new_gNB_ulsch(uint8_t max_ldpc_iterations,uint16_t N_RB_UL, uint if (N_RB_UL != 273) { a_segments = a_segments*N_RB_UL; - a_segments = a_segments/273; + a_segments = a_segments/273 +1; } uint16_t ulsch_bytes = a_segments*1056; // allocated bytes per segment - ulsch = (NR_gNB_ULSCH_t *)malloc16(sizeof(NR_gNB_ULSCH_t)); if (ulsch) { @@ -209,8 +208,6 @@ void clean_gNB_ulsch(NR_gNB_ULSCH_t *ulsch) ulsch->Mlimit = 0; ulsch->max_ldpc_iterations = 0; ulsch->last_iteration_cnt = 0; - ulsch->num_active_cba_groups = 0; - for (i=0;icba_rnti[i] = 0; for (i=0;iharq_process_id[i] = 0; for (i=0; iharq_processes[i]->frame=0; - ulsch->harq_processes[i]->subframe=0; + ulsch->harq_processes[i]->slot=0; ulsch->harq_processes[i]->round=0; ulsch->harq_processes[i]->TPC=0; ulsch->harq_processes[i]->mimo_mode=0; ulsch->harq_processes[i]->dci_alloc=0; ulsch->harq_processes[i]->rar_alloc=0; - ulsch->harq_processes[i]->status=0; + ulsch->harq_processes[i]->status=NR_SCH_IDLE; ulsch->harq_processes[i]->subframe_scheduling_flag=0; - ulsch->harq_processes[i]->subframe_cba_scheduling_flag=0; ulsch->harq_processes[i]->phich_active=0; ulsch->harq_processes[i]->phich_ACK=0; ulsch->harq_processes[i]->previous_first_rb=0; @@ -290,7 +286,7 @@ void clean_gNB_ulsch(NR_gNB_ULSCH_t *ulsch) static uint32_t prnt_crc_cnt = 0; #endif -uint32_t nr_ulsch_decoding(PHY_VARS_gNB *phy_vars_gNB, +uint32_t nr_ulsch_decoding(PHY_VARS_gNB *gNB, uint8_t UE_id, short *ulsch_llr, NR_DL_FRAME_PARMS *frame_parms, @@ -312,7 +308,7 @@ uint32_t nr_ulsch_decoding(PHY_VARS_gNB *phy_vars_gNB, #endif - NR_gNB_ULSCH_t *ulsch = phy_vars_gNB->ulsch[UE_id][0]; + NR_gNB_ULSCH_t *ulsch = gNB->ulsch[UE_id][0]; NR_UL_gNB_HARQ_t *harq_process = ulsch->harq_processes[harq_pid]; t_nrLDPC_dec_params decParams; @@ -357,29 +353,24 @@ uint32_t nr_ulsch_decoding(PHY_VARS_gNB *phy_vars_gNB, } // harq_process->trials[nfapi_ulsch_pdu_rel15->round]++; + + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_gNB_ULSCH_DECODING,1); harq_process->TBS = pusch_pdu->pusch_data.tb_size; + harq_process->round = nr_rv_round_map[pusch_pdu->pusch_data.rv_index]; A = (harq_process->TBS)<<3; ret = ulsch->max_ldpc_iterations + 1; LOG_D(PHY,"ULSCH Decoding, harq_pid %d TBS %d G %d mcs %d Nl %d nb_rb %d, Qm %d, n_layers %d\n",harq_pid,A,G, mcs, n_layers, nb_rb, Qm, n_layers); - if (harq_process->round == 0) { - - // This is a new packet, so compute quantities regarding segmentation - if (A > 3824) - harq_process->B = A+24; - else - harq_process->B = A+16; - - if (R<1024) - Coderate = (float) R /(float) 1024; - else - Coderate = (float) R /(float) 2048; - - if ((A <=292) || ((A<=3824) && (Coderate <= 0.6667)) || Coderate <= 0.25){ - p_decParams->BG = 2; - if (Coderate < 0.3333) { + if (R<1024) + Coderate = (float) R /(float) 1024; + else + Coderate = (float) R /(float) 2048; + + if ((A <=292) || ((A<=3824) && (Coderate <= 0.6667)) || Coderate <= 0.25){ + p_decParams->BG = 2; + if (Coderate < 0.3333) { p_decParams->R = 15; kc = 52; } @@ -406,6 +397,34 @@ uint32_t nr_ulsch_decoding(PHY_VARS_gNB *phy_vars_gNB, kc = 27; } } + + NR_gNB_SCH_STATS_t *stats=NULL; + int first_free=-1; + for (int i=0;iulsch_stats[i].rnti == 0 && first_free == -1) { + first_free = i; + stats=&gNB->ulsch_stats[i]; + } + if (gNB->ulsch_stats[i].rnti == ulsch->rnti) { + stats=&gNB->ulsch_stats[i]; + break; + } + } + if (stats) { + stats->rnti = ulsch->rnti; + stats->round_trials[harq_process->round]++; + } + if (harq_process->round == 0) { + if (stats) { + stats->current_Qm = Qm; + stats->current_RI = n_layers; + stats->total_bytes_tx += harq_process->TBS; + } + // This is a new packet, so compute quantities regarding segmentation + if (A > 3824) + harq_process->B = A+24; + else + harq_process->B = A+16; // [hna] Perform nr_segmenation with input and output set to NULL to calculate only (B, C, K, Z, F) nr_segmentation(NULL, @@ -420,7 +439,7 @@ uint32_t nr_ulsch_decoding(PHY_VARS_gNB *phy_vars_gNB, #ifdef DEBUG_ULSCH_DECODING printf("ulsch decoding nr segmentation Z %d\n", harq_process->Z); if (!frame%100) - printf("K %d C %d Z %d\n", harq_process->K, harq_process->C, harq_process->Z); + printf("K %d C %d Z %d \n", harq_process->K, harq_process->C, harq_process->Z); #endif } p_decParams->Z = harq_process->Z; @@ -436,7 +455,7 @@ uint32_t nr_ulsch_decoding(PHY_VARS_gNB *phy_vars_gNB, if (nb_rb != 273) { a_segments = a_segments*nb_rb; - a_segments = a_segments/273; + a_segments = a_segments/273 +1; } if (harq_process->C > a_segments) { @@ -458,7 +477,7 @@ uint32_t nr_ulsch_decoding(PHY_VARS_gNB *phy_vars_gNB, E = nr_get_E(G, harq_process->C, Qm, n_layers, r); - start_meas(&phy_vars_gNB->ulsch_deinterleaving_stats); + start_meas(&gNB->ulsch_deinterleaving_stats); //////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////// nr_deinterleaving_ldpc /////////////////////////////////// @@ -474,11 +493,10 @@ uint32_t nr_ulsch_decoding(PHY_VARS_gNB *phy_vars_gNB, //for (int i =0; i<16; i++) // printf("rx output deinterleaving w[%d]= %d r_offset %d\n", i,harq_process->w[r][i], r_offset); - stop_meas(&phy_vars_gNB->ulsch_deinterleaving_stats); + stop_meas(&gNB->ulsch_deinterleaving_stats); -#ifdef DEBUG_ULSCH_DECODING - LOG_D(PHY,"HARQ_PID %d Rate Matching Segment %d (coded bits %d,unpunctured/repeated bits %d, TBS %d, mod_order %d, nb_rb %d, Nl %d, rv %d, round %d)...\n", + LOG_D(PHY,"HARQ_PID %d Rate Matching Segment %d (coded bits %d,unpunctured/repeated bits %d, TBS %d, mod_order %d, nb_rb %d, Nl %d, rvidx %d, round %d)...\n", harq_pid,r, G, Kr*3, harq_process->TBS, @@ -487,7 +505,6 @@ uint32_t nr_ulsch_decoding(PHY_VARS_gNB *phy_vars_gNB, n_layers, pusch_pdu->pusch_data.rv_index, harq_process->round); -#endif ////////////////////////////////////////////////////////////////////////////////////////// @@ -497,7 +514,7 @@ uint32_t nr_ulsch_decoding(PHY_VARS_gNB *phy_vars_gNB, ///////////////////////// harq_process->e =====> harq_process->d ///////////////////////// - start_meas(&phy_vars_gNB->ulsch_rate_unmatching_stats); + start_meas(&gNB->ulsch_rate_unmatching_stats); Tbslbrm = nr_compute_tbslbrm(0,nb_rb,n_layers,harq_process->C); @@ -514,12 +531,12 @@ uint32_t nr_ulsch_decoding(PHY_VARS_gNB *phy_vars_gNB, harq_process->F, Kr-harq_process->F-2*(p_decParams->Z))==-1) { - stop_meas(&phy_vars_gNB->ulsch_rate_unmatching_stats); + stop_meas(&gNB->ulsch_rate_unmatching_stats); LOG_E(PHY,"ulsch_decoding.c: Problem in rate_matching\n"); return (ulsch->max_ldpc_iterations + 1); } else { - stop_meas(&phy_vars_gNB->ulsch_rate_unmatching_stats); + stop_meas(&gNB->ulsch_rate_unmatching_stats); } r_offset += E; @@ -527,7 +544,7 @@ uint32_t nr_ulsch_decoding(PHY_VARS_gNB *phy_vars_gNB, #ifdef DEBUG_ULSCH_DECODING if (r==0) { write_output("decoder_llr.m","decllr",ulsch_llr,G,1,0); - write_output("decoder_in.m","dec",&harq_process->d[0][0],(3*8*Kr_bytes)+12,1,0); + write_output("decoder_in.m","dec",&harq_process->d[0][0],E,1,0); } printf("decoder input(segment %u) :", r); @@ -557,7 +574,7 @@ uint32_t nr_ulsch_decoding(PHY_VARS_gNB *phy_vars_gNB, if (err_flag == 0) { - start_meas(&phy_vars_gNB->ulsch_ldpc_decoding_stats); + start_meas(&gNB->ulsch_ldpc_decoding_stats); //LOG_E(PHY,"AbsSubframe %d.%d Start LDPC segment %d/%d A %d ",frame%1024,nr_tti_rx,r,harq_process->C-1, A); @@ -571,7 +588,6 @@ uint32_t nr_ulsch_decoding(PHY_VARS_gNB *phy_vars_gNB, AssertFatal(kc!=255,""); j+=(harq_process->F>>3); - // for (i=Kr_bytes,j=K_bytes_F-((2*p_decParams->Z)>>3); i < ((kc*p_decParams->Z)>>3); i++, j++) { for (i=Kr_bytes; i < ((kc*p_decParams->Z)>>3); i++, j++) { pv[i]= _mm_loadu_si128((__m128i*)(&harq_process->d[r][8*j])); } @@ -608,7 +624,6 @@ uint32_t nr_ulsch_decoding(PHY_VARS_gNB *phy_vars_gNB, #endif ret = ulsch->max_ldpc_iterations + 1; } - nb_total_decod++; if (no_iteration_ldpc > ulsch->max_ldpc_iterations){ @@ -627,7 +642,7 @@ uint32_t nr_ulsch_decoding(PHY_VARS_gNB *phy_vars_gNB, //write_output("dec_output.m","dec0",harq_process->c[0],Kr_bytes,1,4); #endif - stop_meas(&phy_vars_gNB->ulsch_ldpc_decoding_stats); + stop_meas(&gNB->ulsch_ldpc_decoding_stats); } if ((err_flag == 0) && (ret >= (ulsch->max_ldpc_iterations + 1))) { @@ -650,7 +665,7 @@ uint32_t nr_ulsch_decoding(PHY_VARS_gNB *phy_vars_gNB, #ifdef gNB_DEBUG_TRACE LOG_I(PHY,"[gNB %d] ULSCH: Setting NAK for SFN/SF %d/%d (pid %d, status %d, round %d, TBS %d) Kr %d r %d\n", - phy_vars_gNB->Mod_id, frame, nr_tti_rx, harq_pid,harq_process->status, harq_process->round,harq_process->TBS,Kr,r); + gNB->Mod_id, frame, nr_tti_rx, harq_pid,harq_process->status, harq_process->round,harq_process->TBS,Kr,r); #endif // harq_process->harq_ack.ack = 0; @@ -666,8 +681,8 @@ uint32_t nr_ulsch_decoding(PHY_VARS_gNB *phy_vars_gNB, ulsch->harq_mask &= ~(1 << harq_pid); } - // LOG_D(PHY,"[gNB %d] ULSCH: Setting NACK for nr_tti_rx %d (pid %d, pid status %d, round %d/Max %d, TBS %d)\n", - // phy_vars_gNB->Mod_id,nr_tti_rx,harq_pid,harq_process->status,harq_process->round,ulsch->Mlimit,harq_process->TBS); + // LOG_D(PHY,"[gNB %d] ULSCH: Setting NACK for nr_tti_rx %d (pid %d, pid status %d, round %d/Max %d, TBS %d)\n", + // gNB->Mod_id,nr_tti_rx,harq_pid,harq_process->status,harq_process->round,ulsch->Mlimit,harq_process->TBS); harq_process->handled = 1; ret = ulsch->max_ldpc_iterations + 1; @@ -676,18 +691,19 @@ uint32_t nr_ulsch_decoding(PHY_VARS_gNB *phy_vars_gNB, #ifdef gNB_DEBUG_TRACE LOG_I(PHY,"[gNB %d] ULSCH: Setting ACK for nr_tti_rx %d TBS %d\n", - phy_vars_gNB->Mod_id,nr_tti_rx,harq_process->TBS); + gNB->Mod_id,nr_tti_rx,harq_process->TBS); #endif harq_process->status = SCH_IDLE; harq_process->round = 0; // harq_process->handled = 0; - ulsch->harq_mask &= ~(1 << harq_pid); + ulsch->harq_mask &= ~(1 << harq_pid); // harq_process->harq_ack.ack = 1; // harq_process->harq_ack.harq_id = harq_pid; // harq_process->harq_ack.send_harq_status = 1; - // LOG_D(PHY,"[gNB %d] ULSCH: Setting ACK for nr_tti_rx %d (pid %d, round %d, TBS %d)\n",phy_vars_gNB->Mod_id,nr_tti_rx,harq_pid,harq_process->round,harq_process->TBS); + // LOG_D(PHY,"[gNB %d] ULSCH: Setting ACK for nr_tti_rx %d (pid %d, round %d, TBS %d)\n",gNB->Mod_id,nr_tti_rx,harq_pid,harq_process->round,harq_process->TBS); + // Reassembly of Transport block here offset = 0; @@ -709,18 +725,19 @@ uint32_t nr_ulsch_decoding(PHY_VARS_gNB *phy_vars_gNB, #endif } + if (stats) stats->total_bytes_rx += harq_process->TBS; } #ifdef DEBUG_ULSCH_DECODING - LOG_I(PHY, "Decoder output (payload): \n"); - for (i = 0; i < harq_process->TBS / 8; i++) { + LOG_I(PHY, "Decoder output (payload) at SFN/SF: %d/%d TBS: %d\n", frame, nr_tti_rx,harq_process->TBS); + for (i = 0; i < harq_process->TBS; i++) { //harq_process_ul_ue->a[i] = (unsigned char) rand(); //printf("a[%d]=0x%02x\n",i,harq_process_ul_ue->a[i]); - printf("0x%02x",harq_process->b[i]); + printf("%02x ",harq_process->b[i]); } #endif ulsch->last_iteration_cnt = ret; - + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_gNB_ULSCH_DECODING,0); return(ret); } diff --git a/openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c b/openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c index 363b67960d..622e18f082 100644 --- a/openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c +++ b/openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c @@ -222,23 +222,24 @@ void nr_idft(uint32_t *z, uint32_t Msc_PUSCH) } - void nr_ulsch_extract_rbs_single(int32_t **rxdataF, NR_gNB_PUSCH *pusch_vars, unsigned char symbol, uint8_t is_dmrs_symbol, + uint8_t is_ptrs_symbol, nfapi_nr_pusch_pdu_t *pusch_pdu, NR_DL_FRAME_PARMS *frame_parms) { + unsigned short start_re, re, nb_re_pusch; unsigned char aarx; - uint8_t K_ptrs; + uint8_t K_ptrs = 0; uint32_t rxF_ext_index = 0; uint32_t ul_ch0_ext_index = 0; uint32_t ul_ch0_index = 0; uint32_t ul_ch0_ptrs_ext_index = 0; uint32_t ul_ch0_ptrs_index = 0; - uint8_t is_ptrs_symbol_flag,k_prime; + uint8_t k_prime; uint16_t n=0, num_ptrs_symbols; int16_t *rxF,*rxF_ext; int *ul_ch0,*ul_ch0_ext; @@ -253,22 +254,25 @@ void nr_ulsch_extract_rbs_single(int32_t **rxdataF, #endif - uint8_t is_dmrs_re; + uint8_t is_dmrs_re=0,is_ptrs_re=0; start_re = (frame_parms->first_carrier_offset + (pusch_pdu->rb_start * NR_NB_SC_PER_RB))%frame_parms->ofdm_symbol_size; nb_re_pusch = NR_NB_SC_PER_RB * pusch_pdu->rb_size; - is_ptrs_symbol_flag = 0; - num_ptrs_symbols = 0; +#ifdef __AVX2__ + int nb_re_pusch2 = nb_re_pusch + (nb_re_pusch&7); +#else + int nb_re_pusch2 = nb_re_pusch; +#endif - K_ptrs = (pusch_pdu->pusch_ptrs.ptrs_freq_density)?4:2; + num_ptrs_symbols = 0; for (aarx = 0; aarx < frame_parms->nb_antennas_rx; aarx++) { rxF = (int16_t *)&rxdataF[aarx][symbol * frame_parms->ofdm_symbol_size]; - rxF_ext = (int16_t *)&pusch_vars->rxdataF_ext[aarx][symbol * nb_re_pusch]; // [hna] rxdataF_ext isn't contiguous in order to solve an alignment problem ib llr computation in case of mod_order = 4, 6 + rxF_ext = (int16_t *)&pusch_vars->rxdataF_ext[aarx][symbol * nb_re_pusch2]; // [hna] rxdataF_ext isn't contiguous in order to solve an alignment problem ib llr computation in case of mod_order = 4, 6 ul_ch0 = &pusch_vars->ul_ch_estimates[aarx][pusch_vars->dmrs_symbol*frame_parms->ofdm_symbol_size]; // update channel estimates if new dmrs symbol are available - ul_ch0_ext = &pusch_vars->ul_ch_estimates_ext[aarx][symbol*nb_re_pusch]; + ul_ch0_ext = &pusch_vars->ul_ch_estimates_ext[aarx][symbol*nb_re_pusch2]; ul_ch0_ptrs = &pusch_vars->ul_ch_ptrs_estimates[aarx][pusch_vars->ptrs_symbol_index*frame_parms->ofdm_symbol_size]; // update channel estimates if new dmrs symbol are available @@ -277,62 +281,75 @@ void nr_ulsch_extract_rbs_single(int32_t **rxdataF, n = 0; k_prime = 0; - for (re = 0; re < nb_re_pusch; re++) { - - if (is_dmrs_symbol) - is_dmrs_re = (re == get_dmrs_freq_idx_ul(n, k_prime, delta, pusch_pdu->dmrs_config_type)); - else - is_dmrs_re = 0; - - if (pusch_pdu->pdu_bit_map & PUSCH_PDU_BITMAP_PUSCH_PTRS) { - if(is_ptrs_symbol(symbol, pusch_vars->ptrs_symbols)) - is_ptrs_symbol_flag = is_ptrs_subcarrier((start_re + re) % frame_parms->ofdm_symbol_size, - n_rnti, - aarx, - pusch_pdu->dmrs_config_type, - K_ptrs, - pusch_pdu->rb_size, - pusch_pdu->pusch_ptrs.ptrs_ports_list[0].ptrs_re_offset, - start_re, - frame_parms->ofdm_symbol_size); - - if (is_ptrs_symbol_flag == 1) - num_ptrs_symbols++; + if (is_dmrs_symbol == 0 && is_ptrs_symbol == 0) { + // + //rxF[ ((start_re + re)*2) % (frame_parms->ofdm_symbol_size*2)]); + if (start_re + nb_re_pusch < frame_parms->ofdm_symbol_size) memcpy1((void*)rxF_ext, + (void*)&rxF[start_re*2], + nb_re_pusch*sizeof(int32_t)); + else { + int neg_length = frame_parms->ofdm_symbol_size-start_re; + int pos_length = nb_re_pusch-neg_length; + memcpy1((void*)rxF_ext,(void*)&rxF[start_re*2],neg_length*sizeof(int32_t)); + memcpy1((void*)&rxF_ext[2*neg_length],(void*)rxF,pos_length*sizeof(int32_t)); } - - #ifdef DEBUG_RB_EXT - printf("re = %d, is_ptrs_symbol_flag = %d, symbol = %d\n", re, is_ptrs_symbol_flag, symbol); - #endif - - if ( is_dmrs_re == 0 && is_ptrs_symbol_flag == 0) { - - rxF_ext[rxF_ext_index] = (rxF[ ((start_re + re)*2) % (frame_parms->ofdm_symbol_size*2)]); - rxF_ext[rxF_ext_index + 1] = (rxF[(((start_re + re)*2) + 1) % (frame_parms->ofdm_symbol_size*2)]); - ul_ch0_ext[ul_ch0_ext_index] = ul_ch0[ul_ch0_index]; - ul_ch0_ptrs_ext[ul_ch0_ptrs_ext_index] = ul_ch0_ptrs[ul_ch0_ptrs_index]; - - #ifdef DEBUG_RB_EXT - printf("rxF_ext[%d] = %d, %d\n", rxF_ext_index, rxF_ext[rxF_ext_index], rxF_ext[rxF_ext_index+1]); - #endif - - ul_ch0_ext_index++; - ul_ch0_ptrs_ext_index++; - rxF_ext_index +=2; - } else { - k_prime++; - k_prime&=1; - n+=(k_prime)?0:1; - } - ul_ch0_index++; - ul_ch0_ptrs_index++; + memcpy1((void*)ul_ch0_ext,(void*)ul_ch0,nb_re_pusch*sizeof(int32_t)); } - } + else { + for (re = 0; re < nb_re_pusch; re++) { + + if (is_dmrs_symbol) is_dmrs_re = (re == get_dmrs_freq_idx_ul(n, k_prime, delta, pusch_pdu->dmrs_config_type)); + + if (is_ptrs_symbol) { + K_ptrs = (pusch_pdu->pusch_ptrs.ptrs_freq_density)?4:2; + is_ptrs_re = is_ptrs_subcarrier((start_re + re) % frame_parms->ofdm_symbol_size, + n_rnti, + aarx, + pusch_pdu->dmrs_config_type, + K_ptrs, + pusch_pdu->rb_size, + pusch_pdu->pusch_ptrs.ptrs_ports_list[0].ptrs_re_offset, + start_re, + frame_parms->ofdm_symbol_size); + + num_ptrs_symbols+=is_ptrs_re; + + } + +#ifdef DEBUG_RB_EXT + printf("re = %d, kprime %d, n %d, is_ptrs_symbol = %d, symbol = %d\n", re, k_prime,n,is_ptrs_symbol, symbol); +#endif + if ( is_dmrs_re == 0 && is_ptrs_re == 0) { + + rxF_ext[rxF_ext_index] = (rxF[ ((start_re + re)*2) % (frame_parms->ofdm_symbol_size*2)]); + rxF_ext[rxF_ext_index + 1] = (rxF[(((start_re + re)*2) + 1) % (frame_parms->ofdm_symbol_size*2)]); + ul_ch0_ext[ul_ch0_ext_index] = ul_ch0[ul_ch0_index]; + ul_ch0_ptrs_ext[ul_ch0_ptrs_ext_index] = ul_ch0_ptrs[ul_ch0_ptrs_index]; + +#ifdef DEBUG_RB_EXT + printf("dmrs symb %d: rxF_ext[%d] = (%d,%d), ul_ch0_ext[%d] = (%d,%d)\n", + is_dmrs_symbol,rxF_ext_index>>1, rxF_ext[rxF_ext_index],rxF_ext[rxF_ext_index+1], + ul_ch0_ext_index, ((int16_t*)&ul_ch0_ext[ul_ch0_ext_index])[0], ((int16_t*)&ul_ch0_ext[ul_ch0_ext_index])[1]); +#endif + ul_ch0_ext_index++; + ul_ch0_ptrs_ext_index++; + rxF_ext_index +=2; + } else { + k_prime++; + k_prime&=1; + n+=(k_prime)?0:1; + } + ul_ch0_index++; + ul_ch0_ptrs_index++; + } + } // is_dmrs_symbol ==0 && is_ptrs_symbol == 0 + } pusch_vars->ptrs_sc_per_ofdm_symbol = num_ptrs_symbols; - + } - + void nr_ulsch_scale_channel(int **ul_ch_estimates_ext, NR_DL_FRAME_PARMS *frame_parms, NR_gNB_ULSCH_t **ulsch_gNB, @@ -357,10 +374,16 @@ void nr_ulsch_scale_channel(int **ul_ch_estimates_ext, ch_amp128 = _mm_set1_epi16(ch_amp); // Q3.13 +#ifdef __AVX2__ + int off = ((nb_rb&1) == 1)? 4:0; +#else + int off = 0; +#endif + for (aatx=0; aatx < frame_parms->nb_antenna_ports_gNB; aatx++) { for (aarx=0; aarx < frame_parms->nb_antennas_rx; aarx++) { - ul_ch128 = (__m128i *)&ul_ch_estimates_ext[aarx][symbol*nb_rb*NR_NB_SC_PER_RB]; + ul_ch128 = (__m128i *)&ul_ch_estimates_ext[aarx][symbol*(off+(nb_rb*NR_NB_SC_PER_RB))]; if (is_dmrs_symbol==1){ if (pusch_dmrs_type == pusch_dmrs_type1) @@ -369,7 +392,6 @@ void nr_ulsch_scale_channel(int **ul_ch_estimates_ext, nb_rb = (2*nb_rb)/3; } - for (rb=0;rb>x; +#ifdef __AVX2__ + int off = ((nb_rb&1) == 1)? 4:0; +#else + int off = 0; +#endif + for (aatx = 0; aatx < frame_parms->nb_antennas_tx; aatx++) for (aarx = 0; aarx < frame_parms->nb_antennas_rx; aarx++) { //clear average level avg128U = _mm_setzero_si128(); - ul_ch128=(__m128i *)&ul_ch_estimates_ext[(aatx<<1)+aarx][symbol*nb_rb*12]; + ul_ch128=(__m128i *)&ul_ch_estimates_ext[(aatx<<1)+aarx][symbol*(off+(nb_rb*12))]; for (rb = 0; rb < len/12; rb++) { avg128U = _mm_add_epi32(avg128U, _mm_srai_epi32(_mm_madd_epi16(ul_ch128[0], ul_ch128[0]), x)); @@ -443,7 +471,7 @@ void nr_ulsch_channel_level(int **ul_ch_estimates_ext, symbol_mod = (symbol>=(7-frame_parms->Ncp)) ? symbol-(7-frame_parms->Ncp) : symbol; - for (aatx=0; aatxnb_antenna_ports_gNB; aatx++) + for (aatx=0; aatxnb_antenna_ports_gNB; aatx++) { for (aarx=0; aarxnb_antennas_rx; aarx++) { //clear average level avg128U = vdupq_n_s32(0); @@ -486,8 +514,7 @@ void nr_ulsch_channel_level(int **ul_ch_estimates_ext, ((int32_t*)&avg128U)[2] + ((int32_t*)&avg128U)[3] ) / (nb_rb*nre); } - - + } #endif } @@ -504,21 +531,21 @@ void nr_ulsch_channel_compensation(int **rxdataF_ext, unsigned short nb_rb, unsigned char output_shift) { + #ifdef DEBUG_CH_COMP int16_t *rxF, *ul_ch; int prnt_idx; - - rxF = (int16_t *)&rxdataF_ext[0][(symbol*nb_rb*12)]; - ul_ch = (int16_t *)&ul_ch_estimates_ext[0][symbol*nb_rb*12]; + rxF = (int16_t *)&rxdataF_ext[0][symbol*(off+(nb_rb*12))]; + ul_ch = (int16_t *)&ul_ch_estimates_ext[0][symbol*(off+(nb_rb*1))2]; printf("--------------------symbol = %d, mod_order = %d, output_shift = %d-----------------------\n", symbol, mod_order, output_shift); - printf("----------------Before compansation------------------\n"); + printf("----------------Before compensation------------------\n"); - for (prnt_idx=0;prnt_idx<12*nb_rb*2;prnt_idx++){ + for (prnt_idx=0;prnt_idx<12*nb_rb*2;prnt_idx+=2){ - printf("rxF[%d] = %d\n", prnt_idx, rxF[prnt_idx]); - printf("ul_ch[%d] = %d\n", prnt_idx, ul_ch[prnt_idx]); + printf("rxF[%d] = (%d,%d)\n", prnt_idx>>1, rxF[prnt_idx],rxF[prnt_idx+1]); + printf("ul_ch[%d] = (%d,%d)\n", prnt_idx>>1, ul_ch[prnt_idx],ul_ch[prnt_idx+1]); } @@ -529,7 +556,7 @@ void nr_ulsch_channel_compensation(int **rxdataF_ext, int print_idx; - ch_mag = (int16_t *)&ul_ch_mag[0][(symbol*nb_rb*12)]; + ch_mag = (int16_t *)&ul_ch_mag[0][symbol*(off+(nb_rb*12))]; printf("--------------------symbol = %d, mod_order = %d-----------------------\n", symbol, mod_order); printf("----------------Before computation------------------\n"); @@ -542,7 +569,13 @@ void nr_ulsch_channel_compensation(int **rxdataF_ext, #endif -#if defined(__i386) || defined(__x86_64) +#ifdef __AVX2__ + int off = ((nb_rb&1) == 1)? 4:0; +#else + int off = 0; +#endif + +#if defined(__i386) || defined(__x86_64__) unsigned short rb; unsigned char aatx,aarx; @@ -564,11 +597,11 @@ void nr_ulsch_channel_compensation(int **rxdataF_ext, for (aarx=0; aarxnb_antennas_rx; aarx++) { - ul_ch128 = (__m128i *)&ul_ch_estimates_ext[(aatx<<1)+aarx][symbol*nb_rb*12]; - ul_ch_mag128 = (__m128i *)&ul_ch_mag[(aatx<<1)+aarx][symbol*nb_rb*12]; - ul_ch_mag128b = (__m128i *)&ul_ch_magb[(aatx<<1)+aarx][symbol*nb_rb*12]; - rxdataF128 = (__m128i *)&rxdataF_ext[aarx][symbol*nb_rb*12]; - rxdataF_comp128 = (__m128i *)&rxdataF_comp[(aatx<<1)+aarx][symbol*nb_rb*12]; + ul_ch128 = (__m128i *)&ul_ch_estimates_ext[(aatx<<1)+aarx][symbol*(off+(nb_rb*12))]; + ul_ch_mag128 = (__m128i *)&ul_ch_mag[(aatx<<1)+aarx][symbol*(off+(nb_rb*12))]; + ul_ch_mag128b = (__m128i *)&ul_ch_magb[(aatx<<1)+aarx][symbol*(off+(nb_rb*12))]; + rxdataF128 = (__m128i *)&rxdataF_ext[aarx][symbol*(off+(nb_rb*12))]; + rxdataF_comp128 = (__m128i *)&rxdataF_comp[(aatx<<1)+aarx][symbol*(off+(nb_rb*12))]; for (rb=0; rbnb_antennas_rx; aarx++) { rho128 = (__m128i *)&rho[aarx][symbol*frame_parms->N_RB_UL*12]; ul_ch128 = (__m128i *)&ul_ch_estimates_ext[aarx][symbol*frame_parms->N_RB_UL*12]; @@ -788,7 +820,6 @@ void nr_ulsch_channel_compensation(int **rxdataF_ext, #elif defined(__arm__) - unsigned short rb; unsigned char aatx,aarx,symbol_mod,is_dmrs_symbol=0; @@ -986,13 +1017,13 @@ void nr_ulsch_channel_compensation(int **rxdataF_ext, #ifdef DEBUG_CH_COMP - rxF = (int16_t *)&rxdataF_comp[0][(symbol*nb_rb*12)]; + rxF = (int16_t *)&rxdataF_comp[0][(symbol*(off+(nb_rb*12)))]; printf("----------------After compansation------------------\n"); - for (prnt_idx=0;prnt_idx<12*nb_rb*2;prnt_idx++){ + for (prnt_idx=0;prnt_idx<12*nb_rb*2;prnt_idx+=2){ - printf("rxF[%d] = %d\n", prnt_idx, rxF[prnt_idx]); + printf("rxF[%d] = (%d,%d)\n", prnt_idx>>1, rxF[prnt_idx],rxF[prnt_idx+1]); } @@ -1001,13 +1032,13 @@ void nr_ulsch_channel_compensation(int **rxdataF_ext, #ifdef DEBUG_CH_MAG - ch_mag = (int16_t *)&ul_ch_mag[0][(symbol*nb_rb*12)]; + ch_mag = (int16_t *)&ul_ch_mag[0][(symbol*(off+(nb_rb*12)))]; printf("----------------After computation------------------\n"); - for (print_idx=0;print_idx<12*nb_rb*2;print_idx++){ + for (print_idx=0;print_idx<12*nb_rb*2;print_idx+=2){ - printf("ch_mag[%d] = %d\n", print_idx, ch_mag[print_idx]); + printf("ch_mag[%d] = (%d,%d)\n", print_idx>>1, ch_mag[print_idx],ch_mag[print_idx+1]); } @@ -1015,37 +1046,99 @@ void nr_ulsch_channel_compensation(int **rxdataF_ext, } -void nr_rx_pusch(PHY_VARS_gNB *gNB, - uint8_t UE_id, - uint32_t frame, - uint8_t nr_tti_rx, - unsigned char symbol, - unsigned char harq_pid) +void nr_ulsch_detection_mrc(NR_DL_FRAME_PARMS *frame_parms, + int32_t **rxdataF_comp, + int32_t **ul_ch_mag, + int32_t **ul_ch_magb, + uint8_t symbol, + uint16_t nb_rb) { + int n_rx = frame_parms->nb_antennas_rx; +#if defined(__x86_64__) || defined(__i386__) + __m128i *rxdataF_comp128[1+n_rx],*ul_ch_mag128[1+n_rx],*ul_ch_mag128b[1+n_rx]; +#elif defined(__arm__) + int16x8_t *rxdataF_comp128_0,*ul_ch_mag128_0,*ul_ch_mag128_0b; + int16x8_t *rxdataF_comp128_1,*ul_ch_mag128_1,*ul_ch_mag128_1b; +#endif + int32_t i; + +#ifdef __AVX2__ + int off = ((nb_rb&1) == 1)? 4:0; +#else + int off = 0; +#endif + + if (frame_parms->nb_antennas_rx>1) { +#if defined(__x86_64__) || defined(__i386__) + int nb_re = nb_rb*12; + for (int aa=0;aanb_antennas_rx;aa++) { + rxdataF_comp128[aa] = (__m128i *)&rxdataF_comp[aa][(symbol*(nb_re + off))]; + ul_ch_mag128[aa] = (__m128i *)&ul_ch_mag[aa][(symbol*(nb_re + off))]; + ul_ch_mag128b[aa] = (__m128i *)&ul_ch_magb[aa][(symbol*(nb_re + off))]; + + // MRC on each re of rb, both on MF output and magnitude (for 16QAM/64QAM llr computation) + for (i=0; iN_RB_DL*12]; + rxdataF_comp128_1 = (int16x8_t *)&rxdataF_comp[1][symbol*frame_parms->N_RB_DL*12]; + ul_ch_mag128_0 = (int16x8_t *)&ul_ch_mag[0][symbol*frame_parms->N_RB_DL*12]; + ul_ch_mag128_1 = (int16x8_t *)&ul_ch_mag[1][symbol*frame_parms->N_RB_DL*12]; + ul_ch_mag128_0b = (int16x8_t *)&ul_ch_magb[0][symbol*frame_parms->N_RB_DL*12]; + ul_ch_mag128_1b = (int16x8_t *)&ul_ch_magb[1][symbol*frame_parms->N_RB_DL*12]; + + // MRC on each re of rb, both on MF output and magnitude (for 16QAM/64QAM llr computation) + for (i=0; iframe_parms; - nfapi_nr_pusch_pdu_t *rel15_ul = &gNB->ulsch[UE_id][0]->harq_processes[harq_pid]->ulsch_pdu; + nfapi_nr_pusch_pdu_t *rel15_ul = &gNB->ulsch[ulsch_id][0]->harq_processes[harq_pid]->ulsch_pdu; dmrs_symbol_flag = 0; - first_symbol_flag = 0; - gNB->pusch_vars[UE_id]->ptrs_sc_per_ofdm_symbol = 0; + ptrs_symbol_flag = 0; + + gNB->pusch_vars[ulsch_id]->ptrs_sc_per_ofdm_symbol = 0; if(symbol == rel15_ul->start_symbol_index){ - gNB->pusch_vars[UE_id]->rxdataF_ext_offset = 0; - gNB->pusch_vars[UE_id]->dmrs_symbol = 0; - gNB->pusch_vars[UE_id]->cl_done = 0; - gNB->pusch_vars[UE_id]->ptrs_symbols = 0; - first_symbol_flag = 1; + gNB->pusch_vars[ulsch_id]->rxdataF_ext_offset = 0; + gNB->pusch_vars[ulsch_id]->dmrs_symbol = 0; + gNB->pusch_vars[ulsch_id]->cl_done = 0; + gNB->pusch_vars[ulsch_id]->ptrs_symbols = 0; if (rel15_ul->pdu_bit_map & PUSCH_PDU_BITMAP_PUSCH_PTRS) { // if there is ptrs pdu L_ptrs = 1<<(rel15_ul->pusch_ptrs.ptrs_time_density); - set_ptrs_symb_idx(&gNB->pusch_vars[UE_id]->ptrs_symbols, + set_ptrs_symb_idx(&gNB->pusch_vars[ulsch_id]->ptrs_symbols, rel15_ul->nr_of_symbols, rel15_ul->start_symbol_index, L_ptrs, @@ -1053,108 +1146,154 @@ void nr_rx_pusch(PHY_VARS_gNB *gNB, } } + bwp_start_subcarrier = (rel15_ul->rb_start*NR_NB_SC_PER_RB + frame_parms->first_carrier_offset) % frame_parms->ofdm_symbol_size; dmrs_symbol_flag = ((rel15_ul->ul_dmrs_symb_pos)>>symbol)&0x01; + LOG_D(PHY,"symbol %d bwp_start_subcarrier %d, rb_start %d, first_carrier_offset %d\n",symbol,bwp_start_subcarrier,rel15_ul->rb_start,frame_parms->first_carrier_offset); + LOG_D(PHY,"ul_dmrs_symb_pos %x\n",rel15_ul->ul_dmrs_symb_pos); + if (dmrs_symbol_flag == 1){ - nb_re_pusch = rel15_ul->rb_size * ((rel15_ul->dmrs_config_type==pusch_dmrs_type1)?6:8); - gNB->pusch_vars[UE_id]->dmrs_symbol = symbol; + if (((rel15_ul->ul_dmrs_symb_pos)>>((symbol+1)%frame_parms->symbols_per_slot))&0x01) + AssertFatal(1==0,"Double DMRS configuration is not yet supported\n"); + + if (rel15_ul->dmrs_config_type == 0) { + // if no data in dmrs cdm group is 1 only even REs have no data + // if no data in dmrs cdm group is 2 both odd and even REs have no data + nb_re_pusch = rel15_ul->rb_size *(12 - (rel15_ul->num_dmrs_cdm_grps_no_data*6)); + } + else { + nb_re_pusch = rel15_ul->rb_size *(12 - (rel15_ul->num_dmrs_cdm_grps_no_data*4)); + } + LOG_D(PHY,"dmrs_symbol: nb_re_pusch %d\n",nb_re_pusch); + gNB->pusch_vars[ulsch_id]->dmrs_symbol = symbol; } else { nb_re_pusch = rel15_ul->rb_size * NR_NB_SC_PER_RB; } if (rel15_ul->pdu_bit_map & PUSCH_PDU_BITMAP_PUSCH_PTRS) { // if there is ptrs pdu - if(is_ptrs_symbol(symbol, gNB->pusch_vars[UE_id]->ptrs_symbols)) - gNB->pusch_vars[UE_id]->ptrs_symbol_index = symbol; + if(is_ptrs_symbol(symbol, gNB->pusch_vars[ulsch_id]->ptrs_symbols)) { + gNB->pusch_vars[ulsch_id]->ptrs_symbol_index = symbol; + ptrs_symbol_flag = 1; + } } - //---------------------------------------------------------- //--------------------- Channel estimation --------------------- //---------------------------------------------------------- start_meas(&gNB->ulsch_channel_estimation_stats); - if (dmrs_symbol_flag == 1) + if (dmrs_symbol_flag == 1) { nr_pusch_channel_estimation(gNB, nr_tti_rx, 0, // p symbol, + ulsch_id, bwp_start_subcarrier, rel15_ul); + + for (aarx = 0; aarx < frame_parms->nb_antennas_rx; aarx++) { + gNB->pusch_vars[ulsch_id]->ulsch_power[aarx] = signal_energy(&gNB->pusch_vars[ulsch_id]->ul_ch_estimates[aarx][symbol*frame_parms->ofdm_symbol_size], + rel15_ul->rb_size*12); + if (gNB->pusch_vars[ulsch_id]->ulsch_power[aarx]==1) return (1); + } + + } stop_meas(&gNB->ulsch_channel_estimation_stats); //---------------------------------------------------------- //--------------------- RBs extraction --------------------- //---------------------------------------------------------- - start_meas(&gNB->ulsch_rbs_extraction_stats); - nr_ulsch_extract_rbs_single(gNB->common_vars.rxdataF, - gNB->pusch_vars[UE_id], - symbol, - dmrs_symbol_flag, - rel15_ul, - frame_parms); - stop_meas(&gNB->ulsch_rbs_extraction_stats); + if (nb_re_pusch > 0) { - nr_ulsch_scale_channel(gNB->pusch_vars[UE_id]->ul_ch_estimates_ext, - frame_parms, - gNB->ulsch[UE_id], - symbol, - dmrs_symbol_flag, - rel15_ul->rb_size, - rel15_ul->dmrs_config_type); - - - if (first_symbol_flag==1) { - - nr_ulsch_channel_level(gNB->pusch_vars[UE_id]->ul_ch_estimates_ext, - frame_parms, - avg, - symbol, - nb_re_pusch, - rel15_ul->rb_size); - avgs = 0; - - for (aatx=0;aatxnb_antennas_tx;aatx++) - for (aarx=0;aarxnb_antennas_rx;aarx++) - avgs = cmax(avgs,avg[(aatx<<1)+aarx]); - - gNB->pusch_vars[UE_id]->log2_maxh = (log2_approx(avgs)/2)+1; - - } - - start_meas(&gNB->ulsch_channel_compensation_stats); - nr_ulsch_channel_compensation(gNB->pusch_vars[UE_id]->rxdataF_ext, - gNB->pusch_vars[UE_id]->ul_ch_estimates_ext, - gNB->pusch_vars[UE_id]->ul_ch_mag0, - gNB->pusch_vars[UE_id]->ul_ch_magb0, - gNB->pusch_vars[UE_id]->rxdataF_comp, - (frame_parms->nb_antennas_tx>1) ? gNB->pusch_vars[UE_id]->rho : NULL, - frame_parms, + start_meas(&gNB->ulsch_rbs_extraction_stats); + nr_ulsch_extract_rbs_single(gNB->common_vars.rxdataF, + gNB->pusch_vars[ulsch_id], symbol, dmrs_symbol_flag, - rel15_ul->qam_mod_order, - rel15_ul->rb_size, - gNB->pusch_vars[UE_id]->log2_maxh); - stop_meas(&gNB->ulsch_channel_compensation_stats); + ptrs_symbol_flag, + rel15_ul, + frame_parms); + stop_meas(&gNB->ulsch_rbs_extraction_stats); + nr_ulsch_scale_channel(gNB->pusch_vars[ulsch_id]->ul_ch_estimates_ext, + frame_parms, + gNB->ulsch[ulsch_id], + symbol, + dmrs_symbol_flag, + rel15_ul->rb_size, + rel15_ul->dmrs_config_type); + + + if (gNB->pusch_vars[ulsch_id]->cl_done==0) { + + nr_ulsch_channel_level(gNB->pusch_vars[ulsch_id]->ul_ch_estimates_ext, + frame_parms, + avg, + symbol, + nb_re_pusch, + rel15_ul->rb_size); + + avgs = 0; + + for (aatx=0;aatxnb_antennas_tx;aatx++) + for (aarx=0;aarxnb_antennas_rx;aarx++) + avgs = cmax(avgs,avg[(aatx<<1)+aarx]); + + gNB->pusch_vars[ulsch_id]->log2_maxh = (log2_approx(avgs)/2)+3; + gNB->pusch_vars[ulsch_id]->cl_done = 1; + } + + start_meas(&gNB->ulsch_channel_compensation_stats); + nr_ulsch_channel_compensation(gNB->pusch_vars[ulsch_id]->rxdataF_ext, + gNB->pusch_vars[ulsch_id]->ul_ch_estimates_ext, + gNB->pusch_vars[ulsch_id]->ul_ch_mag0, + gNB->pusch_vars[ulsch_id]->ul_ch_magb0, + gNB->pusch_vars[ulsch_id]->rxdataF_comp, + (frame_parms->nb_antennas_tx>1) ? gNB->pusch_vars[ulsch_id]->rho : NULL, + frame_parms, + symbol, + dmrs_symbol_flag, + rel15_ul->qam_mod_order, + rel15_ul->rb_size, + gNB->pusch_vars[ulsch_id]->log2_maxh); + stop_meas(&gNB->ulsch_channel_compensation_stats); + + start_meas(&gNB->ulsch_mrc_stats); + nr_ulsch_detection_mrc(frame_parms, + gNB->pusch_vars[ulsch_id]->rxdataF_comp, + gNB->pusch_vars[ulsch_id]->ul_ch_mag, + gNB->pusch_vars[ulsch_id]->ul_ch_magb, + symbol, + rel15_ul->rb_size); + stop_meas(&gNB->ulsch_mrc_stats); #ifdef NR_SC_FDMA - nr_idft(&((uint32_t*)gNB->pusch_vars[UE_id]->rxdataF_ext[0])[symbol * rel15_ul->rb_size * NR_NB_SC_PER_RB], nb_re_pusch); + nr_idft(&((uint32_t*)gNB->pusch_vars[ulsch_id]->rxdataF_ext[0])[symbol * rel15_ul->rb_size * NR_NB_SC_PER_RB], nb_re_pusch); #endif //---------------------------------------------------------- //-------------------- LLRs computation -------------------- //---------------------------------------------------------- - start_meas(&gNB->ulsch_llr_stats); - nr_ulsch_compute_llr(&gNB->pusch_vars[UE_id]->rxdataF_comp[0][symbol * rel15_ul->rb_size * NR_NB_SC_PER_RB], - gNB->pusch_vars[UE_id]->ul_ch_mag0, - gNB->pusch_vars[UE_id]->ul_ch_magb0, - &gNB->pusch_vars[UE_id]->llr[gNB->pusch_vars[UE_id]->rxdataF_ext_offset * rel15_ul->qam_mod_order], - rel15_ul->rb_size, - nb_re_pusch, - symbol, - rel15_ul->qam_mod_order); - stop_meas(&gNB->ulsch_llr_stats); + start_meas(&gNB->ulsch_llr_stats); + AssertFatal(gNB->pusch_vars[ulsch_id]->rxdataF_ext_offset * rel15_ul->qam_mod_order+nb_re_pusch*rel15_ul->qam_mod_order < (8*((3*8*6144)+12)) , "Mysterious llr buffer size check"); +#ifdef __AVX2__ + int off = ((rel15_ul->rb_size&1) == 1)? 4:0; +#else + int off = 0; +#endif + nr_ulsch_compute_llr(&gNB->pusch_vars[ulsch_id]->rxdataF_comp[0][symbol * (off+(rel15_ul->rb_size * NR_NB_SC_PER_RB))], + gNB->pusch_vars[ulsch_id]->ul_ch_mag0, + gNB->pusch_vars[ulsch_id]->ul_ch_magb0, + &gNB->pusch_vars[ulsch_id]->llr[gNB->pusch_vars[ulsch_id]->rxdataF_ext_offset * rel15_ul->qam_mod_order], + rel15_ul->rb_size, + nb_re_pusch, + symbol, + rel15_ul->qam_mod_order); + stop_meas(&gNB->ulsch_llr_stats); + + } + + gNB->pusch_vars[ulsch_id]->rxdataF_ext_offset = gNB->pusch_vars[ulsch_id]->rxdataF_ext_offset + nb_re_pusch; + return (0); - gNB->pusch_vars[UE_id]->rxdataF_ext_offset = gNB->pusch_vars[UE_id]->rxdataF_ext_offset + nb_re_pusch - gNB->pusch_vars[UE_id]->ptrs_sc_per_ofdm_symbol; - } diff --git a/openair1/PHY/NR_TRANSPORT/nr_ulsch_llr_computation.c b/openair1/PHY/NR_TRANSPORT/nr_ulsch_llr_computation.c index 233ecd8de7..bf96a76106 100644 --- a/openair1/PHY/NR_TRANSPORT/nr_ulsch_llr_computation.c +++ b/openair1/PHY/NR_TRANSPORT/nr_ulsch_llr_computation.c @@ -34,9 +34,6 @@ #include "PHY/sse_intrin.h" #include "PHY/impl_defs_top.h" -__m128i xmm0 __attribute__ ((aligned(32))); -__m128i xmm1 __attribute__ ((aligned(32))); -__m128i xmm2 __attribute__ ((aligned(32))); //---------------------------------------------------------------------------------------------- @@ -47,20 +44,19 @@ void nr_ulsch_qpsk_llr(int32_t *rxdataF_comp, uint32_t nb_re, uint8_t symbol) { - int i; - uint32_t *rxF = (uint32_t*)rxdataF_comp; uint32_t *llr32 = (uint32_t*)ulsch_llr; if (!llr32) { LOG_E(PHY,"nr_ulsch_qpsk_llr: llr is null, symbol %d, llr32 = %p\n",symbol, llr32); } - + /* for (i = 0; i < nb_re; i++) { *llr32 = *rxF; rxF++; llr32++; - } + }*/ + memcpy1((void*)llr32,(void*)rxF,nb_re<<2); } //---------------------------------------------------------------------------------------------- @@ -76,9 +72,17 @@ void nr_ulsch_16qam_llr(int32_t *rxdataF_comp, { #if defined(__x86_64__) || defined(__i386__) +#ifdef __AVX2__ + __m256i *rxF = (__m256i*)rxdataF_comp; + __m256i *ch_mag; + __m256i llr256[2]; + register __m256i xmm0; +#else __m128i *rxF = (__m128i*)rxdataF_comp; __m128i *ch_mag; __m128i llr128[2]; + register __m128i xmm0; +#endif uint32_t *llr32; #elif defined(__arm__) @@ -90,7 +94,12 @@ void nr_ulsch_16qam_llr(int32_t *rxdataF_comp, int i; - unsigned char len_mod4 = 0; + +#ifdef __AVX2__ + int off = ((nb_rb&1) == 1)? 4:0; +#else + int off = 0; +#endif #if defined(__x86_64__) || defined(__i386__) @@ -100,22 +109,69 @@ void nr_ulsch_16qam_llr(int32_t *rxdataF_comp, #endif #if defined(__x86_64__) || defined(__i386__) - ch_mag = (__m128i*)&ul_ch_mag[0][(symbol*nb_rb*12)]; +#ifdef __AVX2__ + ch_mag = (__m256i*)&ul_ch_mag[0][(symbol*(off+(nb_rb*12)))]; +#else + ch_mag = (__m128i*)&ul_ch_mag[0][(symbol*(off+(nb_rb*12)))]; +#endif #elif defined(__arm__) ch_mag = (int16x8_t*)&ul_ch_mag[0][(symbol*nb_rb*12)]; #endif - len_mod4 = nb_re&3; +#ifdef __AVX2__ + unsigned char len_mod8 = nb_re&7; + nb_re >>= 3; // length in quad words (4 REs) + nb_re += (len_mod8 == 0 ? 0 : 1); +#else + unsigned char len_mod4 = nb_re&3; nb_re >>= 2; // length in quad words (4 REs) nb_re += (len_mod4 == 0 ? 0 : 1); +#endif for (i=0; i |y_R|, registers of odd index in xmm0-> |y_I| + xmm0 = _mm256_subs_epi16(ch_mag[i],xmm0); // registers of even index in xmm0-> |y_R|-|h|^2, registers of odd index in xmm0-> |y_I|-|h|^2 + + llr256[0] = _mm256_unpacklo_epi32(rxF[i],xmm0); // llr128[0] contains the llrs of the 1st,2nd,5th and 6th REs + llr256[1] = _mm256_unpackhi_epi32(rxF[i],xmm0); // llr128[1] contains the llrs of the 3rd, 4th, 7th and 8th REs + + // 1st RE + llr32[0] = _mm256_extract_epi32(llr256[0],0); // llr32[0] low 16 bits-> y_R , high 16 bits-> y_I + llr32[1] = _mm256_extract_epi32(llr256[0],1); // llr32[1] low 16 bits-> |h|-|y_R|^2, high 16 bits-> |h|-|y_I|^2 + // 2nd RE + llr32[2] = _mm256_extract_epi32(llr256[0],2); // llr32[2] low 16 bits-> y_R , high 16 bits-> y_I + llr32[3] = _mm256_extract_epi32(llr256[0],3); // llr32[3] low 16 bits-> |h|-|y_R|^2, high 16 bits-> |h|-|y_I|^2 + + // 3rd RE + llr32[4] = _mm256_extract_epi32(llr256[1],0); // llr32[4] low 16 bits-> y_R , high 16 bits-> y_I + llr32[5] = _mm256_extract_epi32(llr256[1],1); // llr32[5] low 16 bits-> |h|-|y_R|^2, high 16 bits-> |h|-|y_I|^2 + + // 4th RE + llr32[6] = _mm256_extract_epi32(llr256[1],2); // llr32[6] low 16 bits-> y_R , high 16 bits-> y_I + llr32[7] = _mm256_extract_epi32(llr256[1],3); // llr32[7] low 16 bits-> |h|-|y_R|^2, high 16 bits-> |h|-|y_I|^2 + + // 5th RE + llr32[8] = _mm256_extract_epi32(llr256[0],4); // llr32[8] low 16 bits-> y_R , high 16 bits-> y_I + llr32[9] = _mm256_extract_epi32(llr256[0],5); // llr32[9] low 16 bits-> |h|-|y_R|^2, high 16 bits-> |h|-|y_I|^2 + + // 6th RE + llr32[10] = _mm256_extract_epi32(llr256[0],6); // llr32[10] low 16 bits-> y_R , high 16 bits-> y_I + llr32[11] = _mm256_extract_epi32(llr256[0],7); // llr32[11] low 16 bits-> |h|-|y_R|^2, high 16 bits-> |h|-|y_I|^2 + + // 7th RE + llr32[12] = _mm256_extract_epi32(llr256[1],4); // llr32[12] low 16 bits-> y_R , high 16 bits-> y_I + llr32[13] = _mm256_extract_epi32(llr256[1],5); // llr32[13] low 16 bits-> |h|-|y_R|^2, high 16 bits-> |h|-|y_I|^2 + + // 8th RE + llr32[14] = _mm256_extract_epi32(llr256[1],6); // llr32[14] low 16 bits-> y_R , high 16 bits-> y_I + llr32[15] = _mm256_extract_epi32(llr256[1],7); // llr32[15] low 16 bits-> |h|-|y_R|^2, high 16 bits-> |h|-|y_I|^2 + + llr32+=16; +#else xmm0 = _mm_abs_epi16(rxF[i]); // registers of even index in xmm0-> |y_R|, registers of odd index in xmm0-> |y_I| - - xmm0 = _mm_subs_epi16(ch_mag[i],xmm0); // registers of even index in xmm0-> |y_R|-|h|^2, registers of odd index in xmm0-> |y_I|-|h|^2 llr128[0] = _mm_unpacklo_epi32(rxF[i],xmm0); // llr128[0] contains the llrs of the 1st and 2nd REs @@ -138,6 +194,7 @@ void nr_ulsch_16qam_llr(int32_t *rxdataF_comp, llr32[7] = _mm_extract_epi32(llr128[1],3); // llr32[7] low 16 bits-> |h|-|y_R|^2, high 16 bits-> |h|-|y_I|^2 llr32+=8; +#endif #elif defined(__arm__) xmm0 = vabsq_s16(rxF[i]); xmm0 = vqsubq_s16((*(__m128i*)&ones[0]),xmm0); @@ -182,40 +239,69 @@ void nr_ulsch_64qam_llr(int32_t *rxdataF_comp, uint8_t symbol) { +#ifdef __AVX2__ + int off = ((nb_rb&1) == 1)? 4:0; +#else + int off = 0; +#endif + #if defined(__x86_64__) || defined(__i386__) +#ifdef __AVX2__ + __m256i *rxF = (__m256i*)rxdataF_comp; + __m256i *ch_mag,*ch_magb; + register __m256i xmm0,xmm1,xmm2; +#else __m128i *rxF = (__m128i*)rxdataF_comp; __m128i *ch_mag,*ch_magb; + register __m128i xmm0,xmm1,xmm2; +#endif #elif defined(__arm__) int16x8_t *rxF = (int16x8_t*)&rxdataF_comp; int16x8_t *ch_mag,*ch_magb; // [hna] This should be uncommented once channel estimation is implemented - int16x8_t xmm1,xmm2; + int16x8_t xmm0,xmm1,xmm2; #endif int i; - unsigned char len_mod4; #if defined(__x86_64__) || defined(__i386__) +#ifdef __AVX2__ + ch_mag = (__m256i*)&ul_ch_mag[0][(symbol*(off+(nb_rb*12)))]; + ch_magb = (__m256i*)&ul_ch_magb[0][(symbol*(off+(nb_rb*12)))]; +#else ch_mag = (__m128i*)&ul_ch_mag[0][(symbol*nb_rb*12)]; ch_magb = (__m128i*)&ul_ch_magb[0][(symbol*nb_rb*12)]; +#endif #elif defined(__arm__) ch_mag = (int16x8_t*)&ul_ch_mag[0][(symbol*nb_rb*12)]; ch_magb = (int16x8_t*)&ul_ch_magb[0][(symbol*nb_rb*12)]; #endif - len_mod4 = nb_re&3; +#ifdef __AVX2__ + int len_mod8 = nb_re&7; + nb_re = nb_re>>3; // length in quad words (4 REs) + nb_re += ((len_mod8 == 0) ? 0 : 1); +#else + int len_mod4 = nb_re&3; nb_re = nb_re>>2; // length in quad words (4 REs) nb_re += ((len_mod4 == 0) ? 0 : 1); - +#endif for (i=0; i #include #include @@ -44,7 +44,6 @@ #include "PHY/NR_UE_TRANSPORT/pucch_nr.h" #include #include "PHY/NR_TRANSPORT/nr_transport_common_proto.h" -#include "PHY/NR_TRANSPORT/nr_transport.h" #include "PHY/NR_REFSIG/nr_refsig.h" #include "common/utils/LOG/log.h" #include "common/utils/LOG/vcd_signal_dumper.h" @@ -53,6 +52,54 @@ //#define DEBUG_NR_PUCCH_RX 1 +NR_gNB_PUCCH_t *new_gNB_pucch(void){ + NR_gNB_PUCCH_t *pucch; + pucch = (NR_gNB_PUCCH_t *)malloc16(sizeof(NR_gNB_PUCCH_t)); + pucch->active = 0; + return (pucch); +} + +int nr_find_pucch(uint16_t rnti, + int frame, + int slot, + PHY_VARS_gNB *gNB) { + + AssertFatal(gNB!=NULL,"gNB is null\n"); + int index = -1; + + for (int i=0; ipucch[i]!=NULL,"gNB->pucch[%d] is null\n",i); + if ((gNB->pucch[i]->active >0) && + (gNB->pucch[i]->pucch_pdu.rnti==rnti) && + (gNB->pucch[i]->frame==frame) && + (gNB->pucch[i]->slot==slot)) return(i); + else if ((gNB->pucch[i]->active == 0) && (index==-1)) index=i; + } + + if (index==-1) + LOG_E(MAC,"PUCCH list is full\n"); + + return(index); +} + +void nr_fill_pucch(PHY_VARS_gNB *gNB, + int frame, + int slot, + nfapi_nr_pucch_pdu_t *pucch_pdu) { + + int id = nr_find_pucch(pucch_pdu->rnti,frame,slot,gNB); + AssertFatal( (id>=0) && (idrnti,id); + + NR_gNB_PUCCH_t *pucch = gNB->pucch[id]; + pucch->frame = frame; + pucch->slot = slot; + pucch->active = 1; + memcpy((void*)&pucch->pucch_pdu, (void*)pucch_pdu, sizeof(nfapi_nr_pucch_pdu_t)); + +} + + int get_pucch0_cs_lut_index(PHY_VARS_gNB *gNB,nfapi_nr_pucch_pdu_t* pucch_pdu) { int i=0; @@ -154,7 +201,7 @@ void nr_decode_pucch0(PHY_VARS_gNB *gNB, * Defining cyclic shift hopping TS 38.211 Subclause 6.3.2.2.2 */ // alpha is cyclic shift - double alpha; + //double alpha; // lnormal is the OFDM symbol number in the PUCCH transmission where l=0 corresponds to the first OFDM symbol of the PUCCH transmission //uint8_t lnormal; // lprime is the index of the OFDM symbol in the slot that corresponds to the first OFDM symbol of the PUCCH transmission in the slot given by [5, TS 38.213] @@ -191,9 +238,9 @@ void nr_decode_pucch0(PHY_VARS_gNB *gNB, int16_t x_n_re[nr_sequences][24],x_n_im[nr_sequences][24]; for(i=0;inr_of_symbols; l++){ - alpha = nr_cyclic_shift_hopping(pucch_pdu->hopping_id,pucch_pdu->initial_cyclic_shift,mcs[i],l,pucch_pdu->start_symbol_index,slot); + double alpha = nr_cyclic_shift_hopping(pucch_pdu->hopping_id,pucch_pdu->initial_cyclic_shift,mcs[i],l,pucch_pdu->start_symbol_index,slot); #ifdef DEBUG_NR_PUCCH_RX printf("\t [nr_generate_pucch0] sequence generation \tu=%d \tv=%d \talpha=%lf \t(for symbol l=%d/%d,mcs %d)\n",u,v,alpha,l,l+pucch_pdu->start_symbol_index,mcs[i]); printf("lut output %d\n",gNB->pucch0_lut.lut[cs_ind][slot][l+pucch_pdu->start_symbol_index]); @@ -201,14 +248,14 @@ void nr_decode_pucch0(PHY_VARS_gNB *gNB, alpha=0.0; for (n=0; n<12; n++){ x_n_re[i][(12*l)+n] = (int16_t)((int16_t)(((((int32_t)(round(32767*cos(alpha*n))) * table_5_2_2_2_2_Re[u][n])>>15) - - (((int32_t)(round(32767*sin(alpha*n))) * table_5_2_2_2_2_Im[u][n])>>15)))); // Re part of base sequence shifted by alpha + - (((int32_t)(round(32767*sin(alpha*n))) * table_5_2_2_2_2_Im[u][n])>>15)))); // Re part of base sequence shifted by alpha x_n_im[i][(12*l)+n] =(int16_t)((int16_t)(((((int32_t)(round(32767*cos(alpha*n))) * table_5_2_2_2_2_Im[u][n])>>15) - + (((int32_t)(round(32767*sin(alpha*n))) * table_5_2_2_2_2_Re[u][n])>>15)))); // Im part of base sequence shifted by alpha + + (((int32_t)(round(32767*sin(alpha*n))) * table_5_2_2_2_2_Re[u][n])>>15)))); // Im part of base sequence shifted by alpha #ifdef DEBUG_NR_PUCCH_RX - printf("\t [nr_generate_pucch0] sequence generation \tu=%d \tv=%d \talpha=%lf \tx_n(l=%d,n=%d)=(%d,%d) %d,%d\n", - u,v,alpha,l,n,x_n_re[i][(12*l)+n],x_n_im[i][(12*l)+n], - (int32_t)(round(32767*cos(alpha*n))), - (int32_t)(round(32767*sin(alpha*n)))); + printf("\t [nr_generate_pucch0] sequence generation \tu=%d \tv=%d \talpha=%lf \tx_n(l=%d,n=%d)=(%d,%d) %d,%d\n", + u,v,alpha,l,n,x_n_re[i][(12*l)+n],x_n_im[i][(12*l)+n], + (int32_t)(round(32767*cos(alpha*n))), + (int32_t)(round(32767*sin(alpha*n)))); #endif } } @@ -230,12 +277,12 @@ void nr_decode_pucch0(PHY_VARS_gNB *gNB, r_re[(12*l)+n]=((int16_t *)&rxdataF[0][(l2*frame_parms->ofdm_symbol_size)+re_offset])[0]; r_im[(12*l)+n]=((int16_t *)&rxdataF[0][(l2*frame_parms->ofdm_symbol_size)+re_offset])[1]; - #ifdef DEBUG_NR_PUCCH_RX - printf("\t [nr_generate_pucch0] mapping to RE \tofdm_symbol_size=%d \tN_RB_DL=%d \tfirst_carrier_offset=%d \ttxptr(%d)=(x_n(l=%d,n=%d)=(%d,%d))\n", - frame_parms->ofdm_symbol_size,frame_parms->N_RB_DL,frame_parms->first_carrier_offset,(l2*frame_parms->ofdm_symbol_size)+re_offset, - l,n,((int16_t *)&rxdataF[0][(l2*frame_parms->ofdm_symbol_size)+re_offset])[0], - ((int16_t *)&rxdataF[0][(l2*frame_parms->ofdm_symbol_size)+re_offset])[1]); - #endif +#ifdef DEBUG_NR_PUCCH_RX + printf("\t [nr_generate_pucch0] mapping to RE \tofdm_symbol_size=%d \tN_RB_DL=%d \tfirst_carrier_offset=%d \ttxptr(%d)=(x_n(l=%d,n=%d)=(%d,%d))\n", + frame_parms->ofdm_symbol_size,frame_parms->N_RB_DL,frame_parms->first_carrier_offset,(l2*frame_parms->ofdm_symbol_size)+re_offset, + l,n,((int16_t *)&rxdataF[0][(l2*frame_parms->ofdm_symbol_size)+re_offset])[0], + ((int16_t *)&rxdataF[0][(l2*frame_parms->ofdm_symbol_size)+re_offset])[1]); +#endif re_offset++; if (re_offset>= frame_parms->ofdm_symbol_size) re_offset-=frame_parms->ofdm_symbol_size; @@ -266,9 +313,9 @@ void nr_decode_pucch0(PHY_VARS_gNB *gNB, const int16_t *x_re = table_5_2_2_2_2_Re[u],*x_im = table_5_2_2_2_2_Im[u]; int16_t xr[24] __attribute__((aligned(32))); - int16_t xrt[24] __attribute__((aligned(32))); + //int16_t xrt[24] __attribute__((aligned(32))); int32_t xrtmag=0; - int maxpos=0; + uint8_t maxpos=0; int n2=0; uint8_t index=0; memset((void*)xr,0,24*sizeof(int16_t)); @@ -292,7 +339,8 @@ void nr_decode_pucch0(PHY_VARS_gNB *gNB, #endif } } - int32_t corr_re,corr_im,temp; + int32_t corr_re,corr_im,temp,no_corr=0; + int32_t av_corr=0; int seq_index; for(i=0;inr_of_symbols;l++) { - seq_index = (pucch_pdu->initial_cyclic_shift+ + seq_index = (pucch_pdu->initial_cyclic_shift+ mcs[i]+ gNB->pucch0_lut.lut[cs_ind][slot][l+pucch_pdu->start_symbol_index])%12; for (n=0;n<12;n++,n2+=2) { @@ -312,63 +360,81 @@ void nr_decode_pucch0(PHY_VARS_gNB *gNB, #ifdef DEBUG_NR_PUCCH_RX printf("PUCCH IDFT[%d/%d] = (%d,%d)=>%f\n",mcs[i],seq_index,corr_re,corr_im,10*log10(corr_re*corr_re + corr_im*corr_im)); #endif - if ((temp=corr_re*corr_re + corr_im*corr_im)>xrtmag) { + temp=corr_re*corr_re + corr_im*corr_im; + av_corr+=temp; + if (temp>xrtmag) { xrtmag=temp; maxpos=i; } } + if(nr_sequences>1) + no_corr=(av_corr-xrtmag)/(nr_sequences-1); + av_corr/=nr_sequences; uint8_t xrtmag_dB = dB_fixed(xrtmag); - + #ifdef DEBUG_NR_PUCCH_RX printf("PUCCH 0 : maxpos %d\n",maxpos); #endif index=maxpos; #endif - // first bit of bitmap for sr presence and second bit for acknack presence - uci_pdu->pdu_bit_map = pucch_pdu->sr_flag | ((pucch_pdu->bit_len_harq>0)<<1); - uci_pdu->pucch_format = 0; // format 0 - uci_pdu->ul_cqi = 0xff; // currently not valid - uci_pdu->timing_advance = 0xffff; // currently not valid - uci_pdu->rssi = 0xffff; // currently not valid + // estimate CQI for MAC (from antenna port 0 only) + int SNRtimes10 = dB_fixed_times10(signal_energy(&rxdataF[0][pucch_pdu->start_symbol_index*frame_parms->ofdm_symbol_size+re_offset],12)) - (10*gNB->measurements.n0_power_tot_dB); + int cqi; + if (SNRtimes10 < -640) cqi=0; + else if (SNRtimes10 > 635) cqi=255; + else cqi=(640+SNRtimes10)/5; + + bool no_conf=false; + if (nr_sequences>1) { + if ((xrtmag_dB<(11+dB_fixed(no_corr))) || (dB_fixed(av_corr)<(13+gNB->measurements.n0_power_tot_dB))) //TODO these are temporary threshold based on measurments with the phone + no_conf=true; + } + // first bit of bitmap for sr presence and second bit for acknack presence + uci_pdu->pduBitmap = pucch_pdu->sr_flag | ((pucch_pdu->bit_len_harq>0)<<1); + uci_pdu->pucch_format = 0; // format 0 + uci_pdu->ul_cqi = cqi; // currently not valid + uci_pdu->timing_advance = 0xffff; // currently not valid + uci_pdu->rssi = 1280 - (10*dB_fixed(32767*32767)-dB_fixed_times10(signal_energy(&rxdataF[0][pucch_pdu->start_symbol_index*frame_parms->ofdm_symbol_size+re_offset],12))); if (pucch_pdu->bit_len_harq==0) { uci_pdu->harq = NULL; uci_pdu->sr = calloc(1,sizeof(*uci_pdu->sr)); - if (xrtmag_dB>(gNB->measurements.n0_subband_power_tot_dB[pucch_pdu->prb_start]+gNB->pucch0_thres)) { + uci_pdu->sr->sr_confidence_level = (xrtmag_dB<(13+gNB->measurements.n0_power_tot_dB)) ? 1 : 0; + if (xrtmag_dB>(gNB->measurements.n0_power_tot_dB)) { uci_pdu->sr->sr_indication = 1; - uci_pdu->sr->sr_confidence_level = xrtmag_dB-(gNB->measurements.n0_subband_power_tot_dB[pucch_pdu->prb_start]+gNB->pucch0_thres); } else { uci_pdu->sr->sr_indication = 0; - uci_pdu->sr->sr_confidence_level = (gNB->measurements.n0_subband_power_tot_dB[pucch_pdu->prb_start]+gNB->pucch0_thres)-xrtmag_dB; } } else if (pucch_pdu->bit_len_harq==1) { uci_pdu->harq = calloc(1,sizeof(*uci_pdu->harq)); uci_pdu->harq->num_harq = 1; - uci_pdu->harq->harq_confidence_level = xrtmag_dB-(gNB->measurements.n0_subband_power_tot_dB[pucch_pdu->prb_start]+gNB->pucch0_thres); + uci_pdu->harq->harq_confidence_level = (no_conf) ? 1 : 0; uci_pdu->harq->harq_list = (nfapi_nr_harq_t*)malloc(1); uci_pdu->harq->harq_list[0].harq_value = index&0x01; + LOG_I(PHY, "HARQ value %d with confidence level (0 is good, 1 is bad) %d\n", + uci_pdu->harq->harq_list[0].harq_value,uci_pdu->harq->harq_confidence_level); if (pucch_pdu->sr_flag == 1) { uci_pdu->sr = calloc(1,sizeof(*uci_pdu->sr)); uci_pdu->sr->sr_indication = (index>1) ? 1 : 0; - uci_pdu->sr->sr_confidence_level = xrtmag_dB-(gNB->measurements.n0_subband_power_tot_dB[pucch_pdu->prb_start]+gNB->pucch0_thres); + uci_pdu->sr->sr_confidence_level = (no_conf) ? 1 : 0; } } else { uci_pdu->harq = calloc(1,sizeof(*uci_pdu->harq)); uci_pdu->harq->num_harq = 2; - uci_pdu->harq->harq_confidence_level = xrtmag_dB-(gNB->measurements.n0_subband_power_tot_dB[pucch_pdu->prb_start]+gNB->pucch0_thres); + uci_pdu->harq->harq_confidence_level = (no_conf) ? 1 : 0; uci_pdu->harq->harq_list = (nfapi_nr_harq_t*)malloc(2); - - uci_pdu->harq->harq_list[0].harq_value = index&0x01; - uci_pdu->harq->harq_list[1].harq_value = (index>>1)&0x01; - + uci_pdu->harq->harq_list[1].harq_value = index&0x01; + uci_pdu->harq->harq_list[0].harq_value = (index>>1)&0x01; + LOG_I(PHY, "HARQ values %d and %d with confidence level (0 is good, 1 is bad) %d\n", + uci_pdu->harq->harq_list[1].harq_value,uci_pdu->harq->harq_list[0].harq_value,uci_pdu->harq->harq_confidence_level); if (pucch_pdu->sr_flag == 1) { uci_pdu->sr = calloc(1,sizeof(*uci_pdu->sr)); uci_pdu->sr->sr_indication = (index>3) ? 1 : 0; - uci_pdu->sr->sr_confidence_level = xrtmag_dB-(gNB->measurements.n0_subband_power_tot_dB[pucch_pdu->prb_start]+gNB->pucch0_thres); + uci_pdu->sr->sr_confidence_level = (no_conf) ? 1 : 0; } } } @@ -505,13 +571,13 @@ void nr_decode_pucch1( int32_t **rxdataF, if (l%2 == 0) { // mapping DM-RS signal according to TS38.211 subclause 6.4.1.3.1 z_dmrs_re_rx[i+n] = ((int16_t *)&rxdataF[0][re_offset])[0]; z_dmrs_im_rx[i+n] = ((int16_t *)&rxdataF[0][re_offset])[1]; -// printf("%d\t%d\t%d\n",l,z_dmrs_re_rx[i+n],z_dmrs_im_rx[i+n]); + // printf("%d\t%d\t%d\n",l,z_dmrs_re_rx[i+n],z_dmrs_im_rx[i+n]); #ifdef DEBUG_NR_PUCCH_RX printf("\t [nr_generate_pucch1] mapping DM-RS to RE \t amp=%d \tofdm_symbol_size=%d \tN_RB_DL=%d \tfirst_carrier_offset=%d \tz_dm-rs[%d]=txptr(%u)=(x_n(l=%d,n=%d)=(%d,%d))\n", amp,frame_parms->ofdm_symbol_size,frame_parms->N_RB_DL,frame_parms->first_carrier_offset,i+n,re_offset, l,n,((int16_t *)&rxdataF[0][re_offset])[0],((int16_t *)&rxdataF[0][re_offset])[1]); #endif -// printf("l=%d\ti=%d\tre_offset=%d\treceived dmrs re=%d\tim=%d\n",l,i,re_offset,z_dmrs_re_rx[i+n],z_dmrs_im_rx[i+n]); + // printf("l=%d\ti=%d\tre_offset=%d\treceived dmrs re=%d\tim=%d\n",l,i,re_offset,z_dmrs_re_rx[i+n],z_dmrs_im_rx[i+n]); } re_offset++; @@ -530,7 +596,7 @@ void nr_decode_pucch1( int32_t **rxdataF, l,lprime); #endif // y_n contains the complex value d multiplied by the sequence r_u_v - if ((intraSlotFrequencyHopping == 1) && (l >= (int)floor(nrofSymbols/2))) n_hop = 1; // n_hop = 1 for second hop + if ((intraSlotFrequencyHopping == 1) && (l >= (int)floor(nrofSymbols/2))) n_hop = 1; // n_hop = 1 for second hop #ifdef DEBUG_NR_PUCCH_RX printf("\t [nr_generate_pucch1] entering function nr_group_sequence_hopping with n_hop=%d, nr_tti_tx=%d\n", @@ -548,18 +614,18 @@ void nr_decode_pucch1( int32_t **rxdataF, } else{ r_u_v_alpha_delta_dmrs_re[n] = (int16_t)(((((int32_t)(round(32767*cos(alpha*n))) * table_5_2_2_2_2_Re[u][n])>>15) - - (((int32_t)(round(32767*sin(alpha*n))) * table_5_2_2_2_2_Im[u][n])>>15))); // Re part of DMRS base sequence shifted by alpha + - (((int32_t)(round(32767*sin(alpha*n))) * table_5_2_2_2_2_Im[u][n])>>15))); // Re part of DMRS base sequence shifted by alpha r_u_v_alpha_delta_dmrs_im[n] = (int16_t)(((((int32_t)(round(32767*cos(alpha*n))) * table_5_2_2_2_2_Im[u][n])>>15) - + (((int32_t)(round(32767*sin(alpha*n))) * table_5_2_2_2_2_Re[u][n])>>15))); // Im part of DMRS base sequence shifted by alpha + + (((int32_t)(round(32767*sin(alpha*n))) * table_5_2_2_2_2_Re[u][n])>>15))); // Im part of DMRS base sequence shifted by alpha r_u_v_alpha_delta_dmrs_re[n] = (int16_t)(((int32_t)(amp*r_u_v_alpha_delta_dmrs_re[n]))>>15); r_u_v_alpha_delta_dmrs_im[n] = (int16_t)(((int32_t)(amp*r_u_v_alpha_delta_dmrs_im[n]))>>15); } -// printf("symbol=%d\tr_u_rx_re=%d\tr_u_rx_im=%d\n",l,r_u_v_alpha_delta_dmrs_re[n], r_u_v_alpha_delta_dmrs_im[n]); + // printf("symbol=%d\tr_u_rx_re=%d\tr_u_rx_im=%d\n",l,r_u_v_alpha_delta_dmrs_re[n], r_u_v_alpha_delta_dmrs_im[n]); // PUCCH sequence = DM-RS sequence multiplied by d(0) -/* y_n_re[n] = (int16_t)(((((int32_t)(r_u_v_alpha_delta_re[n])*d_re)>>15) - - (((int32_t)(r_u_v_alpha_delta_im[n])*d_im)>>15))); // Re part of y(n) - y_n_im[n] = (int16_t)(((((int32_t)(r_u_v_alpha_delta_re[n])*d_im)>>15) - + (((int32_t)(r_u_v_alpha_delta_im[n])*d_re)>>15))); // Im part of y(n) */ + /* y_n_re[n] = (int16_t)(((((int32_t)(r_u_v_alpha_delta_re[n])*d_re)>>15) + - (((int32_t)(r_u_v_alpha_delta_im[n])*d_im)>>15))); // Re part of y(n) + y_n_im[n] = (int16_t)(((((int32_t)(r_u_v_alpha_delta_re[n])*d_im)>>15) + + (((int32_t)(r_u_v_alpha_delta_im[n])*d_re)>>15))); // Im part of y(n) */ #ifdef DEBUG_NR_PUCCH_RX printf("\t [nr_generate_pucch1] sequence generation \tu=%d \tv=%d \talpha=%lf \tr_u_v_alpha_delta[n=%d]=(%d,%d) \ty_n[n=%d]=(%d,%d)\n", u,v,alpha,n,r_u_v_alpha_delta_re[n],r_u_v_alpha_delta_im[n],n,y_n_re[n],y_n_im[n]); @@ -609,12 +675,12 @@ void nr_decode_pucch1( int32_t **rxdataF, if(floor(l/2)*12==(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)){ for (int n=0; n<12 ; n++) { z_re_temp = (int16_t)(((((int32_t)(table_6_3_2_4_1_2_Wi_Re[N_SF_mprime_PUCCH_1][w_index][m])*z_re_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n])>>15) - + (((int32_t)(table_6_3_2_4_1_2_Wi_Im[N_SF_mprime_PUCCH_1][w_index][m])*z_im_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n])>>15))>>1); + + (((int32_t)(table_6_3_2_4_1_2_Wi_Im[N_SF_mprime_PUCCH_1][w_index][m])*z_im_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n])>>15))>>1); z_im_temp = (int16_t)(((((int32_t)(table_6_3_2_4_1_2_Wi_Re[N_SF_mprime_PUCCH_1][w_index][m])*z_im_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n])>>15) - - (((int32_t)(table_6_3_2_4_1_2_Wi_Im[N_SF_mprime_PUCCH_1][w_index][m])*z_re_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n])>>15))>>1); + - (((int32_t)(table_6_3_2_4_1_2_Wi_Im[N_SF_mprime_PUCCH_1][w_index][m])*z_re_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n])>>15))>>1); z_re_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n]=z_re_temp; z_im_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n]=z_im_temp; -// printf("symbol=%d\tz_re_rx=%d\tz_im_rx=%d\t",l,(int)z_re_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n],(int)z_im_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n]); + // printf("symbol=%d\tz_re_rx=%d\tz_im_rx=%d\t",l,(int)z_re_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n],(int)z_im_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n]); #ifdef DEBUG_NR_PUCCH_RX printf("\t [nr_generate_pucch1] block-wise spread with wi(m) (mprime=%d, m=%d, n=%d) z[%d] = ((%d * %d - %d * %d), (%d * %d + %d * %d)) = (%d,%d)\n", mprime, m, n, (mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n, @@ -624,15 +690,15 @@ void nr_decode_pucch1( int32_t **rxdataF, #endif // multiplying with conjugate of low papr sequence z_re_temp = (int16_t)(((((int32_t)(r_u_v_alpha_delta_re[n])*z_re_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n])>>15) - + (((int32_t)(r_u_v_alpha_delta_im[n])*z_im_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n])>>15))>>1); + + (((int32_t)(r_u_v_alpha_delta_im[n])*z_im_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n])>>15))>>1); z_im_temp = (int16_t)(((((int32_t)(r_u_v_alpha_delta_re[n])*z_im_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n])>>15) - - (((int32_t)(r_u_v_alpha_delta_im[n])*z_re_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n])>>15))>>1); + - (((int32_t)(r_u_v_alpha_delta_im[n])*z_re_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n])>>15))>>1); z_re_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n] = z_re_temp; z_im_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n] = z_im_temp; -/* if(z_re_temp<0){ - printf("\nBug detection %d\t%d\t%d\t%d\n",r_u_v_alpha_delta_re[n],z_re_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n],(((int32_t)(r_u_v_alpha_delta_re[n])*z_re_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n])>>15),(((int32_t)(r_u_v_alpha_delta_im[n])*z_im_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n])>>15)); - } - printf("z1_re_rx=%d\tz1_im_rx=%d\n",(int)z_re_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n],(int)z_im_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n]); */ + /* if(z_re_temp<0){ + printf("\nBug detection %d\t%d\t%d\t%d\n",r_u_v_alpha_delta_re[n],z_re_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n],(((int32_t)(r_u_v_alpha_delta_re[n])*z_re_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n])>>15),(((int32_t)(r_u_v_alpha_delta_im[n])*z_im_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n])>>15)); + } + printf("z1_re_rx=%d\tz1_im_rx=%d\n",(int)z_re_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n],(int)z_im_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n]); */ } } } @@ -643,12 +709,12 @@ void nr_decode_pucch1( int32_t **rxdataF, if(floor(l/2)*12==(mprime*12*N_SF_mprime0_PUCCH_DMRS_1)+(m*12)){ for (int n=0; n<12 ; n++) { z_dmrs_re_temp = (int16_t)(((((int32_t)(table_6_3_2_4_1_2_Wi_Re[N_SF_mprime_PUCCH_DMRS_1][w_index][m])*z_dmrs_re_rx[(mprime*12*N_SF_mprime0_PUCCH_DMRS_1)+(m*12)+n])>>15) - + (((int32_t)(table_6_3_2_4_1_2_Wi_Im[N_SF_mprime_PUCCH_DMRS_1][w_index][m])*z_dmrs_im_rx[(mprime*12*N_SF_mprime0_PUCCH_DMRS_1)+(m*12)+n])>>15))>>1); + + (((int32_t)(table_6_3_2_4_1_2_Wi_Im[N_SF_mprime_PUCCH_DMRS_1][w_index][m])*z_dmrs_im_rx[(mprime*12*N_SF_mprime0_PUCCH_DMRS_1)+(m*12)+n])>>15))>>1); z_dmrs_im_temp = (int16_t)(((((int32_t)(table_6_3_2_4_1_2_Wi_Re[N_SF_mprime_PUCCH_DMRS_1][w_index][m])*z_dmrs_im_rx[(mprime*12*N_SF_mprime0_PUCCH_DMRS_1)+(m*12)+n])>>15) - - (((int32_t)(table_6_3_2_4_1_2_Wi_Im[N_SF_mprime_PUCCH_DMRS_1][w_index][m])*z_dmrs_re_rx[(mprime*12*N_SF_mprime0_PUCCH_DMRS_1)+(m*12)+n])>>15))>>1); + - (((int32_t)(table_6_3_2_4_1_2_Wi_Im[N_SF_mprime_PUCCH_DMRS_1][w_index][m])*z_dmrs_re_rx[(mprime*12*N_SF_mprime0_PUCCH_DMRS_1)+(m*12)+n])>>15))>>1); z_dmrs_re_rx[(mprime*12*N_SF_mprime0_PUCCH_DMRS_1)+(m*12)+n] = z_dmrs_re_temp; z_dmrs_im_rx[(mprime*12*N_SF_mprime0_PUCCH_DMRS_1)+(m*12)+n] = z_dmrs_im_temp; -// printf("symbol=%d\tz_dmrs_re_rx=%d\tz_dmrs_im_rx=%d\t",l,(int)z_dmrs_re_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n],(int)z_dmrs_im_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n]); + // printf("symbol=%d\tz_dmrs_re_rx=%d\tz_dmrs_im_rx=%d\t",l,(int)z_dmrs_re_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n],(int)z_dmrs_im_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n]); #ifdef DEBUG_NR_PUCCH_RX printf("\t [nr_generate_pucch1] block-wise spread with wi(m) (mprime=%d, m=%d, n=%d) z[%d] = ((%d * %d - %d * %d), (%d * %d + %d * %d)) = (%d,%d)\n", mprime, m, n, (mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n, @@ -658,17 +724,17 @@ void nr_decode_pucch1( int32_t **rxdataF, #endif //finding channel coeffcients by dividing received dmrs with actual dmrs and storing them in z_dmrs_re_rx and z_dmrs_im_rx arrays z_dmrs_re_temp = (int16_t)(((((int32_t)(r_u_v_alpha_delta_dmrs_re[n])*z_dmrs_re_rx[(mprime*12*N_SF_mprime0_PUCCH_DMRS_1)+(m*12)+n])>>15) - + (((int32_t)(r_u_v_alpha_delta_dmrs_im[n])*z_dmrs_im_rx[(mprime*12*N_SF_mprime0_PUCCH_DMRS_1)+(m*12)+n])>>15))>>1); + + (((int32_t)(r_u_v_alpha_delta_dmrs_im[n])*z_dmrs_im_rx[(mprime*12*N_SF_mprime0_PUCCH_DMRS_1)+(m*12)+n])>>15))>>1); z_dmrs_im_temp = (int16_t)(((((int32_t)(r_u_v_alpha_delta_dmrs_re[n])*z_dmrs_im_rx[(mprime*12*N_SF_mprime0_PUCCH_DMRS_1)+(m*12)+n])>>15) - - (((int32_t)(r_u_v_alpha_delta_dmrs_im[n])*z_dmrs_re_rx[(mprime*12*N_SF_mprime0_PUCCH_DMRS_1)+(m*12)+n])>>15))>>1); -/* if(z_dmrs_re_temp<0){ - printf("\nBug detection %d\t%d\t%d\t%d\n",r_u_v_alpha_delta_dmrs_re[n],z_dmrs_re_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n],(((int32_t)(r_u_v_alpha_delta_dmrs_re[n])*z_dmrs_re_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n])>>15),(((int32_t)(r_u_v_alpha_delta_dmrs_im[n])*z_dmrs_im_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n])>>15)); - }*/ + - (((int32_t)(r_u_v_alpha_delta_dmrs_im[n])*z_dmrs_re_rx[(mprime*12*N_SF_mprime0_PUCCH_DMRS_1)+(m*12)+n])>>15))>>1); + /* if(z_dmrs_re_temp<0){ + printf("\nBug detection %d\t%d\t%d\t%d\n",r_u_v_alpha_delta_dmrs_re[n],z_dmrs_re_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n],(((int32_t)(r_u_v_alpha_delta_dmrs_re[n])*z_dmrs_re_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n])>>15),(((int32_t)(r_u_v_alpha_delta_dmrs_im[n])*z_dmrs_im_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n])>>15)); + }*/ z_dmrs_re_rx[(mprime*12*N_SF_mprime0_PUCCH_DMRS_1)+(m*12)+n] = z_dmrs_re_temp; z_dmrs_im_rx[(mprime*12*N_SF_mprime0_PUCCH_DMRS_1)+(m*12)+n] = z_dmrs_im_temp; -// printf("z1_dmrs_re_rx=%d\tz1_dmrs_im_rx=%d\n",(int)z_dmrs_re_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n],(int)z_dmrs_im_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n]); - /* z_dmrs_re_rx[(int)(l/2)*12+n]=z_dmrs_re_rx[(int)(l/2)*12+n]/r_u_v_alpha_delta_dmrs_re[n]; - z_dmrs_im_rx[(int)(l/2)*12+n]=z_dmrs_im_rx[(int)(l/2)*12+n]/r_u_v_alpha_delta_dmrs_im[n]; */ + // printf("z1_dmrs_re_rx=%d\tz1_dmrs_im_rx=%d\n",(int)z_dmrs_re_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n],(int)z_dmrs_im_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n]); + /* z_dmrs_re_rx[(int)(l/2)*12+n]=z_dmrs_re_rx[(int)(l/2)*12+n]/r_u_v_alpha_delta_dmrs_re[n]; + z_dmrs_im_rx[(int)(l/2)*12+n]=z_dmrs_im_rx[(int)(l/2)*12+n]/r_u_v_alpha_delta_dmrs_im[n]; */ } } } @@ -695,9 +761,9 @@ void nr_decode_pucch1( int32_t **rxdataF, if(floor(l/2)*12==(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)){ for (int n=0; n<12 ; n++) { z_re_temp = (int16_t)(((((int32_t)(table_6_3_2_4_1_2_Wi_Re[N_SF_mprime_PUCCH_1][w_index][m])*z_re_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n])>>15) - + (((int32_t)(table_6_3_2_4_1_2_Wi_Im[N_SF_mprime_PUCCH_1][w_index][m])*z_im_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n])>>15))>>1); + + (((int32_t)(table_6_3_2_4_1_2_Wi_Im[N_SF_mprime_PUCCH_1][w_index][m])*z_im_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n])>>15))>>1); z_im_temp = (int16_t)(((((int32_t)(table_6_3_2_4_1_2_Wi_Re[N_SF_mprime_PUCCH_1][w_index][m])*z_im_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n])>>15) - - (((int32_t)(table_6_3_2_4_1_2_Wi_Im[N_SF_mprime_PUCCH_1][w_index][m])*z_re_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n])>>15))>>1); + - (((int32_t)(table_6_3_2_4_1_2_Wi_Im[N_SF_mprime_PUCCH_1][w_index][m])*z_re_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n])>>15))>>1); z_re_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n] = z_re_temp; z_im_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n] = z_im_temp; #ifdef DEBUG_NR_PUCCH_RX @@ -708,9 +774,9 @@ void nr_decode_pucch1( int32_t **rxdataF, z_re_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n],z_im_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n]); #endif z_re_temp = (int16_t)(((((int32_t)(r_u_v_alpha_delta_re[n])*z_re_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n])>>15) - + (((int32_t)(r_u_v_alpha_delta_im[n])*z_im_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n])>>15))>>1); + + (((int32_t)(r_u_v_alpha_delta_im[n])*z_im_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n])>>15))>>1); z_im_temp = (int16_t)(((((int32_t)(r_u_v_alpha_delta_re[n])*z_im_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n])>>15) - - (((int32_t)(r_u_v_alpha_delta_im[n])*z_re_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n])>>15))>>1); + - (((int32_t)(r_u_v_alpha_delta_im[n])*z_re_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n])>>15))>>1); z_re_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n] = z_re_temp; z_im_rx[(mprime*12*N_SF_mprime0_PUCCH_1)+(m*12)+n] = z_im_temp; } @@ -723,9 +789,9 @@ void nr_decode_pucch1( int32_t **rxdataF, if(floor(l/2)*12==(mprime*12*N_SF_mprime0_PUCCH_DMRS_1)+(m*12)){ for (int n=0; n<12 ; n++) { z_dmrs_re_temp = (int16_t)(((((int32_t)(table_6_3_2_4_1_2_Wi_Re[N_SF_mprime_PUCCH_DMRS_1][w_index][m])*z_dmrs_re_rx[(mprime*12*N_SF_mprime0_PUCCH_DMRS_1)+(m*12)+n])>>15) - + (((int32_t)(table_6_3_2_4_1_2_Wi_Im[N_SF_mprime_PUCCH_DMRS_1][w_index][m])*z_dmrs_im_rx[(mprime*12*N_SF_mprime0_PUCCH_DMRS_1)+(m*12)+n])>>15))>>1); + + (((int32_t)(table_6_3_2_4_1_2_Wi_Im[N_SF_mprime_PUCCH_DMRS_1][w_index][m])*z_dmrs_im_rx[(mprime*12*N_SF_mprime0_PUCCH_DMRS_1)+(m*12)+n])>>15))>>1); z_dmrs_im_temp = (int16_t)(((((int32_t)(table_6_3_2_4_1_2_Wi_Re[N_SF_mprime_PUCCH_DMRS_1][w_index][m])*z_dmrs_im_rx[(mprime*12*N_SF_mprime0_PUCCH_DMRS_1)+(m*12)+n])>>15) - - (((int32_t)(table_6_3_2_4_1_2_Wi_Im[N_SF_mprime_PUCCH_DMRS_1][w_index][m])*z_dmrs_re_rx[(mprime*12*N_SF_mprime0_PUCCH_DMRS_1)+(m*12)+n])>>15))>>1); + - (((int32_t)(table_6_3_2_4_1_2_Wi_Im[N_SF_mprime_PUCCH_DMRS_1][w_index][m])*z_dmrs_re_rx[(mprime*12*N_SF_mprime0_PUCCH_DMRS_1)+(m*12)+n])>>15))>>1); z_dmrs_re_rx[(mprime*12*N_SF_mprime0_PUCCH_DMRS_1)+(m*12)+n] = z_dmrs_re_temp; z_dmrs_im_rx[(mprime*12*N_SF_mprime0_PUCCH_DMRS_1)+(m*12)+n] = z_dmrs_im_temp; #ifdef DEBUG_NR_PUCCH_RX @@ -737,14 +803,14 @@ void nr_decode_pucch1( int32_t **rxdataF, #endif //finding channel coeffcients by dividing received dmrs with actual dmrs and storing them in z_dmrs_re_rx and z_dmrs_im_rx arrays z_dmrs_re_temp = (int16_t)(((((int32_t)(r_u_v_alpha_delta_dmrs_re[n])*z_dmrs_re_rx[(mprime*12*N_SF_mprime0_PUCCH_DMRS_1)+(m*12)+n])>>15) - + (((int32_t)(r_u_v_alpha_delta_dmrs_im[n])*z_dmrs_im_rx[(mprime*12*N_SF_mprime0_PUCCH_DMRS_1)+(m*12)+n])>>15))>>1); + + (((int32_t)(r_u_v_alpha_delta_dmrs_im[n])*z_dmrs_im_rx[(mprime*12*N_SF_mprime0_PUCCH_DMRS_1)+(m*12)+n])>>15))>>1); z_dmrs_im_temp = (int16_t)(((((int32_t)(r_u_v_alpha_delta_dmrs_re[n])*z_dmrs_im_rx[(mprime*12*N_SF_mprime0_PUCCH_DMRS_1)+(m*12)+n])>>15) - - (((int32_t)(r_u_v_alpha_delta_dmrs_im[n])*z_dmrs_re_rx[(mprime*12*N_SF_mprime0_PUCCH_DMRS_1)+(m*12)+n])>>15))>>1); + - (((int32_t)(r_u_v_alpha_delta_dmrs_im[n])*z_dmrs_re_rx[(mprime*12*N_SF_mprime0_PUCCH_DMRS_1)+(m*12)+n])>>15))>>1); z_dmrs_re_rx[(mprime*12*N_SF_mprime0_PUCCH_DMRS_1)+(m*12)+n] = z_dmrs_re_temp; z_dmrs_im_rx[(mprime*12*N_SF_mprime0_PUCCH_DMRS_1)+(m*12)+n] = z_dmrs_im_temp; - /* z_dmrs_re_rx[(int)(l/2)*12+n]=z_dmrs_re_rx[(int)(l/2)*12+n]/r_u_v_alpha_delta_dmrs_re[n]; - z_dmrs_im_rx[(int)(l/2)*12+n]=z_dmrs_im_rx[(int)(l/2)*12+n]/r_u_v_alpha_delta_dmrs_im[n]; */ + /* z_dmrs_re_rx[(int)(l/2)*12+n]=z_dmrs_re_rx[(int)(l/2)*12+n]/r_u_v_alpha_delta_dmrs_re[n]; + z_dmrs_im_rx[(int)(l/2)*12+n]=z_dmrs_im_rx[(int)(l/2)*12+n]/r_u_v_alpha_delta_dmrs_im[n]; */ } } } @@ -796,8 +862,8 @@ void nr_decode_pucch1( int32_t **rxdataF, for(int n=0;n<12;n++){ y_n_re[n]=round(z_re_rx[l*12+n]/floor(nrofSymbols/4))+y_n_re[n]; y_n_im[n]=round(z_im_rx[l*12+n]/floor(nrofSymbols/4))+y_n_im[n]; - } - } + } + } else{ for(int n=0;n<12;n++){ y1_n_re[n]=round(z_re_rx[l*12+n]/round(nrofSymbols/4))+y1_n_re[n]; @@ -829,12 +895,12 @@ void nr_decode_pucch1( int32_t **rxdataF, } //Decoding QPSK or BPSK symbols to obtain payload bits if(nr_bit==1){ - if((d_re+d_im)>0){ - *payload=0; - } - else{ - *payload=1; - } + if((d_re+d_im)>0){ + *payload=0; + } + else{ + *payload=1; + } } else if(nr_bit==2){ if((d_re>0)&&(d_im>0)){ @@ -872,6 +938,9 @@ __m256i *pucch2_lut[9]={pucch2_3bit, pucch2_10bit, pucch2_11bit}; +__m64 pucch2_polar_4bit[16]; +__m128i pucch2_polar_llr_num_lut[256],pucch2_polar_llr_den_lut[256]; + void init_pucch2_luts() { uint32_t out; @@ -880,7 +949,9 @@ void init_pucch2_luts() { for (int b=3;b<12;b++) { for (uint16_t i=0;i<(1< 0 ? -1 : 1; @@ -949,6 +1020,65 @@ void init_pucch2_luts() { *lut_ip1 = _mm256_insert_epi16(*lut_ip1,bit,15); } } + for (uint16_t i=0;i<16;i++) { + __m64 *lut_i=&pucch2_polar_4bit[i]; + + bit = (i&0x1) > 0 ? -1 : 1; + *lut_i = _mm_insert_pi16(*lut_i,bit,0); + bit = (i&0x2) > 0 ? -1 : 1; + *lut_i = _mm_insert_pi16(*lut_i,bit,1); + bit = (i&0x4) > 0 ? -1 : 1; + *lut_i = _mm_insert_pi16(*lut_i,bit,2); + bit = (i&0x8) > 0 ? -1 : 1; + *lut_i = _mm_insert_pi16(*lut_i,bit,3); + } + for (int i=0;i<256;i++) { + __m128i *lut_num_i=&pucch2_polar_llr_num_lut[i]; + __m128i *lut_den_i=&pucch2_polar_llr_den_lut[i]; + bit = (i&0x1) > 0 ? 0 : 1; + *lut_num_i = _mm_insert_epi16(*lut_num_i,bit,0); + *lut_den_i = _mm_insert_epi16(*lut_den_i,1-bit,0); + + bit = (i&0x10) > 0 ? 0 : 1; + *lut_num_i = _mm_insert_epi16(*lut_num_i,bit,1); + *lut_den_i = _mm_insert_epi16(*lut_den_i,1-bit,1); + + bit = (i&0x2) > 0 ? 0 : 1; + *lut_num_i = _mm_insert_epi16(*lut_num_i,bit,2); + *lut_den_i = _mm_insert_epi16(*lut_den_i,1-bit,2); + + bit = (i&0x20) > 0 ? 0 : 1; + *lut_num_i = _mm_insert_epi16(*lut_num_i,bit,3); + *lut_den_i = _mm_insert_epi16(*lut_den_i,1-bit,3); + + bit = (i&0x4) > 0 ? 0 : 1; + *lut_num_i = _mm_insert_epi16(*lut_num_i,bit,4); + *lut_den_i = _mm_insert_epi16(*lut_den_i,1-bit,4); + + bit = (i&0x40) > 0 ? 0 : 1; + *lut_num_i = _mm_insert_epi16(*lut_num_i,bit,5); + *lut_den_i = _mm_insert_epi16(*lut_den_i,1-bit,5); + + bit = (i&0x8) > 0 ? 0 : 1; + *lut_num_i = _mm_insert_epi16(*lut_num_i,bit,6); + *lut_den_i = _mm_insert_epi16(*lut_den_i,1-bit,6); + + bit = (i&0x80) > 0 ? 0 : 1; + *lut_num_i = _mm_insert_epi16(*lut_num_i,bit,7); + *lut_den_i = _mm_insert_epi16(*lut_den_i,1-bit,7); + +#ifdef DEBUG_NR_PUCCH_RX + printf("i %d, lut_num (%d,%d,%d,%d,%d,%d,%d,%d)\n",i, + ((int16_t *)lut_num_i)[0], + ((int16_t *)lut_num_i)[1], + ((int16_t *)lut_num_i)[2], + ((int16_t *)lut_num_i)[3], + ((int16_t *)lut_num_i)[4], + ((int16_t *)lut_num_i)[5], + ((int16_t *)lut_num_i)[6], + ((int16_t *)lut_num_i)[7]); +#endif + } } @@ -959,7 +1089,9 @@ void nr_decode_pucch2(PHY_VARS_gNB *gNB, int32_t **rxdataF = gNB->common_vars.rxdataF; NR_DL_FRAME_PARMS *frame_parms = &gNB->frame_parms; - pucch_GroupHopping_t pucch_GroupHopping = pucch_pdu->group_hop_flag + (pucch_pdu->sequence_hop_flag<<1); + //pucch_GroupHopping_t pucch_GroupHopping = pucch_pdu->group_hop_flag + (pucch_pdu->sequence_hop_flag<<1); + + AssertFatal(pucch_pdu->nr_of_symbols==1 || pucch_pdu->nr_of_symbols==2, "Illegal number of symbols for PUCCH 2 %d\n",pucch_pdu->nr_of_symbols); @@ -967,7 +1099,7 @@ void nr_decode_pucch2(PHY_VARS_gNB *gNB, //extract pucch and dmrs first - int l2=-1; + int l2=pucch_pdu->start_symbol_index; int re_offset = (12*pucch_pdu->prb_start) + (12*pucch_pdu->bwp_start) + frame_parms->first_carrier_offset; if (re_offset>= frame_parms->ofdm_symbol_size) re_offset-=frame_parms->ofdm_symbol_size; @@ -984,6 +1116,7 @@ void nr_decode_pucch2(PHY_VARS_gNB *gNB, int16_t r_im_ext2[Prx2][8*pucch_pdu->nr_of_symbols*pucch_pdu->prb_size] __attribute__((aligned(32))); int16_t rd_re_ext[Prx2][4*pucch_pdu->nr_of_symbols*pucch_pdu->prb_size] __attribute__((aligned(32))); int16_t rd_im_ext[Prx2][4*pucch_pdu->nr_of_symbols*pucch_pdu->prb_size] __attribute__((aligned(32))); + int16_t *r_re_ext_p,*r_im_ext_p,*rd_re_ext_p,*rd_im_ext_p; int16_t *rp[Prx2]; __m64 dmrs_re,dmrs_im; @@ -1000,156 +1133,166 @@ void nr_decode_pucch2(PHY_VARS_gNB *gNB, for (int aa=0;aanr_of_symbols == 1) { - AssertFatal((pucch_pdu->prb_size&1) == 0,"prb_size %d is not a multiple of 2\n",pucch_pdu->prb_size); - // 24 PRBs contains 48x16-bit, so 6x8x16-bit - for (int prb=0;prbprb_size;prb+=2) { - for (int aa=0;aaprb_size&1) == 0,"prb_size %d is not a multiple of 2\n",pucch_pdu->prb_size); + // 24 PRBs contains 48x16-bit, so 6x8x16-bit + for (int prb=0;prbprb_size;prb+=2) { + for (int aa=0;aa (%d,%d)\n",aa,prb+(i>>2),i,rd_re_ext[aa][i],rd_im_ext[aa]); + for (int i=0;i<8;i++) printf("Ant %d PRB %d dmrs[%d] -> (%d,%d)\n",aa,prb+(i>>2),i,rd_re_ext_p[i],rd_im_ext_p[i]); + for (int i=0;i<16;i++) printf("Ant %d PRB %d data[%d] -> (%d,%d)\n",aa,prb+(i>>3),i,r_re_ext_p[i],r_im_ext_p[i]); #endif - } // aa - } // prb + rp[aa]+=48; + } // aa + } // prb - // first compute DMRS component - uint32_t x1, x2, s=0; - x2 = (((1<<17)*((14*slot) + (pucch_pdu->start_symbol_index) + 1)*((2*pucch_pdu->dmrs_scrambling_id) + 1)) + (2*pucch_pdu->dmrs_scrambling_id))%(1U<<31); // c_init calculation according to TS38.211 subclause + // first compute DMRS component + uint32_t x1, x2, s=0; + x2 = (((1<<17)*((14*slot) + (pucch_pdu->start_symbol_index) + 1)*((2*pucch_pdu->dmrs_scrambling_id) + 1)) + (2*pucch_pdu->dmrs_scrambling_id))%(1U<<31); // c_init calculation according to TS38.211 subclause #ifdef DEBUG_NR_PUCCH_RX - printf("slot %d, start_symbol_index %d, dmrs_scrambling_id %d\n", - slot,pucch_pdu->start_symbol_index,pucch_pdu->dmrs_scrambling_id); + printf("slot %d, start_symbol_index %d, dmrs_scrambling_id %d\n", + slot,pucch_pdu->start_symbol_index,pucch_pdu->dmrs_scrambling_id); #endif - s = lte_gold_generic(&x1, &x2, 1); + s = lte_gold_generic(&x1, &x2, 1); + for (int group=0;group>=5; + corr32_im[group][aa]>>=5; #ifdef DEBUG_NR_PUCCH_RX - printf("Group %d: rd ((%d,%d),(%d,%d),(%d,%d),(%d,%d))\n", - group, - rd_re_ext[aa][4],rd_im_ext[aa][4], - rd_re_ext[aa][5],rd_im_ext[aa][5], - rd_re_ext[aa][6],rd_im_ext[aa][6], - rd_re_ext[aa][7],rd_im_ext[aa][7]); + printf("Group %d: corr32 (%d,%d)\n",group,corr32_re[group][aa],corr32_im[group][aa]); #endif - corr32_re[group][aa]+=(rd_re_ext[aa][4]*((int16_t*)&dmrs_re)[0] + rd_im_ext[aa][4]*((int16_t*)&dmrs_im)[0]); - corr32_im[group][aa]+=(-rd_re_ext[aa][4]*((int16_t*)&dmrs_im)[0] + rd_im_ext[aa][4]*((int16_t*)&dmrs_re)[0]); - corr32_re[group][aa]+=(rd_re_ext[aa][5]*((int16_t*)&dmrs_re)[1] + rd_im_ext[aa][5]*((int16_t*)&dmrs_im)[1]); - corr32_im[group][aa]+=(-rd_re_ext[aa][5]*((int16_t*)&dmrs_im)[1] + rd_im_ext[aa][5]*((int16_t*)&dmrs_re)[1]); - corr32_re[group][aa]+=(rd_re_ext[aa][6]*((int16_t*)&dmrs_re)[2] + rd_im_ext[aa][6]*((int16_t*)&dmrs_im)[2]); - corr32_im[group][aa]+=(-rd_re_ext[aa][6]*((int16_t*)&dmrs_im)[2] + rd_im_ext[aa][6]*((int16_t*)&dmrs_re)[2]); - corr32_re[group][aa]+=(rd_re_ext[aa][7]*((int16_t*)&dmrs_re)[3] + rd_im_ext[aa][7]*((int16_t*)&dmrs_im)[3]); - corr32_im[group][aa]+=(-rd_re_ext[aa][7]*((int16_t*)&dmrs_im)[3] + rd_im_ext[aa][7]*((int16_t*)&dmrs_re)[3]); - corr32_re[group][aa]>>=5; - corr32_im[group][aa]>>=5; -#ifdef DEBUG_NR_PUCCH_RX - printf("Group %d: corr32 (%d,%d)\n",group,corr32_re[group][aa],corr32_im[group][aa]); -#endif - } //aa + } //aa - if ((group&3) == 3) s = lte_gold_generic(&x1, &x2, 0); - } // group + if ((group&1) == 1) s = lte_gold_generic(&x1, &x2, 0); + } // group } else { // 2 symbol case - AssertFatal(1==0, "Fill in 2 symbol PUCCH2 case\n"); + AssertFatal(1==0, "Fill in 2 symbol PUCCH2 case\n"); } uint32_t x1, x2, s=0; @@ -1174,47 +1317,47 @@ void nr_decode_pucch2(PHY_VARS_gNB *gNB, for (int aa=0;aabit_len_csi_part1 + pucch_pdu->bit_len_csi_part2 == 0,"no csi for now\n"); - AssertFatal((pucch_pdu->bit_len_harq+pucch_pdu->sr_flag > 2 ) && (pucch_pdu->bit_len_harq+pucch_pdu->sr_flag < 12),"illegal length (%d,%d)\n",pucch_pdu->bit_len_harq,pucch_pdu->sr_flag); - int nb_bit = pucch_pdu->bit_len_harq+pucch_pdu->sr_flag; - __m256i *rp_re[Prx2]; - __m256i *rp2_re[Prx2]; - __m256i *rp_im[Prx2]; - __m256i *rp2_im[Prx2]; - for (int aa=0;aa>1], - ((int16_t*)&pucch2_lut[nb_bit-3][cw<<1])[1+(i>>1)]); - } printf("\n"); #endif - // do complex correlation - for (int aa=0;aa corr) { - corr = corr_tmp; - cw_ML=cw; - } } - uint8_t corr_dB = dB_fixed64((uint64_t)corr); - LOG_D(PHY,"cw_ML %d, metric %d dB\n",cw_ML,corr_dB); - uci_pdu->harq.harq_bit_len = pucch_pdu->bit_len_harq; + int nb_bit = pucch_pdu->bit_len_harq+pucch_pdu->sr_flag+pucch_pdu->bit_len_csi_part1+pucch_pdu->bit_len_csi_part2; + AssertFatal(nb_bit > 2 && nb_bit< 65,"illegal length (%d : %d,%d,%d,%d)\n",nb_bit,pucch_pdu->bit_len_harq,pucch_pdu->sr_flag,pucch_pdu->bit_len_csi_part1,pucch_pdu->bit_len_csi_part2); - - int harq_bytes=pucch_pdu->bit_len_harq>>3; - if ((pucch_pdu->bit_len_harq&7) > 0) harq_bytes++; - uci_pdu->harq.harq_payload = (uint8_t*)malloc(harq_bytes); - uci_pdu->harq.harq_crc = 2; - for (int i=0;iharq.harq_payload[i] = cw_ML & 255; - cw_ML>>=8; + uint64_t decodedPayload[2]; + uint8_t corr_dB; + int decoderState=2; + if (nb_bit < 12) { // short blocklength case + __m256i *rp_re[Prx2]; + __m256i *rp2_re[Prx2]; + __m256i *rp_im[Prx2]; + __m256i *rp2_im[Prx2]; + for (int aa=0;aa>1], + ((int16_t*)&pucch2_lut[nb_bit-3][cw<<1])[1+(i>>1)]); + } + printf("\n"); +#endif + int64_t corr_tmp = 0; + + for (int group=0;group (%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d)",aa, + ((int16_t*)&prod_re[aa])[0],((int16_t*)&prod_re[aa])[1],((int16_t*)&prod_re[aa])[2],((int16_t*)&prod_re[aa])[3], + ((int16_t*)&prod_re[aa])[4],((int16_t*)&prod_re[aa])[5],((int16_t*)&prod_re[aa])[6],((int16_t*)&prod_re[aa])[7], + ((int16_t*)&prod_re[aa])[8],((int16_t*)&prod_re[aa])[9],((int16_t*)&prod_re[aa])[10],((int16_t*)&prod_re[aa])[11], + ((int16_t*)&prod_re[aa])[12],((int16_t*)&prod_re[aa])[13],((int16_t*)&prod_re[aa])[14],((int16_t*)&prod_re[aa])[15]); + printf("prod_im[%d] => (%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d)",aa, + ((int16_t*)&prod_im[aa])[0],((int16_t*)&prod_im[aa])[1],((int16_t*)&prod_im[aa])[2],((int16_t*)&prod_im[aa])[3], + ((int16_t*)&prod_im[aa])[4],((int16_t*)&prod_im[aa])[5],((int16_t*)&prod_im[aa])[6],((int16_t*)&prod_im[aa])[7], + ((int16_t*)&prod_im[aa])[8],((int16_t*)&prod_im[aa])[9],((int16_t*)&prod_im[aa])[10],((int16_t*)&prod_im[aa])[11], + ((int16_t*)&prod_im[aa])[12],((int16_t*)&prod_im[aa])[13],((int16_t*)&prod_im[aa])[14],((int16_t*)&prod_im[aa])[15]); + +#endif + prod_re[aa] = _mm256_hadds_epi16(prod_re[aa],prod_re[aa]);// 0+1 + prod_im[aa] = _mm256_hadds_epi16(prod_im[aa],prod_im[aa]); + prod_re[aa] = _mm256_hadds_epi16(prod_re[aa],prod_re[aa]);// 0+1+2+3 + prod_im[aa] = _mm256_hadds_epi16(prod_im[aa],prod_im[aa]); + prod_re[aa] = _mm256_hadds_epi16(prod_re[aa],prod_re[aa]);// 0+1+2+3+4+5+6+7 + prod_im[aa] = _mm256_hadds_epi16(prod_im[aa],prod_im[aa]); + prod_re[aa] = _mm256_hadds_epi16(prod_re[aa],prod_re[aa]);// 0+1+2+3+4+5+6+7+8+9+10+11+12+13+14+15 + prod_im[aa] = _mm256_hadds_epi16(prod_im[aa],prod_im[aa]); + } + int64_t corr_re=0,corr_im=0; + + + for (int aa=0;aa corr) { + corr = corr_tmp; + cw_ML=cw; + } + } // cw loop + corr_dB = dB_fixed64((uint64_t)corr); + LOG_D(PHY,"cw_ML %d, metric %d dB\n",cw_ML,corr_dB); + decodedPayload[0]=(uint64_t)cw_ML; + } + else { // polar coded case + + t_nrPolar_params *currentPtr = nr_polar_params(2,nb_bit,pucch_pdu->prb_size,1,&gNB->uci_polarParams); + __m64 *rp_re[Prx2]; + __m64 *rp2_re[Prx2]; + __m64 *rp_im[Prx2]; + __m64 *rp2_im[Prx2]; + __m128i llrs[pucch_pdu->prb_size*2]; + + for (int aa=0;aa>1]); + } + printf("\n"); + } +#endif + + // non-coherent LLR computation on groups of 4 REs (half-PRBs) + int32_t corr_re,corr_im,corr_tmp; + __m128i corr16,llr_num,llr_den; + uint64_t corr = 0; + + for (int half_prb=0;half_prb<(2*pucch_pdu->prb_size);half_prb++) { + llr_num=_mm_set1_epi16(0);llr_den=_mm_set1_epi16(0); + for (int cw=0;cw<256;cw++) { + corr_tmp=0; + for (int aa=0;aa>4],rp_im[aa][half_prb])),5); + prod_im[aa] = _mm_srai_pi16(_mm_subs_pi16(_mm_mullo_pi16(pucch2_polar_4bit[cw&15],rp2_im[aa][half_prb]), + _mm_mullo_pi16(pucch2_polar_4bit[cw>>4],rp2_re[aa][half_prb])),5); + prod_re[aa] = _mm_hadds_pi16(prod_re[aa],prod_re[aa]);// 0+1 + prod_im[aa] = _mm_hadds_pi16(prod_im[aa],prod_im[aa]); + prod_re[aa] = _mm_hadds_pi16(prod_re[aa],prod_re[aa]);// 0+1+2+3 + prod_im[aa] = _mm_hadds_pi16(prod_im[aa],prod_im[aa]); + + // this is for UL CQI measurement + if (cw==0) corr += ((int64_t)corr32_re[half_prb>>2][aa]*corr32_re[half_prb>>2][aa])+ + ((int64_t)corr32_im[half_prb>>2][aa]*corr32_im[half_prb>>2][aa]); + + + corr_re = ( corr32_re[half_prb>>2][aa]/(2*nc_group_size*4/2)+((int16_t*)(&prod_re[aa]))[0]); + corr_im = ( corr32_im[half_prb>>2][aa]/(2*nc_group_size*4/2)+((int16_t*)(&prod_im[aa]))[0]); + corr_tmp += corr_re*corr_re + corr_im*corr_im; + /* + LOG_D(PHY,"pucch2 half_prb %d cw %d (%d,%d) aa %d: (%d,%d,%d,%d,%d,%d,%d,%d)x(%d,%d,%d,%d,%d,%d,%d,%d) (%d,%d)+(%d,%d) = (%d,%d) => %d\n", + half_prb,cw,cw&15,cw>>4,aa, + ((int16_t*)&pucch2_polar_4bit[cw&15])[0],((int16_t*)&pucch2_polar_4bit[cw>>4])[0], + ((int16_t*)&pucch2_polar_4bit[cw&15])[1],((int16_t*)&pucch2_polar_4bit[cw>>4])[1], + ((int16_t*)&pucch2_polar_4bit[cw&15])[2],((int16_t*)&pucch2_polar_4bit[cw>>4])[2], + ((int16_t*)&pucch2_polar_4bit[cw&15])[3],((int16_t*)&pucch2_polar_4bit[cw>>4])[3], + ((int16_t*)&rp_re[aa][half_prb])[0],((int16_t*)&rp_im[aa][half_prb])[0], + ((int16_t*)&rp_re[aa][half_prb])[1],((int16_t*)&rp_im[aa][half_prb])[1], + ((int16_t*)&rp_re[aa][half_prb])[2],((int16_t*)&rp_im[aa][half_prb])[2], + ((int16_t*)&rp_re[aa][half_prb])[3],((int16_t*)&rp_im[aa][half_prb])[3], + corr32_re[half_prb>>2][aa]/(2*nc_group_size*4/2),corr32_im[half_prb>>2][aa]/(2*nc_group_size*4/2), + ((int16_t*)(&prod_re[aa]))[0], + ((int16_t*)(&prod_im[aa]))[0], + corr_re, + corr_im, + corr_tmp); + */ + } + corr16 = _mm_set1_epi16((int16_t)(corr_tmp>>8)); + /* + LOG_D(PHY,"half_prb %d cw %d corr16 %d\n",half_prb,cw,corr_tmp>>8); + */ + llr_num = _mm_max_epi16(_mm_mullo_epi16(corr16,pucch2_polar_llr_num_lut[cw]),llr_num); + llr_den = _mm_max_epi16(_mm_mullo_epi16(corr16,pucch2_polar_llr_den_lut[cw]),llr_den); + /* + LOG_D(PHY,"lut_num (%d,%d,%d,%d,%d,%d,%d,%d)\n", + ((int16_t*)&pucch2_polar_llr_num_lut[cw])[0], + ((int16_t*)&pucch2_polar_llr_num_lut[cw])[1], + ((int16_t*)&pucch2_polar_llr_num_lut[cw])[2], + ((int16_t*)&pucch2_polar_llr_num_lut[cw])[3], + ((int16_t*)&pucch2_polar_llr_num_lut[cw])[4], + ((int16_t*)&pucch2_polar_llr_num_lut[cw])[5], + ((int16_t*)&pucch2_polar_llr_num_lut[cw])[6], + ((int16_t*)&pucch2_polar_llr_num_lut[cw])[7]); + + LOG_D(PHY,"llr_num (%d,%d,%d,%d,%d,%d,%d,%d)\n", + ((int16_t*)&llr_num)[0], + ((int16_t*)&llr_num)[1], + ((int16_t*)&llr_num)[2], + ((int16_t*)&llr_num)[3], + ((int16_t*)&llr_num)[4], + ((int16_t*)&llr_num)[5], + ((int16_t*)&llr_num)[6], + ((int16_t*)&llr_num)[7]); + LOG_D(PHY,"llr_den (%d,%d,%d,%d,%d,%d,%d,%d)\n", + ((int16_t*)&llr_den)[0], + ((int16_t*)&llr_den)[1], + ((int16_t*)&llr_den)[2], + ((int16_t*)&llr_den)[3], + ((int16_t*)&llr_den)[4], + ((int16_t*)&llr_den)[5], + ((int16_t*)&llr_den)[6], + ((int16_t*)&llr_den)[7]); + */ + } + // compute llrs + llrs[half_prb] = _mm_subs_epi16(llr_num,llr_den); + LOG_D(PHY,"llrs[%d] : (%d,%d,%d,%d,%d,%d,%d,%d)\n", + half_prb, + ((int16_t*)&llrs[half_prb])[0], + ((int16_t*)&llrs[half_prb])[1], + ((int16_t*)&llrs[half_prb])[2], + ((int16_t*)&llrs[half_prb])[3], + ((int16_t*)&llrs[half_prb])[4], + ((int16_t*)&llrs[half_prb])[5], + ((int16_t*)&llrs[half_prb])[6], + ((int16_t*)&llrs[half_prb])[7]); + } // half_prb + // run polar decoder on llrs + decoderState = polar_decoder_int16((int16_t*)llrs, decodedPayload, 0, currentPtr); + LOG_D(PHY,"UCI decoderState %d, payload[0] %llux\n",decoderState,(unsigned long long)decodedPayload[0]); + if (decoderState>0) decoderState=1; + corr_dB = dB_fixed64(corr); + LOG_D(PHY,"metric %d dB\n",corr_dB); + } + uci_pdu->harq.harq_bit_len = pucch_pdu->bit_len_harq; + uci_pdu->pduBitmap=0; + uci_pdu->rnti=pucch_pdu->rnti; + uci_pdu->handle=pucch_pdu->handle; + uci_pdu->pucch_format=0; + uci_pdu->ul_cqi=corr_dB; + // need to fill these field! + uci_pdu->timing_advance=31; + uci_pdu->rssi=0; + if (pucch_pdu->bit_len_harq>0) { + int harq_bytes=pucch_pdu->bit_len_harq>>3; + if ((pucch_pdu->bit_len_harq&7) > 0) harq_bytes++; + uci_pdu->pduBitmap|=1; + uci_pdu->harq.harq_payload = (uint8_t*)malloc(harq_bytes); + uci_pdu->harq.harq_crc = decoderState > 0 ? 1 : 0; + int i=0; + for (;iharq.harq_payload[i] = decodedPayload[0] & 255; + decodedPayload[0]>>=8; + } + uci_pdu->harq.harq_payload[i] = decodedPayload[0] & ((1<<(pucch_pdu->bit_len_harq&7))-1); + decodedPayload[0] >>= pucch_pdu->bit_len_harq; } if (pucch_pdu->sr_flag == 1) { + uci_pdu->pduBitmap|=2; uci_pdu->sr.sr_bit_len = 1; uci_pdu->sr.sr_payload = malloc(1); - uci_pdu->sr.sr_payload[0] = cw_ML; + uci_pdu->sr.sr_payload[0] = decodedPayload[0]&1; + decodedPayload[0] = decodedPayload[0]>>1; } + // csi + if (pucch_pdu->bit_len_csi_part1>0) { + uci_pdu->pduBitmap|=4; + int csi_part1_bytes=pucch_pdu->bit_len_csi_part1>>3; + if ((pucch_pdu->bit_len_csi_part1&7) > 0) csi_part1_bytes++; + uci_pdu->csi_part1.csi_part1_payload = (uint8_t*)malloc(csi_part1_bytes); + uci_pdu->csi_part1.csi_part1_crc = decoderState > 0 ? 1 : 0; + int i=0; + for (;icsi_part1.csi_part1_payload[i] = decodedPayload[0] & 255; + decodedPayload[0]>>=8; + } + uci_pdu->csi_part1.csi_part1_payload[i] = decodedPayload[0] & ((1<<(pucch_pdu->bit_len_csi_part1&7))-1); + decodedPayload[0] >>= pucch_pdu->bit_len_csi_part1; + } + + if (pucch_pdu->bit_len_csi_part2>0) { + uci_pdu->pduBitmap|=8; + } + } diff --git a/openair1/PHY/NR_UE_ESTIMATION/nr_adjust_synch_ue.c b/openair1/PHY/NR_UE_ESTIMATION/nr_adjust_synch_ue.c index 7f5872e885..b49443c03c 100644 --- a/openair1/PHY/NR_UE_ESTIMATION/nr_adjust_synch_ue.c +++ b/openair1/PHY/NR_UE_ESTIMATION/nr_adjust_synch_ue.c @@ -34,8 +34,9 @@ void nr_adjust_synch_ue(NR_DL_FRAME_PARMS *frame_parms, PHY_VARS_NR_UE *ue, - module_id_t eNB_id, - uint8_t subframe, + module_id_t gNB_id, + uint8_t frame, + uint8_t subframe, unsigned char clear, short coef) { @@ -59,8 +60,8 @@ void nr_adjust_synch_ue(NR_DL_FRAME_PARMS *frame_parms, temp = 0; for (aa=0; aanb_antennas_rx; aa++) { - Re = ((int16_t*)ue->pbch_vars[eNB_id]->dl_ch_estimates_time[aa])[(i<<1)]; - Im = ((int16_t*)ue->pbch_vars[eNB_id]->dl_ch_estimates_time[aa])[1+(i<<1)]; + Re = ((int16_t*)ue->pbch_vars[gNB_id]->dl_ch_estimates_time[aa])[(i<<1)]; + Im = ((int16_t*)ue->pbch_vars[gNB_id]->dl_ch_estimates_time[aa])[1+(i<<1)]; temp += (Re*Re/2) + (Im*Im/2); } @@ -104,17 +105,19 @@ void nr_adjust_synch_ue(NR_DL_FRAME_PARMS *frame_parms, //mac_resynch(); //dl_phy_sync_success(ue->Mod_id,ue->proc.proc_rxtx[0].frame_rx,0,1);//ue->common_vars.eNb_id); ue->UE_mode[0] = PRACH; + ue->prach_resources[gNB_id]->sync_frame = frame; + ue->prach_resources[gNB_id]->init_msg1 = 0; } else { ue->UE_mode[0] = PUSCH; } } - if ( ue->rx_offset < 0 ) - ue->rx_offset += frame_parms->samples_per_frame; + if (ue->rx_offset < 0) + ue->rx_offset += frame_parms->samples_per_frame; - if ( ue->rx_offset >= frame_parms->samples_per_frame ) - ue->rx_offset -= frame_parms->samples_per_frame; + if (ue->rx_offset >= frame_parms->samples_per_frame) + ue->rx_offset -= frame_parms->samples_per_frame; diff --git a/openair1/PHY/NR_UE_ESTIMATION/nr_estimation.h b/openair1/PHY/NR_UE_ESTIMATION/nr_estimation.h index af06f9a98f..1837664391 100644 --- a/openair1/PHY/NR_UE_ESTIMATION/nr_estimation.h +++ b/openair1/PHY/NR_UE_ESTIMATION/nr_estimation.h @@ -75,6 +75,7 @@ int nr_pdsch_channel_estimation(PHY_VARS_NR_UE *ue, void nr_adjust_synch_ue(NR_DL_FRAME_PARMS *frame_parms, PHY_VARS_NR_UE *ue, module_id_t eNB_id, + uint8_t frame, uint8_t subframe, unsigned char clear, short coef); @@ -90,6 +91,7 @@ void phy_adjust_gain_nr(PHY_VARS_NR_UE *ue, uint32_t rx_power_fil_dB, uint8_t eNB_id); -int16_t get_nr_PL(PHY_VARS_NR_UE *ue,uint8_t gNB_index); +int16_t get_nr_PL(uint8_t Mod_id, uint8_t CC_id, uint8_t gNB_index); + #endif diff --git a/openair1/PHY/NR_UE_ESTIMATION/nr_ue_measurements.c b/openair1/PHY/NR_UE_ESTIMATION/nr_ue_measurements.c index aa1e2b5ade..860ca11d8c 100644 --- a/openair1/PHY/NR_UE_ESTIMATION/nr_ue_measurements.c +++ b/openair1/PHY/NR_UE_ESTIMATION/nr_ue_measurements.c @@ -55,8 +55,9 @@ void print_ints(char *s,int *x) } #endif -int16_t get_nr_PL(PHY_VARS_NR_UE *ue,uint8_t gNB_index) -{ +int16_t get_nr_PL(uint8_t Mod_id, uint8_t CC_id, uint8_t gNB_index){ + + PHY_VARS_NR_UE *ue = PHY_vars_UE_g[Mod_id][CC_id]; /* if (ue->frame_parms.mode1_flag == 1) @@ -75,9 +76,6 @@ int16_t get_nr_PL(PHY_VARS_NR_UE *ue,uint8_t gNB_index) //(ue->frame_parms.pdsch_config_common.referenceSignalPower*10))/10)); } - - - void nr_ue_measurements(PHY_VARS_NR_UE *ue, unsigned int subframe_offset, unsigned char N0_symbol, diff --git a/openair1/PHY/NR_UE_TRANSPORT/dci_nr.c b/openair1/PHY/NR_UE_TRANSPORT/dci_nr.c index ef22b61260..7cde6e31c1 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/dci_nr.c +++ b/openair1/PHY/NR_UE_TRANSPORT/dci_nr.c @@ -29,11 +29,15 @@ * \note * \warning */ + #ifdef USER_MODE #include #include #include #endif + +#include "executables/softmodem-common.h" + #include "nr_transport_proto_ue.h" #include "PHY/CODING/nrPolar_tools/nr_polar_dci_defs.h" #include "PHY/phy_extern_nr_ue.h" @@ -799,20 +803,22 @@ void pdcch_scrambling(NR_DL_FRAME_PARMS *frame_parms, #ifdef NR_PDCCH_DCI_RUN -void nr_pdcch_unscrambling(uint16_t crnti, NR_DL_FRAME_PARMS *frame_parms, uint8_t slot, - int16_t *z, int16_t *z2,uint32_t length, uint16_t pdcch_DMRS_scrambling_id) { +void nr_pdcch_unscrambling(int16_t *z, + uint16_t scrambling_RNTI, + uint32_t length, + uint16_t pdcch_DMRS_scrambling_id, + int16_t *z2) { int i; uint8_t reset; uint32_t x1, x2, s = 0; uint16_t n_id; //{0,1,...,65535} - uint32_t n_rnti; + uint32_t rnti = (uint32_t) scrambling_RNTI; reset = 1; // x1 is set in first call to lte_gold_generic - //do_common=1; - n_id = pdcch_DMRS_scrambling_id; - n_rnti = (uint32_t)crnti; + n_id = pdcch_DMRS_scrambling_id; + x2 = ((rnti<<16) + n_id); //mod 2^31 is implicit //this is c_init in 38.211 v15.1.0 Section 7.3.2.3 - x2 = (((1<<16)*n_rnti)+n_id); //mod 2^31 is implicit //this is c_init in 38.211 v15.1.0 Section 7.3.2.3 + LOG_D(PHY,"PDCCH Unscrambling x2 %x : scrambling_RNTI %x\n", x2, rnti); for (i = 0; i < length; i++) { if ((i & 0x1f) == 0) { @@ -840,38 +846,48 @@ uint8_t nr_dci_decoding_procedure(PHY_VARS_NR_UE *ue, rel15 = &pdcch_vars->pdcch_config[i]; int dci_length = rel15->dci_length; + //int gNB_id = 0; int16_t tmp_e[16*108]; + rnti_t n_rnti; for (int j=0;jnumber_of_candidates;j++) { - LOG_D(PHY,"Trying DCI candidate %d, CCE %d (%d), L %d\n",j,rel15->CCE[j],rel15->CCE[j]*9*6*2,rel15->L[j]); int CCEind = rel15->CCE[j]; int L = rel15->L[j]; uint64_t dci_estimation[2]= {0}; - const t_nrPolar_params *currentPtrDCI=nr_polar_params(1, dci_length, L,1,&ue->polarList); + const t_nrPolar_params *currentPtrDCI = nr_polar_params(NR_POLAR_DCI_MESSAGE_TYPE, dci_length, L, 1, &ue->polarList); - nr_pdcch_unscrambling(rel15->rnti, - &ue->frame_parms, - slot, - &pdcch_vars->e_rx[CCEind*108], - tmp_e, - L*108, - // get_nCCE(n_pdcch_symbols, frame_parms, mi) * 72, - rel15->coreset.pdcch_dmrs_scrambling_id); + LOG_D(PHY, "Trying DCI candidate %d of %d number of candidates, CCE %d (%d), L %d\n", j, rel15->number_of_candidates, CCEind, CCEind*9*6*2, L); + + nr_pdcch_unscrambling(&pdcch_vars->e_rx[CCEind*108], rel15->coreset.scrambling_rnti, L*108, rel15->coreset.pdcch_dmrs_scrambling_id, tmp_e); + + #ifdef DEBUG_DCI_DECODING + uint32_t * z = (uint32_t *) &pdcch_vars->e_rx[CCEind*108]; + for (int index_z = 0; index_z < 96; index_z++){ + for (int i=0; i<9; i++) { + LOG_D(PHY,"z[%d]=(%d,%d) \n", (9*index_z + i), *(int16_t *) &z[index_z + i],*(1 + (int16_t *) &z[index_z + i])); + } + } + #endif uint16_t crc = polar_decoder_int16(tmp_e, dci_estimation, 1, currentPtrDCI); - LOG_D(PHY,"Decoded crc %x\n",crc); - if (crc == rel15->rnti) { + + n_rnti = rel15->rnti; + + if (crc == n_rnti) { + LOG_D(PHY,"Decoded crc %x matches rnti %x for DCI format %d\n", crc, n_rnti, rel15->dci_format); dci_ind->SFN = frame; dci_ind->slot = slot; - dci_ind->dci_list[dci_ind->number_of_dcis].rnti = rel15->rnti; + dci_ind->dci_list[dci_ind->number_of_dcis].rnti = n_rnti; dci_ind->dci_list[dci_ind->number_of_dcis].n_CCE = CCEind; dci_ind->dci_list[dci_ind->number_of_dcis].dci_format = rel15->dci_format; dci_ind->dci_list[dci_ind->number_of_dcis].payloadSize = dci_length; memcpy((void*)dci_ind->dci_list[dci_ind->number_of_dcis].payloadBits,(void*)dci_estimation,8); dci_ind->number_of_dcis++; + } else { + LOG_D(PHY,"Decoded crc %x does not match rnti %x for DCI format %d\n", crc, n_rnti, rel15->dci_format); } } } diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c b/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c index e5cbc4e07a..36bcb2f379 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c +++ b/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c @@ -32,6 +32,7 @@ #include "common/utils/LOG/vcd_signal_dumper.h" #include "PHY/defs_nr_UE.h" +#include "SCHED_NR_UE/harq_nr.h" #include "PHY/phy_extern_nr_ue.h" #include "PHY/CODING/coding_extern.h" #include "PHY/CODING/coding_defs.h" @@ -42,6 +43,7 @@ #include "SIMULATION/TOOLS/sim.h" #include "executables/nr-uesoftmodem.h" #include "PHY/CODING/nrLDPC_extern.h" +#include "LAYER2/NR_MAC_gNB/mac_proto.h" //#define DEBUG_DLSCH_DECODING //#define ENABLE_PHY_PAYLOAD_DEBUG 1 @@ -66,7 +68,7 @@ void free_nr_ue_dlsch(NR_UE_DLSCH_t **dlschptr,uint8_t N_RB_DL) if (dlsch) { if (N_RB_DL != 273) { a_segments = a_segments*N_RB_DL; - a_segments = a_segments/273; + a_segments = a_segments/273 +1; } @@ -132,6 +134,7 @@ NR_UE_DLSCH_t *new_nr_ue_dlsch(uint8_t Kmimo,uint8_t Mdlharq,uint32_t Nsoft,uint memset(dlsch,0,sizeof(NR_UE_DLSCH_t)); dlsch->Kmimo = Kmimo; dlsch->Mdlharq = Mdlharq; + dlsch->number_harq_processes_for_pdsch = Mdlharq; dlsch->Nsoft = Nsoft; dlsch->Mlimit = 4; dlsch->max_ldpc_iterations = max_ldpc_iterations; @@ -142,6 +145,7 @@ NR_UE_DLSCH_t *new_nr_ue_dlsch(uint8_t Kmimo,uint8_t Mdlharq,uint32_t Nsoft,uint if (dlsch->harq_processes[i]) { memset(dlsch->harq_processes[i],0,sizeof(NR_DL_UE_HARQ_t)); + init_downlink_harq_status(dlsch->harq_processes[i]); dlsch->harq_processes[i]->first_tx=1; dlsch->harq_processes[i]->b = (uint8_t*)malloc16(dlsch_bytes); @@ -214,16 +218,16 @@ void nr_dlsch_unscrambling(int16_t* llr, } uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue, - short *dlsch_llr, - NR_DL_FRAME_PARMS *frame_parms, - NR_UE_DLSCH_t *dlsch, - NR_DL_UE_HARQ_t *harq_process, - uint32_t frame, - uint16_t nb_symb_sch, - uint8_t nr_tti_rx, - uint8_t harq_pid, - uint8_t is_crnti, - uint8_t llr8_flag) + short *dlsch_llr, + NR_DL_FRAME_PARMS *frame_parms, + NR_UE_DLSCH_t *dlsch, + NR_DL_UE_HARQ_t *harq_process, + uint32_t frame, + uint16_t nb_symb_sch, + uint8_t nr_tti_rx, + uint8_t harq_pid, + uint8_t is_crnti, + uint8_t llr8_flag) { #if UE_TIMING_TRACE @@ -262,8 +266,14 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue, double Coderate;// = 0.0; uint8_t dmrs_Type = harq_process->dmrsConfigType; - AssertFatal(dmrs_Type == 1 || dmrs_Type == 2,"Illegal dmrs_type %d\n",dmrs_Type); - uint8_t nb_re_dmrs = (dmrs_Type==1)?6:4; + AssertFatal(dmrs_Type == 0 || dmrs_Type == 1, "Illegal dmrs_type %d\n", dmrs_Type); + uint8_t nb_re_dmrs; + if (dmrs_Type==NFAPI_NR_DMRS_TYPE1) { + nb_re_dmrs = 6*harq_process->n_dmrs_cdm_groups; + } + else { + nb_re_dmrs = 4*harq_process->n_dmrs_cdm_groups; + } uint16_t dmrs_length = get_num_dmrs(harq_process->dlDmrsSymbPos); AssertFatal(dmrs_length == 1 || dmrs_length == 2,"Illegal dmrs_length %d\n",dmrs_length); @@ -273,7 +283,7 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue, __m128i *pl = (__m128i*)&l; vcd_signal_dumper_dump_function_by_name(VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_SEGMENTATION, VCD_FUNCTION_IN); - + //NR_DL_UE_HARQ_t *harq_process = dlsch->harq_processes[0]; if (!dlsch_llr) { @@ -317,7 +327,7 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue, uint16_t nb_rb_oh = 0; // it was not computed at UE side even before and set to 0 in nr_compute_tbs - harq_process->TBS = nr_compute_tbs(harq_process->Qm,harq_process->R,nb_rb,nb_symb_sch,nb_re_dmrs*dmrs_length, nb_rb_oh, harq_process->Nl); + harq_process->TBS = nr_compute_tbs(harq_process->Qm,harq_process->R,nb_rb,nb_symb_sch,nb_re_dmrs*dmrs_length, nb_rb_oh, 0, harq_process->Nl); A = harq_process->TBS; ret = dlsch->max_ldpc_iterations + 1; @@ -326,7 +336,7 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue, harq_process->G = nr_get_G(nb_rb, nb_symb_sch, nb_re_dmrs, dmrs_length, harq_process->Qm,harq_process->Nl); G = harq_process->G; - LOG_D(PHY,"DLSCH Decoding, harq_pid %d TBS %d G %d nb_re_dmrs %d mcs %d Nl %d nb_symb_sch %d nb_rb %d\n",harq_pid,A,G, nb_re_dmrs,harq_process->mcs, harq_process->Nl, nb_symb_sch,nb_rb); + LOG_D(PHY,"DLSCH Decoding, harq_pid %d TBS %d (%d) G %d nb_re_dmrs %d mcs %d Nl %d nb_symb_sch %d nb_rb %d\n",harq_pid,A,A/8,G, nb_re_dmrs,harq_process->mcs, harq_process->Nl, nb_symb_sch,nb_rb); if ((harq_process->R)<1024) Coderate = (float) (harq_process->R) /(float) 1024; @@ -405,7 +415,7 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue, if (nb_rb != 273) { a_segments = a_segments*nb_rb; - a_segments = a_segments/273; + a_segments = a_segments/273 +1; } if (harq_process->C > a_segments) { @@ -580,6 +590,9 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue, // Fixme: correct type is unsigned, but nrLDPC_decoder and all called behind use signed int if (check_crc((uint8_t*)llrProcBuf,length_dec,harq_process->F,crc_type)) { LOG_D(PHY,"Segment %u CRC OK\n\033[0m",r); + if (r==0) + for (int i=0;i<10;i++) LOG_D(PHY,"byte %d : %x\n",i,((uint8_t*)llrProcBuf)[i]); + //Temporary hack no_iteration_ldpc = dlsch->max_ldpc_iterations; ret = no_iteration_ldpc; @@ -653,9 +666,8 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue, harq_process->harq_ack.harq_id = harq_pid; harq_process->harq_ack.send_harq_status = 1; harq_process->errors[harq_process->round]++; - // harq_process->round++; // [hna] uncomment this line when HARQ is implemented - // printf("Rate: [UE %d] DLSCH: Setting NACK for subframe %d (pid %d, round %d)\n",phy_vars_ue->Mod_id,subframe,harq_pid,harq_process->round); + // printf("Rate: [UE %d] DLSCH: Setting NACK for slot %d (pid %d, round %d)\n",phy_vars_ue->Mod_id,nr_tti_rx,harq_pid,harq_process->round); if (harq_process->round >= dlsch->Mlimit) { harq_process->status = SCH_IDLE; harq_process->round = 0; @@ -801,8 +813,13 @@ uint32_t nr_dlsch_decoding_mthread(PHY_VARS_NR_UE *phy_vars_ue, //nfapi_nr_config_request_t *cfg = &phy_vars_ue->nrUE_config; //uint8_t dmrs_type = cfg->pdsch_config.dmrs_type.value; - uint8_t nb_re_dmrs = (dmrs_type==1)?6:4; - uint16_t length_dmrs = get_num_dmrs(harq_process->dlDmrsSymbPos); + uint8_t nb_re_dmrs; + if (dmrs_Type == NFAPI_NR_DMRS_TYPE1) + nb_re_dmrs = 6*harq_process->n_dmrs_cdm_groups; + else + nb_re_dmrs = 4*harq_process->n_dmrs_cdm_groups; + + uint16_t length_dmrs = get_num_dmrs(dl_config_pdu->dlDmrsSymbPos); uint32_t i,j; // int nbDlProcessing =0; @@ -854,7 +871,7 @@ uint32_t nr_dlsch_decoding_mthread(PHY_VARS_NR_UE *phy_vars_ue, uint16_t nb_rb_oh = 0; // it was not computed at UE side even before and set to 0 in nr_compute_tbs - harq_process->TBS = nr_compute_tbs(harq_process->Qm,harq_process->R,nb_rb,nb_symb_sch,nb_re_dmrs*length_dmrs, nb_rb_oh, harq_process->Nl); + harq_process->TBS = nr_compute_tbs(harq_process->Qm,harq_process->R,nb_rb,nb_symb_sch,nb_re_dmrs*length_dmrs, nb_rb_oh, 0, harq_process->Nl); A = harq_process->TBS; @@ -943,7 +960,7 @@ uint32_t nr_dlsch_decoding_mthread(PHY_VARS_NR_UE *phy_vars_ue, if (nb_rb != 273) { a_segments = a_segments*nb_rb; - a_segments = a_segments/273; + a_segments = a_segments/273 +1; } if (harq_process->C > a_segments) { @@ -1431,7 +1448,7 @@ void nr_dlsch_decoding_process(void *arg) uint16_t nb_rb_oh = 0; // it was not computed at UE side even before and set to 0 in nr_compute_tbs - harq_process->TBS = nr_compute_tbs(harq_process->Qm,harq_process->R,nb_rb,nb_symb_sch,nb_re_dmrs*length_dmrs, nb_rb_oh, harq_process->Nl); + harq_process->TBS = nr_compute_tbs(harq_process->Qm,harq_process->R,nb_rb,nb_symb_sch,nb_re_dmrs*length_dmrs, nb_rb_oh, 0, harq_process->Nl); A = harq_process->TBS; //2072 for QPSK 1/3 @@ -1521,7 +1538,7 @@ void nr_dlsch_decoding_process(void *arg) if (nb_rb != 273) { a_segments = a_segments*nb_rb; - a_segments = a_segments/273; + a_segments = a_segments/273 +1; } if (harq_process->C > a_segments) { @@ -1697,10 +1714,10 @@ void nr_dlsch_decoding_process(void *arg) } no_iteration_ldpc = nrLDPC_decoder(p_decParams, - (int8_t*)&pl[0], - llrProcBuf, - p_nrLDPC_procBuf, - p_procTime); + (int8_t*)&pl[0], + llrProcBuf, + p_nrLDPC_procBuf, + p_procTime); // Fixme: correct type is unsigned, but nrLDPC_decoder and all called behind use signed int if (check_crc((uint8_t*)llrProcBuf,length_dec,harq_process->F,crc_type)) { diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c b/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c index c704efdb1f..7aa0e357aa 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c +++ b/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c @@ -30,6 +30,7 @@ */ #include "PHY/defs_nr_UE.h" #include "PHY/phy_extern_nr_ue.h" +#include "PHY/NR_TRANSPORT/nr_transport_proto.h" #include "nr_transport_proto_ue.h" //#include "SCHED/defs.h" //#include "PHY/defs.h" @@ -131,9 +132,9 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue, unsigned short nb_rb = 0, round; int avgs = 0;// rb; - NR_DL_UE_HARQ_t *dlsch0_harq,*dlsch1_harq = 0; + NR_DL_UE_HARQ_t *dlsch0_harq, *dlsch1_harq = NULL; - uint8_t beamforming_mode; + uint8_t beamforming_mode = 0; int32_t **rxdataF_comp_ptr; int32_t **dl_ch_mag_ptr; @@ -155,82 +156,100 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue, uint16_t n_tx=1, n_rx=1; int32_t median[16]; uint32_t len; - + switch (type) { case SI_PDSCH: - pdsch_vars = &ue->pdsch_vars_SI[eNB_id]; + pdsch_vars = ue->pdsch_vars[ue->current_thread_id[nr_tti_rx]]; dlsch = &ue->dlsch_SI[eNB_id]; dlsch0_harq = dlsch[0]->harq_processes[harq_pid]; - beamforming_mode = 0; + break; case RA_PDSCH: - pdsch_vars = &ue->pdsch_vars_ra[eNB_id]; + pdsch_vars = ue->pdsch_vars[ue->current_thread_id[nr_tti_rx]]; dlsch = &ue->dlsch_ra[eNB_id]; dlsch0_harq = dlsch[0]->harq_processes[harq_pid]; - beamforming_mode = 0; + break; case PDSCH: pdsch_vars = ue->pdsch_vars[ue->current_thread_id[nr_tti_rx]]; dlsch = ue->dlsch[ue->current_thread_id[nr_tti_rx]][eNB_id]; - - - dlsch[0]->harq_processes[harq_pid]->Qm = nr_get_Qm_dl(dlsch[0]->harq_processes[harq_pid]->mcs, dlsch[0]->harq_processes[harq_pid]->mcs_table); - dlsch[0]->harq_processes[harq_pid]->R = nr_get_code_rate_dl(dlsch[0]->harq_processes[harq_pid]->mcs, dlsch[0]->harq_processes[harq_pid]->mcs_table); - - //printf("status TB0 = %d, status TB1 = %d \n", dlsch[0]->harq_processes[harq_pid]->status, dlsch[1]->harq_processes[harq_pid]->status); - LOG_D(PHY,"AbsSubframe %d.%d / Sym %d harq_pid %d, harq status %d.%d \n", - frame,nr_tti_rx,symbol,harq_pid, - dlsch[0]->harq_processes[harq_pid]->status, - dlsch[1]->harq_processes[harq_pid]->status); - - if ((dlsch[0]->harq_processes[harq_pid]->status == ACTIVE) && - (dlsch[1]->harq_processes[harq_pid]->status == ACTIVE)){ - codeword_TB0 = dlsch[0]->harq_processes[harq_pid]->codeword; - codeword_TB1 = dlsch[1]->harq_processes[harq_pid]->codeword; - dlsch0_harq = dlsch[codeword_TB0]->harq_processes[harq_pid]; - dlsch1_harq = dlsch[codeword_TB1]->harq_processes[harq_pid]; -#ifdef DEBUG_HARQ - printf("[DEMOD] I am assuming both TBs are active\n"); -#endif - } - else if ((dlsch[0]->harq_processes[harq_pid]->status == ACTIVE) && - (dlsch[1]->harq_processes[harq_pid]->status != ACTIVE) ) { - codeword_TB0 = dlsch[0]->harq_processes[harq_pid]->codeword; - dlsch0_harq = dlsch[0]->harq_processes[harq_pid]; - dlsch1_harq = NULL; - codeword_TB1 = -1; -#ifdef DEBUG_HARQ - printf("[DEMOD] I am assuming only TB0 is active\n"); -#endif - } - else if ((dlsch[0]->harq_processes[harq_pid]->status != ACTIVE) && - (dlsch[1]->harq_processes[harq_pid]->status == ACTIVE) ){ - codeword_TB1 = dlsch[1]->harq_processes[harq_pid]->codeword; - dlsch0_harq = dlsch[1]->harq_processes[harq_pid]; - dlsch1_harq = NULL; - codeword_TB0 = -1; -#ifdef DEBUG_HARQ - printf("[DEMOD] I am assuming only TB1 is active, it is in cw %d\n", dlsch0_harq->codeword); -#endif - } - else { - LOG_E(PHY,"[UE][FATAL] nr_tti_rx %d: no active DLSCH\n",nr_tti_rx); - return(-1); - } - beamforming_mode = ue->transmission_mode[eNB_id]<7?0:ue->transmission_mode[eNB_id]; + dlsch0_harq = dlsch[0]->harq_processes[harq_pid]; + dlsch1_harq = dlsch[1]->harq_processes[harq_pid]; + beamforming_mode = ue->transmission_mode[eNB_id] < 7 ? 0 :ue->transmission_mode[eNB_id]; break; default: - LOG_E(PHY,"[UE][FATAL] nr_tti_rx %d: Unknown PDSCH format %d\n",nr_tti_rx,type); - return(-1); + LOG_E(PHY, "[UE][FATAL] nr_tti_rx %d: Unknown PDSCH format %d\n", nr_tti_rx, type); + return -1; break; } -#ifdef DEBUG_HARQ - printf("[DEMOD] MIMO mode = %d\n", dlsch0_harq->mimo_mode); - printf("[DEMOD] cw for TB0 = %d, cw for TB1 = %d\n", codeword_TB0, codeword_TB1); -#endif + + if (dlsch0_harq && dlsch1_harq){ + + //printf("status TB0 = %d, status TB1 = %d \n", dlsch[0]->harq_processes[harq_pid]->status, dlsch[1]->harq_processes[harq_pid]->status); + LOG_D(PHY,"AbsSubframe %d.%d / Sym %d harq_pid %d, harq status %d.%d \n", frame, nr_tti_rx, symbol, harq_pid, dlsch0_harq->status, dlsch1_harq->status); + + if ((dlsch0_harq->status == ACTIVE) && (dlsch1_harq->status == ACTIVE)){ + codeword_TB0 = dlsch0_harq->codeword; + codeword_TB1 = dlsch1_harq->codeword; + dlsch0_harq = dlsch[codeword_TB0]->harq_processes[harq_pid]; + dlsch1_harq = dlsch[codeword_TB1]->harq_processes[harq_pid]; + + #ifdef DEBUG_HARQ + printf("[DEMOD] I am assuming both TBs are active, in cw0 %d and cw1 %d \n", codeword_TB0, codeword_TB1); + #endif + + } else if ((dlsch0_harq->status == ACTIVE) && (dlsch1_harq->status != ACTIVE) ) { + codeword_TB0 = dlsch0_harq->codeword; + dlsch0_harq = dlsch[codeword_TB0]->harq_processes[harq_pid]; + dlsch1_harq = NULL; + + #ifdef DEBUG_HARQ + printf("[DEMOD] I am assuming only TB0 is active, in cw %d \n", codeword_TB0); + #endif + + } else if ((dlsch0_harq->status != ACTIVE) && (dlsch1_harq->status == ACTIVE)){ + codeword_TB1 = dlsch1_harq->codeword; + dlsch0_harq = NULL; + dlsch1_harq = dlsch[codeword_TB1]->harq_processes[harq_pid]; + + #ifdef DEBUG_HARQ + printf("[DEMOD] I am assuming only TB1 is active, it is in cw %d\n", codeword_TB1); + #endif + + LOG_E(PHY, "[UE][FATAL] DLSCH: TB0 not active and TB1 active case is not supported\n"); + return -1; + + } else { + LOG_E(PHY,"[UE][FATAL] nr_tti_rx %d: no active DLSCH\n", nr_tti_rx); + return(-1); + } + } else if (dlsch0_harq) { + if (dlsch0_harq->status == ACTIVE) { + codeword_TB0 = dlsch0_harq->codeword; + dlsch0_harq = dlsch[0]->harq_processes[harq_pid]; + + #ifdef DEBUG_HARQ + printf("[DEMOD] I am assuming only TB0 is active\n"); + #endif + } else { + LOG_E(PHY,"[UE][FATAL] nr_tti_rx %d: no active DLSCH\n", nr_tti_rx); + return (-1); + } + } else { + LOG_E(PHY, "Done\n"); + return -1; + } + + dlsch0_harq->Qm = nr_get_Qm_dl(dlsch[0]->harq_processes[harq_pid]->mcs, dlsch[0]->harq_processes[harq_pid]->mcs_table); + dlsch0_harq->R = nr_get_code_rate_dl(dlsch[0]->harq_processes[harq_pid]->mcs, dlsch[0]->harq_processes[harq_pid]->mcs_table); + + #ifdef DEBUG_HARQ + printf("[DEMOD] MIMO mode = %d\n", dlsch0_harq->mimo_mode); + printf("[DEMOD] cw for TB0 = %d, cw for TB1 = %d\n", codeword_TB0, codeword_TB1); + #endif start_rb = dlsch0_harq->start_rb; nb_rb_pdsch = dlsch0_harq->nb_rb; @@ -269,7 +288,6 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue, return(-1); } - if (dlsch0_harq->mimo_mode==NR_DUALSTREAM) { DevAssert(dlsch1_harq); } @@ -325,9 +343,9 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue, dlsch0_harq->pmi_alloc, pdsch_vars[eNB_id_i]->pmi_ext, symbol, - pilots, - start_rb, - nb_rb_pdsch, + pilots, + start_rb, + nb_rb_pdsch, nr_tti_rx, ue->high_speed_flag, frame_parms, @@ -340,9 +358,9 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue, dlsch0_harq->pmi_alloc, pdsch_vars[eNB_id_i]->pmi_ext, symbol, - pilots, - start_rb, - nb_rb_pdsch, + pilots, + start_rb, + nb_rb_pdsch, nr_tti_rx, ue->high_speed_flag, frame_parms, @@ -363,7 +381,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue, nr_tti_rx, ue->high_speed_flag, frame_parms); - + } /*else if(beamforming_mode>7) { LOG_W(PHY,"dlsch_demodulation: beamforming mode not supported yet.\n"); }*/ @@ -502,7 +520,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue, (aatx>1) ? pdsch_vars[eNB_id]->rho : NULL, frame_parms, symbol, - pilots, + pilots, first_symbol_flag, dlsch0_harq->Qm, nb_rb, @@ -624,7 +642,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue, write_output("rho2_mrc.m","rho2_0",&pdsch_vars[eNB_id]->dl_ch_rho2_ext[0][symbol*frame_parms->N_RB_DL*12],frame_parms->N_RB_DL*12,1,1);//should be almost 0 } */ } - } + } //printf("start compute LLR\n"); if (dlsch0_harq->mimo_mode == NR_DUALSTREAM) { @@ -655,19 +673,19 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue, // -> // compute @pointer where llrs should filled for this ofdm-symbol if (first_symbol_flag==1) pdsch_vars[eNB_id]->llr_offset[symbol-1] = 0; - llr_offset_symbol = pdsch_vars[eNB_id]->llr_offset[symbol-1]; - //pllr_symbol_cw0_deint = (int8_t*)pdsch_vars[eNB_id]->llr[0]; - //pllr_symbol_cw1_deint = (int8_t*)pdsch_vars[eNB_id]->llr[1]; - pllr_symbol_layer0 = pdsch_vars[eNB_id]->layer_llr[0]; - pllr_symbol_layer1 = pdsch_vars[eNB_id]->layer_llr[1]; - pllr_symbol_layer0 += llr_offset_symbol; - pllr_symbol_layer1 += llr_offset_symbol; - pllr_symbol_cw0 = pdsch_vars[eNB_id]->llr[0]; - pllr_symbol_cw1 = pdsch_vars[eNB_id]->llr[1]; - pllr_symbol_cw0 += llr_offset_symbol; - pllr_symbol_cw1 += llr_offset_symbol; - - pdsch_vars[eNB_id]->llr_offset[symbol] = len*dlsch0_harq->Qm + llr_offset_symbol; + llr_offset_symbol = pdsch_vars[eNB_id]->llr_offset[symbol-1]; + //pllr_symbol_cw0_deint = (int8_t*)pdsch_vars[eNB_id]->llr[0]; + //pllr_symbol_cw1_deint = (int8_t*)pdsch_vars[eNB_id]->llr[1]; + pllr_symbol_layer0 = pdsch_vars[eNB_id]->layer_llr[0]; + pllr_symbol_layer1 = pdsch_vars[eNB_id]->layer_llr[1]; + pllr_symbol_layer0 += llr_offset_symbol; + pllr_symbol_layer1 += llr_offset_symbol; + pllr_symbol_cw0 = pdsch_vars[eNB_id]->llr[0]; + pllr_symbol_cw1 = pdsch_vars[eNB_id]->llr[1]; + pllr_symbol_cw0 += llr_offset_symbol; + pllr_symbol_cw1 += llr_offset_symbol; + + pdsch_vars[eNB_id]->llr_offset[symbol] = len*dlsch0_harq->Qm + llr_offset_symbol; /*LOG_I(PHY,"compute LLRs [symbol %d] NbRB %d Qm %d LLRs-Length %d LLR-Offset %d @LLR Buff %x @LLR Buff(symb) %x\n", symbol, @@ -689,13 +707,13 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue, case 2 : if ((rx_type==rx_standard) || (codeword_TB1 == -1)) { nr_dlsch_qpsk_llr(frame_parms, - pdsch_vars[eNB_id]->rxdataF_comp0, - pllr_symbol_cw0, - symbol, - len, - first_symbol_flag, - nb_rb, - beamforming_mode); + pdsch_vars[eNB_id]->rxdataF_comp0, + pllr_symbol_cw0, + symbol, + len, + first_symbol_flag, + nb_rb, + beamforming_mode); } else if (codeword_TB0 == -1){ @@ -964,46 +982,47 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue, return(-1); break; } + if (dlsch1_harq) { - switch (nr_get_Qm_dl(dlsch1_harq->mcs,dlsch1_harq->mcs_table)) { - case 2 : - if (rx_type==rx_standard) { - nr_dlsch_qpsk_llr(frame_parms, - pdsch_vars[eNB_id]->rxdataF_comp0, - pllr_symbol_cw0, - symbol,len,first_symbol_flag,nb_rb, - beamforming_mode); + switch (nr_get_Qm_dl(dlsch1_harq->mcs,dlsch1_harq->mcs_table)) { + case 2 : + if (rx_type==rx_standard) { + nr_dlsch_qpsk_llr(frame_parms, + pdsch_vars[eNB_id]->rxdataF_comp0, + pllr_symbol_cw0, + symbol,len,first_symbol_flag,nb_rb, + beamforming_mode); + } + break; + case 4: + if (rx_type==rx_standard) { + nr_dlsch_16qam_llr(frame_parms, + pdsch_vars[eNB_id]->rxdataF_comp0, + pdsch_vars[eNB_id]->llr[0], + pdsch_vars[eNB_id]->dl_ch_mag0, + symbol,len,first_symbol_flag,nb_rb, + pdsch_vars[eNB_id]->llr128, + beamforming_mode); + } + break; + case 6 : + if (rx_type==rx_standard) { + nr_dlsch_64qam_llr(frame_parms, + pdsch_vars[eNB_id]->rxdataF_comp0, + pllr_symbol_cw0, + pdsch_vars[eNB_id]->dl_ch_mag0, + pdsch_vars[eNB_id]->dl_ch_magb0, + symbol,len,first_symbol_flag,nb_rb, + pdsch_vars[eNB_id]->llr_offset[symbol], + beamforming_mode); + } + break; + default: + LOG_W(PHY,"rx_dlsch.c : Unknown mod_order!!!!\n"); + return(-1); + break; } - break; - case 4: - if (rx_type==rx_standard) { - nr_dlsch_16qam_llr(frame_parms, - pdsch_vars[eNB_id]->rxdataF_comp0, - pdsch_vars[eNB_id]->llr[0], - pdsch_vars[eNB_id]->dl_ch_mag0, - symbol,len,first_symbol_flag,nb_rb, - pdsch_vars[eNB_id]->llr128, - beamforming_mode); - } - break; - case 6 : - if (rx_type==rx_standard) { - nr_dlsch_64qam_llr(frame_parms, - pdsch_vars[eNB_id]->rxdataF_comp0, - pllr_symbol_cw0, - pdsch_vars[eNB_id]->dl_ch_mag0, - pdsch_vars[eNB_id]->dl_ch_magb0, - symbol,len,first_symbol_flag,nb_rb, - pdsch_vars[eNB_id]->llr_offset[symbol], - beamforming_mode); - } - break; - default: - LOG_W(PHY,"rx_dlsch.c : Unknown mod_order!!!!\n"); - return(-1); - break; - } - } + } //nr_dlsch_deinterleaving(symbol,bundle_L,(int16_t*)pllr_symbol_cw0,(int16_t*)pllr_symbol_cw0_deint, nb_rb_pdsch); @@ -1132,7 +1151,7 @@ void nr_dlsch_channel_compensation(int **rxdataF_ext, int **rho, NR_DL_FRAME_PARMS *frame_parms, unsigned char symbol, - uint8_t pilots, + uint8_t pilots, uint8_t first_symbol_flag, unsigned char mod_order, unsigned short nb_rb, @@ -2368,7 +2387,7 @@ unsigned short nr_dlsch_extract_rbs_single(int **rxdataF, for (aarx=0; aarxnb_antennas_rx; aarx++) { - k = frame_parms->first_carrier_offset + 12*start_rb; + k = frame_parms->first_carrier_offset + NR_NB_SC_PER_RB*start_rb; if (high_speed_flag == 1) dl_ch0 = &dl_ch_estimates[aarx][(2*(frame_parms->ofdm_symbol_size))]; diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_llr_computation.c b/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_llr_computation.c index ce1c0df156..e0b24a033a 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_llr_computation.c +++ b/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_llr_computation.c @@ -786,16 +786,16 @@ void nr_dlsch_16qam_llr(NR_DL_FRAME_PARMS *frame_parms, //---------------------------------------------------------------------------------------------- void nr_dlsch_64qam_llr(NR_DL_FRAME_PARMS *frame_parms, - int32_t **rxdataF_comp, - int16_t *dlsch_llr, - int32_t **dl_ch_mag, - int32_t **dl_ch_magb, - uint8_t symbol, - uint32_t len, - uint8_t first_symbol_flag, - uint16_t nb_rb, - uint32_t llr_offset, - uint8_t beamforming_mode) + int32_t **rxdataF_comp, + int16_t *dlsch_llr, + int32_t **dl_ch_mag, + int32_t **dl_ch_magb, + uint8_t symbol, + uint32_t len, + uint8_t first_symbol_flag, + uint16_t nb_rb, + uint32_t llr_offset, + uint8_t beamforming_mode) { #if defined(__x86_64__) || defined(__i386__) __m128i *rxF = (__m128i*)&rxdataF_comp[0][(symbol*nb_rb*12)]; diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c b/openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c index 61748a8e56..5c480d6646 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c +++ b/openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c @@ -38,6 +38,7 @@ #include "PHY/NR_UE_ESTIMATION/nr_estimation.h" //#include "SCHED/defs.h" //#include "SCHED/extern.h" +#include "common/utils/LOG/vcd_signal_dumper.h" #include "common_lib.h" #include @@ -135,7 +136,7 @@ int nr_pbch_detection(UE_nr_rxtx_proc_t * proc, PHY_VARS_NR_UE *ue, int pbch_ini stop_meas(&ue->dlsch_channel_estimation_stats); #endif - current_ssb->metric = current_ssb->c_re*current_ssb->c_re + current_ssb->c_im+current_ssb->c_re; + current_ssb->metric = current_ssb->c_re*current_ssb->c_re + current_ssb->c_im*current_ssb->c_im; // generate a list of SSB structures if (best_ssb == NULL) @@ -213,6 +214,9 @@ int nr_initial_sync(UE_nr_rxtx_proc_t *proc, PHY_VARS_NR_UE *ue, runmode_t mode, NR_DL_FRAME_PARMS *fp = &ue->frame_parms; int ret=-1; int rx_power=0; //aarx, + + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_NR_INITIAL_UE_SYNC, VCD_FUNCTION_IN); + LOG_D(PHY,"nr_initial sync ue RB_DL %d\n", fp->N_RB_DL); @@ -477,6 +481,7 @@ int nr_initial_sync(UE_nr_rxtx_proc_t *proc, PHY_VARS_NR_UE *ue, runmode_t mode, } // exit_fun("debug exit"); + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_NR_INITIAL_UE_SYNC, VCD_FUNCTION_OUT); return ret; } diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c b/openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c index 60306d8e53..612dc6283d 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c +++ b/openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c @@ -505,7 +505,7 @@ int nr_rx_pbch( PHY_VARS_NR_UE *ue, return(-1); } */ - if (symbol==1) { + if (symbol==2) { nr_pbch_quantize(pbch_e_rx, (short *)&(nr_ue_pbch_vars->rxdataF_comp[0][symbol*240]), 144); diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_prach.c b/openair1/PHY/NR_UE_TRANSPORT/nr_prach.c index 013b5ca4a6..29841c3186 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/nr_prach.c +++ b/openair1/PHY/NR_UE_TRANSPORT/nr_prach.c @@ -19,13 +19,13 @@ * contact@openairinterface.org */ -/*! \file PHY/LTE_TRANSPORT/prach_common.c - * \brief Common routines for UE/eNB PRACH physical channel V8.6 2009-03 - * \author R. Knopp - * \date 2011 - * \version 0.1 - * \company Eurecom - * \email: knopp@eurecom.fr +/*! \file PHY/NR_TRANSPORT/nr_prach.c + * \brief Routines for UE PRACH physical channel + * \author R. Knopp, G. Casati + * \date 2019 + * \version 0.2 + * \company Eurecom, Fraunhofer IIS + * \email: knopp@eurecom.fr, guido.casati@iis.fraunhofer.de * \note * \warning */ @@ -35,102 +35,75 @@ #include "PHY/impl_defs_nr.h" #include "PHY/defs_nr_UE.h" #include "PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h" +#include "PHY/NR_TRANSPORT/nr_transport_common_proto.h" #include "common/utils/LOG/log.h" #include "common/utils/LOG/vcd_signal_dumper.h" -#include #include "T.h" -#include +//#define NR_PRACH_DEBUG 1 - - -extern uint16_t NCS_unrestricted_delta_f_RA_125[16]; -extern uint16_t NCS_restricted_TypeA_delta_f_RA_125[15]; -extern uint16_t NCS_restricted_TypeB_delta_f_RA_125[13]; -extern uint16_t NCS_unrestricted_delta_f_RA_5[16]; -extern uint16_t NCS_restricted_TypeA_delta_f_RA_5[16]; -extern uint16_t NCS_restricted_TypeB_delta_f_RA_5[14]; -extern uint16_t NCS_unrestricted_delta_f_RA_15[16]; extern uint16_t prach_root_sequence_map_0_3[838]; extern uint16_t prach_root_sequence_map_abc[138]; -extern int64_t table_6_3_3_2_2_prachConfig_Index [256][9]; -extern int64_t table_6_3_3_2_3_prachConfig_Index [256][9]; -extern int64_t table_6_3_3_2_4_prachConfig_Index [256][10]; extern uint16_t nr_du[838]; extern int16_t nr_ru[2*839]; +extern const char *prachfmt[9]; +extern const char *prachfmt03[4]; +// Note: +// - prach_fmt_id is an ID used to map to the corresponding PRACH format value in prachfmt +// WIP todo: +// - take prach start symbol into account +// - idft for short sequence assumes we are transmitting starting in symbol 0 of a PRACH slot +// - Assumes that PRACH SCS is same as PUSCH SCS @ 30 kHz, take values for formats 0-2 and adjust for others below +// - Preamble index different from 0 is not detected by gNB +int32_t generate_nr_prach(PHY_VARS_NR_UE *ue, uint8_t gNB_id, uint8_t slot){ - - - - - - -int32_t generate_nr_prach( PHY_VARS_NR_UE *ue, uint8_t eNB_id, uint8_t subframe, uint16_t Nf ) -{ - - //lte_frame_type_t frame_type = ue->frame_parms.frame_type; - //uint8_t tdd_config = ue->frame_parms.tdd_config; NR_DL_FRAME_PARMS *fp=&ue->frame_parms; - uint16_t rootSequenceIndex = fp->prach_config_common.rootSequenceIndex; - uint8_t prach_ConfigIndex = fp->prach_config_common.prach_ConfigInfo.prach_ConfigIndex; - uint8_t Ncs_config = fp->prach_config_common.prach_ConfigInfo.zeroCorrelationZoneConfig; - uint8_t restricted_set = fp->prach_config_common.prach_ConfigInfo.highSpeedFlag; - uint8_t preamble_index = ue->prach_resources[eNB_id]->ra_PreambleIndex; - //uint8_t tdd_mapindex = ue->prach_resources[eNB_id]->ra_TDD_map_index; - int16_t *prachF = ue->prach_vars[eNB_id]->prachF; + fapi_nr_config_request_t *nrUE_config = &ue->nrUE_config; + NR_PRACH_RESOURCES_t *prach_resources = ue->prach_resources[gNB_id]; + fapi_nr_ul_config_prach_pdu *prach_pdu = &ue->prach_vars[gNB_id]->prach_pdu; + + uint8_t Mod_id, fd_occasion, preamble_index, restricted_set, not_found; + uint16_t rootSequenceIndex, prach_fmt_id, NCS, *prach_root_sequence_map, preamble_offset = 0; + uint16_t preamble_shift = 0, preamble_index0, n_shift_ra, n_shift_ra_bar, d_start, numshift, N_ZC, u, offset, offset2, first_nonzero_root_idx; int16_t prach_tmp[98304*2*4] __attribute__((aligned(32))); - int16_t *prach = prach_tmp; - int16_t *prach2; - int16_t amp = ue->prach_vars[eNB_id]->amp; - int16_t Ncp; - uint16_t NCS=0; - uint16_t *prach_root_sequence_map; - uint16_t preamble_offset,preamble_shift; - uint16_t preamble_index0,n_shift_ra,n_shift_ra_bar; - uint16_t d_start=-1,numshift; - uint16_t prach_fmt = get_nr_prach_fmt(prach_ConfigIndex,fp->frame_type,fp->freq_range); - //uint8_t Nsp=2; - //uint8_t f_ra,t1_ra; - uint16_t N_ZC = (prach_fmt<4)?839:139; - uint8_t not_found; - int16_t *Xu; - uint16_t u; - int32_t Xu_re,Xu_im; - uint16_t offset,offset2; - int prach_start; - int i, prach_len=0; - uint16_t first_nonzero_root_idx=0; + int16_t Ncp = 0, amp, *prach, *prach2, *prachF, *Xu; + int32_t Xu_re, Xu_im; + int prach_start, prach_sequence_length, i, prach_len, dftlen, mu, kbar, K, n_ra_prb, k; + //int restricted_Type; -#if defined(OAI_USRP) - prach_start = (ue->rx_offset+subframe*fp->samples_per_subframe-ue->hw_timing_advance-ue->N_TA_offset); -#ifdef NR_PRACH_DEBUG - LOG_I(PHY,"[UE %d] prach_start %d, rx_offset %d, hw_timing_advance %d, N_TA_offset %d\n", ue->Mod_id, - prach_start, - ue->rx_offset, - ue->hw_timing_advance, - ue->N_TA_offset); -#endif + prach = prach_tmp; + prachF = ue->prach_vars[gNB_id]->prachF; + amp = ue->prach_vars[gNB_id]->amp; + Mod_id = ue->Mod_id; + prach_sequence_length = nrUE_config->prach_config.prach_sequence_length; + N_ZC = (prach_sequence_length == 0) ? 839:139; + mu = nrUE_config->prach_config.prach_sub_c_spacing; + restricted_set = prach_pdu->restricted_set; + rootSequenceIndex = prach_pdu->root_seq_id; + n_ra_prb = prach_pdu->freq_msg1; + NCS = prach_pdu->num_cs; + prach_fmt_id = prach_pdu->prach_format; + preamble_index = prach_resources->ra_PreambleIndex; + fd_occasion = 0; + prach_len = 0; + dftlen = 0; + first_nonzero_root_idx = 0; + kbar = 1; + K = 24; + k = 12*n_ra_prb - 6*fp->N_RB_UL; + //prachStartSymbol = prach_config_pdu->prach_start_symbol + //restricted_Type = 0; - if (prach_start<0) - prach_start+=(fp->samples_per_subframe*LTE_NUMBER_OF_SUBFRAMES_PER_FRAME); - - if (prach_start>=(fp->samples_per_subframe*LTE_NUMBER_OF_SUBFRAMES_PER_FRAME)) - prach_start-=(fp->samples_per_subframe*LTE_NUMBER_OF_SUBFRAMES_PER_FRAME); - -#else //normal case (simulation) - prach_start = subframe*fp->samples_per_subframe-ue->N_TA_offset; - LOG_D(PHY,"[UE %d] prach_start %d, rx_offset %d, hw_timing_advance %d, N_TA_offset %d\n", ue->Mod_id, - prach_start, - ue->rx_offset, - ue->hw_timing_advance, - ue->N_TA_offset); - -#endif + compute_nr_prach_seq(nrUE_config->prach_config.prach_sequence_length, + nrUE_config->prach_config.num_prach_fd_occasions_list[fd_occasion].num_root_sequences, + nrUE_config->prach_config.num_prach_fd_occasions_list[fd_occasion].prach_root_sequence_index, + ue->X_u); + prach_start = fp->get_samples_slot_timestamp(slot, fp, 0); // First compute physical root sequence /************************************************************************ @@ -140,41 +113,19 @@ int32_t generate_nr_prach( PHY_VARS_NR_UE *ue, uint8_t eNB_id, uint8_t subframe, * NOTE: Restricted set type B is not implemented *************************************************************************/ - int restricted_Type = 0; //this is hardcoded ('0' for restricted_TypeA; and '1' for restricted_TypeB). FIXME - if (prach_fmt<3){ - if (restricted_set == 0) { - NCS = NCS_unrestricted_delta_f_RA_125[Ncs_config]; - } else { - if (restricted_Type == 0) NCS = NCS_restricted_TypeA_delta_f_RA_125[Ncs_config]; // for TypeA, this is hardcoded. FIXME - if (restricted_Type == 1) NCS = NCS_restricted_TypeB_delta_f_RA_125[Ncs_config]; // for TypeB, this is hardcoded. FIXME - } - } - if (prach_fmt==3){ - if (restricted_set == 0) { - NCS = NCS_unrestricted_delta_f_RA_5[Ncs_config]; - } else { - if (restricted_Type == 0) NCS = NCS_restricted_TypeA_delta_f_RA_5[Ncs_config]; // for TypeA, this is hardcoded. FIXME - if (restricted_Type == 1) NCS = NCS_restricted_TypeB_delta_f_RA_5[Ncs_config]; // for TypeB, this is hardcoded. FIXME - } - } - if (prach_fmt>3){ - NCS = NCS_unrestricted_delta_f_RA_15[Ncs_config]; - } - - prach_root_sequence_map = (prach_fmt<4) ? prach_root_sequence_map_0_3 : prach_root_sequence_map_abc; - - // This is the relative offset (for unrestricted case) in the root sequence table (5.7.2-4 from 36.211) for the given preamble index - preamble_offset = ((NCS==0)? preamble_index : (preamble_index/(N_ZC/NCS))); + prach_root_sequence_map = (prach_sequence_length == 0) ? prach_root_sequence_map_0_3 : prach_root_sequence_map_abc; if (restricted_set == 0) { + // This is the relative offset (for unrestricted case) in the root sequence table (5.7.2-4 from 36.211) for the given preamble index + preamble_offset = ((NCS==0)? preamble_index : (preamble_index/(N_ZC/NCS))); // This is the \nu corresponding to the preamble index preamble_shift = (NCS==0)? 0 : (preamble_index % (N_ZC/NCS)); preamble_shift *= NCS; } else { // This is the high-speed case -#ifdef NR_PRACH_DEBUG - LOG_I(PHY,"[UE %d] High-speed mode, NCS_config %d\n",ue->Mod_id,Ncs_config); -#endif + #ifdef NR_PRACH_DEBUG + LOG_I(PHY, "PRACH [UE %d] High-speed mode, NCS %d\n", Mod_id, NCS); + #endif not_found = 1; preamble_index0 = preamble_index; @@ -185,8 +136,9 @@ int32_t generate_nr_prach( PHY_VARS_NR_UE *ue, uint8_t eNB_id, uint8_t subframe, while (not_found == 1) { // current root depending on rootSequenceIndex and preamble_offset int index = (rootSequenceIndex + preamble_offset) % N_ZC; + uint16_t n_group_ra = 0; - if (prach_fmt<4) { + if (prach_fmt_id<4) { // prach_root_sequence_map points to prach_root_sequence_map0_3 DevAssert( index < sizeof(prach_root_sequence_map_0_3) / sizeof(prach_root_sequence_map_0_3[0]) ); } else { @@ -196,8 +148,6 @@ int32_t generate_nr_prach( PHY_VARS_NR_UE *ue, uint8_t eNB_id, uint8_t subframe, u = prach_root_sequence_map[index]; - uint16_t n_group_ra = 0; - if ( (nr_du[u]<(N_ZC/3)) && (nr_du[u]>=NCS) ) { n_shift_ra = nr_du[u]/NCS; d_start = (nr_du[u]<<1) + (n_shift_ra * NCS); @@ -231,43 +181,52 @@ int32_t generate_nr_prach( PHY_VARS_NR_UE *ue, uint8_t eNB_id, uint8_t subframe, } // now generate PRACH signal -#ifdef NR_PRACH_DEBUG - - if (NCS>0) - LOG_D(PHY,"Generate PRACH for RootSeqIndex %d, Preamble Index %d, PRACH Format %x, prach_ConfigIndex %d, NCS %d (NCS_config %d, N_ZC/NCS %d): Preamble_offset %d, Preamble_shift %d\n", - rootSequenceIndex,preamble_index,prach_fmt,prach_ConfigIndex,NCS,Ncs_config,N_ZC/NCS, - preamble_offset,preamble_shift); - -#endif + #ifdef NR_PRACH_DEBUG + if (NCS>0) + LOG_I(PHY, "PRACH [UE %d] generate PRACH in slot %d for RootSeqIndex %d, Preamble Index %d, PRACH Format %s, NCS %d (N_ZC %d): Preamble_offset %d, Preamble_shift %d msg1 frequency start %d\n", + Mod_id, + slot, + rootSequenceIndex, + preamble_index, + prach_sequence_length == 0 ? prachfmt03[prach_fmt_id] : prachfmt[prach_fmt_id], + NCS, + N_ZC, + preamble_offset, + preamble_shift, + n_ra_prb); + #endif // nsymb = (frame_parms->Ncp==0) ? 14:12; - // subframe_offset = (unsigned int)frame_parms->ofdm_symbol_size*subframe*nsymb; - int kbar = 1; - int K = 24; - if (prach_fmt == 3) { - K=4; - kbar=10; + // subframe_offset = (unsigned int)frame_parms->ofdm_symbol_size*slot*nsymb; + + if (prach_sequence_length == 0 && prach_fmt_id == 3) { + K = 4; + kbar = 10; + } else if (prach_sequence_length == 1) { + K = 1; + kbar = 2; } - else if (prach_fmt > 3) { - // Note: Assumes that PRACH SCS is same as PUSCH SCS - K=1; - kbar=2; - } - int n_ra_prb = fp->prach_config_common.prach_ConfigInfo.msg1_frequencystart; - int k = (12*n_ra_prb) - 6*fp->N_RB_UL; - k = (12*n_ra_prb) - 6*fp->N_RB_UL; + if (k<0) + k += fp->ofdm_symbol_size; - if (k<0) k+=fp->ofdm_symbol_size; + k *= K; + k += kbar; + k *= 2; - k*=K; - k+=kbar; - - LOG_D(PHY,"placing prach in position %d\n",k); - k*=2; + LOG_I(PHY, "PRACH [UE %d] in slot %d, placing PRACH in position %d, msg1 frequency start %d, preamble_offset %d, first_nonzero_root_idx %d\n", Mod_id, + slot, + k, + n_ra_prb, + preamble_offset, + first_nonzero_root_idx); Xu = (int16_t*)ue->X_u[preamble_offset-first_nonzero_root_idx]; + #if defined (PRACH_WRITE_OUTPUT_DEBUG) + LOG_M("X_u.m", "X_u", (int16_t*)ue->X_u[preamble_offset-first_nonzero_root_idx], N_ZC, 1, 1); + #endif + /******************************************************** * * In function init_prach_tables: @@ -282,10 +241,86 @@ int32_t generate_nr_prach( PHY_VARS_NR_UE *ue, uint8_t eNB_id, uint8_t subframe, * *********************************************************/ - AssertFatal(prach_fmt>3,"prach_fmt<=3: Fix this for other formats\n"); - int dftlen=2048; - if (fp->N_RB_UL >= 137) dftlen=4096; - if (fp->threequarter_fs==1) dftlen=(3*dftlen)/4; + if (fp->N_RB_UL <= 100) + AssertFatal(1 == 0, "N_RB_UL %d not support for NR PRACH yet\n", fp->N_RB_UL); + else if (fp->N_RB_UL < 137) { + if (fp->threequarter_fs == 0) { + //40 MHz @ 61.44 Ms/s + //50 MHz @ 61.44 Ms/s + if (prach_sequence_length == 0) { + if (prach_fmt_id == 0 || prach_fmt_id == 1 || prach_fmt_id == 2) + dftlen = 49152; + if (prach_fmt_id == 3) + dftlen = 12288; + } // 839 sequence + else { + switch (mu){ + case 1: + dftlen = 2048; + break; + default: + AssertFatal(1 == 0, "Shouldn't get here\n"); + break; + } + } + } else { // threequarter sampling + // 40 MHz @ 46.08 Ms/s + if (prach_sequence_length == 0) { + AssertFatal(fp->N_RB_UL <= 107, "cannot do 108..136 PRBs with 3/4 sampling\n"); + if (prach_fmt_id == 0 || prach_fmt_id == 1 || prach_fmt_id == 2) + dftlen = 36864; + if (prach_fmt_id == 3) + dftlen = 9216; + } else { + switch (mu){ + case 1: + dftlen = 1536; + break; + default: + AssertFatal(1 == 0, "Shouldn't get here\n"); + break; + } + } // short format + } // 3/4 sampling + } // <=50 MHz BW + else if (fp->N_RB_UL <= 273) { + if (fp->threequarter_fs == 0) { + //80,90,100 MHz @ 122.88 Ms/s + if (prach_sequence_length == 0) { + if (prach_fmt_id == 0 || prach_fmt_id == 1 || prach_fmt_id == 2) + dftlen = 98304; + if (prach_fmt_id == 3) + dftlen = 24576; + } + } else { // threequarter sampling + switch (mu){ + case 1: + dftlen = 4096; + break; + default: + AssertFatal(1 == 0, "Shouldn't get here\n"); + break; + } + } + } else { + AssertFatal(fp->N_RB_UL <= 217, "cannot do more than 217 PRBs with 3/4 sampling\n"); + // 80 MHz @ 92.16 Ms/s + if (prach_sequence_length == 0) { + if (prach_fmt_id == 0 || prach_fmt_id == 1 || prach_fmt_id == 2) + dftlen = 73728; + if (prach_fmt_id == 3) + dftlen = 18432; + } else { + switch (mu){ + case 1: + dftlen = 3072; + break; + default: + AssertFatal(1 == 0, "Shouldn't get here\n"); + break; + } + } + } for (offset=0,offset2=0; offset>15); prachF[k++]= ((Xu_re*nr_ru[offset2<<1]) - (Xu_im*nr_ru[1+(offset2<<1)]))>>15; prachF[k++]= ((Xu_im*nr_ru[offset2<<1]) + (Xu_re*nr_ru[1+(offset2<<1)]))>>15; + if (k==dftlen) k=0; } - switch (fp->N_RB_UL) { - case 6: - memset((void*)prachF,0,4*1536); - break; + #if defined (PRACH_WRITE_OUTPUT_DEBUG) + LOG_M("prachF.m", "prachF", &prachF[1804], 1024, 1, 1); + LOG_M("Xu.m", "Xu", Xu, N_ZC, 1, 1); + #endif - case 15: - memset((void*)prachF,0,4*3072); - break; + if (prach_sequence_length == 0) { - case 25: - memset((void*)prachF,0,4*6144); - break; + AssertFatal(prach_fmt_id < 4, "Illegal PRACH format %d for sequence length 839\n", prach_fmt_id); - case 50: - memset((void*)prachF,0,4*12288); - break; + switch (prach_fmt_id) { + case 0: + Ncp = 3168; + break; + case 1: + Ncp = 21024; + break; + case 2: + Ncp = 4688; + break; + case 3: + Ncp = 3168; + break; + } - case 75: - memset((void*)prachF,0,4*18432); - break; + } else { - case 100: - if (fp->threequarter_fs == 0) - memset((void*)prachF,0,4*24576); - else - memset((void*)prachF,0,4*18432); - break; - - case 106: - memset((void*)prachF,0,4*24576); - break; -} - - int mu = 1; // numerology is hardcoded. FIXME!!! - switch (prach_fmt) { - case 0: - Ncp = 3168; - break; - - case 1: - Ncp = 2*21024; - break; - - case 2: - Ncp = 4688; - break; - - case 3: - Ncp = 3168; - break; - - case 0xa1: - Ncp = 288/(1<N_RB_UL <= 100) AssertFatal(1==0,"N_RB_UL %d not supported for NR PRACH yet\n",fp->N_RB_UL); else if (fp->N_RB_UL < 137) { // 46.08 or 61.44 Ms/s - if (fp->threequarter_fs==0) { //61.44 Ms/s + if (fp->threequarter_fs == 0) { // full sampling @ 61.44 Ms/s Ncp<<=1; // This is after cyclic prefix (Ncp<<1 samples for 30.72 Ms/s, Ncp<<2 samples for 61.44 Ms/s prach2 = prach+(Ncp<<1); - if (prach_fmt == 0) { //24576 samples @ 30.72 Ms/s, 49152 samples @ 61.44 Ms/s - idft(IDFT_49152,prachF,prach2,1); - // here we have |empty | Prach49152| - memmove(prach,prach+(49152<<1),(Ncp<<3)); - // here we have |Prefix | Prach49152| - prach_len = 49152+Ncp; - dftlen=49152; + if (prach_sequence_length == 0){ + if (prach_fmt_id == 0) { //24576 samples @ 30.72 Ms/s, 49152 samples @ 61.44 Ms/s + idft(IDFT_49152,prachF,prach2,1); + // here we have |empty | Prach49152| + memmove(prach,prach+(49152<<1),(Ncp<<2)); + // here we have |Prefix | Prach49152| + prach_len = 49152+Ncp; + } else if (prach_fmt_id == 1) { //24576 samples @ 30.72 Ms/s, 49152 samples @ 61.44 Ms/s + idft(IDFT_49152,prachF,prach2,1); + memmove(prach2+(49152<<1),prach2,(49152<<2)); + // here we have |empty | Prach49152 | Prach49152| + memmove(prach,prach+(49152<<2),(Ncp<<2)); + // here we have |Prefix | Prach49152 | Prach49152| + prach_len = (49152*2)+Ncp; + } else if (prach_fmt_id == 2) { //24576 samples @ 30.72 Ms/s, 49152 samples @ 61.44 Ms/s + idft(IDFT_49152,prachF,prach2,1); + memmove(prach2+(49152<<1),prach2,(49152<<2)); + // here we have |empty | Prach49152 | Prach49152| empty49152 | empty49152 + memmove(prach2+(49152<<2),prach2,(49152<<3)); + // here we have |empty | Prach49152 | Prach49152| Prach49152 | Prach49152 + memmove(prach,prach+(49152<<3),(Ncp<<2)); + // here we have |Prefix | Prach49152 | Prach49152| Prach49152 | Prach49152 + prach_len = (49152*4)+Ncp; + } else if (prach_fmt_id == 3) { // //6144 samples @ 30.72 Ms/s, 12288 samples @ 61.44 Ms/s + idft(IDFT_12288,prachF,prach2,1); + memmove(prach2+(12288<<1),prach2,(12288<<2)); + // here we have |empty | Prach12288 | Prach12288| empty12288 | empty12288 + memmove(prach2+(12288<<2),prach2,(12288<<3)); + // here we have |empty | Prach12288 | Prach12288| Prach12288 | Prach12288 + memmove(prach,prach+(12288<<3),(Ncp<<2)); + // here we have |Prefix | Prach12288 | Prach12288| Prach12288 | Prach12288 + prach_len = (12288*4)+Ncp; + } + } else { // short PRACH sequence + if (prach_fmt_id == 0 || prach_fmt_id == 3 || prach_fmt_id == 7) { + Ncp+=32; // This assumes we are transmitting starting in symbol 0 of a PRACH slot, 30 kHz, full sampling + prach2 = prach+(Ncp<<1); + idft(IDFT_2048,prachF,prach2,1); + // here we have |empty | Prach2048 | + if (prach_fmt_id != 7) { + memmove(prach2+(2048<<1),prach2,(2048<<2)); + prach_len = (2048*2)+Ncp; + } + else prach_len = (2048*1)+Ncp; + memmove(prach,prach+(2048<<1),(Ncp<<2)); + // here we have |Prefix | Prach2048 | Prach2048 (if ! 0xc0) | + } else if (prach_fmt_id == 1 || prach_fmt_id == 4) { // 6x2048 + Ncp+=32; // This assumes we are transmitting starting in symbol 0 of a PRACH slot, 30 kHz, full sampling + prach2 = prach+(Ncp<<1); + idft(IDFT_2048,prachF,prach2,1); + // here we have |empty | Prach2048 | + memmove(prach2+(2048<<1),prach2,(2048<<2)); + // here we have |empty | Prach2048 | Prach2048| empty2048 | empty2048 | + memmove(prach2+(2048<<2),prach2,(2048<<3)); + // here we have |empty | Prach2048 | Prach2048| Prach2048 | Prach2048 | + memmove(prach,prach+(2048<<1),(Ncp<<2)); + // here we have |Prefix | Prach2048 | + prach_len = (2048*4)+Ncp; + } else if (prach_fmt_id == 2 || prach_fmt_id == 5) { // 6x2048 + Ncp+=32; + prach2 = prach+(Ncp<<1); + idft(IDFT_2048,prachF,prach2,1); + // here we have |empty | Prach2048 | + memmove(prach2+(2048<<1),prach2,(2048<<2)); + // here we have |empty | Prach2048 | Prach2048| empty2048 | empty2048 | empty2048 | empty2048 + memmove(prach2+(2048<<2),prach2,(2048<<3)); + // here we have |empty | Prach2048 | Prach2048| Prach2048 | Prach2048 | empty2048 | empty2048 + memmove(prach2+(2048<<3),prach2,(2048<<3)); + // here we have |empty | Prach2048 | Prach2048| Prach2048 | Prach2048 | Prach2048 | Prach2048 + memmove(prach,prach+(2048<<1),(Ncp<<2)); + // here we have |Prefix | Prach2048 | + prach_len = (2048*6)+Ncp; + } else if (prach_fmt_id == 6) { // 12x2048 + Ncp+=32; // This assumes we are transmitting starting in symbol 0 of a PRACH slot, 30 kHz, full sampling + prach2 = prach+(Ncp<<1); + idft(IDFT_2048,prachF,prach2,1); + // here we have |empty | Prach2048 | + memmove(prach2+(2048<<1),prach2,(2048<<2)); + // here we have |empty | Prach2048 | Prach2048| empty2048 | empty2048 | empty2048 | empty2048 + memmove(prach2+(2048<<2),prach2,(2048<<3)); + // here we have |empty | Prach2048 | Prach2048| Prach2048 | Prach2048 | empty2048 | empty2048 + memmove(prach2+(2048<<3),prach2,(2048<<3)); + // here we have |empty | Prach2048 | Prach2048| Prach2048 | Prach2048 | Prach2048 | Prach2048 + memmove(prach2+(2048<<1)*6,prach2,(2048<<2)*6); + // here we have |empty | Prach2048 | Prach2048| Prach2048 | Prach2048 | Prach2048 | Prach2048 | Prach2048 | Prach2048| Prach2048 | Prach2048 | Prach2048 | Prach2048| + memmove(prach,prach+(2048<<1),(Ncp<<2)); + // here we have |Prefix | Prach2048 | Prach2048| Prach2048 | Prach2048 | Prach2048 | Prach2048 | Prach2048 | Prach2048| Prach2048 | Prach2048 | Prach2048 | Prach2048| + prach_len = (2048*12)+Ncp; + } } - else if (prach_fmt == 1) { //24576 samples @ 30.72 Ms/s, 49152 samples @ 61.44 Ms/s - idft(IDFT_49152,prachF,prach2,1); - memmove(prach2+(49152<<1),prach2,(49152<<2)); - // here we have |empty | Prach49152 | Prach49152| - memmove(prach,prach+(49152<<2),(Ncp<<3)); - // here we have |Prefix | Prach49152 | Prach49152| - prach_len = (49152*2)+Ncp; - dftlen=49152; - } - else if (prach_fmt == 2) { //24576 samples @ 30.72 Ms/s, 49152 samples @ 61.44 Ms/s - idft(IDFT_49152,prachF,prach2,1); - memmove(prach2+(49152<<1),prach2,(49152<<2)); - // here we have |empty | Prach49152 | Prach49152| empty49152 | empty49152 - memmove(prach2+(49152<<2),prach2,(49152<<3)); - // here we have |empty | Prach49152 | Prach49152| Prach49152 | Prach49152 - memmove(prach,prach+(49152<<3),(Ncp<<3)); - // here we have |Prefix | Prach49152 | Prach49152| Prach49152 | Prach49152 - prach_len = (49152*4)+Ncp; - dftlen=49152; - } - else if (prach_fmt == 3) { // //6144 samples @ 30.72 Ms/s, 12288 samples @ 61.44 Ms/s - idft(IDFT_12288,prachF,prach2,1); - memmove(prach2+(12288<<1),prach2,(12288<<2)); - // here we have |empty | Prach12288 | Prach12288| empty12288 | empty12288 - memmove(prach2+(12288<<2),prach2,(12288<<3)); - // here we have |empty | Prach12288 | Prach12288| Prach12288 | Prach12288 - memmove(prach,prach+(12288<<3),(Ncp<<3)); - // here we have |Prefix | Prach12288 | Prach12288| Prach12288 | Prach12288 - prach_len = (12288*4)+Ncp; - dftlen=12288; - } - else if (prach_fmt == 0xa1 || prach_fmt == 0xb1 || prach_fmt == 0xc0) { - prach2 = prach+(Ncp<<1); - idft(IDFT_2048,prachF,prach2,1); - dftlen=2048; - // here we have |empty | Prach2048 | - if (prach_fmt != 0xc0) { - memmove(prach2+(2048<<1),prach2,(2048<<2)); - prach_len = (2048*2)+Ncp; - } - else prach_len = (2048*1)+Ncp; - memmove(prach,prach+(2048<<1),(Ncp<<2)); - // here we have |Prefix | Prach2048 | Prach2048 (if ! 0xc0) | - } - else if (prach_fmt == 0xa2 || prach_fmt == 0xb2) { // 6x2048 - idft(IDFT_2048,prachF,prach2,1); - dftlen=2048; - // here we have |empty | Prach2048 | - memmove(prach2+(2048<<1),prach2,(2048<<2)); - // here we have |empty | Prach2048 | Prach2048| empty2048 | empty2048 | - memmove(prach2+(2048<<2),prach2,(2048<<3)); - // here we have |empty | Prach2048 | Prach2048| Prach2048 | Prach2048 | - memmove(prach,prach+(2048<<1),(Ncp<<2)); - // here we have |Prefix | Prach2048 | - prach_len = (2048*4)+Ncp; - } - else if (prach_fmt == 0xa3 || prach_fmt == 0xb3) { // 6x2048 - prach2 = prach+(Ncp<<1); - idft(IDFT_2048,prachF,prach2,1); - dftlen=2048; - // here we have |empty | Prach2048 | - memmove(prach2+(2048<<1),prach2,(2048<<2)); - // here we have |empty | Prach2048 | Prach2048| empty2048 | empty2048 | empty2048 | empty2048 - memmove(prach2+(2048<<2),prach2,(2048<<3)); - // here we have |empty | Prach2048 | Prach2048| Prach2048 | Prach2048 | empty2048 | empty2048 - memmove(prach2+((2048<<1)*3),prach2,(2048<<3)); - // here we have |empty | Prach2048 | Prach2048| Prach2048 | Prach2048 | Prach2048 | Prach2048 - memmove(prach,prach+(2048<<1),(Ncp<<2)); - // here we have |Prefix | Prach2048 | - prach_len = (2048*6)+Ncp; - } - else if (prach_fmt == 0xb4) { // 12x2048 - idft(IDFT_2048,prachF,prach2,1); - dftlen=2048; - // here we have |empty | Prach2048 | - memmove(prach2+(2048<<1),prach2,(2048<<2)); - // here we have |empty | Prach2048 | Prach2048| empty2048 | empty2048 | empty2048 | empty2048 - memmove(prach2+(2048<<2),prach2,(2048<<3)); - // here we have |empty | Prach2048 | Prach2048| Prach2048 | Prach2048 | empty2048 | empty2048 - memmove(prach2+(2048<<3),prach2,(2048<<3)); - // here we have |empty | Prach2048 | Prach2048| Prach2048 | Prach2048 | Prach2048 | Prach2048 - memmove(prach2+(2048<<1)*6,prach2,(2048<<2)*6); - // here we have |empty | Prach2048 | Prach2048| Prach2048 | Prach2048 | Prach2048 | Prach2048 | Prach2048 | Prach2048| Prach2048 | Prach2048 | Prach2048 | Prach2048| - memmove(prach,prach+(2048<<1),(Ncp<<2)); - // here we have |Prefix | Prach2048 | Prach2048| Prach2048 | Prach2048 | Prach2048 | Prach2048 | Prach2048 | Prach2048| Prach2048 | Prach2048 | Prach2048 | Prach2048| - prach_len = (2048*12)+Ncp; - } - - } - else { // 46.08 Ms/s + } else { // threequarter sampling @ 46.08 Ms/s Ncp = (Ncp*3)/2; prach2 = prach+(Ncp<<1); - if (prach_fmt == 0) { - idft(IDFT_36864,prachF,prach2,1); - dftlen=36864; - // here we have |empty | Prach73728| - memmove(prach,prach+(36864<<1),(Ncp<<2)); - // here we have |Prefix | Prach73728| - prach_len = (36864*1)+Ncp; + if (prach_sequence_length == 0){ + if (prach_fmt_id == 0) { + idft(IDFT_36864,prachF,prach2,1); + // here we have |empty | Prach73728| + memmove(prach,prach+(36864<<1),(Ncp<<2)); + // here we have |Prefix | Prach73728| + prach_len = (36864*1)+Ncp; + } else if (prach_fmt_id == 1) { + idft(IDFT_36864,prachF,prach2,1); + memmove(prach2+(36864<<1),prach2,(36864<<2)); + // here we have |empty | Prach73728 | Prach73728| + memmove(prach,prach+(36864<<2),(Ncp<<2)); + // here we have |Prefix | Prach73728 | Prach73728| + prach_len = (36864*2)+Ncp; + } else if (prach_fmt_id == 2) { + idft(IDFT_36864,prachF,prach2,1); + memmove(prach2+(36864<<1),prach2,(36864<<2)); + // here we have |empty | Prach73728 | Prach73728| empty73728 | empty73728 + memmove(prach2+(36864<<2),prach2,(36864<<3)); + // here we have |empty | Prach73728 | Prach73728| Prach73728 | Prach73728 + memmove(prach,prach+(36864<<3),(Ncp<<2)); + // here we have |Prefix | Prach73728 | Prach73728| Prach73728 | Prach73728 + prach_len = (36864*4)+Ncp; + } else if (prach_fmt_id == 3) { + idft(IDFT_9216,prachF,prach2,1); + memmove(prach2+(9216<<1),prach2,(9216<<2)); + // here we have |empty | Prach9216 | Prach9216| empty9216 | empty9216 + memmove(prach2+(9216<<2),prach2,(9216<<3)); + // here we have |empty | Prach9216 | Prach9216| Prach9216 | Prach9216 + memmove(prach,prach+(9216<<3),(Ncp<<2)); + // here we have |Prefix | Prach9216 | Prach9216| Prach9216 | Prach9216 + prach_len = (9216*4)+Ncp; + } + } else { // short sequence + if (prach_fmt_id == 0 || prach_fmt_id == 3 || prach_fmt_id == 7) { + Ncp+=24; // This assumes we are transmitting starting in symbol 0 of a PRACH slot, 30 kHz, full sampling + prach2 = prach+(Ncp<<1); + idft(IDFT_1536,prachF,prach2,1); + // here we have |empty | Prach1536 | + if (prach_fmt_id != 7) { + memmove(prach2+(1536<<1),prach2,(1536<<2)); + prach_len = (1536*2)+Ncp; + } else prach_len = (1536*1)+Ncp; + + memmove(prach,prach+(1536<<1),(Ncp<<2)); + // here we have |Prefix | Prach1536 | Prach1536 (if ! 0xc0) | + + } else if (prach_fmt_id == 1 || prach_fmt_id == 4) { // 6x1536 + + Ncp+=24; // This assumes we are transmitting starting in symbol 0 of a PRACH slot, 30 kHz, full sampling + prach2 = prach+(Ncp<<1); + idft(IDFT_1536,prachF,prach2,1); + // here we have |empty | Prach1536 | + memmove(prach2+(1536<<1),prach2,(1536<<2)); + // here we have |empty | Prach1536 | Prach1536| empty1536 | empty1536 | + memmove(prach2+(1536<<2),prach2,(1536<<3)); + // here we have |empty | Prach1536 | Prach1536| Prach1536 | Prach1536 | + memmove(prach,prach+(1536<<1),(Ncp<<2)); + // here we have |Prefix | Prach1536 | + prach_len = (1536*4)+Ncp; + } else if (prach_fmt_id == 2 || prach_fmt_id == 5) { // 6x1536 + Ncp+=24; // This assumes we are transmitting starting in symbol 0 of a PRACH slot, 30 kHz, full sampling + prach2 = prach+(Ncp<<1); + idft(IDFT_1536,prachF,prach2,1); + // here we have |empty | Prach1536 | + memmove(prach2+(1536<<1),prach2,(1536<<2)); + // here we have |empty | Prach1536 | Prach1536| empty1536 | empty1536 | empty1536 | empty1536 + memmove(prach2+(1536<<2),prach2,(1536<<3)); + // here we have |empty | Prach1536 | Prach1536| Prach1536 | Prach1536 | empty1536 | empty1536 + memmove(prach2+(1536<<3),prach2,(1536<<3)); + // here we have |empty | Prach1536 | Prach1536| Prach1536 | Prach1536 | Prach1536 | Prach1536 + memmove(prach,prach+(1536<<1),(Ncp<<2)); + // here we have |Prefix | Prach1536 | + prach_len = (1536*6)+Ncp; + } else if (prach_fmt_id == 6) { // 12x1536 + Ncp+=24; // This assumes we are transmitting starting in symbol 0 of a PRACH slot, 30 kHz, full sampling + prach2 = prach+(Ncp<<1); + idft(IDFT_1536,prachF,prach2,1); + // here we have |empty | Prach1536 | + memmove(prach2+(1536<<1),prach2,(1536<<2)); + // here we have |empty | Prach1536 | Prach1536| empty1536 | empty1536 | empty1536 | empty1536 + memmove(prach2+(1536<<2),prach2,(1536<<3)); + // here we have |empty | Prach1536 | Prach1536| Prach1536 | Prach1536 | empty1536 | empty1536 + memmove(prach2+(1536<<3),prach2,(1536<<3)); + // here we have |empty | Prach1536 | Prach1536| Prach1536 | Prach1536 | Prach1536 | Prach1536 + memmove(prach2+(1536<<1)*6,prach2,(1536<<2)*6); + // here we have |empty | Prach1536 | Prach1536| Prach1536 | Prach1536 | Prach1536 | Prach1536 | Prach1536 | Prach1536| Prach1536 | Prach1536 | Prach1536 | Prach1536| + memmove(prach,prach+(1536<<1),(Ncp<<2)); + // here we have |Prefix | Prach1536 | Prach1536| Prach1536 | Prach1536 | Prach1536 | Prach1536 | Prach1536 | Prach1536| Prach1536 | Prach1536 | Prach1536 | Prach1536| + prach_len = (1536*12)+Ncp; + } } - else if (prach_fmt == 1) { - idft(IDFT_36864,prachF,prach2,1); - dftlen=36864; - memmove(prach2+(36864<<1),prach2,(36864<<2)); - // here we have |empty | Prach73728 | Prach73728| - memmove(prach,prach+(36864<<2),(Ncp<<2)); - // here we have |Prefix | Prach73728 | Prach73728| - prach_len = (36864*2)+Ncp; - } - if (prach_fmt == 2) { - idft(IDFT_36864,prachF,prach2,1); - dftlen=36864; - memmove(prach2+(36864<<1),prach2,(36864<<2)); - // here we have |empty | Prach73728 | Prach73728| empty73728 | empty73728 - memmove(prach2+(36864<<2),prach2,(36864<<3)); - // here we have |empty | Prach73728 | Prach73728| Prach73728 | Prach73728 - memmove(prach,prach+(36864<<3),(Ncp<<2)); - // here we have |Prefix | Prach73728 | Prach73728| Prach73728 | Prach73728 - prach_len = (36864*4)+Ncp; - } - else if (prach_fmt == 3) { - idft(IDFT_9216,prachF,prach2,1); - dftlen=36864; - memmove(prach2+(9216<<1),prach2,(9216<<2)); - // here we have |empty | Prach9216 | Prach9216| empty9216 | empty9216 - memmove(prach2+(9216<<2),prach2,(9216<<3)); - // here we have |empty | Prach9216 | Prach9216| Prach9216 | Prach9216 - memmove(prach,prach+(9216<<3),(Ncp<<2)); - // here we have |Prefix | Prach9216 | Prach9216| Prach9216 | Prach9216 - prach_len = (9216*4)+Ncp; - } - else if (prach_fmt == 0xa1 || prach_fmt == 0xb1 || prach_fmt == 0xc0) { - idft(IDFT_1536,prachF,prach2,1); - dftlen=1536; - // here we have |empty | Prach1536 | - if (prach_fmt != 0xc0) - memmove(prach2+(1536<<1),prach2,(1536<<2)); - memmove(prach,prach+(1536<<1),(Ncp<<2)); - // here we have |Prefix | Prach1536 | Prach1536 (if ! 0xc0) | - prach_len = (1536*2)+Ncp; - } - else if (prach_fmt == 0xa2 || prach_fmt == 0xb2) { // 6x1536 - idft(IDFT_1536,prachF,prach2,1); - dftlen=1536; - // here we have |empty | Prach1536 | - memmove(prach2+(1536<<1),prach2,(1536<<2)); - // here we have |empty | Prach1536 | Prach1536| empty1536 | empty1536 | - memmove(prach2+(1536<<2),prach2,(1536<<3)); - // here we have |empty | Prach1536 | Prach1536| Prach1536 | Prach1536 | - memmove(prach,prach+(1536<<1),(Ncp<<2)); - // here we have |Prefix | Prach1536 | - prach_len = (1536*4)+Ncp; - } - else if (prach_fmt == 0xa3 || prach_fmt == 0xb3) { // 6x1536 - idft(IDFT_1536,prachF,prach2,1); - dftlen=1536; - // here we have |empty | Prach1536 | - memmove(prach2+(1536<<1),prach2,(1536<<2)); - // here we have |empty | Prach1536 | Prach1536| empty1536 | empty1536 | empty1536 | empty1536 - memmove(prach2+(1536<<2),prach2,(1536<<3)); - // here we have |empty | Prach1536 | Prach1536| Prach1536 | Prach1536 | empty1536 | empty1536 - memmove(prach2+((1536<<1)*3),prach2,(1536<<3)); - // here we have |empty | Prach1536 | Prach1536| Prach1536 | Prach1536 | Prach1536 | Prach1536 - memmove(prach,prach+(1536<<1),(Ncp<<2)); - // here we have |Prefix | Prach1536 | - prach_len = (1536*6)+Ncp; - } - else if (prach_fmt == 0xb4) { // 12x1536 - idft(IDFT_1536,prachF,prach2,1); - dftlen=1536; - // here we have |empty | Prach1536 | - memmove(prach2+(1536<<1),prach2,(1536<<2)); - // here we have |empty | Prach1536 | Prach1536| empty1536 | empty1536 | empty1536 | empty1536 - memmove(prach2+(1536<<2),prach2,(1536<<3)); - // here we have |empty | Prach1536 | Prach1536| Prach1536 | Prach1536 | empty1536 | empty1536 - memmove(prach2+(1536<<3),prach2,(1536<<3)); - // here we have |empty | Prach1536 | Prach1536| Prach1536 | Prach1536 | Prach1536 | Prach1536 - memmove(prach2+(1536<<1)*6,prach2,(1536<<2)*6); - // here we have |empty | Prach1536 | Prach1536| Prach1536 | Prach1536 | Prach1536 | Prach1536 | Prach1536 | Prach1536| Prach1536 | Prach1536 | Prach1536 | Prach1536| - memmove(prach,prach+(1536<<1),(Ncp<<2)); - // here we have |Prefix | Prach1536 | Prach1536| Prach1536 | Prach1536 | Prach1536 | Prach1536 | Prach1536 | Prach1536| Prach1536 | Prach1536 | Prach1536 | Prach1536| - prach_len = (1536*12)+Ncp; - } } - } - else if (fp->N_RB_UL <= 273) {// 92.16 or 122.88 Ms/s - if (fp->threequarter_fs==0) { //122.88 Ms/s + } else if (fp->N_RB_UL <= 273) {// 92.16 or 122.88 Ms/s + if (fp->threequarter_fs == 0) { // full sampling @ 122.88 Ms/s Ncp<<=2; prach2 = prach+(Ncp<<1); - if (prach_fmt == 0) { //24576 samples @ 30.72 Ms/s, 98304 samples @ 122.88 Ms/s - idft(IDFT_98304,prachF,prach2,1); - dftlen=98304; - // here we have |empty | Prach98304| - memmove(prach,prach+(98304<<1),(Ncp<<2)); - // here we have |Prefix | Prach98304| - prach_len = (98304*1)+Ncp; + if (prach_sequence_length == 0){ + if (prach_fmt_id == 0) { //24576 samples @ 30.72 Ms/s, 98304 samples @ 122.88 Ms/s + idft(IDFT_98304,prachF,prach2,1); + // here we have |empty | Prach98304| + memmove(prach,prach+(98304<<1),(Ncp<<2)); + // here we have |Prefix | Prach98304| + prach_len = (98304*1)+Ncp; + } else if (prach_fmt_id == 1) { + idft(IDFT_98304,prachF,prach2,1); + memmove(prach2+(98304<<1),prach2,(98304<<2)); + // here we have |empty | Prach98304 | Prach98304| + memmove(prach,prach+(98304<<2),(Ncp<<2)); + // here we have |Prefix | Prach98304 | Prach98304| + prach_len = (98304*2)+Ncp; + } else if (prach_fmt_id == 2) { + idft(IDFT_98304,prachF,prach2,1); + memmove(prach2+(98304<<1),prach2,(98304<<2)); + // here we have |empty | Prach98304 | Prach98304| empty98304 | empty98304 + memmove(prach2+(98304<<2),prach2,(98304<<3)); + // here we have |empty | Prach98304 | Prach98304| Prach98304 | Prach98304 + memmove(prach,prach+(98304<<3),(Ncp<<2)); + // here we have |Prefix | Prach98304 | Prach98304| Prach98304 | Prach98304 + prach_len = (98304*4)+Ncp; + } else if (prach_fmt_id == 3) { // 4x6144, Ncp 3168 + idft(IDFT_24576,prachF,prach2,1); + memmove(prach2+(24576<<1),prach2,(24576<<2)); + // here we have |empty | Prach24576 | Prach24576| empty24576 | empty24576 + memmove(prach2+(24576<<2),prach2,(24576<<3)); + // here we have |empty | Prach24576 | Prach24576| Prach24576 | Prach24576 + memmove(prach,prach+(24576<<3),(Ncp<<2)); + // here we have |Prefix | Prach24576 | Prach24576| Prach24576 | Prach24576 + prach_len = (24576*4)+Ncp; + } + } else { // short sequence + if (prach_fmt_id == 0 || prach_fmt_id == 3 || prach_fmt_id == 7) { + Ncp+=64; // This assumes we are transmitting starting in symbol 0 of a PRACH slot, 30 kHz, full sampling + prach2 = prach+(Ncp<<1); + idft(IDFT_4096,prachF,prach2,1); + // here we have |empty | Prach4096 | + if (prach_fmt_id != 7) { + memmove(prach2+(4096<<1),prach2,(4096<<2)); + prach_len = (4096*2)+Ncp; + } else prach_len = (4096*1)+Ncp; + memmove(prach,prach+(4096<<1),(Ncp<<2)); + // here we have |Prefix | Prach4096 | Prach4096 (if ! 0xc0) | + } else if (prach_fmt_id == 1 || prach_fmt_id == 4) { // 4x4096 + Ncp+=64; // This assumes we are transmitting starting in symbol 0 of a PRACH slot, 30 kHz, full sampling + prach2 = prach+(Ncp<<1); + idft(IDFT_4096,prachF,prach2,1); + // here we have |empty | Prach4096 | + memmove(prach2+(4096<<1),prach2,(4096<<2)); + // here we have |empty | Prach4096 | Prach4096| empty4096 | empty4096 | + memmove(prach2+(4096<<2),prach2,(4096<<3)); + // here we have |empty | Prach4096 | Prach4096| Prach4096 | Prach4096 | + memmove(prach,prach+(4096<<1),(Ncp<<2)); + // here we have |Prefix | Prach4096 | + prach_len = (4096*4)+Ncp; + } else if (prach_fmt_id == 2 || prach_fmt_id == 5) { // 6x4096 + Ncp+=64; // This assumes we are transmitting starting in symbol 0 of a PRACH slot, 30 kHz, full sampling + prach2 = prach+(Ncp<<1); + idft(IDFT_4096,prachF,prach2,1); + // here we have |empty | Prach4096 | + memmove(prach2+(4096<<1),prach2,(4096<<2)); + // here we have |empty | Prach4096 | Prach4096| empty4096 | empty4096 | empty4096 | empty4096 + memmove(prach2+(4096<<2),prach2,(4096<<3)); + // here we have |empty | Prach4096 | Prach4096| Prach4096 | Prach4096 | empty4096 | empty4096 + memmove(prach2+(4096<<3),prach2,(4096<<3)); + // here we have |empty | Prach4096 | Prach4096| Prach4096 | Prach4096 | Prach4096 | Prach4096 + memmove(prach,prach+(4096<<1),(Ncp<<2)); + // here we have |Prefix | Prach4096 | + prach_len = (4096*6)+Ncp; + } else if (prach_fmt_id == 6) { // 12x4096 + Ncp+=64; // This assumes we are transmitting starting in symbol 0 of a PRACH slot, 30 kHz, full sampling + prach2 = prach+(Ncp<<1); + idft(IDFT_4096,prachF,prach2,1); + // here we have |empty | Prach4096 | + memmove(prach2+(4096<<1),prach2,(4096<<2)); + // here we have |empty | Prach4096 | Prach4096| empty4096 | empty4096 | empty4096 | empty4096 + memmove(prach2+(4096<<2),prach2,(4096<<3)); + // here we have |empty | Prach4096 | Prach4096| Prach4096 | Prach4096 | empty4096 | empty4096 + memmove(prach2+(4096<<3),prach2,(4096<<3)); + // here we have |empty | Prach4096 | Prach4096| Prach4096 | Prach4096 | Prach4096 | Prach4096 + memmove(prach2+(4096<<1)*6,prach2,(4096<<2)*6); + // here we have |empty | Prach4096 | Prach4096| Prach4096 | Prach4096 | Prach4096 | Prach4096 | Prach4096 | Prach4096| Prach4096 | Prach4096 | Prach4096 | Prach4096| + memmove(prach,prach+(4096<<1),(Ncp<<2)); + // here we have |Prefix | Prach4096 | Prach4096| Prach4096 | Prach4096 | Prach4096 | Prach4096 | Prach4096 | Prach4096| Prach4096 | Prach4096 | Prach4096 | Prach4096| + prach_len = (4096*12)+Ncp; + } } - else if (prach_fmt == 1) { - idft(IDFT_98304,prachF,prach2,1); - dftlen=98304; - memmove(prach2+(98304<<1),prach2,(98304<<2)); - // here we have |empty | Prach98304 | Prach98304| - memmove(prach,prach+(98304<<2),(Ncp<<2)); - // here we have |Prefix | Prach98304 | Prach98304| - prach_len = (98304*2)+Ncp; - } - else if (prach_fmt == 2) { - idft(IDFT_98304,prachF,prach2,1); - dftlen=98304; - memmove(prach2+(98304<<1),prach2,(98304<<2)); - // here we have |empty | Prach98304 | Prach98304| empty98304 | empty98304 - memmove(prach2+(98304<<2),prach2,(98304<<3)); - // here we have |empty | Prach98304 | Prach98304| Prach98304 | Prach98304 - memmove(prach,prach+(98304<<3),(Ncp<<2)); - // here we have |Prefix | Prach98304 | Prach98304| Prach98304 | Prach98304 - prach_len = (98304*4)+Ncp; - } - else if (prach_fmt == 3) { // 4x6144, Ncp 3168 - idft(IDFT_24576,prachF,prach2,1); - dftlen=24576; - memmove(prach2+(24576<<1),prach2,(24576<<2)); - // here we have |empty | Prach24576 | Prach24576| empty24576 | empty24576 - memmove(prach2+(24576<<2),prach2,(24576<<3)); - // here we have |empty | Prach24576 | Prach24576| Prach24576 | Prach24576 - memmove(prach,prach+(24576<<3),(Ncp<<2)); - // here we have |Prefix | Prach24576 | Prach24576| Prach24576 | Prach24576 - prach_len = (24576*4)+(Ncp<<1); - } - else if (prach_fmt == 0xa1 || prach_fmt == 0xb1 || prach_fmt == 0xc0) { - idft(IDFT_4096,prachF,prach2,1); - dftlen=4096; - // here we have |empty | Prach4096 | - if (prach_fmt != 0xc0) { - memmove(prach2+(4096<<1),prach2,(4096<<2)); - prach_len = (4096*2)+Ncp; - } - else prach_len = (4096*1)+Ncp; - memmove(prach,prach+(4096<<1),(Ncp<<2)); - // here we have |Prefix | Prach4096 | Prach4096 (if ! 0xc0) | - - } - else if (prach_fmt == 0xa2 || prach_fmt == 0xb2) { // 4x4096 - idft(IDFT_4096,prachF,prach2,1); - dftlen=4096; - // here we have |empty | Prach4096 | - memmove(prach2+(4096<<1),prach2,(4096<<2)); - // here we have |empty | Prach4096 | Prach4096| empty4096 | empty4096 | - memmove(prach2+(4096<<2),prach2,(4096<<3)); - // here we have |empty | Prach4096 | Prach4096| Prach4096 | Prach4096 | - memmove(prach,prach+(4096<<1),(Ncp<<2)); - // here we have |Prefix | Prach4096 | - prach_len = (4096*4)+Ncp; - } - else if (prach_fmt == 0xa3 || prach_fmt == 0xb3) { // 6x4096 - idft(IDFT_4096,prachF,prach2,1); - dftlen=4096; - // here we have |empty | Prach4096 | - memmove(prach2+(4096<<1),prach2,(4096<<2)); - // here we have |empty | Prach4096 | Prach4096| empty4096 | empty4096 | empty4096 | empty4096 - memmove(prach2+(4096<<2),prach2,(4096<<3)); - // here we have |empty | Prach4096 | Prach4096| Prach4096 | Prach4096 | empty4096 | empty4096 - memmove(prach2+((4096<<1)*3),prach2,(4096<<3)); - // here we have |empty | Prach4096 | Prach4096| Prach4096 | Prach4096 | Prach4096 | Prach4096 - memmove(prach,prach+(4096<<1),(Ncp<<2)); - // here we have |Prefix | Prach4096 | - prach_len = (4096*6)+Ncp; - } - else if (prach_fmt == 0xb4) { // 12x4096 - idft(IDFT_4096,prachF,prach2,1); - dftlen=4096; - // here we have |empty | Prach4096 | - memmove(prach2+(4096<<1),prach2,(4096<<2)); - // here we have |empty | Prach4096 | Prach4096| empty4096 | empty4096 | empty4096 | empty4096 - memmove(prach2+(4096<<2),prach2,(4096<<3)); - // here we have |empty | Prach4096 | Prach4096| Prach4096 | Prach4096 | empty4096 | empty4096 - memmove(prach2+(4096<<3),prach2,(4096<<3)); - // here we have |empty | Prach4096 | Prach4096| Prach4096 | Prach4096 | Prach4096 | Prach4096 - memmove(prach2+(4096<<1)*6,prach2,(4096<<2)*6); - // here we have |empty | Prach4096 | Prach4096| Prach4096 | Prach4096 | Prach4096 | Prach4096 | Prach4096 | Prach4096| Prach4096 | Prach4096 | Prach4096 | Prach4096| - memmove(prach,prach+(4096<<1),(Ncp<<2)); - // here we have |Prefix | Prach4096 | Prach4096| Prach4096 | Prach4096 | Prach4096 | Prach4096 | Prach4096 | Prach4096| Prach4096 | Prach4096 | Prach4096 | Prach4096| - prach_len = (4096*12)+Ncp; - } - } - else { // 92.16 Ms/s + } else { // three quarter sampling @ 92.16 Ms/s Ncp = (Ncp*3); prach2 = prach+(Ncp<<1); - if (prach_fmt == 0) { - idft(IDFT_73728,prachF,prach2,1); - dftlen=73728; - // here we have |empty | Prach73728| - memmove(prach,prach+(73728<<1),(Ncp<<4)); - // here we have |Prefix | Prach73728| - prach_len = (73728*1)+Ncp; - } - else if (prach_fmt == 1) { - idft(IDFT_73728,prachF,prach2,1); - dftlen=73728; - memmove(prach2+(73728<<1),prach2,(73728<<2)); - // here we have |empty | Prach73728 | Prach73728| - memmove(prach,prach+(73728<<2),(Ncp<<4)); - // here we have |Prefix | Prach73728 | Prach73728| - prach_len = (73728*2)+Ncp; - } - if (prach_fmt == 2) { - idft(IDFT_73728,prachF,prach2,1); - dftlen=73728; - memmove(prach2+(73728<<1),prach2,(73728<<2)); - // here we have |empty | Prach73728 | Prach73728| empty73728 | empty73728 - memmove(prach2+(73728<<2),prach2,(73728<<3)); - // here we have |empty | Prach73728 | Prach73728| Prach73728 | Prach73728 - memmove(prach,prach+(73728<<3),(Ncp<<4)); - // here we have |Prefix | Prach73728 | Prach73728| Prach73728 | Prach73728 - prach_len = (73728*4)+Ncp; - } - else if (prach_fmt == 3) { - idft(IDFT_18432,prachF,prach2,1); - dftlen=18432; - memmove(prach2+(18432<<1),prach2,(18432<<2)); - // here we have |empty | Prach18432 | Prach18432| empty18432 | empty18432 - memmove(prach2+(18432<<2),prach2,(18432<<3)); - // here we have |empty | Prach18432 | Prach18432| Prach18432 | Prach18432 - memmove(prach,prach+(18432<<3),(Ncp<<4)); - // here we have |Prefix | Prach18432 | Prach18432| Prach18432 | Prach18432 - prach_len = (18432*4)+Ncp; - } - else if (prach_fmt == 0xa1 || prach_fmt == 0xb1 || prach_fmt == 0xc0) { - idft(IDFT_3072,prachF,prach2,1); - dftlen=3072; - // here we have |empty | Prach3072 | - if (prach_fmt != 0xc0) { - memmove(prach2+(3072<<1),prach2,(3072<<2)); - prach_len = (3072*2)+Ncp; - } - else prach_len = (3072*1)+Ncp; - memmove(prach,prach+(3072<<1),(Ncp<<2)); - // here we have |Prefix | Prach3072 | Prach3072 (if ! 0xc0) | - } - else if (prach_fmt == 0xa3 || prach_fmt == 0xb3) { // 6x3072 - idft(IDFT_3072,prachF,prach2,1); - dftlen=3072; - // here we have |empty | Prach3072 | - memmove(prach2+(3072<<1),prach2,(3072<<2)); - // here we have |empty | Prach3072 | Prach3072| empty3072 | empty3072 | empty3072 | empty3072 - memmove(prach2+(3072<<2),prach2,(3072<<3)); - // here we have |empty | Prach3072 | Prach3072| Prach3072 | Prach3072 | empty3072 | empty3072 - memmove(prach2+((3072<<1)*3),prach2,(3072<<3)); - // here we have |empty | Prach3072 | Prach3072| Prach3072 | Prach3072 | Prach3072 | Prach3072 - memmove(prach,prach+(3072<<1),(Ncp<<2)); - // here we have |Prefix | Prach3072 | - prach_len = (3072*6)+Ncp; - } - else if (prach_fmt == 0xa2 || prach_fmt == 0xb2) { // 4x3072 - idft(IDFT_3072,prachF,prach2,1); - dftlen=3072; - // here we have |empty | Prach3072 | - memmove(prach2+(3072<<1),prach2,(3072<<2)); - // here we have |empty | Prach3072 | Prach3072| empty3072 | empty3072 | - memmove(prach2+(3072<<2),prach2,(3072<<3)); - // here we have |empty | Prach3072 | Prach3072| Prach3072 | Prach3072 | - memmove(prach,prach+(3072<<1),(Ncp<<2)); - // here we have |Prefix | Prach3072 | - prach_len = (3072*4)+Ncp; - } - else if (prach_fmt == 0xb4) { // 12x3072 - idft(IDFT_3072,prachF,prach2,1); - dftlen=3072; - // here we have |empty | Prach3072 | - memmove(prach2+(3072<<1),prach2,(3072<<2)); - // here we have |empty | Prach3072 | Prach3072| empty3072 | empty3072 | empty3072 | empty3072 - memmove(prach2+(3072<<2),prach2,(3072<<3)); - // here we have |empty | Prach3072 | Prach3072| Prach3072 | Prach3072 | empty3072 | empty3072 - memmove(prach2+(3072<<3),prach2,(3072<<3)); - // here we have |empty | Prach3072 | Prach3072| Prach3072 | Prach3072 | Prach3072 | Prach3072 - memmove(prach2+(3072<<1)*6,prach2,(3072<<2)*6); - // here we have |empty | Prach3072 | Prach3072| Prach3072 | Prach3072 | Prach3072 | Prach3072 | Prach3072 | Prach3072| Prach3072 | Prach3072 | Prach3072 | Prach3072| - memmove(prach,prach+(3072<<1),(Ncp<<2)); - // here we have |Prefix | Prach3072 | Prach3072| Prach3072 | Prach3072 | Prach3072 | Prach3072 | Prach3072 | Prach3072| Prach3072 | Prach3072 | Prach3072 | Prach3072| - prach_len = (3072*12)+Ncp; + if (prach_sequence_length == 0){ + if (prach_fmt_id == 0) { + idft(IDFT_73728,prachF,prach2,1); + // here we have |empty | Prach73728| + memmove(prach,prach+(73728<<1),(Ncp<<2)); + // here we have |Prefix | Prach73728| + prach_len = (73728*1)+Ncp; + } else if (prach_fmt_id == 1) { + idft(IDFT_73728,prachF,prach2,1); + memmove(prach2+(73728<<1),prach2,(73728<<2)); + // here we have |empty | Prach73728 | Prach73728| + memmove(prach,prach+(73728<<2),(Ncp<<2)); + // here we have |Prefix | Prach73728 | Prach73728| + prach_len = (73728*2)+Ncp; + } if (prach_fmt_id == 2) { + idft(IDFT_73728,prachF,prach2,1); + memmove(prach2+(73728<<1),prach2,(73728<<2)); + // here we have |empty | Prach73728 | Prach73728| empty73728 | empty73728 + memmove(prach2+(73728<<2),prach2,(73728<<3)); + // here we have |empty | Prach73728 | Prach73728| Prach73728 | Prach73728 + memmove(prach,prach+(73728<<3),(Ncp<<2)); + // here we have |Prefix | Prach73728 | Prach73728| Prach73728 | Prach73728 + prach_len = (73728*4)+Ncp; + } else if (prach_fmt_id == 3) { + idft(IDFT_18432,prachF,prach2,1); + memmove(prach2+(18432<<1),prach2,(18432<<2)); + // here we have |empty | Prach18432 | Prach18432| empty18432 | empty18432 + memmove(prach2+(18432<<2),prach2,(18432<<3)); + // here we have |empty | Prach18432 | Prach18432| Prach18432 | Prach18432 + memmove(prach,prach+(18432<<3),(Ncp<<2)); + // here we have |Prefix | Prach18432 | Prach18432| Prach18432 | Prach18432 + prach_len = (18432*4)+Ncp; + } + } else { // short sequence + if (prach_fmt_id == 0 || prach_fmt_id == 3 || prach_fmt_id == 7) { + Ncp+=48; // This assumes we are transmitting starting in symbol 0 of a PRACH slot, 30 kHz, full sampling + prach2 = prach+(Ncp<<1); + idft(IDFT_3072,prachF,prach2,1); + // here we have |empty | Prach3072 | + if (prach_fmt_id != 7) { + memmove(prach2+(3072<<1),prach2,(3072<<2)); + prach_len = (3072*2)+Ncp; + } else prach_len = (3072*1)+Ncp; + memmove(prach,prach+(3072<<1),(Ncp<<2)); + // here we have |Prefix | Prach3072 | Prach3072 (if ! 0xc0) | + } else if (prach_fmt_id == 2 || prach_fmt_id == 5) { // 6x3072 + Ncp+=48; // This assumes we are transmitting starting in symbol 0 of a PRACH slot, 30 kHz, full sampling + prach2 = prach+(Ncp<<1); + idft(IDFT_3072,prachF,prach2,1); + // here we have |empty | Prach3072 | + memmove(prach2+(3072<<1),prach2,(3072<<2)); + // here we have |empty | Prach3072 | Prach3072| empty3072 | empty3072 | empty3072 | empty3072 + memmove(prach2+(3072<<2),prach2,(3072<<3)); + // here we have |empty | Prach3072 | Prach3072| Prach3072 | Prach3072 | empty3072 | empty3072 + memmove(prach2+(3072<<3),prach2,(3072<<3)); + // here we have |empty | Prach3072 | Prach3072| Prach3072 | Prach3072 | Prach3072 | Prach3072 + memmove(prach,prach+(3072<<1),(Ncp<<2)); + // here we have |Prefix | Prach3072 | + prach_len = (3072*6)+Ncp; + } else if (prach_fmt_id == 1 || prach_fmt_id == 4) { // 4x3072 + Ncp+=48; // This assumes we are transmitting starting in symbol 0 of a PRACH slot, 30 kHz, full sampling + prach2 = prach+(Ncp<<1); + idft(IDFT_3072,prachF,prach2,1); + // here we have |empty | Prach3072 | + memmove(prach2+(3072<<1),prach2,(3072<<2)); + // here we have |empty | Prach3072 | Prach3072| empty3072 | empty3072 | + memmove(prach2+(3072<<2),prach2,(3072<<3)); + // here we have |empty | Prach3072 | Prach3072| Prach3072 | Prach3072 | + memmove(prach,prach+(3072<<1),(Ncp<<2)); + // here we have |Prefix | Prach3072 | + prach_len = (3072*4)+Ncp; + } else if (prach_fmt_id == 6) { // 12x3072 + Ncp+=48; // This assumes we are transmitting starting in symbol 0 of a PRACH slot, 30 kHz, full sampling + prach2 = prach+(Ncp<<1); + idft(IDFT_3072,prachF,prach2,1); + // here we have |empty | Prach3072 | + memmove(prach2+(3072<<1),prach2,(3072<<2)); + // here we have |empty | Prach3072 | Prach3072| empty3072 | empty3072 | empty3072 | empty3072 + memmove(prach2+(3072<<2),prach2,(3072<<3)); + // here we have |empty | Prach3072 | Prach3072| Prach3072 | Prach3072 | empty3072 | empty3072 + memmove(prach2+(3072<<3),prach2,(3072<<3)); + // here we have |empty | Prach3072 | Prach3072| Prach3072 | Prach3072 | Prach3072 | Prach3072 + memmove(prach2+(3072<<1)*6,prach2,(3072<<2)*6); + // here we have |empty | Prach3072 | Prach3072| Prach3072 | Prach3072 | Prach3072 | Prach3072 | Prach3072 | Prach3072| Prach3072 | Prach3072 | Prach3072 | Prach3072| + memmove(prach,prach+(3072<<1),(Ncp<<2)); + // here we have |Prefix | Prach3072 | Prach3072| Prach3072 | Prach3072 | Prach3072 | Prach3072 | Prach3072 | Prach3072| Prach3072 | Prach3072 | Prach3072 | Prach3072| + prach_len = (3072*12)+Ncp; + } } } - } - - - - -#if defined(OAI_USRP) || defined(OAI_BLADERF) || defined(OAI_LMSSDR) - int j; - int overflow = prach_start + prach_len - LTE_NUMBER_OF_SUBFRAMES_PER_FRAME*fp->samples_per_subframe; - LOG_D( PHY, "prach_start=%d, overflow=%d\n", prach_start, overflow ); - - for (i=prach_start,j=0; isamples_per_subframe*LTE_NUMBER_OF_SUBFRAMES_PER_FRAME,prach_start+prach_len); i++,j++) { - ((int16_t*)ue->common_vars.txdata[0])[2*i] = prach[2*j]; - ((int16_t*)ue->common_vars.txdata[0])[2*i+1] = prach[2*j+1]; } - for (i=0; icommon_vars.txdata[0])[2*i] = prach[2*j]; - ((int16_t*)ue->common_vars.txdata[0])[2*i+1] = prach[2*j+1]; - } -#else - - LOG_D( PHY, "prach_start=%d\n", prach_start); + #ifdef NR_PRACH_DEBUG + LOG_I(PHY, "PRACH [UE %d] N_RB_UL %d prach_start %d, prach_len %d\n", Mod_id, + fp->N_RB_UL, + prach_start, + prach_len); + #endif for (i=0; icommon_vars.txdata[0][prach_start]))[2*i] = prach[2*i]; ((int16_t*)(&ue->common_vars.txdata[0][prach_start]))[2*i+1] = prach[2*i+1]; } -#endif + //printf("----------------------\n"); + //for(int ii = prach_start; ii<2*(prach_start + prach_len); ii++){ + // printf("PRACH rx data[%d] = %d\n", ii, ue->common_vars.txdata[0][ii]); + //} + //printf(" \n"); + #ifdef PRACH_WRITE_OUTPUT_DEBUG + LOG_M("prach_tx0.m", "prachtx0", prach+(Ncp<<1), prach_len-Ncp, 1, 1); + LOG_M("Prach_txsig.m","txs",(int16_t*)(&ue->common_vars.txdata[0][prach_start]), 2*(prach_start+prach_len), 1, 1) + #endif -#if defined(PRACH_WRITE_OUTPUT_DEBUG) - LOG_M("prach_txF0.m","prachtxF0",prachF,prach_len-Ncp,1,1); - LOG_M("prach_tx0.m","prachtx0",prach+(Ncp<<1),prach_len-Ncp,1,1); - LOG_M("txsig.m","txs",(int16_t*)(&ue->common_vars.txdata[0][prach_start]),fp->samples_per_subframe,1,1); - exit(-1); -#endif - - return signal_energy( (int*)prach, 256 ); + return signal_energy((int*)prach, 256); } diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h b/openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h index 4aae9ef7b4..845eace8b6 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h +++ b/openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h @@ -37,6 +37,9 @@ #include #include "nfapi_interface.h" +#define NR_PUSCH_x 2 // UCI placeholder bit TS 38.212 V15.4.0 subclause 5.3.3.1 +#define NR_PUSCH_y 3 // UCI placeholder bit + // Functions below implement 36-211 and 36-212 /** @addtogroup _PHY_TRANSPORT_ @@ -66,24 +69,6 @@ void free_nr_ue_ulsch(NR_UE_ULSCH_t **ulsch,unsigned char N_RB_UL); NR_UE_ULSCH_t *new_nr_ue_ulsch(uint16_t N_RB_UL, int number_of_harq_pids, uint8_t abstraction_flag); -void fill_UE_dlsch_MCH(PHY_VARS_NR_UE *ue,int mcs,int ndi,int rvidx,int eNB_id); - -int rx_pmch(PHY_VARS_NR_UE *phy_vars_ue, - unsigned char eNB_id, - uint8_t subframe, - unsigned char symbol); - -/** \brief Dump OCTAVE/MATLAB files for PMCH debugging - @param phy_vars_ue Pointer to UE variables - @param eNB_id index of eNB in ue variables - @param coded_bits_per_codeword G from 36.211 - @param subframe Index of subframe - @returns 0 on success -*/ -void dump_mch(PHY_VARS_NR_UE *phy_vars_ue,uint8_t eNB_id,uint16_t coded_bits_per_codeword,int subframe); - - - /** \brief This function computes the LLRs for ML (max-logsum approximation) dual-stream QPSK/QPSK reception. @param stream0_in Input from channel compensated (MR combined) stream 0 @param stream1_in Input from channel compensated (MR combined) stream 1 @@ -1079,7 +1064,7 @@ void nr_pusch_codeword_scrambling(uint8_t *in, void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE, unsigned char harq_pid, - uint8_t frame, + uint32_t frame, uint8_t slot, uint8_t thread_id, int gNB_id); @@ -1089,11 +1074,9 @@ void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE, */ uint8_t nr_ue_pusch_common_procedures(PHY_VARS_NR_UE *UE, - uint8_t harq_pid, uint8_t slot, - uint8_t thread_id, - uint8_t gNB_id, - NR_DL_FRAME_PARMS *frame_parms); + NR_DL_FRAME_PARMS *frame_parms, + uint8_t Nl); @@ -1402,8 +1385,10 @@ void ulsch_modulation(int32_t **txdataF, NR_UE_ULSCH_t *ulsch); - - +uint8_t allowed_ulsch_re_in_dmrs_symbol(uint16_t k, + uint16_t start_sc, + uint8_t numDmrsCdmGrpsNoData, + uint8_t dmrs_type); int generate_ue_dlsch_params_from_dci(int frame, @@ -1540,11 +1525,11 @@ uint8_t get_num_pdcch_symbols(uint8_t num_dci,DCI_ALLOC_t *dci_alloc,NR_DL_FRAME void pdcch_interleaving(NR_DL_FRAME_PARMS *frame_parms,int32_t **z, int32_t **wbar,uint8_t n_symbols_pdcch,uint8_t mi); -void nr_pdcch_unscrambling(uint16_t crnti, NR_DL_FRAME_PARMS *frame_parms, uint8_t slot, - int16_t *z, int16_t *z2,uint32_t length, uint16_t pdcch_DMRS_scrambling_id); - - - +void nr_pdcch_unscrambling(int16_t *z, + uint16_t scrambling_RNTI, + uint32_t length, + uint16_t pdcch_DMRS_scrambling_id, + int16_t *z2); void dlsch_unscrambling(NR_DL_FRAME_PARMS *frame_parms, int mbsfn_flag, @@ -1757,9 +1742,7 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue, uint8_t is_crnti, uint8_t llr8_flag); - - -int32_t generate_nr_prach( PHY_VARS_NR_UE *ue, uint8_t eNB_id, uint8_t subframe, uint16_t Nf ); +int32_t generate_nr_prach(PHY_VARS_NR_UE *ue, uint8_t gNB_id, uint8_t subframe); void *dlsch_thread(void *arg); /**@}*/ diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_transport_ue.h b/openair1/PHY/NR_UE_TRANSPORT/nr_transport_ue.h index bb92508934..d1dd0f785b 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/nr_transport_ue.h +++ b/openair1/PHY/NR_UE_TRANSPORT/nr_transport_ue.h @@ -42,9 +42,8 @@ #include "UTIL/LISTS/list.h" #endif -#include "LAYER2/NR_MAC_gNB/mac_proto.h" #include "openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.h" -//#include "../LTE_TRANSPORT/transport_common.h" + // structures below implement 36-211 and 36-212 @@ -178,7 +177,7 @@ typedef struct { /// Scrambled "b"-sequences (for definition see 36-211 V8.6 2009-03, p.14) uint8_t b_tilde[MAX_NUM_NR_CHANNEL_BITS]; /// Modulated "d"-sequences (for definition see 36-211 V8.6 2009-03, p.14) - uint32_t d_mod[MAX_NUM_NR_RE]; + uint32_t d_mod[MAX_NUM_NR_RE] __attribute__ ((aligned(16))); /// Transform-coded "y"-sequences (for definition see 38-211 V15.3.0 2018-09, subsection 6.3.1.4) uint32_t y[MAX_NUM_NR_RE] __attribute__ ((aligned(16))); /* @@ -293,6 +292,8 @@ typedef struct { uint16_t dlDmrsSymbPos; /// DMRS Configuration Type uint8_t dmrsConfigType; + // Number of DMRS CDM groups with no data + uint8_t n_dmrs_cdm_groups; /// Starting Symbol number uint16_t start_symbol; /// Current subband PMI allocation diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_coding.c b/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_coding.c index 7299b085bb..6f5fba7812 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_coding.c +++ b/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_coding.c @@ -57,7 +57,7 @@ void free_nr_ue_ulsch(NR_UE_ULSCH_t **ulschptr,unsigned char N_RB_UL) if (N_RB_UL != 273) { a_segments = a_segments*N_RB_UL; - a_segments = a_segments/273; + a_segments = a_segments/273 +1; } @@ -114,7 +114,7 @@ NR_UE_ULSCH_t *new_nr_ue_ulsch(uint16_t N_RB_UL, if (N_RB_UL != 273) { a_segments = a_segments*N_RB_UL; - a_segments = a_segments/273; + a_segments = a_segments/273 +1; } uint16_t ulsch_bytes = a_segments*1056; // allocated bytes per segment @@ -225,9 +225,9 @@ int nr_ulsch_encoding(NR_UE_ULSCH_t *ulsch, unsigned int crc; NR_UL_UE_HARQ_t *harq_process; uint16_t nb_rb ; - uint8_t nb_symb_sch ; - uint32_t A, Z, F; - uint32_t *pz; + uint32_t A, F; + static uint32_t Z = 0; + uint32_t *pz = &Z; uint8_t mod_order; uint16_t Kr,r; uint32_t r_offset; @@ -259,12 +259,12 @@ int nr_ulsch_encoding(NR_UE_ULSCH_t *ulsch, Ilbrm = 0; Tbslbrm = 950984; //max tbs Coderate = 0.0; + harq_process->round = nr_rv_round_map_ue[harq_process->pusch_pdu.pusch_data.rv_index]; /////////// ///////////////////////////////////////////////////////////////////////////////////////// - - VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_ENCODING, VCD_FUNCTION_IN); + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_NR_UE_ULSCH_ENCODING, VCD_FUNCTION_IN); LOG_D(PHY,"ulsch coding nb_rb %d, Nl = %d\n", nb_rb, harq_process->pusch_pdu.nrOfLayers); LOG_D(PHY,"ulsch coding A %d G %d mod_order %d\n", A,G, mod_order); @@ -284,6 +284,7 @@ int nr_ulsch_encoding(NR_UE_ULSCH_t *ulsch, printf("%02x.",a[i]); printf("\n"); */ + if (A > 3824) { // Add 24-bit crc (polynomial A) to payload crc = crc24a(harq_process->a,A)>>8; @@ -313,7 +314,6 @@ int nr_ulsch_encoding(NR_UE_ULSCH_t *ulsch, memcpy(harq_process->b,harq_process->a,(A/8)+3); // using 3 bytes to mimic the case of 24 bit crc } - /////////// /////////////////////////////////////////////////////////////////////////// @@ -332,6 +332,7 @@ int nr_ulsch_encoding(NR_UE_ULSCH_t *ulsch, BG = 1; } + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_NR_SEGMENTATION, VCD_FUNCTION_IN); Kb=nr_segmentation(harq_process->b, harq_process->c, harq_process->B, @@ -340,6 +341,7 @@ int nr_ulsch_encoding(NR_UE_ULSCH_t *ulsch, pz, &harq_process->F, BG); + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_NR_SEGMENTATION, VCD_FUNCTION_OUT); F = harq_process->F; Kr = harq_process->K; @@ -390,7 +392,11 @@ int nr_ulsch_encoding(NR_UE_ULSCH_t *ulsch, impp.n_segments=harq_process->C; impp.macro_num=0; + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_LDPC_ENCODER_OPTIM, VCD_FUNCTION_IN); + nrLDPC_encoder(harq_process->c,harq_process->d,*pz,Kb,Kr,BG,&impp); + + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_LDPC_ENCODER_OPTIM, VCD_FUNCTION_OUT); //stop_meas(te_stats); //printf("end ldpc encoder -- output\n"); @@ -405,6 +411,8 @@ int nr_ulsch_encoding(NR_UE_ULSCH_t *ulsch, /////////////////////////////////////////////////////////////////////////////// } + F = harq_process->F; + Kr = harq_process->K; for (r=0; rC; r++) { // looping over C segments @@ -416,19 +424,15 @@ int nr_ulsch_encoding(NR_UE_ULSCH_t *ulsch, } } -#ifdef DEBUG_DLSCH_CODING - printf("Rate Matching, Code segment %d (coded bits (G) %u, unpunctured/repeated bits per code segment %d, mod_order %d, nb_rb %d)...\n", - r, - G, - Kr*3, - mod_order,nb_rb); -#endif + + LOG_D(PHY,"Rate Matching, Code segment %d (coded bits (G) %u, unpunctured/repeated bits per code segment %d, mod_order %d, nb_rb %d, rvidx %d)...\n", + r, + G, + Kr*3, + mod_order,nb_rb, + harq_process->pusch_pdu.pusch_data.rv_index); //start_meas(rm_stats); -#ifdef DEBUG_DLSCH_CODING - printf("rvidx in encoding = %d\n", harq_process->pusch_pdu.pusch_data.rv_index); -#endif - ///////////////////////// d---->| Rate matching bit selection |---->e ///////////////////////// /////////// @@ -436,6 +440,7 @@ int nr_ulsch_encoding(NR_UE_ULSCH_t *ulsch, Tbslbrm = nr_compute_tbslbrm(0,nb_rb,harq_process->pusch_pdu.nrOfLayers,harq_process->C); + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_NR_RATE_MATCHING_LDPC, VCD_FUNCTION_IN); nr_rate_matching_ldpc(Ilbrm, Tbslbrm, BG, @@ -447,6 +452,7 @@ int nr_ulsch_encoding(NR_UE_ULSCH_t *ulsch, Kr-F-2*(*pz), harq_process->pusch_pdu.pusch_data.rv_index, E); + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_NR_RATE_MATCHING_LDPC, VCD_FUNCTION_OUT); @@ -465,10 +471,14 @@ int nr_ulsch_encoding(NR_UE_ULSCH_t *ulsch, //stop_meas(rm_stats); //start_meas(i_stats); - nr_interleaving_ldpc(E, + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_NR_INTERLEAVING_LDPC, VCD_FUNCTION_IN); + + nr_interleaving_ldpc(E, mod_order, harq_process->e+r_offset, harq_process->f+r_offset); + + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_NR_INTERLEAVING_LDPC, VCD_FUNCTION_OUT); //stop_meas(i_stats); @@ -489,7 +499,7 @@ int nr_ulsch_encoding(NR_UE_ULSCH_t *ulsch, memcpy(ulsch->g,harq_process->f,G); // g is the concatenated code block - VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_ENCODING, VCD_FUNCTION_OUT); + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_NR_UE_ULSCH_ENCODING, VCD_FUNCTION_OUT); return(0); } diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c b/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c index 69b3421ace..bb82140905 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c +++ b/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c @@ -93,12 +93,14 @@ void nr_pusch_codeword_scrambling(uint8_t *in, void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE, unsigned char harq_pid, - uint8_t frame, + uint32_t frame, uint8_t slot, uint8_t thread_id, int gNB_id) { - uint32_t available_bits, TBS; + LOG_D(PHY,"nr_ue_ulsch_procedures hard_id %d %d.%d\n",harq_pid,frame,slot); + + uint32_t available_bits; uint8_t mod_order, cwd_index, num_of_codewords, l; uint32_t scrambled_output[NR_MAX_NB_CODEWORDS][NR_MAX_PDSCH_ENCODED_LENGTH>>5]; uint32_t ***pusch_dmrs; @@ -110,8 +112,7 @@ void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE, uint8_t dmrs_type, nb_dmrs_re_per_rb, number_of_symbols, mcs, Nl; int ap, start_symbol, Nid_cell, i; int sample_offsetF, N_RE_prime, N_PRB_oh; - uint16_t n_rnti, ul_dmrs_symb_pos; - uint8_t data_existing =0; + uint16_t ul_dmrs_symb_pos; uint8_t L_ptrs, K_ptrs; // PTRS parameters uint16_t beta_ptrs; // PTRS parameter related to power control @@ -119,7 +120,6 @@ void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE, NR_UL_UE_HARQ_t *harq_process_ul_ue=NULL; NR_DL_FRAME_PARMS *frame_parms = &UE->frame_parms; NR_UE_PUSCH *pusch_ue = UE->pusch_vars[thread_id][gNB_id]; - uint8_t ulsch_input_buffer[MAX_ULSCH_PAYLOAD_BYTES]; // ptrs_UplinkConfig_t *ptrs_Uplink_Config = &UE->pusch_config.dmrs_UplinkConfig.ptrs_UplinkConfig; num_of_codewords = 1; // tmp assumption @@ -146,7 +146,8 @@ void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE, rnti = harq_process_ul_ue->pusch_pdu.rnti; ulsch_ue->Nid_cell = Nid_cell; - nb_dmrs_re_per_rb = ((dmrs_type == pusch_dmrs_type1) ? 6:4); + + nb_dmrs_re_per_rb = ((dmrs_type == pusch_dmrs_type1) ? 6:4)*harq_process_ul_ue->pusch_pdu.num_dmrs_cdm_grps_no_data; N_RE_prime = NR_NB_SC_PER_RB*number_of_symbols - nb_dmrs_re_per_rb*number_dmrs_symbols - N_PRB_oh; @@ -165,62 +166,14 @@ void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE, number_of_symbols, nb_dmrs_re_per_rb*number_dmrs_symbols, 0, + 0, harq_process_ul_ue->pusch_pdu.nrOfLayers); - uint8_t access_mode = SCHEDULED_ACCESS; - - //-----------------------------------------------------// - // to be removed later when MAC is ready - - if (harq_process_ul_ue != NULL){ - TBS = harq_process_ul_ue->pusch_pdu.pusch_data.tb_size; - data_existing = 0; - - if (IS_SOFTMODEM_NOS1){ - data_existing = nr_ue_get_sdu(UE->Mod_id, UE->CC_id, frame, - slot, 0, ulsch_input_buffer, TBS/8, &access_mode); - //IP traffic to be transmitted - if(data_existing){ - //harq_process_ul_ue->a = (unsigned char*)calloc(TBS/8, sizeof(unsigned char)); - memcpy(harq_process_ul_ue->a, ulsch_input_buffer, TBS/8); - - #ifdef DEBUG_MAC_PDU - LOG_I(PHY, "Printing MAC PDU to be encoded, TBS is: %d \n", TBS/8); - for (i = 0; i < TBS / 8; i++) { - printf("0x%02x",harq_process_ul_ue->a[i]); - } - printf("\n"); - #endif - } - } - //Random traffic to be transmitted if there is no IP traffic available for this Tx opportunity - if (!IS_SOFTMODEM_NOS1 || !data_existing) { - //Use zeros for the header bytes in noS1 mode, in order to make sure that the LCID is not valid - //and block this traffic from being forwarded to the upper layers at the gNB - uint16_t payload_offset = 5; - LOG_D(PHY, "Random data to be tranmsitted: \n"); - //Give the header bytes some dummy value in order to block the random packet at the MAC layer of the receiver - for (i = 0; ia[i] = 0; - - for (i = payload_offset; i < TBS / 8; i++) { - harq_process_ul_ue->a[i] = (unsigned char) rand(); - //printf(" input encoder a[%d]=0x%02x\n",i,harq_process_ul_ue->a[i]); - } - } - } else { - LOG_E(PHY, "[phy_procedures_nrUE_TX] harq_process_ul_ue is NULL !!\n"); - return; - } - - //-----------------------------------------------------// - /////////////////////////ULSCH coding///////////////////////// /////////// unsigned int G = nr_get_G(nb_rb, number_of_symbols, nb_dmrs_re_per_rb, number_dmrs_symbols, mod_order, Nl); - nr_ulsch_encoding(ulsch_ue, frame_parms, harq_pid, G); /////////// @@ -264,8 +217,8 @@ void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE, /////////////////////////DMRS Modulation///////////////////////// /////////// pusch_dmrs = UE->nr_gold_pusch_dmrs[slot]; - n_dmrs = (nb_rb*nb_dmrs_re_per_rb*number_dmrs_symbols); - int16_t mod_dmrs[n_dmrs<<1]; + n_dmrs = (nb_rb*((dmrs_type == pusch_dmrs_type1) ? 6:4)*number_dmrs_symbols); + int16_t mod_dmrs[n_dmrs<<1] __attribute((aligned(16))); /////////// //////////////////////////////////////////////////////////////////////// @@ -301,9 +254,9 @@ void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE, tx_layers = (int16_t **)pusch_ue->txdataF_layers; nr_ue_layer_mapping(UE->ulsch[thread_id][gNB_id], - Nl, - available_bits/mod_order, - tx_layers); + Nl, + available_bits/mod_order, + tx_layers); /////////// //////////////////////////////////////////////////////////////////////// @@ -365,7 +318,7 @@ void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE, uint8_t k_prime=0; - uint8_t is_dmrs, is_ptrs; + uint8_t is_dmrs, is_ptrs, is_dmrs_symbol; uint16_t m=0, n=0, dmrs_idx=0, ptrs_idx = 0; for (l=start_symbol; l> l) & 0x01) { + is_dmrs_symbol = 1; if (k == ((start_sc+get_dmrs_freq_idx_ul(n, k_prime, delta, dmrs_type))%frame_parms->ofdm_symbol_size)) is_dmrs = 1; } @@ -432,18 +387,24 @@ void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE, ptrs_idx++; - } else { + } else if (!is_dmrs_symbol || allowed_xlsch_re_in_dmrs_symbol(k,start_sc,harq_process_ul_ue->pusch_pdu.num_dmrs_cdm_grps_no_data,dmrs_type)) { ((int16_t*)txdataF[ap])[(sample_offsetF)<<1] = ((int16_t *) ulsch_ue->y)[m<<1]; ((int16_t*)txdataF[ap])[((sample_offsetF)<<1) + 1] = ((int16_t *) ulsch_ue->y)[(m<<1) + 1]; - #ifdef DEBUG_PUSCH_MAPPING - printf("m %d\t l %d \t k %d \t txdataF: %d %d\n", - m, l, k, ((int16_t*)txdataF[ap])[(sample_offsetF)<<1], - ((int16_t*)txdataF[ap])[((sample_offsetF)<<1) + 1]); - #endif + #ifdef DEBUG_PUSCH_MAPPING + printf("m %d\t l %d \t k %d \t txdataF: %d %d\n", + m, l, k, ((int16_t*)txdataF[ap])[(sample_offsetF)<<1], + ((int16_t*)txdataF[ap])[((sample_offsetF)<<1) + 1]); + #endif m++; + + } else { + + ((int16_t*)txdataF[ap])[(sample_offsetF)<<1] = 0; + ((int16_t*)txdataF[ap])[((sample_offsetF)<<1) + 1] = 0; + } if (++k >= frame_parms->ofdm_symbol_size) @@ -453,40 +414,29 @@ void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE, } //} + NR_UL_UE_HARQ_t *harq_process_ulsch=NULL; + harq_process_ulsch = UE->ulsch[thread_id][gNB_id][0]->harq_processes[harq_pid]; + harq_process_ulsch->status = SCH_IDLE; /////////// //////////////////////////////////////////////////////////////////////// - LOG_D(PHY, "Is data existing ?: %d \n", data_existing); } uint8_t nr_ue_pusch_common_procedures(PHY_VARS_NR_UE *UE, - uint8_t harq_pid, uint8_t slot, - uint8_t thread_id, - uint8_t gNB_id, - NR_DL_FRAME_PARMS *frame_parms) { + NR_DL_FRAME_PARMS *frame_parms, + uint8_t Nl) { int tx_offset, ap; int32_t **txdata; int32_t **txdataF; - int timing_advance; - uint8_t Nl = UE->ulsch[thread_id][gNB_id][0]->harq_processes[harq_pid]->pusch_pdu.nrOfLayers; // cw 0 /////////////////////////IFFT/////////////////////// /////////// -#if defined(EXMIMO) || defined(OAI_USRP) || defined(OAI_BLADERF) || defined(OAI_LMSSDR) || defined(OAI_ADRV9371_ZC706) - timing_advance = UE->timing_advance; -#else - timing_advance = 0; -#endif - - tx_offset = frame_parms->get_samples_slot_timestamp(slot,frame_parms,0) - timing_advance; - - if (tx_offset < 0) - tx_offset += frame_parms->samples_per_frame; + tx_offset = frame_parms->get_samples_slot_timestamp(slot, frame_parms, 0); // clear the transmit data array for the current subframe /*for (int aa=0; aaframe_parms.nb_antennas_tx; aa++) { @@ -498,21 +448,34 @@ uint8_t nr_ue_pusch_common_procedures(PHY_VARS_NR_UE *UE, txdata = UE->common_vars.txdata; txdataF = UE->common_vars.txdataF; - for (ap = 0; ap < Nl; ap++) { - if (frame_parms->Ncp == 1) { // extended cyclic prefix - PHY_ofdm_mod(txdataF[ap], - &txdata[ap][tx_offset], - frame_parms->ofdm_symbol_size, - 12, - frame_parms->nb_prefix_samples, - CYCLIC_PREFIX); - } else { // normal cyclic prefix - nr_normal_prefix_mod(txdataF[ap], - &txdata[ap][tx_offset], - 14, - frame_parms); - } + int symb_offset = (slot%frame_parms->slots_per_subframe)*frame_parms->symbols_per_slot; + for(ap = 0; ap < Nl; ap++) { + for (int s=0;s (%d.%d)\n", + s,s+symb_offset,frame_parms->symbol_rotation[2*(s+symb_offset)],frame_parms->symbol_rotation[1+(2*(s+symb_offset))]); + rotate_cpx_vector((int16_t *)&txdataF[ap][frame_parms->ofdm_symbol_size*s], + &frame_parms->symbol_rotation[2*(s+symb_offset)], + (int16_t *)&txdataF[ap][frame_parms->ofdm_symbol_size*s], + frame_parms->ofdm_symbol_size, + 15); } + } + + for (ap = 0; ap < Nl; ap++) { + if (frame_parms->Ncp == 1) { // extended cyclic prefix + PHY_ofdm_mod(txdataF[ap], + &txdata[ap][tx_offset], + frame_parms->ofdm_symbol_size, + 12, + frame_parms->nb_prefix_samples, + CYCLIC_PREFIX); + } else { // normal cyclic prefix + nr_normal_prefix_mod(txdataF[ap], + &txdata[ap][tx_offset], + 14, + frame_parms); + } + } /////////// //////////////////////////////////////////////////// diff --git a/openair1/PHY/NR_UE_TRANSPORT/pss_nr.c b/openair1/PHY/NR_UE_TRANSPORT/pss_nr.c index baf34ade92..cf0fc716f9 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/pss_nr.c +++ b/openair1/PHY/NR_UE_TRANSPORT/pss_nr.c @@ -38,6 +38,7 @@ #include "PHY/defs_nr_UE.h" #include "PHY/NR_REFSIG/ss_pbch_nr.h" +#include "common/utils/LOG/vcd_signal_dumper.h" #define DEFINE_VARIABLES_PSS_NR_H #include "PHY/NR_REFSIG/pss_nr.h" @@ -269,7 +270,6 @@ void generate_pss_nr(NR_DL_FRAME_PARMS *fp,int N_ID_2) if (k>= fp->ofdm_symbol_size) k-=fp->ofdm_symbol_size; - for (int i=0; i < LENGTH_PSS_NR; i++) { synchroF_tmp[2*k] = primary_synchro[2*i]; synchroF_tmp[2*k+1] = primary_synchro[2*i+1]; @@ -672,6 +672,7 @@ int pss_synchro_nr(PHY_VARS_NR_UE *PHY_vars_UE, int is, int rate_change) int **rxdata = NULL; int fo_flag = PHY_vars_UE->UE_fo_compensation; // flag to enable freq offset estimation and compensation + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PSS_SYNCHRO_NR, VCD_FUNCTION_IN); #ifdef DBG_PSS_NR LOG_M("rxdata0_rand.m","rxd0_rand", &PHY_vars_UE->common_vars.rxdata[0][0], frame_parms->samples_per_frame, 1, 1); @@ -710,6 +711,7 @@ int pss_synchro_nr(PHY_VARS_NR_UE *PHY_vars_UE, int is, int rate_change) #endif + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PSS_SEARCH_TIME_NR, VCD_FUNCTION_IN); synchro_position = pss_search_time_nr(rxdata, frame_parms, fo_flag, @@ -717,6 +719,7 @@ int pss_synchro_nr(PHY_VARS_NR_UE *PHY_vars_UE, int is, int rate_change) (int *)&PHY_vars_UE->common_vars.eNb_id, (int *)&PHY_vars_UE->common_vars.freq_offset); + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PSS_SEARCH_TIME_NR, VCD_FUNCTION_OUT); #if TEST_SYNCHRO_TIMING_PSS @@ -749,6 +752,7 @@ int pss_synchro_nr(PHY_VARS_NR_UE *PHY_vars_UE, int is, int rate_change) } #endif + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PSS_SYNCHRO_NR, VCD_FUNCTION_OUT); return synchro_position; } diff --git a/openair1/PHY/NR_UE_TRANSPORT/pucch_nr.c b/openair1/PHY/NR_UE_TRANSPORT/pucch_nr.c index c8f7268d04..0b8111fc32 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/pucch_nr.c +++ b/openair1/PHY/NR_UE_TRANSPORT/pucch_nr.c @@ -54,7 +54,8 @@ void nr_generate_pucch0(PHY_VARS_NR_UE *ue, int32_t **txdataF, NR_DL_FRAME_PARMS *frame_parms, - PUCCH_CONFIG_DEDICATED *pucch_config_dedicated, + long pucch_GroupHopping, + long hoppingId, int16_t amp, int nr_tti_tx, uint8_t m0, @@ -111,8 +112,8 @@ void nr_generate_pucch0(PHY_VARS_NR_UE *ue, for (int l=0; lpucch_config_common_nr->pucch_GroupHopping,ue->pucch_config_common_nr->hoppingId,n_hop,nr_tti_tx,&u,&v); // calculating u and v value - alpha = nr_cyclic_shift_hopping(ue->pucch_config_common_nr->hoppingId,m0,mcs,l,startingSymbolIndex,nr_tti_tx); + nr_group_sequence_hopping(pucch_GroupHopping,hoppingId,n_hop,nr_tti_tx,&u,&v); // calculating u and v value + alpha = nr_cyclic_shift_hopping(hoppingId,m0,mcs,l,startingSymbolIndex,nr_tti_tx); #ifdef DEBUG_NR_PUCCH_TX printf("\t [nr_generate_pucch0] sequence generation \tu=%d \tv=%d \talpha=%lf \t(for symbol l=%d)\n",u,v,alpha,l); #endif @@ -799,27 +800,47 @@ void nr_generate_pucch1_old(PHY_VARS_NR_UE *ue, } #endif //0 -inline void nr_pucch2_3_4_scrambling(uint16_t M_bit,uint16_t rnti,uint16_t n_id,uint32_t B,uint8_t *btilde) __attribute__((always_inline)); -inline void nr_pucch2_3_4_scrambling(uint16_t M_bit,uint16_t rnti,uint16_t n_id,uint32_t B,uint8_t *btilde) { +inline void nr_pucch2_3_4_scrambling(uint16_t M_bit,uint16_t rnti,uint16_t n_id,uint64_t *B64,uint8_t *btilde) __attribute__((always_inline)); +inline void nr_pucch2_3_4_scrambling(uint16_t M_bit,uint16_t rnti,uint16_t n_id,uint64_t *B64,uint8_t *btilde) { uint32_t x1, x2, s=0; int i; uint8_t c; // c_init=nRNTI*2^15+n_id according to TS 38.211 Subclause 6.3.2.6.1 //x2 = (rnti) + ((uint32_t)(1+nr_tti_tx)<<16)*(1+(fp->Nid_cell<<1)); x2 = ((rnti)<<15)+n_id; - s = lte_gold_generic(&x1, &x2, 1); #ifdef DEBUG_NR_PUCCH_TX - printf("\t\t [nr_pucch2_3_4_scrambling] gold sequence s=%x\n",s); + printf("\t\t [nr_pucch2_3_4_scrambling] gold sequence s=%x, M_bit %d\n",s,M_bit); #endif - for (i=0; i>i)&1); - btilde[i] = (((B>>i)&1) ^ c); + uint8_t *btildep=btilde; + int M_bit2=M_bit > 31 ? 32 : (M_bit&31), M_bit3=M_bit; + uint32_t B; + for (int iprime=0;iprime<=(M_bit>>5);iprime++,btildep+=32) { + s = lte_gold_generic(&x1, &x2, (iprime==0) ? 1 : 0); + B=((uint32_t*)B64)[iprime]; + for (int n=0;n>n)&1, + (B>>(n+1))&1, + (B>>(n+2))&1, + (B>>(n+3))&1, + (B>>(n+4))&1, + (B>>(n+5))&1, + (B>>(n+6))&1, + (B>>(n+7))&1 + ); + for (i=0; i>i)&1); + btildep[i] = (((B>>i)&1) ^ c); #ifdef DEBUG_NR_PUCCH_TX - //printf("\t\t\t btilde[%d]=%lx from scrambled bit %d\n",i,btilde[i],((B>>i)&1)); + printf("\t\t\t btilde[%d]=%lx from unscrambled bit %d and scrambling %d (%x)\n",i+(iprime<<5),btilde[i],((B>>i)&1),c,s>>i); #endif + } + M_bit3-=32; + M_bit2=M_bit3 > 31 ? 32 : (M_bit3&31); } + #ifdef DEBUG_NR_PUCCH_TX printf("\t\t [nr_pucch2_3_4_scrambling] scrambling M_bit=%d bits\n", M_bit); #endif @@ -907,26 +928,25 @@ void nr_uci_encoding(uint64_t payload, if (A<=11) { // procedure in subclause 6.3.1.2.2 (UCI encoded by channel coding of small block lengths -> subclause 6.3.1.3.2) // CRC bits are not attached, and coding small block lengths (subclause 5.3.3) - b[0] = encodeSmallBlock((uint16_t*)&payload,A); + uint64_t b0= encodeSmallBlock((uint16_t*)&payload,A); + // repetition for rate-matching up to 16 PRB + b[0] = b0 | (b0<<32); + b[1] = b[0]; + b[2] = b[0]; + b[3] = b[0]; + b[4] = b[0]; + b[5] = b[0]; + b[6] = b[0]; + b[7] = b[0]; + AssertFatal(nrofPRB<=16,"Number of PRB >16\n"); } else if (A>=12) { - AssertFatal(1==0,"Polar encoding not supported yet for UCI\n"); - // procedure in subclause 6.3.1.2.1 (UCI encoded by Polar code -> subclause 6.3.1.3.1) - /*if ((A>=360 && E>=1088)||(A>=1013)) { - I_seg = 1; - } else { - I_seg = 0; - }*/ - - /*if (A>=20) { - // parity bits (subclause 5.2.1) computed by setting L=11 and using generator polynomial gCRC11(D) (subclause 5.1) - L=11; - } else if (A<=19) { - // parity bits (subclause 5.2.1) computed by setting L=6 and using generator polynomial gCRC6(D) (subclause 5.1) - L=6; - }*/ - - // code block segmentation and CRC attachment is performed according to subclause 5.2.1 - // polar coding subclause 5.3.1 + AssertFatal(A<65,"Polar encoding not supported yet for UCI with more than 64 bits\n"); + t_nrPolar_params *currentPtr = nr_polar_params(NR_POLAR_UCI_PUCCH_MESSAGE_TYPE, + A, + nrofPRB, + 1, + NULL); + polar_encoder_fast(&payload, b, 0,0,currentPtr); } } @@ -950,10 +970,10 @@ void nr_generate_pucch2(PHY_VARS_NR_UE *ue, printf("\t [nr_generate_pucch2] start function at slot(nr_tti_tx)=%d with payload=%lu and nr_bit=%d\n",nr_tti_tx, payload, nr_bit); #endif // b is the block of bits transmitted on the physical channel after payload coding - uint64_t b; + uint64_t b[16]; // limit to 1024-bit encoded length // M_bit is the number of bits of block b (payload after encoding) uint16_t M_bit; - nr_uci_encoding(payload,nr_bit,pucch_format2_nr,0,nrofSymbols,nrofPRB,1,0,0,&b,&M_bit); + nr_uci_encoding(payload,nr_bit,pucch_format2_nr,0,nrofSymbols,nrofPRB,1,0,0,&b[0],&M_bit); /* * Implementing TS 38.211 * Subclauses 6.3.2.5.1 Scrambling (PUCCH format 2) @@ -975,7 +995,7 @@ void nr_generate_pucch2(PHY_VARS_NR_UE *ue, /* * Implementing TS 38.211 Subclause 6.3.2.5.1 scrambling format 2 */ - nr_pucch2_3_4_scrambling(M_bit,rnti,data_scrambling_id,b,btilde); + nr_pucch2_3_4_scrambling(M_bit,rnti,data_scrambling_id,&b[0],btilde); /* * Implementing TS 38.211 Subclause 6.3.2.5.2 modulation format 2 * btilde shall be modulated as described in subclause 5.1 using QPSK @@ -1119,7 +1139,7 @@ void nr_generate_pucch3_4(PHY_VARS_NR_UE *ue, printf("\t [nr_generate_pucch3_4] start function at slot(nr_tti_tx)=%d with payload=%lu and nr_bit=%d\n", nr_tti_tx, payload, nr_bit); #endif // b is the block of bits transmitted on the physical channel after payload coding - uint64_t b; + uint64_t b[16]; // M_bit is the number of bits of block b (payload after encoding) uint16_t M_bit; // parameter PUCCH-F4-preDFT-OCC-length set of {2,4} -> to use table -1 or -2 @@ -1144,7 +1164,7 @@ void nr_generate_pucch3_4(PHY_VARS_NR_UE *ue, //nrofPRB = 2; // only for test purposes if (fmt == pucch_format4_nr) nrofPRB = 1; - nr_uci_encoding(payload,nr_bit,fmt,is_pi_over_2_bpsk_enabled,nrofSymbols,nrofPRB,n_SF_PUCCH_s,intraSlotFrequencyHopping,add_dmrs,&b,&M_bit); + nr_uci_encoding(payload,nr_bit,fmt,is_pi_over_2_bpsk_enabled,nrofSymbols,nrofPRB,n_SF_PUCCH_s,intraSlotFrequencyHopping,add_dmrs,&b[0],&M_bit); /* * Implementing TS 38.211 * Subclauses 6.3.2.6.1 Scrambling (PUCCH formats 3 and 4) @@ -1166,7 +1186,7 @@ void nr_generate_pucch3_4(PHY_VARS_NR_UE *ue, /* * Implementing TS 38.211 Subclause 6.3.2.6.1 scrambling formats 3 and 4 */ - nr_pucch2_3_4_scrambling(M_bit,rnti,n_id,b,btilde); + nr_pucch2_3_4_scrambling(M_bit,rnti,n_id,&b[0],btilde); /* * Implementing TS 38.211 Subclause 6.3.2.6.2 modulation formats 3 and 4 * diff --git a/openair1/PHY/NR_UE_TRANSPORT/pucch_nr.h b/openair1/PHY/NR_UE_TRANSPORT/pucch_nr.h index a2446dccf9..0e81045d66 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/pucch_nr.h +++ b/openair1/PHY/NR_UE_TRANSPORT/pucch_nr.h @@ -49,7 +49,8 @@ void nr_generate_pucch0(PHY_VARS_NR_UE *ue, int32_t **txdataF, NR_DL_FRAME_PARMS *frame_parms, - PUCCH_CONFIG_DEDICATED *pucch_config_dedicated, + long pucch_GroupHopping, + long hoppingId, int16_t amp, int nr_tti_tx, uint8_t m0, diff --git a/openair1/PHY/TOOLS/Makefile b/openair1/PHY/TOOLS/Makefile index c71717dc87..a59700bb7c 100644 --- a/openair1/PHY/TOOLS/Makefile +++ b/openair1/PHY/TOOLS/Makefile @@ -1,16 +1,16 @@ -lte_dfts_sse4: lte_dfts.c - gcc-7 -O3 -std=gnu99 -msse4.1 -o lte_dfts_sse4 lte_dfts.c time_meas.c ../../SIMULATION/TOOLS/taus.c -I$$OPENAIR_HOME -I$$OPENAIR1_DIR -I$$OPENAIR_TARGETS -I$$OPENAIR2_DIR -I$$OPENAIR2_DIR/COMMON -I$$OPENAIR_HOME/common/utils -I$$OPENAIR_HOME/common/utils/T -DMR_MAIN -DNB_ANTENNAS_RX=1 -lm -lpthread # -DD256STATS #-DD64STATS +oai_dfts_sse4: oai_dfts.c + gcc-7 -O3 -std=gnu99 -msse4.1 -o oai_dfts_sse4 oai_dfts.c time_meas.c ../../SIMULATION/TOOLS/taus.c -I$$OPENAIR_HOME -I$$OPENAIR1_DIR -I$$OPENAIR_TARGETS -I$$OPENAIR_TARGETS/COMMON -I$$OPENAIR_TARGETS/ARCH/COMMON -I$$OPENAIR2_DIR -I$$OPENAIR2_DIR/COMMON -I$$OPENAIR_HOME/common/utils -I$$OPENAIR_HOME/common/utils/T -I$$OPENAIR_HOME/common/utils/msc -I$$OPENAIR_HOME/nfapi/open-nFAPI/nfapi/public_inc -DMR_MAIN -DNB_ANTENNAS_RX=1 -lm -lpthread # -DD256STATS #-DD64STATS -lte_dfts_avx2: lte_dfts.c - gcc -O2 -std=gnu99 -mavx2 -g -ggdb -o lte_dfts_avx2 lte_dfts.c time_meas.c ../../SIMULATION/TOOLS/taus.c $$OPENAIR_HOME/common/utils/backtrace.c -I$$OPENAIR_HOME -I$$OPENAIR1_DIR -I$$OPENAIR_TARGETS -I$$OPENAIR2_DIR -I$$OPENAIR2_DIR/COMMON -I$$OPENAIR_HOME/common/utils -I$$OPENAIR_HOME/common/utils/T -DMR_MAIN -DNB_ANTENNAS_RX=1 -lm -lpthread # -DD256STATS #-DD64STATS +oai_dfts_avx2: oai_dfts.c + gcc -O2 -std=gnu99 -mavx2 -g -ggdb -o oai_dfts_avx2 oai_dfts.c time_meas.c ../../SIMULATION/TOOLS/taus.c $$OPENAIR_HOME/common/utils/backtrace.c -I$$OPENAIR_HOME -I$$OPENAIR1_DIR -I$$OPENAIR_TARGETS -I$$OPENAIR_TARGETS/COMMON -I$$OPENAIR_TARGETS/ARCH/COMMON -I$$OPENAIR2_DIR -I$$OPENAIR2_DIR/COMMON -I$$OPENAIR_HOME/common/utils -I$$OPENAIR_HOME/common/utils/T -I$$OPENAIR_HOME/common/utils/msc -I$$OPENAIR_HOME/nfapi/open-nFAPI/nfapi/public_inc -DMR_MAIN -DNB_ANTENNAS_RX=1 -lm -lpthread # -DD256STATS #-DD64STATS -lte_dfts_avx2.s: lte_dfts.c - gcc -O2 -std=gnu99 -mavx2 -S lte_dfts.c time_meas.c ../../SIMULATION/TOOLS/taus.c $$OPENAIR_HOME/common/utils/backtrace.c -I$$OPENAIR_HOME -I$$OPENAIR1_DIR -I$$OPENAIR_TARGETS -I$$OPENAIR2_DIR -I$$OPENAIR2_DIR/COMMON -I$$OPENAIR_HOME/common/utils -I$$OPENAIR_HOME/common/utils/T -DMR_MAIN -DNB_ANTENNAS_RX=1 -lm -lpthread # -DD256STATS #-DD64STATS +oai_dfts_avx2.s: oai_dfts.c + gcc -O2 -std=gnu99 -mavx2 -S oai_dfts.c time_meas.c ../../SIMULATION/TOOLS/taus.c $$OPENAIR_HOME/common/utils/backtrace.c -I$$OPENAIR_HOME -I$$OPENAIR1_DIR -I$$OPENAIR_TARGETS -I$$OPENAIR_TARGETS/COMMON -I$$OPENAIR_TARGETS/ARCH/COMMON -I$$OPENAIR2_DIR -I$$OPENAIR2_DIR/COMMON -I$$OPENAIR_HOME/common/utils -I$$OPENAIR_HOME/common/utils/T -I$$OPENAIR_HOME/common/utils/msc -I$$OPENAIR_HOME/nfapi/open-nFAPI/nfapi/public_inc -DMR_MAIN -DNB_ANTENNAS_RX=1 -lm -lpthread # -DD256STATS #-DD64STATS -lte_dfts_sse4.s: lte_dfts.c - gcc -O2 -std=gnu99 -msse4.1 -S lte_dfts.c time_meas.c ../../SIMULATION/TOOLS/taus.c $$OPENAIR_HOME/common/utils/backtrace.c -I$$OPENAIR_HOME -I$$OPENAIR1_DIR -I$$OPENAIR_TARGETS -I$$OPENAIR2_DIR -I$$OPENAIR2_DIR/COMMON -I$$OPENAIR_HOME/common/utils -I$$OPENAIR_HOME/common/utils/T -DMR_MAIN -DNB_ANTENNAS_RX=1 -lm -lpthread # -DD256STATS #-DD64STATS +oai_dfts_sse4.s: oai_dfts.c + gcc -O2 -std=gnu99 -msse4.1 -S oai_dfts.c time_meas.c ../../SIMULATION/TOOLS/taus.c $$OPENAIR_HOME/common/utils/backtrace.c -I$$OPENAIR_HOME -I$$OPENAIR1_DIR -I$$OPENAIR_TARGETS -I$$OPENAIR_TARGETS/COMMON -I$$OPENAIR_TARGETS/ARCH/COMMON -I$$OPENAIR2_DIR -I$$OPENAIR2_DIR/COMMON -I$$OPENAIR_HOME/common/utils -I$$OPENAIR_HOME/common/utils/T -I$$OPENAIR_HOME/common/utils/msc -I$$OPENAIR_HOME/nfapi/open-nFAPI/nfapi/public_inc -DMR_MAIN -DNB_ANTENNAS_RX=1 -lm -lpthread # -DD256STATS #-DD64STATS -dft_cycles_avx2: lte_dfts_avx2 - ./lte_dfts_avx2 | egrep cycles +dft_cycles_avx2: oai_dfts_avx2 + ./oai_dfts_avx2 | egrep cycles diff --git a/openair1/PHY/TOOLS/nr_phy_scope.c b/openair1/PHY/TOOLS/nr_phy_scope.c index 67ec027a9d..78e34036a3 100644 --- a/openair1/PHY/TOOLS/nr_phy_scope.c +++ b/openair1/PHY/TOOLS/nr_phy_scope.c @@ -9,6 +9,8 @@ * * http://www.openairinterface.org/?page_id=698 * + * Author and copyright: Laurent Thomas, open-cells.com + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -24,8 +26,11 @@ #include #include "nr_phy_scope.h" #include "executables/nr-softmodem-common.h" +#include "executables/softmodem-common.h" +#include #define TPUT_WINDOW_LENGTH 100 +#define localBuff(NaMe,SiZe) float NaMe[SiZe]; memset(NaMe,0,sizeof(NaMe)); int otg_enabled; FL_COLOR rx_antenna_colors[4] = {FL_RED,FL_BLUE,FL_GREEN,FL_YELLOW}; @@ -36,836 +41,29 @@ float tput_time_ue[NUMBER_OF_UE_MAX][TPUT_WINDOW_LENGTH] = {{0}}; float tput_ue[NUMBER_OF_UE_MAX][TPUT_WINDOW_LENGTH] = {{0}}; float tput_ue_max[NUMBER_OF_UE_MAX] = {0}; - -static void ia_receiver_on_off( FL_OBJECT *button, long arg) -{ - - if (fl_get_button(button)) { - fl_set_object_label(button, "IA Receiver ON"); - // PHY_vars_UE_g[0][0]->use_ia_receiver = 1; - fl_set_object_color(button, FL_GREEN, FL_GREEN); - } else { - fl_set_object_label(button, "IA Receiver OFF"); - // PHY_vars_UE_g[0][0]->use_ia_receiver = 0; - fl_set_object_color(button, FL_RED, FL_RED); - } -} - -static void dl_traffic_on_off( FL_OBJECT *button, long arg) -{ - - if (fl_get_button(button)) { - fl_set_object_label(button, "DL Traffic ON"); - otg_enabled = 1; - fl_set_object_color(button, FL_GREEN, FL_GREEN); - } else { - fl_set_object_label(button, "DL Traffic OFF"); - otg_enabled = 0; - fl_set_object_color(button, FL_RED, FL_RED); - } -} - -FD_phy_scope_gnb *create_phy_scope_gnb( void ) -{ - - FL_OBJECT *obj; - FD_phy_scope_gnb *fdui = fl_malloc( sizeof *fdui ); - - // Define form - fdui->phy_scope_gnb = fl_bgn_form( FL_NO_BOX, 800, 800 ); - - // This the whole UI box - obj = fl_add_box( FL_BORDER_BOX, 0, 0, 800, 800, "" ); - fl_set_object_color( obj, FL_BLACK, FL_BLACK ); - - // Received signal - fdui->rxsig_t = fl_add_xyplot( FL_NORMAL_XYPLOT, 20, 20, 370, 100, "Received Signal (Time-Domain, dB)" ); - fl_set_object_boxtype( fdui->rxsig_t, FL_EMBOSSED_BOX ); - fl_set_object_color( fdui->rxsig_t, FL_BLACK, FL_RED ); - fl_set_object_lcolor( fdui->rxsig_t, FL_WHITE ); // Label color - fl_set_xyplot_ybounds(fdui->rxsig_t,10,70); - - // Time-domain channel response - fdui->chest_t = fl_add_xyplot( FL_NORMAL_XYPLOT, 410, 20, 370, 100, "SRS Frequency Response (samples, abs)" ); - fl_set_object_boxtype( fdui->chest_t, FL_EMBOSSED_BOX ); - fl_set_object_color( fdui->chest_t, FL_BLACK, FL_RED ); - fl_set_object_lcolor( fdui->chest_t, FL_WHITE ); // Label color - - // Frequency-domain channel response - fdui->chest_f = fl_add_xyplot( FL_IMPULSE_XYPLOT, 20, 140, 760, 100, "Channel Frequency Response (RE, dB)" ); - fl_set_object_boxtype( fdui->chest_f, FL_EMBOSSED_BOX ); - fl_set_object_color( fdui->chest_f, FL_BLACK, FL_RED ); - fl_set_object_lcolor( fdui->chest_f, FL_WHITE ); // Label color - fl_set_xyplot_ybounds( fdui->chest_f,30,70); - - // LLR of PUSCH - fdui->pusch_llr = fl_add_xyplot( FL_POINTS_XYPLOT, 20, 260, 500, 200, "PUSCH Log-Likelihood Ratios (LLR, mag)" ); - fl_set_object_boxtype( fdui->pusch_llr, FL_EMBOSSED_BOX ); - fl_set_object_color( fdui->pusch_llr, FL_BLACK, FL_YELLOW ); - fl_set_object_lcolor( fdui->pusch_llr, FL_WHITE ); // Label color - fl_set_xyplot_symbolsize( fdui->pusch_llr,2); - - // I/Q PUSCH comp - fdui->pusch_comp = fl_add_xyplot( FL_POINTS_XYPLOT, 540, 260, 240, 200, "PUSCH I/Q of MF Output" ); - fl_set_object_boxtype( fdui->pusch_comp, FL_EMBOSSED_BOX ); - fl_set_object_color( fdui->pusch_comp, FL_BLACK, FL_YELLOW ); - fl_set_object_lcolor( fdui->pusch_comp, FL_WHITE ); // Label color - fl_set_xyplot_symbolsize( fdui->pusch_comp,2); - fl_set_xyplot_xgrid( fdui->pusch_llr,FL_GRID_MAJOR); - - // I/Q PUCCH comp (format 1) - fdui->pucch_comp1 = fl_add_xyplot( FL_POINTS_XYPLOT, 540, 480, 240, 100, "PUCCH1 Energy (SR)" ); - fl_set_object_boxtype( fdui->pucch_comp1, FL_EMBOSSED_BOX ); - fl_set_object_color( fdui->pucch_comp1, FL_BLACK, FL_YELLOW ); - fl_set_object_lcolor( fdui->pucch_comp1, FL_WHITE ); // Label color - fl_set_xyplot_symbolsize( fdui->pucch_comp1,2); - // fl_set_xyplot_xgrid( fdui->pusch_llr,FL_GRID_MAJOR); - - // I/Q PUCCH comp (fromat 1a/b) - fdui->pucch_comp = fl_add_xyplot( FL_POINTS_XYPLOT, 540, 600, 240, 100, "PUCCH I/Q of MF Output" ); - fl_set_object_boxtype( fdui->pucch_comp, FL_EMBOSSED_BOX ); - fl_set_object_color( fdui->pucch_comp, FL_BLACK, FL_YELLOW ); - fl_set_object_lcolor( fdui->pucch_comp, FL_WHITE ); // Label color - fl_set_xyplot_symbolsize( fdui->pucch_comp,2); - // fl_set_xyplot_xgrid( fdui->pusch_llr,FL_GRID_MAJOR); - - // Throughput on PUSCH - fdui->pusch_tput = fl_add_xyplot( FL_NORMAL_XYPLOT, 20, 480, 500, 100, "PUSCH Throughput [frame]/[kbit/s]" ); - fl_set_object_boxtype( fdui->pusch_tput, FL_EMBOSSED_BOX ); - fl_set_object_color( fdui->pusch_tput, FL_BLACK, FL_WHITE ); - fl_set_object_lcolor( fdui->pusch_tput, FL_WHITE ); // Label color - - // Generic eNB Button - fdui->button_0 = fl_add_button( FL_PUSH_BUTTON, 20, 600, 240, 40, "" ); - fl_set_object_lalign(fdui->button_0, FL_ALIGN_CENTER ); - fl_set_button(fdui->button_0,0); - otg_enabled = 0; - fl_set_object_label(fdui->button_0, "DL Traffic OFF"); - fl_set_object_color(fdui->button_0, FL_RED, FL_RED); - fl_set_object_callback(fdui->button_0, dl_traffic_on_off, 0 ); - - fl_end_form( ); - fdui->phy_scope_gnb->fdui = fdui; - - return fdui; -} - -void phy_scope_gNB(FD_phy_scope_gnb *form, - PHY_VARS_gNB *phy_vars_gnb, - RU_t *phy_vars_ru, - int UE_id) -{ - int i, arx; //int i,i2,arx,atx,ind,k; - NR_DL_FRAME_PARMS *frame_parms = &phy_vars_gnb->frame_parms; - //int nsymb_ce = 12*frame_parms->N_RB_UL*frame_parms->symbols_per_tti; - uint8_t nb_antennas_rx = frame_parms->nb_antennas_rx; - //uint8_t nb_antennas_tx = 1; // frame_parms->nb_antennas_tx; // in LTE Rel. 8 and 9 only a single transmit antenna is assumed at the UE - int16_t **rxsig_t, **rxsig_f; - // int16_t **chest_t=NULL; - // int16_t **chest_f=NULL; - // int16_t *pusch_llr=NULL; - // int32_t *pusch_comp=NULL; - // int32_t *pucch1_comp=NULL; - // int32_t *pucch1_thres=NULL; - // int32_t *pucch1ab_comp=NULL; - // float Re,Im,ymax; - float *llr, *bit; - // float I[nsymb_ce*2], Q[nsymb_ce*2]; - // float I_pucch[10240],Q_pucch[10240],A_pucch[10240],B_pucch[10240],C_pucch[10240]; - float *rxsig_t_dB[nb_antennas_rx]; - float *rxsig_f_dB[nb_antennas_rx]; - float time[frame_parms->samples_per_frame]; - // float freq[nsymb_ce*nb_antennas_rx*nb_antennas_tx]; - // uint32_t total_dlsch_bitrate = phy_vars_gnb->total_dlsch_bitrate; - int coded_bits_per_codeword = 0; - // uint8_t harq_pid; // in TDD config 3 it is sf-2, i.e., can be 0,1,2 - int Qm = 2; - - /* - if (!RC.nrmac[0]->UE_info.active[UE_id]) - return; - - // choose max MCS to compute coded_bits_per_codeword - if (phy_vars_gnb->ulsch[UE_id][0]!=NULL) { - for (harq_pid=0; harq_pid<3; harq_pid++) { - //Qm = cmax(phy_vars_gnb->ulsch[UE_id][0]->harq_processes->Qm,Qm); - } - } - */ - coded_bits_per_codeword = frame_parms->N_RB_UL*12*Qm*frame_parms->symbols_per_tti; - - for (arx=0; arxsamples_per_frame,sizeof(float)); - rxsig_f_dB[arx] = (float*) calloc(frame_parms->samples_per_slot_wCP,sizeof(float)); - } - llr = (float*) calloc(coded_bits_per_codeword,sizeof(float)); // init to zero - bit = malloc(coded_bits_per_codeword*sizeof(float)); - - rxsig_t = (int16_t**) phy_vars_ru->common.rxdata; - rxsig_f = (int16_t**) phy_vars_ru->common.rxdataF; - //chest_t = (int16_t**) phy_vars_gnb->pusch_vars[UE_id]->drs_ch_estimates_time[eNB_id]; - /* chest_t = (int16_t**) phy_vars_gnb->srs_vars[UE_id].srs_ch_estimates; - chest_f = (int16_t**) phy_vars_gnb->pusch_vars[UE_id]->drs_ch_estimates; - pusch_llr = (int16_t*) phy_vars_gnb->pusch_vars[UE_id]->llr; - pusch_comp = (int32_t*) phy_vars_gnb->pusch_vars[UE_id]->rxdataF_comp; - pucch1_comp = (int32_t*) phy_vars_gnb->pucch1_stats[UE_id]; - pucch1_thres = (int32_t*) phy_vars_gnb->pucch1_stats_thres[UE_id]; - pucch1ab_comp = (int32_t*) phy_vars_gnb->pucch1ab_stats[UE_id]; - */ - - // Received signal in time domain of receive antenna 0 - if (rxsig_t != NULL) { - if (rxsig_t[0] != NULL) { - for (i=0; isamples_per_frame; i++) { - rxsig_t_dB[0][i] = 10*log10(1.0+(float) ((rxsig_t[0][2*i])*(rxsig_t[0][2*i])+(rxsig_t[0][2*i+1])*(rxsig_t[0][2*i+1]))); - time[i] = (float) i; - } - - fl_set_xyplot_data(form->rxsig_t,time,rxsig_t_dB[0],frame_parms->samples_per_frame,"","",""); - } - - for (arx=1; arxsamples_per_frame; i++) { - rxsig_t_dB[arx][i] = 10*log10(1.0+(float) ((rxsig_t[arx][2*i])*(rxsig_t[arx][2*i])+(rxsig_t[arx][2*i+1])*(rxsig_t[arx][2*i+1]))); - } - - fl_add_xyplot_overlay(form->rxsig_t,arx,time,rxsig_t_dB[arx],frame_parms->samples_per_frame,rx_antenna_colors[arx]); - } - } - } - - /* - // Channel Impulse Response - if (chest_t != NULL) { - ymax = 0; - - if (chest_t[0] !=NULL) { - for (i=0; i<(frame_parms->ofdm_symbol_size); i++) { - //i2 = (i+(frame_parms->ofdm_symbol_size>>1))%frame_parms->ofdm_symbol_size; - i2=i; - //time2[i] = (float)(i-(frame_parms->ofdm_symbol_size>>1)); - time2[i] = (float)i; - chest_t_abs[0][i] = 10*log10((float) (1+chest_t[0][2*i2]*chest_t[0][2*i2]+chest_t[0][2*i2+1]*chest_t[0][2*i2+1])); - - if (chest_t_abs[0][i] > ymax) - ymax = chest_t_abs[0][i]; - } - - fl_set_xyplot_data(form->chest_t,time2,chest_t_abs[0],(frame_parms->ofdm_symbol_size),"","",""); - } - - for (arx=1; arxofdm_symbol_size>>3); i++) { - chest_t_abs[arx][i] = 10*log10((float) (1+chest_t[arx][2*i]*chest_t[arx][2*i]+chest_t[arx][2*i+1]*chest_t[arx][2*i+1])); - - if (chest_t_abs[arx][i] > ymax) - ymax = chest_t_abs[arx][i]; - } - - fl_add_xyplot_overlay(form->chest_t,arx,time,chest_t_abs[arx],(frame_parms->ofdm_symbol_size>>3),rx_antenna_colors[arx]); - fl_set_xyplot_overlay_type(form->chest_t,arx,FL_DASHED_XYPLOT); - } - } - - // Avoid flickering effect - // fl_get_xyplot_ybounds(form->chest_t,&ymin,&ymax); - fl_set_xyplot_ybounds(form->chest_t,0,ymax); - } - */ - - // Channel Frequency Response - if (rxsig_f != NULL) { - if (rxsig_f[0] != NULL) { - for (i=0; isamples_per_slot_wCP; i++) { - rxsig_f_dB[0][i] = 10*log10(1.0+(float) ((rxsig_f[0][2*i])*(rxsig_f[0][2*i])+(rxsig_f[0][2*i+1])*(rxsig_f[0][2*i+1]))); - time[i] = (float) i; - } - - fl_set_xyplot_data(form->chest_t,time,rxsig_f_dB[0],frame_parms->samples_per_slot_wCP,"","",""); - } - } - - /* - - for (arx=0; arxchest_f,0,nb_antennas_rx*nb_antennas_tx*nsymb_ce); - fl_set_xyplot_xtics(form->chest_f,nb_antennas_rx*nb_antennas_tx*frame_parms->symbols_per_tti,3); - fl_set_xyplot_xgrid(form->chest_f,FL_GRID_MAJOR); - fl_set_xyplot_data(form->chest_f,freq,chest_f_abs,nsymb_ce,"","",""); - - for (arx=1; arxchest_f,1,&freq[arx*nsymb_ce],&chest_f_abs[arx*nsymb_ce],nsymb_ce,rx_antenna_colors[arx]); - } - - // other tx antennas - if (nb_antennas_tx > 1) { - if (nb_antennas_rx > 1) { - for (atx=1; atxchest_f,(atx<<1)+arx,&freq[((atx<<1)+arx)*nsymb_ce],&chest_f_abs[((atx<<1)+arx)*nsymb_ce],nsymb_ce,rx_antenna_colors[arx]); - } - } - } else { // 1 rx antenna - atx=1; - arx=0; - fl_add_xyplot_overlay(form->chest_f,atx,&freq[atx*nsymb_ce],&chest_f_abs[atx*nsymb_ce],nsymb_ce,rx_antenna_colors[arx]); - } - } - } - - // PUSCH LLRs - if (pusch_llr != NULL) { - for (i=0; ipusch_llr,bit,llr,coded_bits_per_codeword,"","",""); - } - - // PUSCH I/Q of MF Output - if (pusch_comp!=NULL) { - ind=0; - - for (k=0; ksymbols_per_tti; k++) { - for (i=0; i<12*frame_parms->N_RB_UL; i++) { - I[ind] = pusch_comp[(2*frame_parms->N_RB_UL*12*k)+2*i]; - Q[ind] = pusch_comp[(2*frame_parms->N_RB_UL*12*k)+2*i+1]; - ind++; - } - } - - fl_set_xyplot_data(form->pusch_comp,I,Q,ind,"","",""); - } - - // PUSCH I/Q of MF Output - if (pucch1ab_comp!=NULL) { - for (ind=0; ind<10240; ind++) { - - I_pucch[ind] = (float)pucch1ab_comp[2*(ind)]; - Q_pucch[ind] = (float)pucch1ab_comp[2*(ind)+1]; - A_pucch[ind] = pucch1_comp?(10*log10(pucch1_comp[ind])):0; - B_pucch[ind] = ind; - C_pucch[ind] = pucch1_thres?(float)pucch1_thres[ind]:0; - } - fl_set_xyplot_data(form->pucch_comp,I_pucch,Q_pucch,10240,"","",""); - fl_set_xyplot_data(form->pucch_comp1,B_pucch,A_pucch,1024,"","",""); - fl_add_xyplot_overlay(form->pucch_comp1,1,B_pucch,C_pucch,1024,FL_RED); - fl_set_xyplot_ybounds(form->pucch_comp,-5000,5000); - fl_set_xyplot_xbounds(form->pucch_comp,-5000,5000); - - fl_set_xyplot_ybounds(form->pucch_comp1,0,80); - } - - - // PUSCH Throughput - memmove( tput_time_enb[UE_id], &tput_time_enb[UE_id][1], (TPUT_WINDOW_LENGTH-1)*sizeof(float) ); - memmove( tput_enb[UE_id], &tput_enb[UE_id][1], (TPUT_WINDOW_LENGTH-1)*sizeof(float) ); - - tput_time_enb[UE_id][TPUT_WINDOW_LENGTH-1] = (float) 0; -// tput_enb[UE_id][TPUT_WINDOW_LENGTH-1] = ((float) total_dlsch_bitrate)/1000.0; - - fl_set_xyplot_data(form->pusch_tput,tput_time_enb[UE_id],tput_enb[UE_id],TPUT_WINDOW_LENGTH,"","",""); - - // fl_get_xyplot_ybounds(form->pusch_tput,&ymin,&ymax); - // fl_set_xyplot_ybounds(form->pusch_tput,0,ymax); - - */ - - fl_check_forms(); - - free(llr); - free(bit); -} - -FD_phy_scope_nrue *create_phy_scope_nrue( void ) -{ - - FL_OBJECT *obj; - FD_phy_scope_nrue *fdui = fl_malloc( sizeof *fdui ); - - // Define form - fdui->phy_scope_nrue = fl_bgn_form( FL_NO_BOX, 800, 900 ); - - // This the whole UI box - obj = fl_add_box( FL_BORDER_BOX, 0, 0, 800, 900, "" ); - fl_set_object_color( obj, FL_BLACK, FL_BLACK ); - - // Received signal - fdui->rxsig_t = fl_add_xyplot( FL_NORMAL_XYPLOT, 20, 20, 370, 100, "Received Signal (Time-Domain, dB)" ); - fl_set_object_boxtype( fdui->rxsig_t, FL_EMBOSSED_BOX ); - fl_set_object_color( fdui->rxsig_t, FL_BLACK, FL_RED ); - fl_set_object_lcolor( fdui->rxsig_t, FL_WHITE ); // Label color - fl_set_xyplot_ybounds(fdui->rxsig_t,10,70); - - // Time-domain channel response - fdui->chest_t = fl_add_xyplot( FL_NORMAL_XYPLOT, 410, 20, 370, 100, "Channel Impulse Response (samples, abs)" ); - fl_set_object_boxtype( fdui->chest_t, FL_EMBOSSED_BOX ); - fl_set_object_color( fdui->chest_t, FL_BLACK, FL_RED ); - fl_set_object_lcolor( fdui->chest_t, FL_WHITE ); // Label color - - // Frequency-domain channel response - fdui->chest_f = fl_add_xyplot( FL_IMPULSE_XYPLOT, 20, 140, 760, 100, "Channel Frequency Response (RE, dB)" ); - fl_set_object_boxtype( fdui->chest_f, FL_EMBOSSED_BOX ); - fl_set_object_color( fdui->chest_f, FL_BLACK, FL_RED ); - fl_set_object_lcolor( fdui->chest_f, FL_WHITE ); // Label color - fl_set_xyplot_ybounds( fdui->chest_f,30,70); - - // LLR of PBCH - fdui->pbch_llr = fl_add_xyplot( FL_POINTS_XYPLOT, 20, 260, 500, 100, "PBCH Log-Likelihood Ratios (LLR, mag)" ); - fl_set_object_boxtype( fdui->pbch_llr, FL_EMBOSSED_BOX ); - fl_set_object_color( fdui->pbch_llr, FL_BLACK, FL_GREEN ); - fl_set_object_lcolor( fdui->pbch_llr, FL_WHITE ); // Label color - fl_set_xyplot_symbolsize( fdui->pbch_llr,2); - fl_set_xyplot_xgrid( fdui->pbch_llr,FL_GRID_MAJOR); - //fl_set_xyplot_xbounds( fdui->pbch_llr,0,1920); - - // I/Q PBCH comp - fdui->pbch_comp = fl_add_xyplot( FL_POINTS_XYPLOT, 540, 260, 240, 100, "PBCH I/Q of MF Output" ); - fl_set_object_boxtype( fdui->pbch_comp, FL_EMBOSSED_BOX ); - fl_set_object_color( fdui->pbch_comp, FL_BLACK, FL_GREEN ); - fl_set_object_lcolor( fdui->pbch_comp, FL_WHITE ); // Label color - fl_set_xyplot_symbolsize( fdui->pbch_comp,2); - // fl_set_xyplot_xbounds( fdui->pbch_comp,-100,100); - // fl_set_xyplot_ybounds( fdui->pbch_comp,-100,100); - - // LLR of PDCCH - fdui->pdcch_llr = fl_add_xyplot( FL_POINTS_XYPLOT, 20, 380, 500, 100, "PDCCH Log-Likelihood Ratios (LLR, mag)" ); - fl_set_object_boxtype( fdui->pdcch_llr, FL_EMBOSSED_BOX ); - fl_set_object_color( fdui->pdcch_llr, FL_BLACK, FL_CYAN ); - fl_set_object_lcolor( fdui->pdcch_llr, FL_WHITE ); // Label color - fl_set_xyplot_symbolsize( fdui->pdcch_llr,2); - - // I/Q PDCCH comp - fdui->pdcch_comp = fl_add_xyplot( FL_POINTS_XYPLOT, 540, 380, 240, 100, "PDCCH I/Q of MF Output" ); - fl_set_object_boxtype( fdui->pdcch_comp, FL_EMBOSSED_BOX ); - fl_set_object_color( fdui->pdcch_comp, FL_BLACK, FL_CYAN ); - fl_set_object_lcolor( fdui->pdcch_comp, FL_WHITE ); // Label color - fl_set_xyplot_symbolsize( fdui->pdcch_comp,2); - fl_set_xyplot_xgrid( fdui->pdcch_llr,FL_GRID_MAJOR); - - // LLR of PDSCH - fdui->pdsch_llr = fl_add_xyplot( FL_POINTS_XYPLOT, 20, 500, 500, 200, "PDSCH Log-Likelihood Ratios (LLR, mag)" ); - fl_set_object_boxtype( fdui->pdsch_llr, FL_EMBOSSED_BOX ); - fl_set_object_color( fdui->pdsch_llr, FL_BLACK, FL_YELLOW ); - fl_set_object_lcolor( fdui->pdsch_llr, FL_WHITE ); // Label color - fl_set_xyplot_symbolsize( fdui->pdsch_llr,2); - fl_set_xyplot_xgrid( fdui->pdsch_llr,FL_GRID_MAJOR); - - // I/Q PDSCH comp - fdui->pdsch_comp = fl_add_xyplot( FL_POINTS_XYPLOT, 540, 500, 240, 200, "PDSCH I/Q of MF Output" ); - fl_set_object_boxtype( fdui->pdsch_comp, FL_EMBOSSED_BOX ); - fl_set_object_color( fdui->pdsch_comp, FL_BLACK, FL_YELLOW ); - fl_set_object_lcolor( fdui->pdsch_comp, FL_WHITE ); // Label color - fl_set_xyplot_symbolsize( fdui->pdsch_comp,2); - - // Throughput on PDSCH - fdui->pdsch_tput = fl_add_xyplot( FL_NORMAL_XYPLOT, 20, 720, 500, 100, "PDSCH Throughput [frame]/[kbit/s]" ); - fl_set_object_boxtype( fdui->pdsch_tput, FL_EMBOSSED_BOX ); - fl_set_object_color( fdui->pdsch_tput, FL_BLACK, FL_WHITE ); - fl_set_object_lcolor( fdui->pdsch_tput, FL_WHITE ); // Label color - - // Generic UE Button - fdui->button_0 = fl_add_button( FL_PUSH_BUTTON, 540, 720, 240, 40, "" ); - fl_set_object_lalign(fdui->button_0, FL_ALIGN_CENTER ); - //openair_daq_vars.use_ia_receiver = 0; - fl_set_button(fdui->button_0,0); - fl_set_object_label(fdui->button_0, "IA Receiver OFF"); - fl_set_object_color(fdui->button_0, FL_RED, FL_RED); - fl_set_object_callback(fdui->button_0, ia_receiver_on_off, 0 ); - fl_hide_object(fdui->button_0); - - fl_end_form( ); - fdui->phy_scope_nrue->fdui = fdui; - - return fdui; -} - -void phy_scope_nrUE(FD_phy_scope_nrue *form, - PHY_VARS_NR_UE *phy_vars_ue, - int eNB_id, - int UE_id, - uint8_t subframe) -{ - int i,arx,atx,ind,k; - NR_DL_FRAME_PARMS *frame_parms = &phy_vars_ue->frame_parms; - //int nsymb_ce = frame_parms->ofdm_symbol_size;//*frame_parms->symbols_per_tti; - int samples_per_frame = frame_parms->samples_per_frame; - uint8_t nb_antennas_rx = frame_parms->nb_antennas_rx; - uint8_t nb_antennas_tx = frame_parms->nb_antenna_ports_gNB; - int16_t **rxsig_t; - float **rxsig_t_dB; - float *time; - float *corr; - int16_t **chest_t; - int16_t **chest_f; - int16_t *pdsch_llr; - int16_t *pdsch_comp; - //int16_t *pdsch_mag; - int8_t *pdcch_llr; - int16_t *pdcch_comp; - int16_t *pbch_llr; - int16_t *pbch_comp; - float llr_pbch[1920], bit_pbch[1920]; - float *llr, *bit; - float *llr_pdcch, *bit_pdcch; - float *I, *Q; - int num_pdcch_symbols=2; - int num_re = 4500; - int Qm = 2; - int coded_bits_per_codeword = num_re*Qm; - int symbol, first_symbol=2,nb_re; - int nb_rb_pdsch=50,nb_symb_sch=9; - float ymax=1; - float **chest_t_abs; - float Re,Im; - float *chest_f_abs; - float *freq; - static int overlay = 0; - /* - int frame = phy_vars_ue->proc.proc_rxtx[0].frame_rx; - int mcs = 0; - unsigned char harq_pid = 0; - */ - - /* - if (phy_vars_ue->dlsch[phy_vars_ue->current_thread_id[subframe]][eNB_id][0]!=NULL) { - harq_pid = phy_vars_ue->dlsch[phy_vars_ue->current_thread_id[subframe]][eNB_id][0]->current_harq_pid; - - if (harq_pid>=8) - return; - - mcs = phy_vars_ue->dlsch[phy_vars_ue->current_thread_id[subframe]][eNB_id][0]->harq_processes[harq_pid]->mcs; - - // Button 0 - if(!phy_vars_ue->dlsch[phy_vars_ue->current_thread_id[subframe]][eNB_id][0]->harq_processes[harq_pid]->dl_power_off) { - // we are in TM5 - fl_show_object(form->button_0); - } - } - - if (phy_vars_ue->pdcch_vars[phy_vars_ue->current_thread_id[subframe]][eNB_id]!=NULL) { - num_pdcch_symbols = phy_vars_ue->pdcch_vars[phy_vars_ue->current_thread_id[subframe]][eNB_id]->num_pdcch_symbols; - } - - // coded_bits_per_codeword = frame_parms->N_RB_DL*12*get_Qm(mcs)*(frame_parms->symbols_per_tti); - if (phy_vars_ue->dlsch[phy_vars_ue->current_thread_id[subframe]][eNB_id][0]!=NULL) { - coded_bits_per_codeword = get_G(frame_parms, - phy_vars_ue->dlsch[phy_vars_ue->current_thread_id[subframe]][eNB_id][0]->harq_processes[harq_pid]->nb_rb, - phy_vars_ue->dlsch[phy_vars_ue->current_thread_id[subframe]][eNB_id][0]->harq_processes[harq_pid]->rb_alloc_even, - get_Qm(mcs), - phy_vars_ue->dlsch[phy_vars_ue->current_thread_id[subframe]][eNB_id][0]->harq_processes[harq_pid]->Nl, - num_pdcch_symbols, - frame, - subframe, - beamforming_mode); - } else { - coded_bits_per_codeword = 0; //frame_parms->N_RB_DL*12*get_Qm(mcs)*(frame_parms->symbols_per_tti); - } - */ - I = (float*) calloc(frame_parms->ofdm_symbol_size*frame_parms->symbols_per_slot*2,sizeof(float)); - Q = (float*) calloc(frame_parms->ofdm_symbol_size*frame_parms->symbols_per_slot*2,sizeof(float)); - - chest_t_abs = (float**) malloc(nb_antennas_rx*sizeof(float*)); - - for (arx=0; arxofdm_symbol_size,sizeof(float)); - } - - chest_f_abs = (float*) calloc(frame_parms->ofdm_symbol_size,sizeof(float)); - freq = (float*) calloc(frame_parms->ofdm_symbol_size,sizeof(float)); - - llr = (float*) calloc(coded_bits_per_codeword,sizeof(float)); // init to zero - bit = malloc(coded_bits_per_codeword*sizeof(float)); - - llr_pdcch = (float*) calloc(12*frame_parms->N_RB_DL*num_pdcch_symbols*2,sizeof(float)); // init to zero - bit_pdcch = (float*) calloc(12*frame_parms->N_RB_DL*num_pdcch_symbols*2,sizeof(float)); - - rxsig_t = (int16_t**) phy_vars_ue->common_vars.rxdata; - rxsig_t_dB = calloc(nb_antennas_rx,sizeof(float*)); - for (arx=0; arxpbch_vars[eNB_id]->dl_ch_estimates_time; - chest_f = (int16_t**) phy_vars_ue->pbch_vars[eNB_id]->dl_ch_estimates; - - pbch_llr = (int16_t*) phy_vars_ue->pbch_vars[eNB_id]->llr; - pbch_comp = (int16_t*) phy_vars_ue->pbch_vars[eNB_id]->rxdataF_comp[0]; - - pdcch_llr = (int8_t*) phy_vars_ue->pdcch_vars[phy_vars_ue->current_thread_id[subframe]][eNB_id]->llr; - pdcch_comp = (int16_t*) phy_vars_ue->pdcch_vars[phy_vars_ue->current_thread_id[subframe]][eNB_id]->rxdataF_comp[0]; - pdsch_llr = (int16_t*) phy_vars_ue->pdsch_vars[phy_vars_ue->current_thread_id[subframe]][eNB_id]->llr[0]; // stream 0 - // pdsch_llr = (int16_t*) phy_vars_ue->lte_ue_pdsch_vars_SI[eNB_id]->llr[0]; // stream 0 - pdsch_comp = (int16_t*) phy_vars_ue->pdsch_vars[phy_vars_ue->current_thread_id[subframe]][eNB_id]->rxdataF_comp0[0]; - //pdsch_mag = (int16_t*) phy_vars_ue->pdsch_vars[phy_vars_ue->current_thread_id[subframe]][eNB_id]->dl_ch_mag0[0]; - - // Received signal in time domain of receive antenna 0 - if (rxsig_t != NULL) { - if (rxsig_t[0] != NULL) { - for (i=0; irxsig_t,time,rxsig_t_dB[0],samples_per_frame,"","",""); - } - - /* - for (arx=1; arxrxsig_t,arx,time,rxsig_t_dB[arx],FRAME_LENGTH_COMPLEX_SAMPLES,rx_antenna_colors[arx]); - } - } - */ - } - - if (phy_vars_ue->is_synchronized==0) { - for (ind=0;ind<3;ind++) { - /* - if (pss_corr_ue[ind]) { - for (i=0; ichest_t,time,corr,samples_per_frame,"","",""); - else - fl_add_xyplot_overlay(form->chest_t,ind,time,corr,samples_per_frame,rx_antenna_colors[ind]); - - overlay = 1; - } - */ - } - } - else { - - if (overlay) { //there was a previous overlay - fl_clear_xyplot(form->chest_t); - overlay = 0; - } - - // Channel Impulse Response - if (chest_t != NULL) { - ymax = 0; - - if (chest_t[0] !=NULL) { - for (i=0; i<(frame_parms->ofdm_symbol_size>>3); i++) { - chest_t_abs[0][i] = (float) (chest_t[0][2*i]*chest_t[0][2*i]+chest_t[0][2*i+1]*chest_t[0][2*i+1]); - time[i] = (float) i; - - if (chest_t_abs[0][i] > ymax) - ymax = chest_t_abs[0][i]; - } - - fl_set_xyplot_data(form->chest_t,time,chest_t_abs[0],(frame_parms->ofdm_symbol_size>>3),"","",""); - } - /* - for (arx=1; arxofdm_symbol_size>>3); i++) { - chest_t_abs[arx][i] = (float) (chest_t[arx][4*i]*chest_t[arx][4*i]+chest_t[arx][4*i+1]*chest_t[arx][4*i+1]); - - if (chest_t_abs[arx][i] > ymax) - ymax = chest_t_abs[arx][i]; - } - - fl_add_xyplot_overlay(form->chest_t,arx,time,chest_t_abs[arx],(frame_parms->ofdm_symbol_size>>3),rx_antenna_colors[arx]); - fl_set_xyplot_overlay_type(form->chest_t,arx,FL_DASHED_XYPLOT); - } - } - */ - // Avoid flickering effect - // fl_get_xyplot_ybounds(form->chest_t,&ymin,&ymax); // Does not always work... - fl_set_xyplot_ybounds(form->chest_t,0,(double) ymax); - } - } - - // Channel Frequency Response (includes 5 complex sample for filter) - if (chest_f != NULL) { - ind = 0; - - for (atx=0; atxofdm_symbol_size; k++) { - freq[ind] = (float)ind; - Re = (float)(chest_f[(atx<<1)+arx][6144+(2*k)]); - Im = (float)(chest_f[(atx<<1)+arx][6144+(2*k)+1]); - - chest_f_abs[ind] = (short)10*log10(1.0+((double)Re*Re + (double)Im*Im)); - ind++; - } - } - } - } - - // tx antenna 0 - //fl_set_xyplot_xbounds(form->chest_f,0,nb_antennas_rx*nb_antennas_tx*nsymb_ce); - //fl_set_xyplot_xtics(form->chest_f,nb_antennas_rx*nb_antennas_tx*frame_parms->symbols_per_tti,2); - // fl_set_xyplot_xtics(form->chest_f,nb_antennas_rx*nb_antennas_tx*2,2); - //fl_set_xyplot_xgrid(form->chest_f,FL_GRID_MAJOR); - fl_set_xyplot_data(form->chest_f,freq,chest_f_abs,frame_parms->ofdm_symbol_size,"","",""); - - /* - for (arx=1; arxchest_f,1,&freq[arx*nsymb_ce],&chest_f_abs[arx*nsymb_ce],nsymb_ce,rx_antenna_colors[arx]); - } - - // other tx antennas - if (nb_antennas_tx > 1) { - if (nb_antennas_rx > 1) { - for (atx=1; atxchest_f,(atx<<1)+arx,&freq[((atx<<1)+arx)*nsymb_ce],&chest_f_abs[((atx<<1)+arx)*nsymb_ce],nsymb_ce,rx_antenna_colors[arx]); - } - } - } else { // 1 rx antenna - atx=1; - arx=0; - fl_add_xyplot_overlay(form->chest_f,atx,&freq[atx*nsymb_ce],&chest_f_abs[atx*nsymb_ce],nsymb_ce,rx_antenna_colors[arx]); - } - } - */ - } - - // PBCH LLRs - if (pbch_llr != NULL) { - for (i=0; i<864; i++) { - llr_pbch[i] = (float) pbch_llr[i]; - bit_pbch[i] = (float) i; - } - - fl_set_xyplot_data(form->pbch_llr,bit_pbch,llr_pbch,864,"","",""); - } - - first_symbol=1; - - // PBCH I/Q of MF Output - if (pbch_comp!=NULL) { - for (symbol=first_symbol; symbol<(first_symbol+3); symbol++) { - if (symbol == 2 || symbol == 6) - nb_re = 72; - else - nb_re = 180; - for (i=0; ipbch_comp,I,Q,432,"","",""); - } - - // PDCCH LLRs - if (pdcch_llr != NULL) { - for (i=0; i<100; i++) { //12*frame_parms->N_RB_DL*2*num_pdcch_symbols - llr_pdcch[i] = (float) pdcch_llr[2*24*9 +i]; - bit_pdcch[i] = (float) i; - } - - fl_set_xyplot_data(form->pdcch_llr,bit_pdcch,llr_pdcch,12*frame_parms->N_RB_DL*num_pdcch_symbols,"","",""); - } - - // PDCCH I/Q of MF Output - if (pdcch_comp!=NULL) { - for (i=0; i<100; i++) { - I[i] = pdcch_comp[2*50*12+2*i]; - Q[i] = pdcch_comp[2*50*12+2*i+1]; - } - fl_set_xyplot_data(form->pdcch_comp,I,Q,12*frame_parms->N_RB_DL*num_pdcch_symbols,"","",""); - } - - // PDSCH LLRs - if (pdsch_llr != NULL) { - for (i=0; ipdsch_llr,0,coded_bits_per_codeword); - fl_set_xyplot_data(form->pdsch_llr,bit,llr,coded_bits_per_codeword,"","",""); - } - - first_symbol = 2; - ind = 0; - // PDSCH I/Q of MF Output - if (pdsch_comp!=NULL) { - for (symbol=0;symbolN_RB_DL*12+i) ]; - Q[ind] = pdsch_comp[2*((first_symbol+symbol)*frame_parms->N_RB_DL*12+i)+1]; - ind++; - } - } - - fl_set_xyplot_data(form->pdsch_comp,I,Q,nb_symb_sch*nb_rb_pdsch*12,"","",""); - } - /* - - // PDSCH Throughput - memmove( tput_time_ue[UE_id], &tput_time_ue[UE_id][1], (TPUT_WINDOW_LENGTH-1)*sizeof(float) ); - memmove( tput_ue[UE_id], &tput_ue[UE_id][1], (TPUT_WINDOW_LENGTH-1)*sizeof(float) ); - - tput_time_ue[UE_id][TPUT_WINDOW_LENGTH-1] = (float) frame; - tput_ue[UE_id][TPUT_WINDOW_LENGTH-1] = ((float) total_dlsch_bitrate)/1000.0; - - if (tput_ue[UE_id][TPUT_WINDOW_LENGTH-1] > tput_ue_max[UE_id]) { - tput_ue_max[UE_id] = tput_ue[UE_id][TPUT_WINDOW_LENGTH-1]; - } - - fl_set_xyplot_data(form->pdsch_tput,tput_time_ue[UE_id],tput_ue[UE_id],TPUT_WINDOW_LENGTH,"","",""); - - fl_set_xyplot_ybounds(form->pdsch_tput,0,tput_ue_max[UE_id]); - */ - - fl_check_forms(); - - free(time); - free(corr); - for (arx=0; arx graph->maxX || maxY > graph->maxY || minX < graph->minX || minY < graph->minY ) { + graph->maxX=max(graph->maxX,maxX); + graph->minX=min(graph->minX,minX); + graph->maxY=max(graph->maxY,maxY); + graph->minY=min(graph->minY,minY); + fl_set_xyplot_ybounds(graph->graph, graph->minY, graph->maxY); + fl_set_xyplot_xbounds(graph->graph, graph->minX, graph->maxX); + } +} + +static void oai_xygraph(OAIgraph_t *graph, float *x, float *y, int len, int layer, int NoAutoScale) { + if (layer==0) + fl_set_xyplot_data(graph->graph,x,y,len,"","",""); + else + fl_add_xyplot_overlay(graph->graph,layer,x,y,len,rx_antenna_colors[layer]); + + if ( NoAutoScale && graph->iteration%NoAutoScale == 0) { + float maxX=0, maxY=0, minX=0, minY=0; + + for (int k=0; kiteration++; +} + +static void genericLogPowerPerAntena(OAIgraph_t *graph, const int nb_ant, const scopeSample_t **data, const int len) { + float *values=malloc(len*sizeof(*values)); + float *time=malloc(len*sizeof(*time)); + + for (int ant=0; antcommon.rxdata) + return; + + NR_DL_FRAME_PARMS *frame_parms=&phy_vars_gnb->frame_parms; + genericLogPowerPerAntena(graph, frame_parms->nb_antennas_rx, + (const scopeSample_t **)phy_vars_ru->common.rxdata, + frame_parms->samples_per_frame); +} + +static void timeResponse (OAIgraph_t *graph, PHY_VARS_gNB *phy_vars_gnb, RU_t *phy_vars_ru, int nb_UEs) { + const int len=2*phy_vars_gnb->frame_parms.ofdm_symbol_size; + float values[len]; + float time[len]; + const int ant=0; // display antenna 0 for each UE + + for (int ue=0; uepusch_vars[ue]->ul_ch_estimates_time[ant]; + + if (data != NULL) { + for (int i=0; iframe_parms; + genericLogPowerPerAntena(graph, frame_parms->nb_antennas_rx, + (const scopeSample_t **)phy_vars_ru->common.rxdataF, + frame_parms->samples_per_slot_wCP); +} + +static void puschLLR (OAIgraph_t *graph, PHY_VARS_gNB *phy_vars_gnb, RU_t *phy_vars_ru, int nb_UEs) { + //int Qm = 2; + int coded_bits_per_codeword =3*8*6144+12; // (8*((3*8*6144)+12)); // frame_parms->N_RB_UL*12*Qm*frame_parms->symbols_per_tti; + float llr[coded_bits_per_codeword]; + float bit[coded_bits_per_codeword]; + + for (int ue=0; uepusch_vars[ue]->llr; + + if (pusch_llr) { + for (int i=0; iframe_parms; + int sz=frame_parms->N_RB_UL*12*frame_parms->symbols_per_slot; + float I[sz], Q[sz]; + + for (int ue=0; uepusch_vars[ue]->rxdataF_comp[0]; + + if (pusch_comp) { + for (int k=0; kpucch1ab_stats[UE_id]; + int32_t *pucch1_comp = (int32_t *) NULL; //phy_vars_gnb->pucch1_stats[UE_id]; + float I_pucch[10240],Q_pucch[10240],A_pucch[10240],B_pucch[10240],C_pucch[10240]; + + for (int ind=0; ind<10240; ind++) { + I_pucch[ind] = (float)pucch1ab_comp[2*(ind)]; + Q_pucch[ind] = (float)pucch1ab_comp[2*(ind)+1]; + A_pucch[ind] = pucch1_comp?(10*log10(pucch1_comp[ind])):0; + B_pucch[ind] = ind; + int32_t *pucch1_thres = (int32_t *) NULL; // phy_vars_gnb->pucch1_stats_thres[UE_id]; + C_pucch[ind] = pucch1_thres?(float)pucch1_thres[ind]:0; + } + + fl_set_xyplot_data(graph,I_pucch,Q_pucch,10240,"","",""); + fl_set_xyplot_data(graph,B_pucch,A_pucch,1024,"","",""); + fl_add_xyplot_overlay(graph,1,B_pucch,C_pucch,1024,FL_RED); + fl_set_xyplot_ybounds(graph,-5000,5000); + fl_set_xyplot_xbounds(graph,-5000,5000); + fl_set_xyplot_ybounds(graph,0,80); + } + */ +} + +static void pucchIQ (OAIgraph_t *graph, PHY_VARS_gNB *phy_vars_gnb, RU_t *phy_vars_ru, int nb_UEs) { +} + +static void puschThroughtput (OAIgraph_t *graph, PHY_VARS_gNB *phy_vars_gnb, RU_t *phy_vars_ru, int nb_UEs) { + // PUSCH Throughput + /* + memmove( tput_time_enb[UE_id], &tput_time_enb[UE_id][1], (TPUT_WINDOW_LENGTH-1)*sizeof(float) ); + memmove( tput_enb[UE_id], &tput_enb[UE_id][1], (TPUT_WINDOW_LENGTH-1)*sizeof(float) ); + tput_time_enb[UE_id][TPUT_WINDOW_LENGTH-1] = (float) 0; + // tput_enb[UE_id][TPUT_WINDOW_LENGTH-1] = ((float) total_dlsch_bitrate)/1000.0; + fl_set_xyplot_data(graph,tput_time_enb[UE_id],tput_enb[UE_id],TPUT_WINDOW_LENGTH,"","",""); + // fl_get_xyplot_ybounds(form->pusch_tput,&ymin,&ymax); + // fl_set_xyplot_ybounds(form->pusch_tput,0,ymax); + */ +} + +static OAI_phy_scope_t *create_phy_scope_gnb(void) { + FL_OBJECT *obj; + OAI_phy_scope_t *fdui = calloc(( sizeof *fdui ),1); + // Define form + fdui->phy_scope = fl_bgn_form( FL_NO_BOX, 800, 800 ); + // This the whole UI box + obj = fl_add_box( FL_BORDER_BOX, 0, 0, 800, 800, "" ); + fl_set_object_color( obj, FL_BLACK, FL_WHITE ); + int curY=0,x,y,w,h; + // Received signal + fdui->graph[0] = gNBcommonGraph( timeSignal, FL_NORMAL_XYPLOT, 0, curY, 400, 100, + "Received Signal (Time-Domain, dB)", FL_RED ); + // Time-domain channel response + fdui->graph[1] = gNBcommonGraph( timeResponse, FL_NORMAL_XYPLOT, 410, curY, 400, 100, + "SRS Frequency Response (samples, abs)", FL_RED ); + fl_get_object_bbox(fdui->graph[0].graph,&x, &y,&w, &h); + curY+=h; + // Frequency-domain channel response + fdui->graph[2] = gNBcommonGraph( frequencyResponse, FL_NORMAL_XYPLOT, 0, curY, 800, 100, + "Channel Frequency Response (RE, dB)", FL_RED ); + fl_get_object_bbox(fdui->graph[2].graph,&x, &y,&w, &h); + curY+=h; + // LLR of PUSCH + fdui->graph[3] = gNBcommonGraph( puschLLR, FL_POINTS_XYPLOT, 0, curY, 500, 200, + "PUSCH Log-Likelihood Ratios (LLR, mag)", FL_YELLOW ); + // I/Q PUSCH comp + fdui->graph[4] = gNBcommonGraph( puschIQ, FL_POINTS_XYPLOT, 500, curY, 300, 200, + "PUSCH I/Q of MF Output", FL_YELLOW ); + fl_get_object_bbox(fdui->graph[3].graph,&x, &y,&w, &h); + curY+=h; + // I/Q PUCCH comp (format 1) + fdui->graph[5] = gNBcommonGraph( pucchEnergy, FL_POINTS_XYPLOT, 0, curY, 300, 100, + "PUCCH1 Energy (SR)", FL_YELLOW ); + // fl_set_xyplot_xgrid( fdui->pusch_llr,FL_GRID_MAJOR); + // I/Q PUCCH comp (fromat 1a/b) + fdui->graph[6] = gNBcommonGraph( pucchIQ, FL_POINTS_XYPLOT, 500, curY, 300, 100, + "PUCCH I/Q of MF Output", FL_YELLOW ); + fl_get_object_bbox(fdui->graph[6].graph,&x, &y,&w, &h); + curY+=h; + // Throughput on PUSCH + fdui->graph[7] = gNBcommonGraph( puschThroughtput, FL_NORMAL_XYPLOT, 0, curY, 500, 100, + "PUSCH Throughput [frame]/[kbit/s]", FL_WHITE ); + fdui->graph[8].graph=NULL; + fl_end_form( ); + fdui->phy_scope->fdui = fdui; + fl_show_form (fdui->phy_scope, FL_PLACE_HOTSPOT, FL_FULLBORDER, "LTE UL SCOPE gNB"); + return fdui; +} + +static const int scope_enb_num_ue = 1; +void phy_scope_gNB(OAI_phy_scope_t *form, + PHY_VARS_gNB *phy_vars_gnb, + RU_t *phy_vars_ru, + int UE_id) { + static OAI_phy_scope_t *remeberForm=NULL; + + if (form==NULL) + form=remeberForm; + else + remeberForm=form; + + if (form==NULL) return; + + int i=0; + + while (form->graph[i].graph) { + form->graph[i].gNBfunct(form->graph+i, phy_vars_gnb, phy_vars_ru, UE_id); + i++; + } + + fl_check_forms(); +} + +static void *scope_thread_gNB(void *arg) { + scopeParms_t *p=(scopeParms_t *) arg; + //# ifdef ENABLE_XFORMS_WRITE_STATS + // FILE *gNB_stats = fopen("gNB_stats.txt", "w"); + //#endif + size_t stksize=0; + pthread_attr_t atr; + pthread_attr_init(&atr); + pthread_attr_getstacksize(&atr, &stksize); + pthread_attr_setstacksize(&atr,32*1024*1024 ); + sleep(3); // no clean interthread barriers + fl_initialize (p->argc, p->argv, NULL, 0, 0); + int nb_ue=min(NUMBER_OF_UE_MAX, scope_enb_num_ue); + OAI_phy_scope_t *form_gnb = create_phy_scope_gnb(); + + while (!oai_exit) { + phy_scope_gNB(form_gnb, p->gNB, p->ru, nb_ue); + usleep(99*1000); + } + + return NULL; +} + +void gNBinitScope(scopeParms_t *p) { + static scopeParms_t parms; + memcpy(&parms,p,sizeof(parms)); + pthread_t forms_thread; + threadCreate(&forms_thread, scope_thread_gNB, &parms, "scope", -1, OAI_PRIORITY_RT_LOW); +} + +static void ueTimeResponse (OAIgraph_t *graph, PHY_VARS_NR_UE *phy_vars_ue, int eNB_id, int UE_id) { + // Received signal in time domain of receive antenna 0 + genericLogPowerPerAntena(graph, phy_vars_ue->frame_parms.nb_antennas_rx, + (const scopeSample_t **) phy_vars_ue->common_vars.rxdata, + phy_vars_ue->frame_parms.samples_per_frame); +} + +static void ueChannelResponse (OAIgraph_t *graph, PHY_VARS_NR_UE *phy_vars_ue, int eNB_id, int UE_id) { + // Channel Impulse Response + genericPowerPerAntena(graph, phy_vars_ue->frame_parms.nb_antennas_rx, + (const scopeSample_t **) phy_vars_ue->pbch_vars[eNB_id]->dl_ch_estimates_time, + phy_vars_ue->frame_parms.ofdm_symbol_size>>3); +} + +static void uePbchFrequencyResp (OAIgraph_t *graph, PHY_VARS_NR_UE *phy_vars_ue, int eNB_id, int UE_id) { + // Channel Frequency Response (includes 5 complex sample for filter) + if (!phy_vars_ue->pbch_vars[eNB_id]->dl_ch_estimates) + return; + + NR_DL_FRAME_PARMS *frame_parms = &phy_vars_ue->frame_parms; + uint8_t nb_antennas_rx = frame_parms->nb_antennas_rx; + uint8_t nb_antennas_tx = frame_parms->nb_antenna_ports_gNB; + scopeSample_t **chest_f = (scopeSample_t **) phy_vars_ue->pbch_vars[eNB_id]->dl_ch_estimates; + int ind = 0; + float chest_f_abs[frame_parms->ofdm_symbol_size]; + float freq[frame_parms->ofdm_symbol_size]; + + for (int atx=0; atxofdm_symbol_size; k++) { + freq[ind] = (float)ind; + chest_f_abs[ind] = (short)10*log10(1.0+SquaredNorm(chest_f[(atx<<1)+arx][6144+k])); + ind++; + } + } + } + } + + // tx antenna 0 + //fl_set_xyplot_xbounds(form->chest_f,0,nb_antennas_rx*nb_antennas_tx*nsymb_ce); + //fl_set_xyplot_xtics(form->chest_f,nb_antennas_rx*nb_antennas_tx*frame_parms->symbols_per_tti,2); + // fl_set_xyplot_xtics(form->chest_f,nb_antennas_rx*nb_antennas_tx*2,2); + //fl_set_xyplot_xgrid(form->chest_f,FL_GRID_MAJOR); + oai_xygraph(graph,freq,chest_f_abs,frame_parms->ofdm_symbol_size,0,10); +} + +static void uePbchLLR (OAIgraph_t *graph, PHY_VARS_NR_UE *phy_vars_ue, int eNB_id, int UE_id) { + // PBCH LLRs + if ( !phy_vars_ue->pbch_vars[eNB_id]->llr) + return; + + int16_t *pbch_llr = (int16_t *) phy_vars_ue->pbch_vars[eNB_id]->llr; + float llr_pbch[864], bit_pbch[864]; + + for (int i=0; i<864; i++) { + llr_pbch[i] = (float) pbch_llr[i]; + bit_pbch[i] = (float) i; + } + + oai_xygraph(graph,bit_pbch,llr_pbch,864,0,10); +} + +static void uePbchIQ (OAIgraph_t *graph, PHY_VARS_NR_UE *phy_vars_ue, int eNB_id, int UE_id) { + // PBCH I/Q of MF Output + if (!phy_vars_ue->pbch_vars[eNB_id]->rxdataF_comp[0]) + return; + + scopeSample_t *pbch_comp = (scopeSample_t *) phy_vars_ue->pbch_vars[eNB_id]->rxdataF_comp[0]; + localBuff(I,180*3); + localBuff(Q,180*3); + int first_symbol=1; + int base=0; + + for (int symbol=first_symbol; symbol<(first_symbol+3); symbol++) { + int nb_re; + + if (symbol == 2 || symbol == 6) + nb_re = 72; + else + nb_re = 180; + + AssertFatal(base+nb_re<180*3,""); + + for (int i=0; ipdcch_vars[0][eNB_id]->llr) + return; + + int num_re = 4*273*12; // 12*frame_parms->N_RB_DL*num_pdcch_symbols + int Qm = 2; + int coded_bits_per_codeword = num_re*Qm; + localBuff(llr,coded_bits_per_codeword*RX_NB_TH_MAX); + localBuff(bit,coded_bits_per_codeword*RX_NB_TH_MAX); + int base=0; + + for (int thr=0 ; thr < RX_NB_TH_MAX ; thr ++ ) { + int16_t *pdcch_llr = (int16_t *) phy_vars_ue->pdcch_vars[thr][eNB_id]->llr; + + for (int i=0; ipdcch_vars[0][eNB_id]->rxdataF_comp[0]) + return; + + int nb=4*273*12; // 12*frame_parms->N_RB_DL*num_pdcch_symbols + localBuff(I,nb*RX_NB_TH_MAX); + localBuff(Q,nb*RX_NB_TH_MAX); + int base=0; + + for (int thr=0 ; thr < RX_NB_TH_MAX ; thr ++ ) { + scopeSample_t *pdcch_comp = (scopeSample_t *) phy_vars_ue->pdcch_vars[thr][eNB_id]->rxdataF_comp[0]; + + for (int i=0; i< nb; i++) { + I[base+i] = pdcch_comp[i].r; + Q[base+i] = pdcch_comp[i].i; + } + + base+=nb; + } + + oai_xygraph(graph,I,Q,base,0,10); +} + +static void uePdschLLR (OAIgraph_t *graph, PHY_VARS_NR_UE *phy_vars_ue, int eNB_id, int UE_id) { + // PDSCH LLRs + if (!phy_vars_ue->pdsch_vars[0][eNB_id]->llr[0]) + return; + + int num_re = 4500; + int Qm = 2; + int coded_bits_per_codeword = num_re*Qm; + localBuff(llr,coded_bits_per_codeword*RX_NB_TH_MAX); + localBuff(bit,coded_bits_per_codeword*RX_NB_TH_MAX); + int base=0; + + for (int thr=0 ; thr < RX_NB_TH_MAX ; thr ++ ) { + int16_t *pdsch_llr = (int16_t *) phy_vars_ue->pdsch_vars[thr][eNB_id]->llr[0]; // stream 0 + + for (int i=0; ipdsch_llr,0,coded_bits_per_codeword); + oai_xygraph(graph,bit,llr,base,0,10); +} + +static void uePdschIQ (OAIgraph_t *graph, PHY_VARS_NR_UE *phy_vars_ue, int eNB_id, int UE_id) { + // PDSCH I/Q of MF Output + if (!phy_vars_ue->pdsch_vars[0][eNB_id]->rxdataF_comp0[0]) + return; + + NR_DL_FRAME_PARMS *frame_parms = &phy_vars_ue->frame_parms; + int sz=7*2*frame_parms->N_RB_DL*12; // size of the malloced buffer + localBuff(I,sz*RX_NB_TH_MAX); + localBuff(Q,sz*RX_NB_TH_MAX); + int base=0; + + for (int thr=0 ; thr < RX_NB_TH_MAX ; thr ++ ) { + scopeSample_t *pdsch_comp = (scopeSample_t *) phy_vars_ue->pdsch_vars[thr][eNB_id]->rxdataF_comp0[0]; + + for (int s=0; s tput_ue_max[UE_id]) { + tput_ue_max[UE_id] = tput_ue[UE_id][TPUT_WINDOW_LENGTH-1]; + } + + fl_set_xyplot_data(form->pdsch_tput,tput_time_ue[UE_id],tput_ue[UE_id],TPUT_WINDOW_LENGTH,"","",""); + + fl_set_xyplot_ybounds(form->pdsch_tput,0,tput_ue_max[UE_id]); + */ +} + +static OAI_phy_scope_t *create_phy_scope_nrue( int ID ) { + FL_OBJECT *obj; + OAI_phy_scope_t *fdui = calloc(( sizeof *fdui ),1); + // Define form + fdui->phy_scope = fl_bgn_form( FL_NO_BOX, 800, 900 ); + // This the whole UI box + obj = fl_add_box( FL_BORDER_BOX, 0, 0, 800, 900, "" ); + fl_set_object_color( obj, FL_BLACK, FL_BLACK ); + int curY=0,x,y,w,h; + // Received signal + fdui->graph[0] = nrUEcommonGraph(ueTimeResponse, + FL_NORMAL_XYPLOT, 0, curY, 400, 100, "Received Signal (Time-Domain, dB)", FL_RED ); + // Time-domain channel response + fdui->graph[1] = nrUEcommonGraph(ueChannelResponse, + FL_NORMAL_XYPLOT, 400, curY, 400, 100, "Channel Impulse Response (samples, abs)", FL_RED ); + fl_get_object_bbox(fdui->graph[0].graph,&x, &y,&w, &h); + curY+=h; + // Frequency-domain channel response + fdui->graph[2] = nrUEcommonGraph(uePbchFrequencyResp, + FL_IMPULSE_XYPLOT, 0, curY, 800, 100, "Channel Frequency data (RE, dB)", FL_RED ); + fl_get_object_bbox(fdui->graph[2].graph,&x, &y,&w, &h); + curY+=h; + // LLR of PBCH + fdui->graph[3] = nrUEcommonGraph(uePbchLLR, + FL_POINTS_XYPLOT, 0, curY, 500, 100, "PBCH Log-Likelihood Ratios (LLR, mag)", FL_GREEN ); + fl_set_xyplot_xgrid(fdui->graph[3].graph,FL_GRID_MAJOR); + // I/Q PBCH comp + fdui->graph[4] = nrUEcommonGraph(uePbchIQ, + FL_POINTS_XYPLOT, 500, curY, 300, 100, "PBCH I/Q of MF Output", FL_GREEN ); + fl_get_object_bbox(fdui->graph[3].graph,&x, &y,&w, &h); + curY+=h; + // LLR of PDCCH + fdui->graph[5] = nrUEcommonGraph(uePcchLLR, + FL_POINTS_XYPLOT, 0, curY, 500, 100, "PDCCH Log-Likelihood Ratios (LLR, mag)", FL_CYAN ); + // I/Q PDCCH comp + fdui->graph[6] = nrUEcommonGraph(uePcchIQ, + FL_POINTS_XYPLOT, 500, curY, 300, 100, "PDCCH I/Q of MF Output", FL_CYAN ); + fl_get_object_bbox(fdui->graph[5].graph,&x, &y,&w, &h); + curY+=h; + // LLR of PDSCH + fdui->graph[7] = nrUEcommonGraph(uePdschLLR, + FL_POINTS_XYPLOT, 0, curY, 500, 200, "PDSCH Log-Likelihood Ratios (LLR, mag)", FL_YELLOW ); + // I/Q PDSCH comp + fdui->graph[8] = nrUEcommonGraph(uePdschIQ, + FL_POINTS_XYPLOT, 500, curY, 300, 200, "PDSCH I/Q of MF Output", FL_YELLOW ); + fl_get_object_bbox(fdui->graph[8].graph,&x, &y,&w, &h); + curY+=h; + // Throughput on PDSCH + fdui->graph[9] = nrUEcommonGraph(uePdschThroughput, + FL_NORMAL_XYPLOT, 0, curY, 500, 100, "PDSCH Throughput [frame]/[kbit/s]", FL_WHITE ); + fdui->graph[10].graph=NULL; + // Generic UE Button +#if 0 + fdui->button_0 = fl_add_button( FL_PUSH_BUTTON, 540, 720, 240, 40, "" ); + fl_set_object_lalign(fdui->button_0, FL_ALIGN_CENTER ); + //openair_daq_vars.use_ia_receiver = 0; + fl_set_button(fdui->button_0,0); + fl_set_object_label(fdui->button_0, "IA Receiver OFF"); + fl_set_object_color(fdui->button_0, FL_RED, FL_RED); + fl_set_object_callback(fdui->button_0, ia_receiver_on_off, 0 ); + fl_hide_object(fdui->button_0); +#endif + fl_end_form( ); + fdui->phy_scope->fdui = fdui; + char buf[100]; + sprintf(buf,"NR DL SCOPE UE %d", ID); + fl_show_form (fdui->phy_scope, FL_PLACE_HOTSPOT, FL_FULLBORDER, buf); + return fdui; +} + +void phy_scope_nrUE(OAI_phy_scope_t *form, + PHY_VARS_NR_UE *phy_vars_ue, + int eNB_id, + int UE_id) { + static OAI_phy_scope_t *remeberForm=NULL; + + if (form==NULL) + form=remeberForm; + else + remeberForm=form; + + if (form==NULL) + return; + + int i=0; + + while (form->graph[i].graph) { + form->graph[i].nrUEfunct(form->graph+i, phy_vars_ue, eNB_id, UE_id); + i++; + } + + fl_check_forms(); +} + + +static void *nrUEscopeThread(void *arg) { + PHY_VARS_NR_UE *ue=(PHY_VARS_NR_UE *)arg; + size_t stksize; + pthread_attr_t atr; + pthread_attr_getstacksize(&atr, &stksize); + pthread_attr_setstacksize(&atr,32*1024*1024 ); + int fl_argc=1; + char *name="5G-UE-scope"; + fl_initialize (&fl_argc, &name, NULL, 0, 0); + OAI_phy_scope_t *form_nrue=create_phy_scope_nrue(0); + + while (!oai_exit) { + phy_scope_nrUE(form_nrue, + ue, + 0,0); + usleep(99*1000); + } + + pthread_exit((void *)arg); +} + +void nrUEinitScope(PHY_VARS_NR_UE *ue) { + pthread_t forms_thread; + threadCreate(&forms_thread, nrUEscopeThread, ue, "scope", -1, OAI_PRIORITY_RT_LOW); +} + + +void nrscope_autoinit(void *dataptr) { + AssertFatal( (IS_SOFTMODEM_GNB_BIT||IS_SOFTMODEM_5GUE_BIT),"Scope cannot find NRUE or GNB context"); + + if (IS_SOFTMODEM_GNB_BIT) + gNBinitScope(dataptr); + else + nrUEinitScope(dataptr); +} +// Kept to put back the functionality soon +#if 0 //FD_stats_form *form_stats=NULL,*form_stats_l2=NULL; //char title[255]; -unsigned char scope_enb_num_ue = 1; //static pthread_t forms_thread; //xforms - - -void reset_stats_gNB(FL_OBJECT *button, - long arg) -{ +static void reset_stats_gNB(FL_OBJECT *button, + long arg) { int i,k; //PHY_VARS_gNB *phy_vars_gNB = RC.gNB[0][0]; for (i=0; idlsch[i][0]->Mlimit; j++) { - phy_vars_gNB->UE_stats[i].dlsch_NAK[k][j]=0; - phy_vars_gNB->UE_stats[i].dlsch_ACK[k][j]=0; - phy_vars_gNB->UE_stats[i].dlsch_trials[k][j]=0; - } - phy_vars_gNB->UE_stats[i].dlsch_l2_errors[k]=0; - phy_vars_gNB->UE_stats[i].ulsch_errors[k]=0; - phy_vars_gNB->UE_stats[i].ulsch_consecutive_errors=0; - phy_vars_gNB->UE_stats[i].dlsch_sliding_cnt=0; - phy_vars_gNB->UE_stats[i].dlsch_NAK_round0=0; - phy_vars_gNB->UE_stats[i].dlsch_mcs_offset=0;*/ - } - } -} - - -static void *scope_thread_gNB(void *arg) { - int UE_id; - int ue_cnt=0; -//# ifdef ENABLE_XFORMS_WRITE_STATS -// FILE *gNB_stats = fopen("gNB_stats.txt", "w"); -//#endif - - while (!oai_exit) { - ue_cnt=0; - - for(UE_id=0; UE_idUE_stats[i].dlsch_NAK[k][j]=0; + phy_vars_gNB->UE_stats[i].dlsch_ACK[k][j]=0; + phy_vars_gNB->UE_stats[i].dlsch_trials[k][j]=0; } + phy_vars_gNB->UE_stats[i].dlsch_l2_errors[k]=0; + phy_vars_gNB->UE_stats[i].ulsch_errors[k]=0; + phy_vars_gNB->UE_stats[i].ulsch_consecutive_errors=0; + phy_vars_gNB->UE_stats[i].dlsch_sliding_cnt=0; + phy_vars_gNB->UE_stats[i].dlsch_NAK_round0=0; + phy_vars_gNB->UE_stats[i].dlsch_mcs_offset=0;*/ } - sleep(1); } - -// printf("%s",stats_buffer); -/*#ifdef ENABLE_XFORMS_WRITE_STATS - - if (eNB_stats) { - rewind (gNB_stats); - fwrite (stats_buffer, 1, len, gNB_stats); - fclose (gNB_stats); - } - -#endif - pthread_exit((void *)arg); -}*/ - - return NULL; } -FD_stats_form * create_form_stats_form( void ) { + + +static FD_stats_form *create_form_stats_form(int ID) { FL_OBJECT *obj; - FD_stats_form *fdui = fl_malloc( sizeof *fdui ); + FD_stats_form *fdui = calloc(( sizeof *fdui ),1); fdui->vdata = fdui->cdata = NULL; fdui->ldata = 0; fdui->stats_form = fl_bgn_form( FL_NO_BOX, 1115, 900 ); @@ -964,24 +819,8 @@ FD_stats_form * create_form_stats_form( void ) { fdui->stats_form->fdui = fdui; return fdui; } +#endif + + -void startScope(scopeParms_t * p) { - //FD_stats_form *form_stats=NULL,*form_stats_l2=NULL; - char title[255]; - fl_initialize (p->argc, p->argv, NULL, 0, 0); - /* - form_stats_l2 = create_form_stats_form(); - fl_show_form (form_stats_l2->stats_form, FL_PLACE_HOTSPOT, FL_FULLBORDER, "l2 stats"); - form_stats = create_form_stats_form(); - fl_show_form (form_stats->stats_form, FL_PLACE_HOTSPOT, FL_FULLBORDER, "stats"); - */ - - for(int UE_id=0; UE_idphy_scope_gnb, FL_PLACE_HOTSPOT, FL_FULLBORDER, title); - } // UE_id - pthread_t forms_thread; - threadCreate(&forms_thread, scope_thread_gNB, NULL, "scope", -1, OAI_PRIORITY_RT_LOW); -} diff --git a/openair1/PHY/TOOLS/nr_phy_scope.h b/openair1/PHY/TOOLS/nr_phy_scope.h index aaee08a554..84b9e66908 100644 --- a/openair1/PHY/TOOLS/nr_phy_scope.h +++ b/openair1/PHY/TOOLS/nr_phy_scope.h @@ -26,71 +26,20 @@ #include #include #include -#include #include "common/ran_context.h" #include -#include #include "PHY/defs_gNB.h" //#include "PHY/defs_nrUE.h" //#include "PHY/impl_defs_top.h" #include "PHY/defs_nr_UE.h" -/* Forms and Objects */ -typedef struct { - FL_FORM * phy_scope_gnb; - FL_OBJECT * rxsig_t; - FL_OBJECT * chest_f; - FL_OBJECT * chest_t; - FL_OBJECT * pusch_comp; - FL_OBJECT * pucch_comp; - FL_OBJECT * pucch_comp1; - FL_OBJECT * pusch_llr; - FL_OBJECT * pusch_tput; - FL_OBJECT * button_0; -} FD_phy_scope_gnb; - -typedef struct { - FL_FORM * phy_scope_nrue; - FL_OBJECT * rxsig_t; - FL_OBJECT * chest_f; - FL_OBJECT * chest_t; - FL_OBJECT * pbch_comp; - FL_OBJECT * pbch_llr; - FL_OBJECT * pdcch_comp; - FL_OBJECT * pdcch_llr; - FL_OBJECT * pdsch_comp; - FL_OBJECT * pdsch_llr; - FL_OBJECT * pdsch_comp1; - FL_OBJECT * pdsch_llr1; - FL_OBJECT * pdsch_tput; - FL_OBJECT * button_0; -} FD_phy_scope_nrue; - typedef struct { int *argc; char **argv; + RU_t *ru; + PHY_VARS_gNB *gNB; } scopeParms_t; -extern unsigned char scope_enb_num_ue; -FD_phy_scope_gnb * create_phy_scope_gnb( void ); -FD_phy_scope_nrue * create_phy_scope_nrue( void ); - - -void phy_scope_gNB(FD_phy_scope_gnb *form, - PHY_VARS_gNB *phy_vars_gnb, - RU_t *phy_vars_ru, - int UE_id); - - -void phy_scope_nrUE(FD_phy_scope_nrue *form, - PHY_VARS_NR_UE *phy_vars_ue, - int eNB_id, - int UE_id, - uint8_t subframe); - - -void startScope(scopeParms_t * p); - extern RAN_CONTEXT_t RC; #endif diff --git a/openair1/PHY/TOOLS/oai_dfts.c b/openair1/PHY/TOOLS/oai_dfts.c index bd516cd1e0..25244eeff5 100644 --- a/openair1/PHY/TOOLS/oai_dfts.c +++ b/openair1/PHY/TOOLS/oai_dfts.c @@ -5353,6 +5353,607 @@ void idft8192(int16_t *x,int16_t *y,unsigned char scale) #endif +int16_t tw16384[3*2*4096]; + +#ifndef __AVX2__ +void dft16384(int16_t *x,int16_t *y,unsigned char scale) +{ + + simd_q15_t xtmp[4096],ytmp[4096],*tw16384_128p=(simd_q15_t *)tw16384,*x128=(simd_q15_t *)x,*y128=(simd_q15_t *)y,*y128p=(simd_q15_t *)y; + simd_q15_t *ytmpp = &ytmp[0]; + int i,j; + + for (i=0,j=0; i<4096; i+=4,j++) { + transpose16_ooff(x128+i,xtmp+j,1024); + } + + + dft4096((int16_t*)(xtmp),(int16_t*)(ytmp),1); + dft4096((int16_t*)(xtmp+1024),(int16_t*)(ytmp+1024),1); + dft4096((int16_t*)(xtmp+2048),(int16_t*)(ytmp+2048),1); + dft4096((int16_t*)(xtmp+3072),(int16_t*)(ytmp+3072),1); + + for (i=0; i<1024; i++) { + bfly4(ytmpp,ytmpp+1024,ytmpp+2048,ytmpp+3072, + y128p,y128p+1024,y128p+2048,y128p+3072, + tw16384_128p,tw16384_128p+1024,tw16384_128p+2048); + tw16384_128p++; + y128p++; + ytmpp++; + } + + if (scale>0) { + + for (i=0; i<256; i++) { + y128[0] = shiftright_int16(y128[0],1); + y128[1] = shiftright_int16(y128[1],1); + y128[2] = shiftright_int16(y128[2],1); + y128[3] = shiftright_int16(y128[3],1); + y128[4] = shiftright_int16(y128[4],1); + y128[5] = shiftright_int16(y128[5],1); + y128[6] = shiftright_int16(y128[6],1); + y128[7] = shiftright_int16(y128[7],1); + y128[8] = shiftright_int16(y128[8],1); + y128[9] = shiftright_int16(y128[9],1); + y128[10] = shiftright_int16(y128[10],1); + y128[11] = shiftright_int16(y128[11],1); + y128[12] = shiftright_int16(y128[12],1); + y128[13] = shiftright_int16(y128[13],1); + y128[14] = shiftright_int16(y128[14],1); + y128[15] = shiftright_int16(y128[15],1); + + y128+=16; + } + + } + + _mm_empty(); + _m_empty(); + +} + + + +void idft16384(int16_t *x,int16_t *y,unsigned char scale) +{ + + simd_q15_t xtmp[4096],ytmp[4096],*tw16384_128p=(simd_q15_t *)tw16384,*x128=(simd_q15_t *)x,*y128=(simd_q15_t *)y,*y128p=(simd_q15_t *)y; + simd_q15_t *ytmpp = &ytmp[0]; + int i,j; + + for (i=0,j=0; i<4096; i+=4,j++) { + transpose16_ooff(x128+i,xtmp+j,1024); + } + + + idft4096((int16_t*)(xtmp),(int16_t*)(ytmp),1); + idft4096((int16_t*)(xtmp+1024),(int16_t*)(ytmp+1024),1); + idft4096((int16_t*)(xtmp+2048),(int16_t*)(ytmp+2048),1); + idft4096((int16_t*)(xtmp+3072),(int16_t*)(ytmp+3072),1); + + for (i=0; i<1024; i++) { + ibfly4(ytmpp,ytmpp+1024,ytmpp+2048,ytmpp+3072, + y128p,y128p+1024,y128p+2048,y128p+3072, + tw16384_128p,tw16384_128p+1024,tw16384_128p+2048); + tw16384_128p++; + y128p++; + ytmpp++; + } + + if (scale>0) { + + for (i=0; i<256; i++) { + y128[0] = shiftright_int16(y128[0],scale); + y128[1] = shiftright_int16(y128[1],scale); + y128[2] = shiftright_int16(y128[2],scale); + y128[3] = shiftright_int16(y128[3],scale); + y128[4] = shiftright_int16(y128[4],scale); + y128[5] = shiftright_int16(y128[5],scale); + y128[6] = shiftright_int16(y128[6],scale); + y128[7] = shiftright_int16(y128[7],scale); + y128[8] = shiftright_int16(y128[8],scale); + y128[9] = shiftright_int16(y128[9],scale); + y128[10] = shiftright_int16(y128[10],scale); + y128[11] = shiftright_int16(y128[11],scale); + y128[12] = shiftright_int16(y128[12],scale); + y128[13] = shiftright_int16(y128[13],scale); + y128[14] = shiftright_int16(y128[14],scale); + y128[15] = shiftright_int16(y128[15],scale); + + y128+=16; + } + + } + + _mm_empty(); + _m_empty(); + +} + +#else //__AVX2__ +void dft16384(int16_t *x,int16_t *y,unsigned char scale) +{ + + simd256_q15_t xtmp[2048],ytmp[2048],*tw16384_256p=(simd256_q15_t *)tw16384,*x256=(simd256_q15_t *)x,*y256=(simd256_q15_t *)y,*y256p=(simd256_q15_t *)y; + simd256_q15_t *ytmpp = &ytmp[0]; + int i,j; + + for (i=0,j=0; i<2048; i+=4,j++) { + transpose16_ooff_simd256(x256+i,xtmp+j,512); + } + + + dft4096((int16_t*)(xtmp),(int16_t*)(ytmp),1); + dft4096((int16_t*)(xtmp+512),(int16_t*)(ytmp+512),1); + dft4096((int16_t*)(xtmp+1024),(int16_t*)(ytmp+1024),1); + dft4096((int16_t*)(xtmp+1536),(int16_t*)(ytmp+1536),1); + + for (i=0; i<512; i++) { + bfly4_256(ytmpp,ytmpp+512,ytmpp+1024,ytmpp+1536, + y256p,y256p+512,y256p+1024,y256p+1536, + tw16384_256p,tw16384_256p+512,tw16384_256p+1024); + tw16384_256p++; + y256p++; + ytmpp++; + } + + if (scale>0) { + + for (i=0; i<128; i++) { + y256[0] = shiftright_int16_simd256(y256[0],1); + y256[1] = shiftright_int16_simd256(y256[1],1); + y256[2] = shiftright_int16_simd256(y256[2],1); + y256[3] = shiftright_int16_simd256(y256[3],1); + y256[4] = shiftright_int16_simd256(y256[4],1); + y256[5] = shiftright_int16_simd256(y256[5],1); + y256[6] = shiftright_int16_simd256(y256[6],1); + y256[7] = shiftright_int16_simd256(y256[7],1); + y256[8] = shiftright_int16_simd256(y256[8],1); + y256[9] = shiftright_int16_simd256(y256[9],1); + y256[10] = shiftright_int16_simd256(y256[10],1); + y256[11] = shiftright_int16_simd256(y256[11],1); + y256[12] = shiftright_int16_simd256(y256[12],1); + y256[13] = shiftright_int16_simd256(y256[13],1); + y256[14] = shiftright_int16_simd256(y256[14],1); + y256[15] = shiftright_int16_simd256(y256[15],1); + + y256+=16; + } + + } + + _mm_empty(); + _m_empty(); + +} + +void idft16384(int16_t *x,int16_t *y,unsigned char scale) +{ + + simd256_q15_t xtmp[2048],ytmp[2048],*tw16384_256p=(simd256_q15_t *)tw16384,*x256=(simd256_q15_t *)x,*y256=(simd256_q15_t *)y,*y256p=(simd256_q15_t *)y; + simd256_q15_t *ytmpp = &ytmp[0]; + int i,j; + + for (i=0,j=0; i<2048; i+=4,j++) { + transpose16_ooff_simd256(x256+i,xtmp+j,512); + } + + + idft4096((int16_t*)(xtmp),(int16_t*)(ytmp),1); + idft4096((int16_t*)(xtmp+512),(int16_t*)(ytmp+512),1); + idft4096((int16_t*)(xtmp+1024),(int16_t*)(ytmp+1024),1); + idft4096((int16_t*)(xtmp+1536),(int16_t*)(ytmp+1536),1); + + for (i=0; i<512; i++) { + ibfly4_256(ytmpp,ytmpp+512,ytmpp+1024,ytmpp+1536, + y256p,y256p+512,y256p+1024,y256p+1536, + tw16384_256p,tw16384_256p+512,tw16384_256p+1024); + tw16384_256p++; + y256p++; + ytmpp++; + } + + if (scale>0) { + + for (i=0; i<128; i++) { + y256[0] = shiftright_int16_simd256(y256[0],1); + y256[1] = shiftright_int16_simd256(y256[1],1); + y256[2] = shiftright_int16_simd256(y256[2],1); + y256[3] = shiftright_int16_simd256(y256[3],1); + y256[4] = shiftright_int16_simd256(y256[4],1); + y256[5] = shiftright_int16_simd256(y256[5],1); + y256[6] = shiftright_int16_simd256(y256[6],1); + y256[7] = shiftright_int16_simd256(y256[7],1); + y256[8] = shiftright_int16_simd256(y256[8],1); + y256[9] = shiftright_int16_simd256(y256[9],1); + y256[10] = shiftright_int16_simd256(y256[10],1); + y256[11] = shiftright_int16_simd256(y256[11],1); + y256[12] = shiftright_int16_simd256(y256[12],1); + y256[13] = shiftright_int16_simd256(y256[13],1); + y256[14] = shiftright_int16_simd256(y256[14],1); + y256[15] = shiftright_int16_simd256(y256[15],1); + + y256+=16; + } + + } + + _mm_empty(); + _m_empty(); + +} + +#endif //__AVX2__ + +int16_t tw32768[2*16384] __attribute__((aligned(32))); + +#ifndef __AVX2__ +void dft32768(int16_t *x,int16_t *y,unsigned char scale) +{ + + simdshort_q15_t xtmp[16384],*xtmpp,*x64 = (simdshort_q15_t *)x; + simd_q15_t ytmp[8192],*tw32768_128p=(simd_q15_t *)tw32768,*y128=(simd_q15_t *)y,*y128p=(simd_q15_t *)y; + simd_q15_t *ytmpp = &ytmp[0]; + int i; + simd_q15_t ONE_OVER_SQRT2_Q15_128 = set1_int16(ONE_OVER_SQRT2_Q15); + + xtmpp = xtmp; + + for (i=0; i<256; i++) { + transpose4_ooff(x64 ,xtmpp,8192); + transpose4_ooff(x64+2,xtmpp+1,8192); + transpose4_ooff(x64+4,xtmpp+2,8192); + transpose4_ooff(x64+6,xtmpp+3,8192); + transpose4_ooff(x64+8,xtmpp+4,8192); + transpose4_ooff(x64+10,xtmpp+5,8192); + transpose4_ooff(x64+12,xtmpp+6,8192); + transpose4_ooff(x64+14,xtmpp+7,8192); + transpose4_ooff(x64+16,xtmpp+8,8192); + transpose4_ooff(x64+18,xtmpp+9,8192); + transpose4_ooff(x64+20,xtmpp+10,8192); + transpose4_ooff(x64+22,xtmpp+11,8192); + transpose4_ooff(x64+24,xtmpp+12,8192); + transpose4_ooff(x64+26,xtmpp+13,8192); + transpose4_ooff(x64+28,xtmpp+14,8192); + transpose4_ooff(x64+30,xtmpp+15,8192); + transpose4_ooff(x64+32,xtmpp+16,8192); + transpose4_ooff(x64+34,xtmpp+17,8192); + transpose4_ooff(x64+36,xtmpp+18,8192); + transpose4_ooff(x64+38,xtmpp+19,8192); + transpose4_ooff(x64+40,xtmpp+20,8192); + transpose4_ooff(x64+42,xtmpp+21,8192); + transpose4_ooff(x64+44,xtmpp+22,8192); + transpose4_ooff(x64+46,xtmpp+23,8192); + transpose4_ooff(x64+48,xtmpp+24,8192); + transpose4_ooff(x64+50,xtmpp+25,8192); + transpose4_ooff(x64+52,xtmpp+26,8192); + transpose4_ooff(x64+54,xtmpp+27,8192); + transpose4_ooff(x64+56,xtmpp+28,8192); + transpose4_ooff(x64+58,xtmpp+29,8192); + transpose4_ooff(x64+60,xtmpp+30,8192); + transpose4_ooff(x64+62,xtmpp+31,8192); + x64+=64; + xtmpp+=32; + } + + dft16384((int16_t*)(xtmp),(int16_t*)ytmp,1); + dft16384((int16_t*)(xtmp+8192),(int16_t*)(ytmp+4096),1); + + + for (i=0; i<4096; i++) { + bfly2(ytmpp,ytmpp+4096, + y128p,y128p+4096, + tw32768_128p); + tw32768_128p++; + y128p++; + ytmpp++; + } + + if (scale>0) { + y128p = y128; + + for (i=0; i<512; i++) { + y128p[0] = mulhi_int16(y128p[0],ONE_OVER_SQRT2_Q15_128); + y128p[1] = mulhi_int16(y128p[1],ONE_OVER_SQRT2_Q15_128); + y128p[2] = mulhi_int16(y128p[2],ONE_OVER_SQRT2_Q15_128); + y128p[3] = mulhi_int16(y128p[3],ONE_OVER_SQRT2_Q15_128); + y128p[4] = mulhi_int16(y128p[4],ONE_OVER_SQRT2_Q15_128); + y128p[5] = mulhi_int16(y128p[5],ONE_OVER_SQRT2_Q15_128); + y128p[6] = mulhi_int16(y128p[6],ONE_OVER_SQRT2_Q15_128); + y128p[7] = mulhi_int16(y128p[7],ONE_OVER_SQRT2_Q15_128); + y128p[8] = mulhi_int16(y128p[8],ONE_OVER_SQRT2_Q15_128); + y128p[9] = mulhi_int16(y128p[9],ONE_OVER_SQRT2_Q15_128); + y128p[10] = mulhi_int16(y128p[10],ONE_OVER_SQRT2_Q15_128); + y128p[11] = mulhi_int16(y128p[11],ONE_OVER_SQRT2_Q15_128); + y128p[12] = mulhi_int16(y128p[12],ONE_OVER_SQRT2_Q15_128); + y128p[13] = mulhi_int16(y128p[13],ONE_OVER_SQRT2_Q15_128); + y128p[14] = mulhi_int16(y128p[14],ONE_OVER_SQRT2_Q15_128); + y128p[15] = mulhi_int16(y128p[15],ONE_OVER_SQRT2_Q15_128); + y128p+=16; + } + } + + _mm_empty(); + _m_empty(); + +} + +void idft32768(int16_t *x,int16_t *y,unsigned char scale) +{ + + simdshort_q15_t xtmp[16384],*xtmpp,*x64 = (simdshort_q15_t *)x; + simd_q15_t ytmp[8192],*tw32768_128p=(simd_q15_t *)tw32768,*y128=(simd_q15_t *)y,*y128p=(simd_q15_t *)y; + simd_q15_t *ytmpp = &ytmp[0]; + int i; + simd_q15_t ONE_OVER_SQRT2_Q15_128 = set1_int16(ONE_OVER_SQRT2_Q15); + + xtmpp = xtmp; + + for (i=0; i<256; i++) { + transpose4_ooff(x64 ,xtmpp,8192); + transpose4_ooff(x64+2,xtmpp+1,8192); + transpose4_ooff(x64+4,xtmpp+2,8192); + transpose4_ooff(x64+6,xtmpp+3,8192); + transpose4_ooff(x64+8,xtmpp+4,8192); + transpose4_ooff(x64+10,xtmpp+5,8192); + transpose4_ooff(x64+12,xtmpp+6,8192); + transpose4_ooff(x64+14,xtmpp+7,8192); + transpose4_ooff(x64+16,xtmpp+8,8192); + transpose4_ooff(x64+18,xtmpp+9,8192); + transpose4_ooff(x64+20,xtmpp+10,8192); + transpose4_ooff(x64+22,xtmpp+11,8192); + transpose4_ooff(x64+24,xtmpp+12,8192); + transpose4_ooff(x64+26,xtmpp+13,8192); + transpose4_ooff(x64+28,xtmpp+14,8192); + transpose4_ooff(x64+30,xtmpp+15,8192); + transpose4_ooff(x64+32,xtmpp+16,8192); + transpose4_ooff(x64+34,xtmpp+17,8192); + transpose4_ooff(x64+36,xtmpp+18,8192); + transpose4_ooff(x64+38,xtmpp+19,8192); + transpose4_ooff(x64+40,xtmpp+20,8192); + transpose4_ooff(x64+42,xtmpp+21,8192); + transpose4_ooff(x64+44,xtmpp+22,8192); + transpose4_ooff(x64+46,xtmpp+23,8192); + transpose4_ooff(x64+48,xtmpp+24,8192); + transpose4_ooff(x64+50,xtmpp+25,8192); + transpose4_ooff(x64+52,xtmpp+26,8192); + transpose4_ooff(x64+54,xtmpp+27,8192); + transpose4_ooff(x64+56,xtmpp+28,8192); + transpose4_ooff(x64+58,xtmpp+29,8192); + transpose4_ooff(x64+60,xtmpp+30,8192); + transpose4_ooff(x64+62,xtmpp+31,8192); + x64+=64; + xtmpp+=32; + } + + idft16384((int16_t*)(xtmp),(int16_t*)ytmp,1); + idft16384((int16_t*)(xtmp+8192),(int16_t*)(ytmp+4096),1); + + + for (i=0; i<4096; i++) { + ibfly2(ytmpp,ytmpp+4096, + y128p,y128p+4096, + tw32768_128p); + tw32768_128p++; + y128p++; + ytmpp++; + } + + if (scale>0) { + y128p = y128; + + for (i=0; i<512; i++) { + y128p[0] = mulhi_int16(y128p[0],ONE_OVER_SQRT2_Q15_128); + y128p[1] = mulhi_int16(y128p[1],ONE_OVER_SQRT2_Q15_128); + y128p[2] = mulhi_int16(y128p[2],ONE_OVER_SQRT2_Q15_128); + y128p[3] = mulhi_int16(y128p[3],ONE_OVER_SQRT2_Q15_128); + y128p[4] = mulhi_int16(y128p[4],ONE_OVER_SQRT2_Q15_128); + y128p[5] = mulhi_int16(y128p[5],ONE_OVER_SQRT2_Q15_128); + y128p[6] = mulhi_int16(y128p[6],ONE_OVER_SQRT2_Q15_128); + y128p[7] = mulhi_int16(y128p[7],ONE_OVER_SQRT2_Q15_128); + y128p[8] = mulhi_int16(y128p[8],ONE_OVER_SQRT2_Q15_128); + y128p[9] = mulhi_int16(y128p[9],ONE_OVER_SQRT2_Q15_128); + y128p[10] = mulhi_int16(y128p[10],ONE_OVER_SQRT2_Q15_128); + y128p[11] = mulhi_int16(y128p[11],ONE_OVER_SQRT2_Q15_128); + y128p[12] = mulhi_int16(y128p[12],ONE_OVER_SQRT2_Q15_128); + y128p[13] = mulhi_int16(y128p[13],ONE_OVER_SQRT2_Q15_128); + y128p[14] = mulhi_int16(y128p[14],ONE_OVER_SQRT2_Q15_128); + y128p[15] = mulhi_int16(y128p[15],ONE_OVER_SQRT2_Q15_128); + y128p+=16; + } + } + + _mm_empty(); + _m_empty(); + +} + +#else // __AVX2__ +void dft32768(int16_t *x,int16_t *y,unsigned char scale) +{ + + simd256_q15_t xtmp[4096],*xtmpp,*x256 = (simd256_q15_t *)x; + simd256_q15_t ytmp[4096],*tw32768_256p=(simd256_q15_t *)tw32768,*y256=(simd256_q15_t *)y,*y256p=(simd256_q15_t *)y; + + simd256_q15_t *ytmpp = &ytmp[0]; + int i; + simd256_q15_t ONE_OVER_SQRT2_Q15_128 = set1_int16_simd256(ONE_OVER_SQRT2_Q15); + + xtmpp = xtmp; + + for (i=0; i<256; i++) { + transpose4_ooff_simd256(x256 ,xtmpp,2048); + transpose4_ooff_simd256(x256+2,xtmpp+1,2048); + transpose4_ooff_simd256(x256+4,xtmpp+2,2048); + transpose4_ooff_simd256(x256+6,xtmpp+3,2048); + transpose4_ooff_simd256(x256+8,xtmpp+4,2048); + transpose4_ooff_simd256(x256+10,xtmpp+5,2048); + transpose4_ooff_simd256(x256+12,xtmpp+6,2048); + transpose4_ooff_simd256(x256+14,xtmpp+7,2048); + transpose4_ooff_simd256(x256+16,xtmpp+8,2048); + transpose4_ooff_simd256(x256+18,xtmpp+9,2048); + transpose4_ooff_simd256(x256+20,xtmpp+10,2048); + transpose4_ooff_simd256(x256+22,xtmpp+11,2048); + transpose4_ooff_simd256(x256+24,xtmpp+12,2048); + transpose4_ooff_simd256(x256+26,xtmpp+13,2048); + transpose4_ooff_simd256(x256+28,xtmpp+14,2048); + transpose4_ooff_simd256(x256+30,xtmpp+15,2048); + transpose4_ooff_simd256(x256+32,xtmpp+16,2048); + transpose4_ooff_simd256(x256+34,xtmpp+17,2048); + transpose4_ooff_simd256(x256+36,xtmpp+18,2048); + transpose4_ooff_simd256(x256+38,xtmpp+19,2048); + transpose4_ooff_simd256(x256+40,xtmpp+20,2048); + transpose4_ooff_simd256(x256+42,xtmpp+21,2048); + transpose4_ooff_simd256(x256+44,xtmpp+22,2048); + transpose4_ooff_simd256(x256+46,xtmpp+23,2048); + transpose4_ooff_simd256(x256+48,xtmpp+24,2048); + transpose4_ooff_simd256(x256+50,xtmpp+25,2048); + transpose4_ooff_simd256(x256+52,xtmpp+26,2048); + transpose4_ooff_simd256(x256+54,xtmpp+27,2048); + transpose4_ooff_simd256(x256+56,xtmpp+28,2048); + transpose4_ooff_simd256(x256+58,xtmpp+29,2048); + transpose4_ooff_simd256(x256+60,xtmpp+30,2048); + transpose4_ooff_simd256(x256+62,xtmpp+31,2048); + x256+=64; + xtmpp+=32; + } + + dft16384((int16_t*)(xtmp),(int16_t*)ytmp,1); + dft16384((int16_t*)(xtmp+2048),(int16_t*)(ytmp+2048),1); + + + for (i=0; i<2048; i++) { + bfly2_256(ytmpp,ytmpp+2048, + y256p,y256p+2048, + tw32768_256p); + tw32768_256p++; + y256p++; + ytmpp++; + } + + if (scale>0) { + y256p = y256; + + for (i=0; i<64; i++) { + y256p[0] = mulhi_int16_simd256(y256p[0],ONE_OVER_SQRT2_Q15_128); + y256p[1] = mulhi_int16_simd256(y256p[1],ONE_OVER_SQRT2_Q15_128); + y256p[2] = mulhi_int16_simd256(y256p[2],ONE_OVER_SQRT2_Q15_128); + y256p[3] = mulhi_int16_simd256(y256p[3],ONE_OVER_SQRT2_Q15_128); + y256p[4] = mulhi_int16_simd256(y256p[4],ONE_OVER_SQRT2_Q15_128); + y256p[5] = mulhi_int16_simd256(y256p[5],ONE_OVER_SQRT2_Q15_128); + y256p[6] = mulhi_int16_simd256(y256p[6],ONE_OVER_SQRT2_Q15_128); + y256p[7] = mulhi_int16_simd256(y256p[7],ONE_OVER_SQRT2_Q15_128); + y256p[8] = mulhi_int16_simd256(y256p[8],ONE_OVER_SQRT2_Q15_128); + y256p[9] = mulhi_int16_simd256(y256p[9],ONE_OVER_SQRT2_Q15_128); + y256p[10] = mulhi_int16_simd256(y256p[10],ONE_OVER_SQRT2_Q15_128); + y256p[11] = mulhi_int16_simd256(y256p[11],ONE_OVER_SQRT2_Q15_128); + y256p[12] = mulhi_int16_simd256(y256p[12],ONE_OVER_SQRT2_Q15_128); + y256p[13] = mulhi_int16_simd256(y256p[13],ONE_OVER_SQRT2_Q15_128); + y256p[14] = mulhi_int16_simd256(y256p[14],ONE_OVER_SQRT2_Q15_128); + y256p[15] = mulhi_int16_simd256(y256p[15],ONE_OVER_SQRT2_Q15_128); + y256p+=16; + } + } + + _mm_empty(); + _m_empty(); + +} + +void idft32768(int16_t *x,int16_t *y,unsigned char scale) +{ + + simd256_q15_t xtmp[4096],*xtmpp,*x256 = (simd256_q15_t *)x; + simd256_q15_t ytmp[4096],*tw32768_256p=(simd256_q15_t *)tw32768,*y256=(simd256_q15_t *)y,*y256p=(simd256_q15_t *)y; + simd256_q15_t *ytmpp = &ytmp[0]; + int i; + simd256_q15_t ONE_OVER_SQRT2_Q15_128 = set1_int16_simd256(ONE_OVER_SQRT2_Q15); + + xtmpp = xtmp; + + for (i=0; i<64; i++) { + transpose4_ooff_simd256(x256 ,xtmpp,2048); + transpose4_ooff_simd256(x256+2,xtmpp+1,2048); + transpose4_ooff_simd256(x256+4,xtmpp+2,2048); + transpose4_ooff_simd256(x256+6,xtmpp+3,2048); + transpose4_ooff_simd256(x256+8,xtmpp+4,2048); + transpose4_ooff_simd256(x256+10,xtmpp+5,2048); + transpose4_ooff_simd256(x256+12,xtmpp+6,2048); + transpose4_ooff_simd256(x256+14,xtmpp+7,2048); + transpose4_ooff_simd256(x256+16,xtmpp+8,2048); + transpose4_ooff_simd256(x256+18,xtmpp+9,2048); + transpose4_ooff_simd256(x256+20,xtmpp+10,2048); + transpose4_ooff_simd256(x256+22,xtmpp+11,2048); + transpose4_ooff_simd256(x256+24,xtmpp+12,2048); + transpose4_ooff_simd256(x256+26,xtmpp+13,2048); + transpose4_ooff_simd256(x256+28,xtmpp+14,2048); + transpose4_ooff_simd256(x256+30,xtmpp+15,2048); + transpose4_ooff_simd256(x256+32,xtmpp+16,2048); + transpose4_ooff_simd256(x256+34,xtmpp+17,2048); + transpose4_ooff_simd256(x256+36,xtmpp+18,2048); + transpose4_ooff_simd256(x256+38,xtmpp+19,2048); + transpose4_ooff_simd256(x256+40,xtmpp+20,2048); + transpose4_ooff_simd256(x256+42,xtmpp+21,2048); + transpose4_ooff_simd256(x256+44,xtmpp+22,2048); + transpose4_ooff_simd256(x256+46,xtmpp+23,2048); + transpose4_ooff_simd256(x256+48,xtmpp+24,2048); + transpose4_ooff_simd256(x256+50,xtmpp+25,2048); + transpose4_ooff_simd256(x256+52,xtmpp+26,2048); + transpose4_ooff_simd256(x256+54,xtmpp+27,2048); + transpose4_ooff_simd256(x256+56,xtmpp+28,2048); + transpose4_ooff_simd256(x256+58,xtmpp+29,2048); + transpose4_ooff_simd256(x256+60,xtmpp+30,2048); + transpose4_ooff_simd256(x256+62,xtmpp+31,2048); + x256+=64; + xtmpp+=32; + } + + idft16384((int16_t*)(xtmp),(int16_t*)ytmp,1); + idft16384((int16_t*)(xtmp+2048),(int16_t*)(ytmp+2048),1); + + + for (i=0; i<2048; i++) { + ibfly2_256(ytmpp,ytmpp+2048, + y256p,y256p+2048, + tw32768_256p); + tw32768_256p++; + y256p++; + ytmpp++; + } + + if (scale>0) { + y256p = y256; + + for (i=0; i<256; i++) { + y256p[0] = mulhi_int16_simd256(y256p[0],ONE_OVER_SQRT2_Q15_128); + y256p[1] = mulhi_int16_simd256(y256p[1],ONE_OVER_SQRT2_Q15_128); + y256p[2] = mulhi_int16_simd256(y256p[2],ONE_OVER_SQRT2_Q15_128); + y256p[3] = mulhi_int16_simd256(y256p[3],ONE_OVER_SQRT2_Q15_128); + y256p[4] = mulhi_int16_simd256(y256p[4],ONE_OVER_SQRT2_Q15_128); + y256p[5] = mulhi_int16_simd256(y256p[5],ONE_OVER_SQRT2_Q15_128); + y256p[6] = mulhi_int16_simd256(y256p[6],ONE_OVER_SQRT2_Q15_128); + y256p[7] = mulhi_int16_simd256(y256p[7],ONE_OVER_SQRT2_Q15_128); + y256p[8] = mulhi_int16_simd256(y256p[8],ONE_OVER_SQRT2_Q15_128); + y256p[9] = mulhi_int16_simd256(y256p[9],ONE_OVER_SQRT2_Q15_128); + y256p[10] = mulhi_int16_simd256(y256p[10],ONE_OVER_SQRT2_Q15_128); + y256p[11] = mulhi_int16_simd256(y256p[11],ONE_OVER_SQRT2_Q15_128); + y256p[12] = mulhi_int16_simd256(y256p[12],ONE_OVER_SQRT2_Q15_128); + y256p[13] = mulhi_int16_simd256(y256p[13],ONE_OVER_SQRT2_Q15_128); + y256p[14] = mulhi_int16_simd256(y256p[14],ONE_OVER_SQRT2_Q15_128); + y256p[15] = mulhi_int16_simd256(y256p[15],ONE_OVER_SQRT2_Q15_128); + y256p+=16; + } + } + + _mm_empty(); + _m_empty(); + +} + + +#endif + + int16_t twa1536[1024],twb1536[1024]; // 512 x 3 @@ -6061,28 +6662,214 @@ void idft24576(int16_t *input, int16_t *output,unsigned char scale) } int16_t twa36864[24576] __attribute__((aligned(32))); -int16_t twb36884[24576] __attribute__((aligned(32))); +int16_t twb36864[24576] __attribute__((aligned(32))); + // 12288 x 3 void dft36864(int16_t *input, int16_t *output,uint8_t scale) { - AssertFatal(1==0,"Need to do this ..\n"); + int i,i2,j; + uint32_t tmp[3][12288] __attribute__((aligned(32))); + uint32_t tmpo[3][12288] __attribute__((aligned(32))); + simd_q15_t *y128p=(simd_q15_t*)output; + simd_q15_t ONE_OVER_SQRT3_Q15_128 = set1_int16(ONE_OVER_SQRT3_Q15); + + for (i=0,j=0; i<12288; i++) { + tmp[0][i] = ((uint32_t *)input)[j++]; + tmp[1][i] = ((uint32_t *)input)[j++]; + tmp[2][i] = ((uint32_t *)input)[j++]; + } + + dft12288((int16_t*)(tmp[0]),(int16_t*)(tmpo[0]),1); + dft12288((int16_t*)(tmp[1]),(int16_t*)(tmpo[1]),1); + dft12288((int16_t*)(tmp[2]),(int16_t*)(tmpo[2]),1); + + if (LOG_DUMPFLAG(DEBUG_DFT)) { + LOG_M("dft36864out0.m","o0",tmpo[0],12288,1,1); + LOG_M("dft36864out1.m","o1",tmpo[1],12288,1,1); + LOG_M("dft36864out2.m","o2",tmpo[2],12288,1,1); + } + + for (i=0,i2=0; i<24576; i+=8,i2+=4) { + bfly3((simd_q15_t*)(&tmpo[0][i2]),(simd_q15_t*)(&tmpo[1][i2]),(simd_q15_t*)(&tmpo[2][i2]), + (simd_q15_t*)(output+i),(simd_q15_t*)(output+24576+i),(simd_q15_t*)(output+49152+i), + (simd_q15_t*)(twa36864+i),(simd_q15_t*)(twb36864+i)); + } + + if (scale==1) { + for (i=0; i<576; i++) { + y128p[0] = mulhi_int16(y128p[0],ONE_OVER_SQRT3_Q15_128); + y128p[1] = mulhi_int16(y128p[1],ONE_OVER_SQRT3_Q15_128); + y128p[2] = mulhi_int16(y128p[2],ONE_OVER_SQRT3_Q15_128); + y128p[3] = mulhi_int16(y128p[3],ONE_OVER_SQRT3_Q15_128); + y128p[4] = mulhi_int16(y128p[4],ONE_OVER_SQRT3_Q15_128); + y128p[5] = mulhi_int16(y128p[5],ONE_OVER_SQRT3_Q15_128); + y128p[6] = mulhi_int16(y128p[6],ONE_OVER_SQRT3_Q15_128); + y128p[7] = mulhi_int16(y128p[7],ONE_OVER_SQRT3_Q15_128); + y128p[8] = mulhi_int16(y128p[8],ONE_OVER_SQRT3_Q15_128); + y128p[9] = mulhi_int16(y128p[9],ONE_OVER_SQRT3_Q15_128); + y128p[10] = mulhi_int16(y128p[10],ONE_OVER_SQRT3_Q15_128); + y128p[11] = mulhi_int16(y128p[11],ONE_OVER_SQRT3_Q15_128); + y128p[12] = mulhi_int16(y128p[12],ONE_OVER_SQRT3_Q15_128); + y128p[13] = mulhi_int16(y128p[13],ONE_OVER_SQRT3_Q15_128); + y128p[14] = mulhi_int16(y128p[14],ONE_OVER_SQRT3_Q15_128); + y128p[15] = mulhi_int16(y128p[15],ONE_OVER_SQRT3_Q15_128); + y128p+=16; + } + } + _mm_empty(); + _m_empty(); + if (LOG_DUMPFLAG(DEBUG_DFT)) { + LOG_M("out.m","out",output,36864,1,1); + } } + void idft36864(int16_t *input, int16_t *output,uint8_t scale) { - AssertFatal(1==0,"Need to do this ..\n"); + int i,i2,j; + uint32_t tmp[3][12288] __attribute__((aligned(32))); + uint32_t tmpo[3][12288] __attribute__((aligned(32))); + simd_q15_t *y128p=(simd_q15_t*)output; + simd_q15_t ONE_OVER_SQRT3_Q15_128 = set1_int16(ONE_OVER_SQRT3_Q15); + + for (i=0,j=0; i<12288; i++) { + tmp[0][i] = ((uint32_t *)input)[j++]; + tmp[1][i] = ((uint32_t *)input)[j++]; + tmp[2][i] = ((uint32_t *)input)[j++]; + } + + idft12288((int16_t*)(tmp[0]),(int16_t*)(tmpo[0]),1); + idft12288((int16_t*)(tmp[1]),(int16_t*)(tmpo[1]),1); + idft12288((int16_t*)(tmp[2]),(int16_t*)(tmpo[2]),1); + + for (i=0,i2=0; i<24576; i+=8,i2+=4) { + ibfly3((simd_q15_t*)(&tmpo[0][i2]),(simd_q15_t*)(&tmpo[1][i2]),((simd_q15_t*)&tmpo[2][i2]), + (simd_q15_t*)(output+i),(simd_q15_t*)(output+24576+i),(simd_q15_t*)(output+49152+i), + (simd_q15_t*)(twa36864+i),(simd_q15_t*)(twb36864+i)); + } + if (scale==1) { + for (i=0; i<576; i++) { + y128p[0] = mulhi_int16(y128p[0],ONE_OVER_SQRT3_Q15_128); + y128p[1] = mulhi_int16(y128p[1],ONE_OVER_SQRT3_Q15_128); + y128p[2] = mulhi_int16(y128p[2],ONE_OVER_SQRT3_Q15_128); + y128p[3] = mulhi_int16(y128p[3],ONE_OVER_SQRT3_Q15_128); + y128p[4] = mulhi_int16(y128p[4],ONE_OVER_SQRT3_Q15_128); + y128p[5] = mulhi_int16(y128p[5],ONE_OVER_SQRT3_Q15_128); + y128p[6] = mulhi_int16(y128p[6],ONE_OVER_SQRT3_Q15_128); + y128p[7] = mulhi_int16(y128p[7],ONE_OVER_SQRT3_Q15_128); + y128p[8] = mulhi_int16(y128p[8],ONE_OVER_SQRT3_Q15_128); + y128p[9] = mulhi_int16(y128p[9],ONE_OVER_SQRT3_Q15_128); + y128p[10] = mulhi_int16(y128p[10],ONE_OVER_SQRT3_Q15_128); + y128p[11] = mulhi_int16(y128p[11],ONE_OVER_SQRT3_Q15_128); + y128p[12] = mulhi_int16(y128p[12],ONE_OVER_SQRT3_Q15_128); + y128p[13] = mulhi_int16(y128p[13],ONE_OVER_SQRT3_Q15_128); + y128p[14] = mulhi_int16(y128p[14],ONE_OVER_SQRT3_Q15_128); + y128p[15] = mulhi_int16(y128p[15],ONE_OVER_SQRT3_Q15_128); + y128p+=16; + } + } + _mm_empty(); + _m_empty(); } int16_t twa49152[32768] __attribute__((aligned(32))); int16_t twb49152[32768] __attribute__((aligned(32))); + // 16384 x 3 void dft49152(int16_t *input, int16_t *output,uint8_t scale) { - AssertFatal(1==0,"Need to do this ..\n"); + int i,i2,j; + uint32_t tmp[3][16384] __attribute__((aligned(32))); + uint32_t tmpo[3][16384] __attribute__((aligned(32))); + simd_q15_t *y128p=(simd_q15_t*)output; + simd_q15_t ONE_OVER_SQRT3_Q15_128 = set1_int16(ONE_OVER_SQRT3_Q15); + + for (i=0,j=0; i<16384; i++) { + tmp[0][i] = ((uint32_t *)input)[j++]; + tmp[1][i] = ((uint32_t *)input)[j++]; + tmp[2][i] = ((uint32_t *)input)[j++]; + } + + dft16384((int16_t*)(tmp[0]),(int16_t*)(tmpo[0]),1); + dft16384((int16_t*)(tmp[1]),(int16_t*)(tmpo[1]),1); + dft16384((int16_t*)(tmp[2]),(int16_t*)(tmpo[2]),1); + + for (i=0,i2=0; i<32768; i+=8,i2+=4) { + bfly3((simd_q15_t*)(&tmpo[0][i2]),(simd_q15_t*)(&tmpo[1][i2]),((simd_q15_t*)&tmpo[2][i2]), + (simd_q15_t*)(output+i),(simd_q15_t*)(output+32768+i),(simd_q15_t*)(output+65536+i), + (simd_q15_t*)(twa49152+i),(simd_q15_t*)(twb49152+i)); + } + if (scale==1) { + for (i=0; i<768; i++) { + y128p[0] = mulhi_int16(y128p[0],ONE_OVER_SQRT3_Q15_128); + y128p[1] = mulhi_int16(y128p[1],ONE_OVER_SQRT3_Q15_128); + y128p[2] = mulhi_int16(y128p[2],ONE_OVER_SQRT3_Q15_128); + y128p[3] = mulhi_int16(y128p[3],ONE_OVER_SQRT3_Q15_128); + y128p[4] = mulhi_int16(y128p[4],ONE_OVER_SQRT3_Q15_128); + y128p[5] = mulhi_int16(y128p[5],ONE_OVER_SQRT3_Q15_128); + y128p[6] = mulhi_int16(y128p[6],ONE_OVER_SQRT3_Q15_128); + y128p[7] = mulhi_int16(y128p[7],ONE_OVER_SQRT3_Q15_128); + y128p[8] = mulhi_int16(y128p[8],ONE_OVER_SQRT3_Q15_128); + y128p[9] = mulhi_int16(y128p[9],ONE_OVER_SQRT3_Q15_128); + y128p[10] = mulhi_int16(y128p[10],ONE_OVER_SQRT3_Q15_128); + y128p[11] = mulhi_int16(y128p[11],ONE_OVER_SQRT3_Q15_128); + y128p[12] = mulhi_int16(y128p[12],ONE_OVER_SQRT3_Q15_128); + y128p[13] = mulhi_int16(y128p[13],ONE_OVER_SQRT3_Q15_128); + y128p[14] = mulhi_int16(y128p[14],ONE_OVER_SQRT3_Q15_128); + y128p[15] = mulhi_int16(y128p[15],ONE_OVER_SQRT3_Q15_128); + y128p+=16; + } + } + _mm_empty(); + _m_empty(); + } void idft49152(int16_t *input, int16_t *output,uint8_t scale) { - AssertFatal(1==0,"Need to do this ..\n"); + int i,i2,j; + uint32_t tmp[3][16384] __attribute__((aligned(32))); + uint32_t tmpo[3][16384] __attribute__((aligned(32))); + simd_q15_t *y128p=(simd_q15_t*)output; + simd_q15_t ONE_OVER_SQRT3_Q15_128 = set1_int16(ONE_OVER_SQRT3_Q15); + + for (i=0,j=0; i<16384; i++) { + tmp[0][i] = ((uint32_t *)input)[j++]; + tmp[1][i] = ((uint32_t *)input)[j++]; + tmp[2][i] = ((uint32_t *)input)[j++]; + } + + idft16384((int16_t*)(tmp[0]),(int16_t*)(tmpo[0]),1); + idft16384((int16_t*)(tmp[1]),(int16_t*)(tmpo[1]),1); + idft16384((int16_t*)(tmp[2]),(int16_t*)(tmpo[2]),1); + + for (i=0,i2=0; i<32768; i+=8,i2+=4) { + ibfly3((simd_q15_t*)(&tmpo[0][i2]),(simd_q15_t*)(&tmpo[1][i2]),((simd_q15_t*)&tmpo[2][i2]), + (simd_q15_t*)(output+i),(simd_q15_t*)(output+32768+i),(simd_q15_t*)(output+65536+i), + (simd_q15_t*)(twa49152+i),(simd_q15_t*)(twb49152+i)); + } + if (scale==1) { + for (i=0; i<768; i++) { + y128p[0] = mulhi_int16(y128p[0],ONE_OVER_SQRT3_Q15_128); + y128p[1] = mulhi_int16(y128p[1],ONE_OVER_SQRT3_Q15_128); + y128p[2] = mulhi_int16(y128p[2],ONE_OVER_SQRT3_Q15_128); + y128p[3] = mulhi_int16(y128p[3],ONE_OVER_SQRT3_Q15_128); + y128p[4] = mulhi_int16(y128p[4],ONE_OVER_SQRT3_Q15_128); + y128p[5] = mulhi_int16(y128p[5],ONE_OVER_SQRT3_Q15_128); + y128p[6] = mulhi_int16(y128p[6],ONE_OVER_SQRT3_Q15_128); + y128p[7] = mulhi_int16(y128p[7],ONE_OVER_SQRT3_Q15_128); + y128p[8] = mulhi_int16(y128p[8],ONE_OVER_SQRT3_Q15_128); + y128p[9] = mulhi_int16(y128p[9],ONE_OVER_SQRT3_Q15_128); + y128p[10] = mulhi_int16(y128p[10],ONE_OVER_SQRT3_Q15_128); + y128p[11] = mulhi_int16(y128p[11],ONE_OVER_SQRT3_Q15_128); + y128p[12] = mulhi_int16(y128p[12],ONE_OVER_SQRT3_Q15_128); + y128p[13] = mulhi_int16(y128p[13],ONE_OVER_SQRT3_Q15_128); + y128p[14] = mulhi_int16(y128p[14],ONE_OVER_SQRT3_Q15_128); + y128p[15] = mulhi_int16(y128p[15],ONE_OVER_SQRT3_Q15_128); + y128p+=16; + } + } + _mm_empty(); + _m_empty(); } int16_t twa73728[49152] __attribute__((aligned(32))); @@ -6099,17 +6886,104 @@ void idft73728(int16_t *input, int16_t *output,uint8_t scale) { } -int16_t twa98304[49152] __attribute__((aligned(32))); -int16_t twb98304[49152] __attribute__((aligned(32))); +int16_t twa98304[65536] __attribute__((aligned(32))); +int16_t twb98304[65536] __attribute__((aligned(32))); // 32768 x 3 void dft98304(int16_t *input, int16_t *output,uint8_t scale) { - AssertFatal(1==0,"Need to do this ..\n"); + int i,i2,j; + uint32_t tmp[3][32768] __attribute__((aligned(32))); + uint32_t tmpo[3][32768] __attribute__((aligned(32))); + simd_q15_t *y128p=(simd_q15_t*)output; + simd_q15_t ONE_OVER_SQRT3_Q15_128 = set1_int16(ONE_OVER_SQRT3_Q15); + + for (i=0,j=0; i<32768; i++) { + tmp[0][i] = ((uint32_t *)input)[j++]; + tmp[1][i] = ((uint32_t *)input)[j++]; + tmp[2][i] = ((uint32_t *)input)[j++]; + } + + dft32768((int16_t*)(tmp[0]),(int16_t*)(tmpo[0]),1); + dft32768((int16_t*)(tmp[1]),(int16_t*)(tmpo[1]),1); + dft32768((int16_t*)(tmp[2]),(int16_t*)(tmpo[2]),1); + + for (i=0,i2=0; i<65536; i+=8,i2+=4) { + bfly3((simd_q15_t*)(&tmpo[0][i2]),(simd_q15_t*)(&tmpo[1][i2]),((simd_q15_t*)&tmpo[2][i2]), + (simd_q15_t*)(output+i),(simd_q15_t*)(output+65536+i),(simd_q15_t*)(output+131072+i), + (simd_q15_t*)(twa98304+i),(simd_q15_t*)(twb98304+i)); + } + if (scale==1) { + for (i=0; i<1536; i++) { + y128p[0] = mulhi_int16(y128p[0],ONE_OVER_SQRT3_Q15_128); + y128p[1] = mulhi_int16(y128p[1],ONE_OVER_SQRT3_Q15_128); + y128p[2] = mulhi_int16(y128p[2],ONE_OVER_SQRT3_Q15_128); + y128p[3] = mulhi_int16(y128p[3],ONE_OVER_SQRT3_Q15_128); + y128p[4] = mulhi_int16(y128p[4],ONE_OVER_SQRT3_Q15_128); + y128p[5] = mulhi_int16(y128p[5],ONE_OVER_SQRT3_Q15_128); + y128p[6] = mulhi_int16(y128p[6],ONE_OVER_SQRT3_Q15_128); + y128p[7] = mulhi_int16(y128p[7],ONE_OVER_SQRT3_Q15_128); + y128p[8] = mulhi_int16(y128p[8],ONE_OVER_SQRT3_Q15_128); + y128p[9] = mulhi_int16(y128p[9],ONE_OVER_SQRT3_Q15_128); + y128p[10] = mulhi_int16(y128p[10],ONE_OVER_SQRT3_Q15_128); + y128p[11] = mulhi_int16(y128p[11],ONE_OVER_SQRT3_Q15_128); + y128p[12] = mulhi_int16(y128p[12],ONE_OVER_SQRT3_Q15_128); + y128p[13] = mulhi_int16(y128p[13],ONE_OVER_SQRT3_Q15_128); + y128p[14] = mulhi_int16(y128p[14],ONE_OVER_SQRT3_Q15_128); + y128p[15] = mulhi_int16(y128p[15],ONE_OVER_SQRT3_Q15_128); + y128p+=16; + } + } + _mm_empty(); + _m_empty(); + } void idft98304(int16_t *input, int16_t *output,uint8_t scale) { - AssertFatal(1==0,"Need to do this ..\n"); + int i,i2,j; + uint32_t tmp[3][32768] __attribute__((aligned(32))); + uint32_t tmpo[3][32768] __attribute__((aligned(32))); + simd_q15_t *y128p=(simd_q15_t*)output; + simd_q15_t ONE_OVER_SQRT3_Q15_128 = set1_int16(ONE_OVER_SQRT3_Q15); + + for (i=0,j=0; i<32768; i++) { + tmp[0][i] = ((uint32_t *)input)[j++]; + tmp[1][i] = ((uint32_t *)input)[j++]; + tmp[2][i] = ((uint32_t *)input)[j++]; + } + + idft32768((int16_t*)(tmp[0]),(int16_t*)(tmpo[0]),1); + idft32768((int16_t*)(tmp[1]),(int16_t*)(tmpo[1]),1); + idft32768((int16_t*)(tmp[2]),(int16_t*)(tmpo[2]),1); + + for (i=0,i2=0; i<65536; i+=8,i2+=4) { + ibfly3((simd_q15_t*)(&tmpo[0][i2]),(simd_q15_t*)(&tmpo[1][i2]),((simd_q15_t*)&tmpo[2][i2]), + (simd_q15_t*)(output+i),(simd_q15_t*)(output+65536+i),(simd_q15_t*)(output+131072+i), + (simd_q15_t*)(twa98304+i),(simd_q15_t*)(twb98304+i)); + } + if (scale==1) { + for (i=0; i<1536; i++) { + y128p[0] = mulhi_int16(y128p[0],ONE_OVER_SQRT3_Q15_128); + y128p[1] = mulhi_int16(y128p[1],ONE_OVER_SQRT3_Q15_128); + y128p[2] = mulhi_int16(y128p[2],ONE_OVER_SQRT3_Q15_128); + y128p[3] = mulhi_int16(y128p[3],ONE_OVER_SQRT3_Q15_128); + y128p[4] = mulhi_int16(y128p[4],ONE_OVER_SQRT3_Q15_128); + y128p[5] = mulhi_int16(y128p[5],ONE_OVER_SQRT3_Q15_128); + y128p[6] = mulhi_int16(y128p[6],ONE_OVER_SQRT3_Q15_128); + y128p[7] = mulhi_int16(y128p[7],ONE_OVER_SQRT3_Q15_128); + y128p[8] = mulhi_int16(y128p[8],ONE_OVER_SQRT3_Q15_128); + y128p[9] = mulhi_int16(y128p[9],ONE_OVER_SQRT3_Q15_128); + y128p[10] = mulhi_int16(y128p[10],ONE_OVER_SQRT3_Q15_128); + y128p[11] = mulhi_int16(y128p[11],ONE_OVER_SQRT3_Q15_128); + y128p[12] = mulhi_int16(y128p[12],ONE_OVER_SQRT3_Q15_128); + y128p[13] = mulhi_int16(y128p[13],ONE_OVER_SQRT3_Q15_128); + y128p[14] = mulhi_int16(y128p[14],ONE_OVER_SQRT3_Q15_128); + y128p[15] = mulhi_int16(y128p[15],ONE_OVER_SQRT3_Q15_128); + y128p+=16; + } + } + _mm_empty(); + _m_empty(); } @@ -8724,6 +9598,8 @@ int dfts_autoinit(void) init_rad2(2048,tw2048); init_rad4(4096,tw4096); init_rad2(8192,tw8192); + init_rad4(16384,tw16384); + init_rad2(32768,tw32768); init_rad3(1536,twa1536,twb1536); init_rad3(3072,twa3072,twb3072); @@ -8731,6 +9607,10 @@ int dfts_autoinit(void) init_rad3(12288,twa12288,twb12288); init_rad3(18432,twa18432,twb18432); init_rad3(24576,twa24576,twb24576); + init_rad3(36864,twa36864,twb36864); + init_rad3(49152,twa49152,twb49152); + init_rad3(98304,twa98304,twb98304); + init_rad2_rep(24,tw24); init_rad3_rep(36,twa36,twb36); @@ -8770,6 +9650,7 @@ int dfts_autoinit(void) +#ifndef MR_MAIN void dft(uint8_t sizeidx, int16_t *sigF,int16_t *sig,unsigned char scale_flag){ AssertFatal((sizeidx>=0 && sizeidx<(int)DFT_SIZE_IDXTABLESIZE),"Invalid dft size index %i\n",sizeidx); @@ -8780,6 +9661,7 @@ void idft(uint8_t sizeidx, int16_t *sigF,int16_t *sig,unsigned char scale_flag){ AssertFatal((sizeidx>=0 && sizeidx<(int)IDFT_SIZE_IDXTABLESIZE),"Invalid idft size index %i\n",sizeidx); idft_ftab[sizeidx](sigF,sig,scale_flag); }; +#endif /*---------------------------------------------------------------------------------------*/ @@ -8950,9 +9832,9 @@ int main(int argc, char**argv) time_stats_t ts; #ifdef __AVX2__ - simd256_q15_t x[4096],x2[4096],y[4096],tw0,tw1,tw2,tw3; + simd256_q15_t x[16384],x2[16384],y[16384],tw0,tw1,tw2,tw3; #else - simd_q15_t x[8192],y[8192],tw0,tw1,tw2,tw3; + simd_q15_t x[32768],y[32768],tw0,tw1,tw2,tw3; #endif int i; simd_q15_t *x128=(simd_q15_t*)x,*y128=(simd_q15_t*)y; @@ -9514,10 +10396,34 @@ int main(int argc, char**argv) stop_meas(&ts); } - printf("\n\n1536-point(%f cycles)\n",(double)ts.diff/(double)ts.trials); + printf("\n\n8192-point(%f cycles)\n",(double)ts.diff/(double)ts.trials); LOG_M("y8192.m","y8192",y,8192,1,1); LOG_M("x8192.m","x8192",x,8192,1,1); + memset((void*)x,0,16384*sizeof(int32_t)); + for (i=2;i<9602;i++) { + if ((taus() & 1)==0) + ((int16_t*)x)[i] = 364; + else + ((int16_t*)x)[i] = -364; + } + for (i=2*(16384-4800);i<32768;i++) { + if ((taus() & 1)==0) + ((int16_t*)x)[i] = 364; + else + ((int16_t*)x)[i] = -364; + } + reset_meas(&ts); + for (i=0; i<10000; i++) { + start_meas(&ts); + dft16384((int16_t *)x,(int16_t *)y,1); + stop_meas(&ts); + } + + printf("\n\n16384-point(%f cycles)\n",(double)ts.diff/(double)ts.trials); + LOG_M("y16384.m","y16384",y,16384,1,1); + LOG_M("x16384.m","x16384",x,16384,1,1); + memset((void*)x,0,1536*sizeof(int32_t)); for (i=2;i<1202;i++) { if ((taus() & 1)==0) @@ -9666,6 +10572,56 @@ int main(int argc, char**argv) LOG_M("y24576.m","y24576",y,24576,1,1); LOG_M("x24576.m","x24576",x,24576,1,1); + + memset((void*)x,0,2*18432*sizeof(int32_t)); + for (i=2;i<(2*14402);i++) { + if ((taus() & 1)==0) + ((int16_t*)x)[i] = 364; + else + ((int16_t*)x)[i] = -364; + } + for (i=2*(36864-14400);i<(36864*2);i++) { + if ((taus() & 1)==0) + ((int16_t*)x)[i] = 364; + else + ((int16_t*)x)[i] = -364; + } + reset_meas(&ts); + for (i=0; i<10000; i++) { + start_meas(&ts); + dft36864((int16_t *)x,(int16_t *)y,1); + stop_meas(&ts); + } + + printf("\n\n36864-point(%f cycles)\n",(double)ts.diff/(double)ts.trials); + LOG_M("y36864.m","y36864",y,36864,1,1); + LOG_M("x36864.m","x36864",x,36864,1,1); + + + memset((void*)x,0,49152*sizeof(int32_t)); + for (i=2;i<28402;i++) { + if ((taus() & 1)==0) + ((int16_t*)x)[i] = 364; + else + ((int16_t*)x)[i] = -364; + } + for (i=2*(49152-14400);i<98304;i++) { + if ((taus() & 1)==0) + ((int16_t*)x)[i] = 364; + else + ((int16_t*)x)[i] = -364; + } + reset_meas(&ts); + for (i=0; i<10000; i++) { + start_meas(&ts); + idft49152((int16_t *)x,(int16_t *)y,1); + stop_meas(&ts); + } + + printf("\n\n49152-point(%f cycles)\n",(double)ts.diff/(double)ts.trials); + LOG_M("y49152.m","y49152",y,49152,1,1); + LOG_M("x49152.m","x49152",x,49152,1,1); + /* int dftsizes[33]={24,36,48,60,72,96,108,120,144,180,192,216,240,288,300,324,360,384,432,480,540,576,600,648,720,768,864,900,960,972,1080,1152,1200}; void (*dft)(int16_t *x,int16_t *y,uint8_t scale)[33] = {dft24,dft36,dft48,dft60,dft72,dft96,dft108,dft120,dft144,dft180,dft192,dft216,dft240,dft288,dft300,dft324,dft360,dft384,dft432,dft480,dft540,dft576,dft600,dft648,dft720,dft768,dft864,dft900,dft960,dft972,dft1080,dft1152,dft1200}; for (int n=0;n<33;n++) { @@ -9698,7 +10654,7 @@ int main(int argc, char**argv) LOG_M(ystr,ystr2,y,dftsizes[n]*4,1,1); LOG_M(xstr,xstr2,x,dftsizes[n]*4,1,1); } - + */ return(0); } diff --git a/openair1/PHY/TOOLS/phy_scope_interface.c b/openair1/PHY/TOOLS/phy_scope_interface.c index 835fb4ea7b..af237b2325 100644 --- a/openair1/PHY/TOOLS/phy_scope_interface.c +++ b/openair1/PHY/TOOLS/phy_scope_interface.c @@ -37,10 +37,10 @@ #define SOFTSCOPE_ENDFUNC_IDX 0 static loader_shlibfunc_t scope_fdesc[]= {{"end_forms",NULL}}; -int load_softscope(char *exectype) { +int load_softscope(char *exectype, void *initarg) { char libname[64]; sprintf(libname,"%.10sscope",exectype); - return load_module_shlib(libname,scope_fdesc,1,NULL); + return load_module_shlib(libname,scope_fdesc,1,initarg); } int end_forms(void) { diff --git a/openair1/PHY/TOOLS/phy_scope_interface.h b/openair1/PHY/TOOLS/phy_scope_interface.h index 779a57a720..adf04d5ea4 100644 --- a/openair1/PHY/TOOLS/phy_scope_interface.h +++ b/openair1/PHY/TOOLS/phy_scope_interface.h @@ -31,5 +31,5 @@ */ -int load_softscope(char *exectype); +int load_softscope(char *exectype, void *initarg); int end_forms(void) ; diff --git a/openair1/PHY/TOOLS/readme.md b/openair1/PHY/TOOLS/readme.md new file mode 100644 index 0000000000..f6671acc6d --- /dev/null +++ b/openair1/PHY/TOOLS/readme.md @@ -0,0 +1,12 @@ + +To use the scope, run the xNB or the UE with option "-d" + +Usage in gdb +In gdb, when you break, you can refresh immediatly the scope view by calling the display function. +The first paramter is the graph context, nevertheless we keep the last value for a dirty call in gdb (so you can use '0') + +Example with no variable known +phy_scope_nrUE(0, PHY_vars_UE_g[0][0], 0, 0, 0) + +or +phy_scope_gNB(0, phy_vars_gnb, phy_vars_ru, UE_id) diff --git a/openair1/PHY/TOOLS/tools_defs.h b/openair1/PHY/TOOLS/tools_defs.h index 61ea785db8..9c9b8aa821 100644 --- a/openair1/PHY/TOOLS/tools_defs.h +++ b/openair1/PHY/TOOLS/tools_defs.h @@ -183,10 +183,6 @@ This function performs optimized fixed-point radix-2 FFT/IFFT. - - - - #ifdef OAIDFTS_MAIN typedef void(*adftfunc_t)(int16_t *sigF,int16_t *sig,unsigned char scale_flag); typedef void(*aidftfunc_t)(int16_t *sigF,int16_t *sig,unsigned char scale_flag); diff --git a/openair1/PHY/defs_RU.h b/openair1/PHY/defs_RU.h index ce808eddf9..b8083b5ecf 100644 --- a/openair1/PHY/defs_RU.h +++ b/openair1/PHY/defs_RU.h @@ -38,8 +38,7 @@ #include "openairinterface5g_limits.h" #include "PHY/TOOLS/time_meas.h" #include "defs_common.h" -#include - +#include "nfapi_nr_interface_scf.h" #define MAX_BANDS_PER_RRU 4 #define MAX_RRU_CONFIG_SIZE 1024 @@ -186,6 +185,16 @@ typedef struct RU_feptx_t_s{ int index; }RU_feptx_t; +typedef struct { + int frame; + int slot; + int fmt; + int numRA; + int prachStartSymbol; +} RU_PRACH_list_t; + +#define NUMBER_OF_NR_RU_PRACH_MAX 8 + typedef struct RU_proc_t_s { /// Pointer to associated RU descriptor struct RU_t_s *ru; @@ -477,6 +486,8 @@ typedef struct RU_t_s { int att_tx; /// flag to indicate precoding operation in RU int do_precoding; + /// FAPI confiuration + nfapi_nr_config_request_scf_t config; /// Frame parameters struct LTE_DL_FRAME_PARMS *frame_parms; struct NR_DL_FRAME_PARMS *nr_frame_parms; @@ -579,6 +590,10 @@ typedef struct RU_t_s { int32_t *bw_list[NUMBER_OF_eNB_MAX+1]; /// beamforming weight vectors int32_t **beam_weights[NUMBER_OF_eNB_MAX+1][15]; + /// prach commands + RU_PRACH_list_t prach_list[NUMBER_OF_NR_RU_PRACH_MAX]; + /// mutex for prach_list access + pthread_mutex_t prach_list_mutex; /// received frequency-domain signal for PRACH (IF4p5 RRU) int16_t **prach_rxsigF; /// received frequency-domain signal for PRACH BR (IF4p5 RRU) diff --git a/openair1/PHY/defs_UE.h b/openair1/PHY/defs_UE.h index 9163fc13b6..e17b752e7b 100644 --- a/openair1/PHY/defs_UE.h +++ b/openair1/PHY/defs_UE.h @@ -452,55 +452,6 @@ typedef struct { uint32_t llr_length[14]; } LTE_UE_PDSCH; -typedef struct { - /// \brief Received frequency-domain signal after extraction. - /// - first index: ? [0..7] (hard coded) FIXME! accessed via \c nb_antennas_rx - /// - second index: ? [0..] - int32_t **rxdataF_ext; - /// \brief Received frequency-domain signal after extraction and channel compensation. - /// - first index: ? [0..7] (hard coded) FIXME! accessed via \c nb_antennas_rx - /// - second index: ? [0..] - double **rxdataF_comp; - /// \brief Downlink channel estimates extracted in PRBS. - /// - first index: ? [0..7] (hard coded) FIXME! accessed via \c nb_antennas_rx - /// - second index: ? [0..] - int32_t **dl_ch_estimates_ext; - /// \brief Downlink cross-correlation of MIMO channel estimates (unquantized PMI) extracted in PRBS. - /// - first index: ? [0..7] (hard coded) FIXME! accessed via \c nb_antennas_rx - /// - second index: ? [0..] - double **dl_ch_rho_ext; - /// \brief Downlink PMIs extracted in PRBS and grouped in subbands. - /// - first index: ressource block [0..N_RB_DL[ - uint8_t *pmi_ext; - /// \brief Magnitude of Downlink Channel (16QAM level/First 64QAM level). - /// - first index: ? [0..7] (hard coded) FIXME! accessed via \c nb_antennas_rx - /// - second index: ? [0..] - double **dl_ch_mag; - /// \brief Magnitude of Downlink Channel (2nd 64QAM level). - /// - first index: ? [0..7] (hard coded) FIXME! accessed via \c nb_antennas_rx - /// - second index: ? [0..] - double **dl_ch_magb; - /// \brief Cross-correlation of two eNB signals. - /// - first index: rx antenna [0..nb_antennas_rx[ - /// - second index: ? [0..] - double **rho; - /// never used... always send dl_ch_rho_ext instead... - double **rho_i; - /// \brief Pointers to llr vectors (2 TBs). - /// - first index: ? [0..1] (hard coded) - /// - second index: ? [0..1179743] (hard coded) - int16_t *llr[2]; - /// \f$\log_2(\max|H_i|^2)\f$ - uint8_t log2_maxh; - /// \brief Pointers to llr vectors (128-bit alignment). - /// - first index: ? [0..0] (hard coded) - /// - second index: ? [0..] - int16_t **llr128; - //uint32_t *rb_alloc; - //uint8_t Qm[2]; - //MIMO_mode_t mimo_mode; -} LTE_UE_PDSCH_FLP; - typedef struct { /// \brief Pointers to extracted PDCCH symbols in frequency-domain. /// - first index: ? [0..7] (hard coded) FIXME! accessed via \c nb_antennas_rx @@ -667,7 +618,6 @@ typedef struct { uint8_t current_thread_id[10]; LTE_UE_PDSCH *pdsch_vars[RX_NB_TH_MAX][NUMBER_OF_CONNECTED_eNB_MAX+1]; // two RxTx Threads - LTE_UE_PDSCH_FLP *pdsch_vars_flp[NUMBER_OF_CONNECTED_eNB_MAX+1]; LTE_UE_PDSCH *pdsch_vars_SI[NUMBER_OF_CONNECTED_eNB_MAX+1]; LTE_UE_PDSCH *pdsch_vars_ra[NUMBER_OF_CONNECTED_eNB_MAX+1]; LTE_UE_PDSCH *pdsch_vars_p[NUMBER_OF_CONNECTED_eNB_MAX+1]; diff --git a/openair1/PHY/defs_common.h b/openair1/PHY/defs_common.h index 4cd62a5390..5a04e3c836 100644 --- a/openair1/PHY/defs_common.h +++ b/openair1/PHY/defs_common.h @@ -1093,5 +1093,4 @@ static inline int release_thread(pthread_mutex_t *mutex, return(0); } - #endif // __PHY_DEFS_COMMON_H__ diff --git a/openair1/PHY/defs_gNB.h b/openair1/PHY/defs_gNB.h index aa794da818..6c2561a454 100644 --- a/openair1/PHY/defs_gNB.h +++ b/openair1/PHY/defs_gNB.h @@ -43,6 +43,8 @@ #include "PHY/CODING/nrLDPC_extern.h" #include "PHY/CODING/nrLDPC_decoder/nrLDPC_types.h" +#include "nfapi_nr_interface_scf.h" + #define MAX_NUM_RU_PER_gNB MAX_NUM_RU_PER_eNB #define MAX_PUCCH0_NID 8 @@ -52,6 +54,7 @@ typedef struct { int lut[MAX_PUCCH0_NID][160][14]; } NR_gNB_PUCCH0_LUT_t; + typedef struct { uint32_t pbch_a; uint32_t pbch_a_interleaved; @@ -109,6 +112,26 @@ typedef struct { uint32_t F; } NR_DL_gNB_HARQ_t; +typedef struct { + int frame; + int slot; + nfapi_nr_dl_tti_pdcch_pdu pdcch_pdu; +} NR_gNB_PDCCH_t; + +typedef struct { + int frame; + int slot; + nfapi_nr_ul_dci_request_pdus_t pdcch_pdu; +} NR_gNB_UL_PDCCH_t; + +typedef struct { + uint16_t rnti; + int round_trials[8]; + int total_bytes_tx; + int total_bytes_rx; + int current_Qm; + int current_RI; +} NR_gNB_SCH_STATS_t; typedef struct { /// Pointers to 16 HARQ processes for the DLSCH @@ -155,6 +178,16 @@ typedef struct { int16_t sqrt_rho_b; } NR_gNB_DLSCH_t; + + +typedef struct { + int frame; + int slot; + nfapi_nr_prach_pdu_t pdu; +} gNB_PRACH_list_t; + +#define NUMBER_OF_NR_PRACH_MAX 8 + typedef struct { /// \brief ?. /// first index: ? [0..1023] (hard coded) @@ -165,6 +198,7 @@ typedef struct { int16_t **rxsigF; /// \brief local buffer to compute prach_ifft int32_t *prach_ifft; + gNB_PRACH_list_t list[NUMBER_OF_NR_PRACH_MAX]; } NR_gNB_PRACH; typedef struct { @@ -172,8 +206,8 @@ typedef struct { nfapi_nr_pusch_pdu_t ulsch_pdu; /// Frame where current HARQ round was sent uint32_t frame; - /// Subframe where current HARQ round was sent - uint32_t subframe; + /// Slot where current HARQ round was sent + uint32_t slot; /// Index of current HARQ round for this DLSCH uint8_t round; /// Last TPC command @@ -322,12 +356,17 @@ typedef struct { uint8_t max_ldpc_iterations; /// number of iterations used in last LDPC decoding uint8_t last_iteration_cnt; - /// num active cba group - uint8_t num_active_cba_groups; - /// num active cba group - uint16_t cba_rnti[NUM_MAX_CBA_GROUP]; } NR_gNB_ULSCH_t; +typedef struct { + uint8_t active; + /// Frame where current PUCCH pdu was sent + uint32_t frame; + /// Slot where current PUCCH pdu was sent + uint32_t slot; + /// ULSCH PDU + nfapi_nr_pucch_pdu_t pucch_pdu; +} NR_gNB_PUCCH_t; typedef struct { /// \brief Pointers (dynamic) to the received data in the time domain. @@ -344,6 +383,8 @@ typedef struct { /// - second index: tx antenna [0..14[ where 14 is the total supported antenna ports. /// - third index: sample [0..] int32_t **txdataF; + int32_t *debugBuff; + int32_t debugBuff_sample_offset; } NR_gNB_COMMON; @@ -607,9 +648,9 @@ typedef struct { #define MAX_NUM_NR_RX_RACH_PDUS 4 #define MAX_NUM_NR_RX_PRACH_PREAMBLES 4 -#define MAX_UL_PDUS_PER_SLOT 100 -#define MAX_NUM_NR_SRS_PDUS 100 -#define MAX_NUM_NR_UCI_PDUS 100 +#define MAX_UL_PDUS_PER_SLOT 8 +#define MAX_NUM_NR_SRS_PDUS 8 +#define MAX_NUM_NR_UCI_PDUS 8 /// Top-level PHY Data Structure for gNB typedef struct PHY_VARS_gNB_s { @@ -653,20 +694,30 @@ typedef struct PHY_VARS_gNB_s { nfapi_nr_ul_tti_request_t UL_tti_req; nfapi_nr_uci_indication_t uci_indication; - nfapi_nr_dl_tti_pdcch_pdu *pdcch_pdu; - nfapi_nr_ul_dci_request_pdus_t *ul_dci_pdu; + // nfapi_nr_dl_tti_pdcch_pdu *pdcch_pdu; + // nfapi_nr_ul_dci_request_pdus_t *ul_dci_pdu; nfapi_nr_dl_tti_ssb_pdu ssb_pdu; - int num_pdsch_rnti; + uint16_t num_pdsch_rnti[80]; NR_gNB_PBCH pbch; nr_cce_t cce_list[MAX_DCI_CORESET][NR_MAX_PDCCH_AGG_LEVEL]; NR_gNB_COMMON common_vars; NR_gNB_PRACH prach_vars; NR_gNB_PUSCH *pusch_vars[NUMBER_OF_NR_ULSCH_MAX]; + NR_gNB_PUCCH_t *pucch[NUMBER_OF_NR_PUCCH_MAX]; + NR_gNB_PDCCH_t pdcch_pdu[NUMBER_OF_NR_PDCCH_MAX]; + NR_gNB_UL_PDCCH_t ul_pdcch_pdu[NUMBER_OF_NR_PDCCH_MAX]; NR_gNB_DLSCH_t *dlsch[NUMBER_OF_NR_DLSCH_MAX][2]; // Nusers times two spatial streams NR_gNB_ULSCH_t *ulsch[NUMBER_OF_NR_ULSCH_MAX][2]; // [Nusers times][2 codewords] NR_gNB_DLSCH_t *dlsch_SI,*dlsch_ra,*dlsch_p; NR_gNB_DLSCH_t *dlsch_PCH; + /// statistics for DLSCH measurement collection + NR_gNB_SCH_STATS_t dlsch_stats[NUMBER_OF_NR_SCH_STATS_MAX]; + /// statistics for ULSCH measurement collection + NR_gNB_SCH_STATS_t ulsch_stats[NUMBER_OF_NR_SCH_STATS_MAX]; + + t_nrPolar_params *uci_polarParams; + uint8_t pbch_configured; char gNB_generate_rar; @@ -691,6 +742,10 @@ typedef struct PHY_VARS_gNB_s { /// PUSCH DMRS uint32_t ****nr_gold_pusch_dmrs; + // Mask of occupied RBs + uint32_t rb_mask_ul[9]; + int ulmask_symb; + /// Indicator set to 0 after first SR uint8_t first_sr[NUMBER_OF_NR_SR_MAX]; @@ -745,6 +800,7 @@ typedef struct PHY_VARS_gNB_s { time_stats_t dlsch_interleaving_stats; time_stats_t dlsch_segmentation_stats; + time_stats_t rx_pusch_stats; time_stats_t ulsch_decoding_stats; time_stats_t ulsch_rate_unmatching_stats; time_stats_t ulsch_ldpc_decoding_stats; @@ -753,6 +809,7 @@ typedef struct PHY_VARS_gNB_s { time_stats_t ulsch_channel_estimation_stats; time_stats_t ulsch_channel_compensation_stats; time_stats_t ulsch_rbs_extraction_stats; + time_stats_t ulsch_mrc_stats; time_stats_t ulsch_llr_stats; /* time_stats_t rx_dft_stats; diff --git a/openair1/PHY/defs_nr_UE.h b/openair1/PHY/defs_nr_UE.h index b2d6a75265..62ffeaaea8 100644 --- a/openair1/PHY/defs_nr_UE.h +++ b/openair1/PHY/defs_nr_UE.h @@ -416,55 +416,6 @@ typedef struct { uint32_t llr_length[14]; } NR_UE_PDSCH; -typedef struct { - /// \brief Received frequency-domain signal after extraction. - /// - first index: ? [0..7] (hard coded) FIXME! accessed via \c nb_antennas_rx - /// - second index: ? [0..] - int32_t **rxdataF_ext; - /// \brief Received frequency-domain signal after extraction and channel compensation. - /// - first index: ? [0..7] (hard coded) FIXME! accessed via \c nb_antennas_rx - /// - second index: ? [0..] - double **rxdataF_comp; - /// \brief Downlink channel estimates extracted in PRBS. - /// - first index: ? [0..7] (hard coded) FIXME! accessed via \c nb_antennas_rx - /// - second index: ? [0..] - int32_t **dl_ch_estimates_ext; - /// \brief Downlink cross-correlation of MIMO channel estimates (unquantized PMI) extracted in PRBS. - /// - first index: ? [0..7] (hard coded) FIXME! accessed via \c nb_antennas_rx - /// - second index: ? [0..] - double **dl_ch_rho_ext; - /// \brief Downlink PMIs extracted in PRBS and grouped in subbands. - /// - first index: ressource block [0..N_RB_DL[ - uint8_t *pmi_ext; - /// \brief Magnitude of Downlink Channel (16QAM level/First 64QAM level). - /// - first index: ? [0..7] (hard coded) FIXME! accessed via \c nb_antennas_rx - /// - second index: ? [0..] - double **dl_ch_mag; - /// \brief Magnitude of Downlink Channel (2nd 64QAM level). - /// - first index: ? [0..7] (hard coded) FIXME! accessed via \c nb_antennas_rx - /// - second index: ? [0..] - double **dl_ch_magb; - /// \brief Cross-correlation of two eNB signals. - /// - first index: rx antenna [0..nb_antennas_rx[ - /// - second index: ? [0..] - double **rho; - /// never used... always send dl_ch_rho_ext instead... - double **rho_i; - /// \brief Pointers to llr vectors (2 TBs). - /// - first index: ? [0..1] (hard coded) - /// - second index: ? [0..1179743] (hard coded) - int16_t *llr[2]; - /// \f$\log_2(\max|H_i|^2)\f$ - uint8_t log2_maxh; - /// \brief Pointers to llr vectors (128-bit alignment). - /// - first index: ? [0..0] (hard coded) - /// - second index: ? [0..] - int16_t **llr128; - //uint32_t *rb_alloc; - //uint8_t Qm[2]; - //MIMO_mode_t mimo_mode; -} NR_UE_PDSCH_FLP; - #define NR_PDCCH_DEFS_NR_UE #define NR_NBR_CORESET_ACT_BWP 3 // The number of CoreSets per BWP is limited to 3 (including initial CORESET: ControlResourceId 0) #define NR_NBR_SEARCHSPACE_ACT_BWP 10 // The number of SearchSpaces per BWP is limited to 10 (including initial SEARCHSPACE: SearchSpaceId 0) @@ -782,6 +733,8 @@ typedef struct { int16_t amp; int16_t *prachF; int16_t *prach; + fapi_nr_ul_config_prach_pdu prach_pdu; + uint8_t prach_Config_enabled; } NR_UE_PRACH; // structure used for multiple SSB detection @@ -882,8 +835,6 @@ typedef struct { fapi_nr_config_request_t nrUE_config; - uint16_t frame_gap; - // the following structures are not part of PHY_vars_UE anymore as it is not thread safe. They are now on the stack of the functions that actually need them //nr_downlink_indication_t dl_indication; @@ -902,11 +853,6 @@ typedef struct { t_nrPolar_params *polarList; NR_UE_PDSCH *pdsch_vars[RX_NB_TH_MAX][NUMBER_OF_CONNECTED_eNB_MAX+1]; // two RxTx Threads - NR_UE_PDSCH_FLP *pdsch_vars_flp[NUMBER_OF_CONNECTED_eNB_MAX+1]; - NR_UE_PDSCH *pdsch_vars_SI[NUMBER_OF_CONNECTED_eNB_MAX+1]; - NR_UE_PDSCH *pdsch_vars_ra[NUMBER_OF_CONNECTED_eNB_MAX+1]; - NR_UE_PDSCH *pdsch_vars_p[NUMBER_OF_CONNECTED_eNB_MAX+1]; - NR_UE_PDSCH *pdsch_vars_MCH[NUMBER_OF_CONNECTED_eNB_MAX]; NR_UE_PBCH *pbch_vars[NUMBER_OF_CONNECTED_eNB_MAX]; NR_UE_PDCCH *pdcch_vars[RX_NB_TH_MAX][NUMBER_OF_CONNECTED_eNB_MAX]; NR_UE_PRACH *prach_vars[NUMBER_OF_CONNECTED_eNB_MAX]; @@ -930,7 +876,7 @@ typedef struct { uint8_t pucch_sel[10]; uint8_t pucch_payload[22]; - UE_MODE_t UE_mode[NUMBER_OF_CONNECTED_eNB_MAX]; + UE_MODE_t UE_mode[NUMBER_OF_CONNECTED_gNB_MAX]; /// cell-specific reference symbols uint32_t lte_gold_table[7][20][2][14]; @@ -965,12 +911,13 @@ typedef struct { char ulsch_no_allocation_counter[NUMBER_OF_CONNECTED_eNB_MAX]; + unsigned char ulsch_Msg3_active[NUMBER_OF_CONNECTED_gNB_MAX]; + uint32_t ulsch_Msg3_frame[NUMBER_OF_CONNECTED_gNB_MAX]; + unsigned char ulsch_Msg3_subframe[NUMBER_OF_CONNECTED_gNB_MAX]; + uint8_t Msg3_startSymbol[NUMBER_OF_CONNECTED_gNB_MAX]; + uint8_t Msg3_Length[NUMBER_OF_CONNECTED_gNB_MAX]; - - unsigned char ulsch_Msg3_active[NUMBER_OF_CONNECTED_eNB_MAX]; - uint32_t ulsch_Msg3_frame[NUMBER_OF_CONNECTED_eNB_MAX]; - unsigned char ulsch_Msg3_subframe[NUMBER_OF_CONNECTED_eNB_MAX]; - PRACH_RESOURCES_t *prach_resources[NUMBER_OF_CONNECTED_eNB_MAX]; + NR_PRACH_RESOURCES_t *prach_resources[NUMBER_OF_CONNECTED_gNB_MAX]; int turbo_iterations, turbo_cntl_iterations; /// \brief ?. /// - first index: eNB [0..NUMBER_OF_CONNECTED_eNB_MAX[ (hard coded) @@ -1005,8 +952,6 @@ typedef struct { int dlsch_mtch_trials[MAX_MBSFN_AREA][NUMBER_OF_CONNECTED_eNB_MAX]; int current_dlsch_cqi[NUMBER_OF_CONNECTED_eNB_MAX]; unsigned char first_run_timing_advance[NUMBER_OF_CONNECTED_eNB_MAX]; - uint8_t generate_prach; - uint8_t generate_nr_prach; uint8_t prach_cnt; uint8_t prach_PreambleIndex; // uint8_t prach_timer; @@ -1023,7 +968,6 @@ typedef struct { /// Timing Advance updates variables /// Timing advance update computed from the TA command signalled from gNB int timing_advance; - int hw_timing_advance; int N_TA_offset; ///timing offset used in TDD NR_UL_TIME_ALIGNMENT_t ul_time_alignment[NUMBER_OF_CONNECTED_gNB_MAX]; diff --git a/openair1/PHY/defs_nr_common.h b/openair1/PHY/defs_nr_common.h index ccc79b7d47..a21af3fa03 100644 --- a/openair1/PHY/defs_nr_common.h +++ b/openair1/PHY/defs_nr_common.h @@ -111,6 +111,9 @@ #define MAX_NUM_NR_CHANNEL_BITS (14*273*12*8) // 14 symbols, 273 RB #define MAX_NUM_NR_RE (14*273*12) +extern const uint8_t nr_rv_round_map[4]; +extern const uint8_t nr_rv_round_map_ue[4]; + typedef enum { NR_MU_0=0, NR_MU_1, @@ -198,30 +201,34 @@ typedef struct { nr_reg_t reg_list[NR_NB_REG_PER_CCE]; } nr_cce_t; - -/// PRACH-ConfigInfo from 38.331 RRC spec typedef struct { - /// Parameter: prach-ConfigurationIndex, see TS 38.211 (6.3.3.2). - uint8_t prach_ConfigIndex; - /// Parameter: High-speed-flag, see TS 38.211 (6.3.3.1). 1 corresponds to Restricted set and 0 to Unrestricted set. - uint8_t highSpeedFlag; - /// Restricted Set Config (type A=0 , type B=1) TS 38.211 (6.3.3.1) - uint8_t restrictedSetConfig; - /// 38.211 (NCS 38.211 6.3.3.1). - uint8_t zeroCorrelationZoneConfig; - /// see TS 38.211 (6.3.3.2). - uint8_t msg1_frequencystart; -} NR_PRACH_CONFIG_INFO; - -/// PRACH-ConfigSIB or PRACH-Config -typedef struct { - /// Parameter: prach-rootSequenceIndex, see TS 38.211 (6.3.3.2). - uint16_t rootSequenceIndex; - /// prach_Config_enabled=1 means enabled.} - uint8_t prach_Config_enabled; - /// PRACH Configuration Information - NR_PRACH_CONFIG_INFO prach_ConfigInfo; -} NR_PRACH_CONFIG_COMMON; + /// PRACH format retrieved from prach_ConfigIndex + uint16_t prach_format; + /// Preamble index for PRACH (0-63) + uint8_t ra_PreambleIndex; + /// RACH MaskIndex + uint8_t ra_RACH_MaskIndex; + /// Target received power at gNB. Baseline is range -202..-60 dBm. Depends on delta preamble, power ramping counter and step. + int ra_PREAMBLE_RECEIVED_TARGET_POWER; + /// PRACH index for TDD (0 ... 6) depending on TDD configuration and prachConfigIndex + uint8_t ra_TDD_map_index; + /// RA Preamble Power Ramping Step in dB + uint32_t RA_PREAMBLE_POWER_RAMPING_STEP; + /// + uint8_t RA_PREAMBLE_BACKOFF; + /// + uint8_t RA_SCALING_FACTOR_BI; + /// + uint8_t RA_PCMAX; + /// Corresponding RA-RNTI for UL-grant + uint16_t ra_RNTI; + /// Pointer to Msg3 payload for UL-grant + uint8_t *Msg3; + /// Frame of last completed synch + uint8_t sync_frame; + /// Flag to indicate that prach is ready to start: it is enabled with an initial delay after the sync + uint8_t init_msg1; +} NR_PRACH_RESOURCES_t; typedef struct NR_DL_FRAME_PARMS NR_DL_FRAME_PARMS; @@ -313,10 +320,10 @@ struct NR_DL_FRAME_PARMS { uint8_t nb_antennas_rx; /// Number of common transmit antenna ports in eNodeB (1 or 2) uint8_t nb_antenna_ports_gNB; - /// PRACH_CONFIG - NR_PRACH_CONFIG_COMMON prach_config_common; /// Cyclic Prefix for DL (0=Normal CP, 1=Extended CP) lte_prefix_type_t Ncp; + /// sequence which is computed based on carrier frequency and numerology to rotate/derotate each OFDM symbol according to Section 5.3 in 38.211 + int16_t symbol_rotation[224*2]; /// shift of pilot position in one RB uint8_t nushift; /// SRS configuration from TS 38.331 RRC @@ -350,9 +357,10 @@ struct NR_DL_FRAME_PARMS { uint8_t ssb_index; /// PBCH polar encoder params t_nrPolar_params pbch_polar_params; - }; + + #define KHz (1000UL) #define MHz (1000*KHz) diff --git a/openair1/PHY/impl_defs_nr.h b/openair1/PHY/impl_defs_nr.h index 44f2e314ea..3e09f3f593 100644 --- a/openair1/PHY/impl_defs_nr.h +++ b/openair1/PHY/impl_defs_nr.h @@ -757,11 +757,11 @@ typedef struct { #define MAX_NR_OF_SPATIAL_RELATION_INFOS (8) typedef enum { - pucch_format0_nr = 0, - pucch_format1_nr = 1, - pucch_format2_nr = 2, - pucch_format3_nr = 3, - pucch_format4_nr = 4, + pucch_format0_nr = 1, + pucch_format1_nr = 2, + pucch_format2_nr = 3, + pucch_format3_nr = 4, + pucch_format4_nr = 5 } pucch_format_nr_t; typedef enum { diff --git a/openair1/PHY/impl_defs_top.h b/openair1/PHY/impl_defs_top.h index a4607d3106..6c3d97838d 100644 --- a/openair1/PHY/impl_defs_top.h +++ b/openair1/PHY/impl_defs_top.h @@ -265,7 +265,7 @@ #define NB_NUMEROLOGIES_NR (5) #define TDD_CONFIG_NB_FRAMES (2) #define NR_MAX_SLOTS_PER_FRAME (160) /* number of slots per frame */ -#define NR_UE_CAPABILITY_SLOT_RX_TO_TX (4) /* FFS_NR_TODO it defines ue capability which is the number of slots */ +#define NR_UE_CAPABILITY_SLOT_RX_TO_TX (6) /* FFS_NR_TODO it defines ue capability which is the number of slots */ /* - between reception of pdsch and tarnsmission of its acknowlegment */ /* - between reception of un uplink grant and its related transmission */ diff --git a/openair1/PHY/phy_vars.h b/openair1/PHY/phy_vars.h index a74d148479..5e2be8bd8f 100644 --- a/openair1/PHY/phy_vars.h +++ b/openair1/PHY/phy_vars.h @@ -59,10 +59,10 @@ const short conjugate2[8]__attribute__((aligned(16))) = {1,-1,1,-1,1,-1,1,-1}; unsigned char NB_RU=0; #ifndef OPENAIR2 -unsigned char NB_eNB_INST=0; -uint16_t NB_UE_INST=0; -unsigned char NB_RN_INST=0; -unsigned char NB_INST=0; +//unsigned char NB_eNB_INST=0; +//uint16_t NB_UE_INST=0; +//unsigned char NB_RN_INST=0; +//unsigned char NB_INST=0; #endif int number_of_cards; diff --git a/openair1/PHY/phy_vars_nr_ue.h b/openair1/PHY/phy_vars_nr_ue.h index 1843d8d5bc..baa64561f0 100644 --- a/openair1/PHY/phy_vars_nr_ue.h +++ b/openair1/PHY/phy_vars_nr_ue.h @@ -138,4 +138,4 @@ uint8_t scrambling_lut[65536*16] __attribute__((aligned(32))); uint8_t max_ldpc_iterations=4; uint8_t max_turbo_iterations=4; -#endif /*__PHY_VARS_H__ */ +#endif diff --git a/openair1/SCHED/phy_procedures_lte_eNb.c b/openair1/SCHED/phy_procedures_lte_eNb.c index ba03e79e62..b3e3ab8c4e 100644 --- a/openair1/SCHED/phy_procedures_lte_eNb.c +++ b/openair1/SCHED/phy_procedures_lte_eNb.c @@ -20,12 +20,12 @@ */ /*! \file phy_procedures_lte_eNB.c - * \brief Implementation of eNB procedures from 36.213 LTE specifications - * \author R. Knopp, F. Kaltenberger, N. Nikaein, X. Foukas + * \brief Implementation of eNB procedures from 36.213 LTE specifications / FeMBMS 36.231 LTE procedures v14.2 + * \author R. Knopp, F. Kaltenberger, N. Nikaein, X. Foukas, J. Morgade * \date 2011 * \version 0.1 * \company Eurecom - * \email: knopp@eurecom.fr,florian.kaltenberger@eurecom.fr,navid.nikaein@eurecom.fr, x.foukas@sms.ed.ac.uk + * \email: knopp@eurecom.fr,florian.kaltenberger@eurecom.fr,navid.nikaein@eurecom.fr, x.foukas@sms.ed.ac.uk, javier.morgade@ieee.org * \note * \warning */ @@ -122,12 +122,32 @@ lte_subframe_t get_subframe_direction(uint8_t Mod_id,uint8_t CC_id,uint8_t subfr } #ifdef MBMS_NFAPI_SCHEDULER -void pmch_procedures(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc) { +void pmch_procedures(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc, int fembms_flag) { int subframe = proc->subframe_tx; // This is DL-Cell spec pilots in Control region - generate_pilots_slot (eNB, eNB->common_vars.txdataF, AMP, subframe << 1, 1); - if(eNB->dlsch_MCH->active==1) - generate_mch (eNB, proc,NULL/*, eNB->dlsch_MCH->harq_processes[0]->pdu*/); + if(!fembms_flag){ + generate_pilots_slot (eNB, eNB->common_vars.txdataF, AMP, subframe << 1, 1); + generate_mbsfn_pilot(eNB,proc, + eNB->common_vars.txdataF, + AMP); + }else + generate_mbsfn_pilot_khz_1dot25(eNB,proc, + eNB->common_vars.txdataF, + AMP); + + if(eNB->dlsch_MCH->active==1){ + if(!fembms_flag){ + generate_mch (eNB, proc,NULL/*, eNB->dlsch_MCH->harq_processes[0]->pdu*/); + } + else{ + generate_mch_khz_1dot25 (eNB, proc,NULL/*, eNB->dlsch_MCH->harq_processes[0]->pdu*/); + } + + LOG_D(PHY,"[eNB%"PRIu8"] Frame %d subframe %d : Got MCH pdu for MBSFN (TBS %d) fembms %d \n", + eNB->Mod_id,proc->frame_tx,subframe, + eNB->dlsch_MCH->harq_processes[0]->TBS>>3,fembms_flag); + + } eNB->dlsch_MCH->active = 0; } #else @@ -171,6 +191,80 @@ void pmch_procedures(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc) { } #endif +void common_signal_procedures_fembms (PHY_VARS_eNB *eNB,int frame, int subframe) { + LTE_DL_FRAME_PARMS *fp=&eNB->frame_parms; + int **txdataF = eNB->common_vars.txdataF; + uint8_t *pbch_pdu=&eNB->pbch_pdu[0]; + + if((frame&3)!=0 /*&& subframe != 0*/) + return; + + LOG_I(PHY,"common_signal_procedures: frame %d, subframe %d fdd:%s dir:%s index:%d\n",frame,subframe,fp->frame_type == FDD?"FDD":"TDD", subframe_select(fp,subframe) == SF_DL?"DL":"UL?",(frame&15)/4); + // generate Cell-Specific Reference Signals for both slots + //VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_RS_TX,1); + + + if(subframe_select(fp,subframe) == SF_S) + generate_pilots_slot(eNB, + txdataF, + AMP, + subframe<<1,1); + else + generate_pilots_slot(eNB, + txdataF, + AMP, + subframe<<1,0); + + // check that 2nd slot is for DL + if (subframe_select (fp, subframe) == SF_DL) + generate_pilots_slot (eNB, txdataF, AMP, (subframe << 1) + 1, 0); + + //VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME (VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_RS_TX, 0); + + // First half of PSS/SSS (FDD, slot 0) + if (subframe == 0) { + //if (fp->frame_type == FDD) { + generate_pss (txdataF, AMP, fp, (fp->Ncp == NORMAL) ? 6 : 5, 0); + generate_sss (txdataF, AMP, fp, (fp->Ncp == NORMAL) ? 5 : 4, 0); + //} + + /// First half of SSS (TDD, slot 1) + + //if (fp->frame_type == TDD) { + generate_sss (txdataF, AMP, fp, (fp->Ncp == NORMAL) ? 6 : 5, 1); + //} + + // generate PBCH (Physical Broadcast CHannel) info + + /// generate PBCH + if ((frame&15)==0) { + //AssertFatal(eNB->pbch_configured==1,"PBCH was not configured by MAC\n"); + if (eNB->pbch_configured!=1) return; + + eNB->pbch_configured=0; + } + + T(T_ENB_PHY_MIB, T_INT(eNB->Mod_id), T_INT(frame), T_INT(subframe), + T_BUFFER(pbch_pdu, 3)); + generate_pbch_fembms (&eNB->pbch, txdataF, AMP, fp, pbch_pdu, (frame & 15)/4); + } //else if ((subframe == 1) && (fp->frame_type == TDD)) { + //generate_pss (txdataF, AMP, fp, 2, 2); + // } + // Second half of PSS/SSS (FDD, slot 10) + else if ((subframe == 5) && (fp->frame_type == FDD) && is_fembms_nonMBSFN_subframe(frame,subframe,fp)) { + generate_pss (txdataF, AMP, &eNB->frame_parms, (fp->Ncp == NORMAL) ? 6 : 5, 10); + generate_sss (txdataF, AMP, &eNB->frame_parms, (fp->Ncp == NORMAL) ? 5 : 4, 10); + } + // Second-half of SSS (TDD, slot 11) + // else if ((subframe == 5) && (fp->frame_type == TDD)) { + // generate_sss (txdataF, AMP, fp, (fp->Ncp == NORMAL) ? 6 : 5, 11); + // } + // Second half of PSS (TDD, slot 12) + // else if ((subframe == 6) && (fp->frame_type == TDD)) { + // generate_pss (txdataF, AMP, fp, 2, 12); + // } +} + void common_signal_procedures (PHY_VARS_eNB *eNB,int frame, int subframe) { LTE_DL_FRAME_PARMS *fp=&eNB->frame_parms; int **txdataF = eNB->common_vars.txdataF; @@ -417,12 +511,30 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB, } if (NFAPI_MODE==NFAPI_MONOLITHIC || NFAPI_MODE==NFAPI_MODE_PNF) { + if (is_fembms_pmch_subframe(frame,subframe,fp)) { +#ifdef MBMS_NFAPI_SCHEDULER + pmch_procedures(eNB,proc,1); + LOG_D(MAC,"frame %d, subframe %d -> PMCH\n",frame,subframe); + return; +#endif + }else if(is_fembms_cas_subframe(frame,subframe,fp) || is_fembms_nonMBSFN_subframe(frame,subframe,fp)){ + LOG_D(MAC,"frame %d, subframe %d -> CAS\n",frame,subframe); + common_signal_procedures_fembms(eNB,proc->frame_tx, proc->subframe_tx); + //return; + } + + if((!is_fembms_cas_subframe(frame,subframe,fp)) && (!is_fembms_nonMBSFN_subframe(frame,subframe,fp))){ if (is_pmch_subframe(frame,subframe,fp)) { +#ifdef MBMS_NFAPI_SCHEDULER + pmch_procedures(eNB,proc,0); +#else pmch_procedures(eNB,proc); +#endif } else { // this is not a pmch subframe, so generate PSS/SSS/PBCH common_signal_procedures(eNB,proc->frame_tx, proc->subframe_tx); } + } } // clear existing ulsch dci allocations before applying info from MAC (this is table @@ -508,6 +620,18 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB, if (do_meas==1) start_meas(&eNB->dlsch_ue_specific); + if (NFAPI_MODE==NFAPI_MONOLITHIC || NFAPI_MODE==NFAPI_MODE_PNF) { + if (is_fembms_pmch_subframe(frame,subframe,fp)) { +#ifdef MBMS_NFAPI_SCHEDULER + pmch_procedures(eNB,proc,1); + return; +#endif + }else if(is_fembms_cas_subframe(frame,subframe,fp)){ + common_signal_procedures_fembms(eNB,proc->frame_tx, proc->subframe_tx); + } + } + + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_PDCCH_TX,0); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_GENERATE_DLSCH,1); // Now scan UE specific DLSCH @@ -1211,6 +1335,8 @@ void postDecode(L1_rxtx_proc_t *proc, notifiedFIFO_elt_t *req) { } if (!decodeSucess) { + T(T_ENB_PHY_ULSCH_UE_NACK, T_INT(eNB->Mod_id), T_INT(rdata->frame), T_INT(rdata->subframe), T_INT(ulsch->rnti), + T_INT(rdata->harq_pid)); fill_crc_indication(eNB,i,rdata->frame,rdata->subframe,1); // indicate NAK to MAC fill_rx_indication(eNB,i,rdata->frame,rdata->subframe); // indicate SDU to MAC LOG_D(PHY,"[eNB %d][PUSCH %d] frame %d subframe %d UE %d Error receiving ULSCH, round %d/%d (ACK %d,%d)\n", @@ -1239,6 +1365,8 @@ void postDecode(L1_rxtx_proc_t *proc, notifiedFIFO_elt_t *req) { fill_rx_indication(eNB,i,rdata->frame,rdata->subframe); // indicate SDU to MAC ulsch_harq->status = SCH_IDLE; ulsch->harq_mask &= ~(1 << rdata->harq_pid); + T (T_ENB_PHY_ULSCH_UE_ACK, T_INT(eNB->Mod_id), T_INT(rdata->frame), T_INT(rdata->subframe), T_INT(ulsch->rnti), + T_INT(rdata->harq_pid)); } // ulsch not in error if (ulsch_harq->O_ACK>0) @@ -1419,7 +1547,7 @@ void fill_rx_indication(PHY_VARS_eNB *eNB, pdu->rx_indication_rel8.offset = 1; // DJP - I dont understand - but broken unless 1 ???? 0; // filled in at the end of the UL_INFO formation pdu->data = eNB->ulsch[UE_id]->harq_processes[harq_pid]->decodedBytes; // estimate timing advance for MAC - sync_pos = lte_est_timing_advance_pusch(eNB,UE_id); + sync_pos = lte_est_timing_advance_pusch(&eNB->frame_parms, eNB->pusch_vars[UE_id]->drs_ch_estimates_time); timing_advance_update = sync_pos; // - eNB->frame_parms.nb_prefix_samples/4; //to check // if (timing_advance_update > 10) { dump_ulsch(eNB,frame,subframe,UE_id); exit(-1);} diff --git a/openair1/SCHED/ru_procedures.c b/openair1/SCHED/ru_procedures.c index 8846b77af9..e472d64db4 100644 --- a/openair1/SCHED/ru_procedures.c +++ b/openair1/SCHED/ru_procedures.c @@ -41,6 +41,17 @@ * \warning */ +/*! \function feptx0 + * \brief Implementation of ofdm encoding for FeMBMS profile in one eNB + * \author J. Morgade + * \date 2020 + * \version 0.1 + * \email: javier.morgade@ieee.org + * \note + * \warning + */ + + #include "PHY/defs_eNB.h" #include "PHY/phy_extern.h" @@ -76,7 +87,7 @@ void feptx0(RU_t *ru, int slot_sizeF = (fp->ofdm_symbol_size) * ((fp->Ncp==1) ? 6 : 7); int subframe = ru->proc.tti_tx; - //VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPTX_OFDM+slot , 1 ); + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPTX_OFDM+(slot&1) , 1 ); slot_offset = slot*(fp->samples_per_tti>>1); //slot_offset = subframe*fp->samples_per_tti + (slot*(fp->samples_per_tti>>1)); @@ -91,7 +102,17 @@ void feptx0(RU_t *ru, fp->nb_prefix_samples, CYCLIC_PREFIX); } else { - if(is_pmch_subframe(ru->proc.frame_tx,subframe,fp)){ + if(is_fembms_pmch_subframe(ru->proc.frame_tx,subframe,fp)){ + if((slot&1)==0){//just use one slot chance + PHY_ofdm_mod(&ru->common.txdataF_BF[aa][(slot&1)*slot_sizeF], + (int*)&ru->common.txdata[aa][slot_offset], + fp->ofdm_symbol_size_khz_1dot25, + 1, + fp->ofdm_symbol_size_khz_1dot25>>2, + CYCLIC_PREFIX); + LOG_D(HW,"Generating PMCH FeMBMS TX subframe %d %d\n",subframe,fp->ofdm_symbol_size_khz_1dot25); + } + } else if(is_pmch_subframe(ru->proc.frame_tx,subframe,fp)){ if ((slot&1) == 0) {//just use one slot chance normal_prefix_mod(&ru->common.txdataF_BF[aa][(slot&1)*slot_sizeF], (int*)&ru->common.txdata[aa][slot_offset], @@ -693,12 +714,6 @@ void ru_fep_full_2thread(RU_t *ru, 3/(fp->symbols_per_tti/2),// Ns = slot number fp); - /*lte_ul_channel_estimation((PHY_VARS_eNB *)NULL, - proc, - ru->idx, - 3%(fp->symbols_per_tti/2), - 3/(fp->symbols_per_tti/2)); - */ lte_ul_channel_estimation_RRU(fp, calibration->drs_ch_estimates, calibration->drs_ch_estimates_time, @@ -713,7 +728,7 @@ void ru_fep_full_2thread(RU_t *ru, 0,//interpolate, 0 /*eNB->ulsch[ru->idx]->rnti rnti or ru->ulsch[eNB_id]->rnti*/); - check_sync_pos = lte_est_timing_advance_pusch((PHY_VARS_eNB *)NULL, ru->idx); + check_sync_pos = lte_est_timing_advance_pusch(ru->frame_parms, ru->calibration.drs_ch_estimates_time); if (ru->state == RU_CHECK_SYNC) { if ((check_sync_pos >= 0 && check_sync_pos<8) || (check_sync_pos < 0 && check_sync_pos>-8)) { LOG_I(PHY,"~~~~~~~~~~~ check_sync_pos %d, frame %d, cnt %d\n",check_sync_pos,proc->frame_rx,ru->wait_check); diff --git a/openair1/SCHED_NR/fapi_nr_l1.c b/openair1/SCHED_NR/fapi_nr_l1.c index 393ea06960..c8c325201f 100644 --- a/openair1/SCHED_NR/fapi_nr_l1.c +++ b/openair1/SCHED_NR/fapi_nr_l1.c @@ -49,7 +49,7 @@ void handle_nr_nfapi_ssb_pdu(PHY_VARS_gNB *gNB,int frame,int slot, AssertFatal(dl_tti_pdu->ssb_pdu.ssb_pdu_rel15.bchPayloadFlag== 1, "bchPayloadFlat %d != 1\n", dl_tti_pdu->ssb_pdu.ssb_pdu_rel15.bchPayloadFlag); - LOG_I(PHY,"%d.%d : pbch_pdu: %x\n",frame,slot,dl_tti_pdu->ssb_pdu.ssb_pdu_rel15.bchPayload); + LOG_D(PHY,"%d.%d : pbch_pdu: %x\n",frame,slot,dl_tti_pdu->ssb_pdu.ssb_pdu_rel15.bchPayload); memcpy((void*)&gNB->ssb_pdu,&dl_tti_pdu->ssb_pdu,sizeof(dl_tti_pdu->ssb_pdu)); } @@ -99,9 +99,9 @@ void handle_nfapi_nr_pdcch_pdu(PHY_VARS_gNB *gNB, LOG_D(PHY,"Frame %d, Slot %d: DCI processing - proc:slot_tx:%d pdcch_pdu_rel15->numDlDci:%d\n",frame,slot, slot, pdcch_pdu->pdcch_pdu_rel15.numDlDci); // copy dci configuration into gNB structure - gNB->pdcch_pdu = pdcch_pdu; + // gNB->pdcch_pdu = pdcch_pdu; - nr_fill_dci(gNB,frame,slot); + nr_fill_dci(gNB,frame,slot,pdcch_pdu); @@ -114,11 +114,9 @@ void handle_nfapi_nr_ul_dci_pdu(PHY_VARS_gNB *gNB, LOG_D(PHY,"Frame %d, Slot %d: UL DCI processing - proc:slot_tx:%d pdcch_pdu_rel15->numDlDci:%d\n",frame,slot, slot, ul_dci_request_pdu->pdcch_pdu.pdcch_pdu_rel15.numDlDci); // copy dci configuration into gNB structure - gNB->ul_dci_pdu = ul_dci_request_pdu; - - nr_fill_ul_dci(gNB,frame,slot); - + // gNB->ul_dci_pdu = ul_dci_request_pdu; + nr_fill_ul_dci(gNB,frame,slot,ul_dci_request_pdu); } @@ -154,17 +152,22 @@ void nr_schedule_response(NR_Sched_Rsp_t *Sched_INFO){ uint8_t number_dl_pdu = DL_req->nPDUs; // uint8_t number_ul_pdu = 0; uint8_t number_ul_dci_pdu = (UL_dci_req==NULL) ? 0 : UL_dci_req->numPdus; + uint8_t number_ul_tti_pdu = (UL_tti_req==NULL) ? 0 : UL_tti_req->n_pdus; - // if (UL_tti_req != NULL) number_ul_pdu = UL_tti_req->n_pdus; - - LOG_D(PHY,"NFAPI: Sched_INFO:SFN/SLOT:%04d%d DL_req:SFN/SLO:%04d%d:dl_pdu:%d tx_req:SFN/SLOT:%04d%d:pdus:%d;\n", - frame,slot, - DL_req->SFN,DL_req->Slot,number_dl_pdu, - TX_req->SFN,TX_req->Slot,TX_req->Number_of_PDUs); + if (DL_req != NULL && TX_req!=NULL) + LOG_D(PHY,"NFAPI: Sched_INFO:SFN/SLOT:%04d/%d DL_req:SFN/SLO:%04d/%d:dl_pdu:%d tx_req:SFN/SLOT:%04d/%d:pdus:%d;ul_dci %d ul_tti %d\n", + frame,slot, + DL_req->SFN,DL_req->Slot,number_dl_pdu, + TX_req->SFN,TX_req->Slot,TX_req->Number_of_PDUs, + number_ul_dci_pdu,number_ul_tti_pdu); int pdcch_received=0; - gNB->num_pdsch_rnti=0; - gNB->pdcch_pdu = NULL; + gNB->num_pdsch_rnti[slot]=0; + for (int i=0; idlsch[i][0]->rnti=0; + gNB->dlsch[i][0]->harq_mask=0; + } + gNB->pbch_configured=0; for (int i=0;iSFN,DL_req->Slot); nfapi_nr_dl_tti_pdsch_pdu_rel15_t *pdsch_pdu_rel15 = &dl_tti_pdu->pdsch_pdu.pdsch_pdu_rel15; uint16_t pduIndex = pdsch_pdu_rel15->pduIndex; AssertFatal(TX_req->pdu_list[pduIndex].num_TLV == 1, "TX_req->pdu_list[%d].num_TLV %d != 1\n", @@ -203,14 +207,11 @@ void nr_schedule_response(NR_Sched_Rsp_t *Sched_INFO){ } } - if (UL_tti_req!=NULL) - memcpy(&gNB->UL_tti_req,UL_tti_req,sizeof(nfapi_nr_ul_tti_request_t)); + // if (UL_tti_req!=NULL) memcpy(&gNB->UL_tti_req,UL_tti_req,sizeof(nfapi_nr_ul_tti_request_t)); if(nfapi_mode != 2) for (int i=0;iul_dci_pdu_list[i]); + handle_nfapi_nr_ul_dci_pdu(gNB, frame, slot, &UL_dci_req->ul_dci_pdu_list[i]); } if (nfapi_mode != 0 ) { diff --git a/openair1/SCHED_NR/nr_prach_procedures.c b/openair1/SCHED_NR/nr_prach_procedures.c index 9054ddbae5..a5d459a7c6 100644 --- a/openair1/SCHED_NR/nr_prach_procedures.c +++ b/openair1/SCHED_NR/nr_prach_procedures.c @@ -32,7 +32,7 @@ #include "PHY/defs_gNB.h" #include "PHY/phy_extern.h" -#include "PHY/NR_TRANSPORT/nr_transport.h" +#include "PHY/NR_TRANSPORT/nr_transport_proto.h" #include "nfapi_nr_interface_scf.h" #include "fapi_nr_l1.h" #include "nfapi_pnf.h" @@ -77,15 +77,14 @@ void L1_nr_prach_procedures(PHY_VARS_gNB *gNB,int frame,int slot, } } - - /* rx_nr_prach(gNB, + rx_nr_prach(gNB, prach_pdu, frame, slot, &max_preamble[0], &max_preamble_energy[0], &max_preamble_delay[0] - );*/ + ); LOG_D(PHY,"[RAPROC] Frame %d, slot %d : Most likely preamble %d, energy %d dB delay %d (prach_energy counter %d)\n", frame,slot, diff --git a/openair1/SCHED_NR/nr_ru_procedures.c b/openair1/SCHED_NR/nr_ru_procedures.c index aefeec43e2..9723b2f99e 100644 --- a/openair1/SCHED_NR/nr_ru_procedures.c +++ b/openair1/SCHED_NR/nr_ru_procedures.c @@ -87,14 +87,29 @@ void nr_feptx0(RU_t *ru,int tti_tx,int first_symbol, int num_symbols, int aa) { CYCLIC_PREFIX); else { if (fp->numerology_index != 0) { + + if (!(slot%(fp->slots_per_subframe/2))&&(first_symbol==0)) { // case where first symbol in slot has longer prefix + apply_nr_rotation(fp, + (int16_t*)&ru->common.txdataF_BF[aa][slot_offsetF], + slot, + 0, + 1, + fp->ofdm_symbol_size); - if (!(slot%(fp->slots_per_subframe/2))&&(first_symbol==0)) { PHY_ofdm_mod(&ru->common.txdataF_BF[aa][slot_offsetF], (int*)&ru->common.txdata[aa][slot_offset], fp->ofdm_symbol_size, 1, fp->nb_prefix_samples0, CYCLIC_PREFIX); + + apply_nr_rotation(fp, + (int16_t*)&ru->common.txdataF_BF[aa][slot_offsetF+fp->ofdm_symbol_size], + slot, + 1, + num_symbols-1, + fp->ofdm_symbol_size); + PHY_ofdm_mod(&ru->common.txdataF_BF[aa][slot_offsetF+fp->ofdm_symbol_size], (int*)&ru->common.txdata[aa][slot_offset+fp->nb_prefix_samples0+fp->ofdm_symbol_size], fp->ofdm_symbol_size, @@ -102,7 +117,13 @@ void nr_feptx0(RU_t *ru,int tti_tx,int first_symbol, int num_symbols, int aa) { fp->nb_prefix_samples, CYCLIC_PREFIX); } - else { + else { // all symbols in slot have shorter prefix + apply_nr_rotation(fp, + (int16_t*)&ru->common.txdataF_BF[aa][slot_offsetF], + slot, + first_symbol, + num_symbols, + fp->ofdm_symbol_size); PHY_ofdm_mod(&ru->common.txdataF_BF[aa][slot_offsetF], (int*)&ru->common.txdata[aa][slot_offset], fp->ofdm_symbol_size, @@ -110,9 +131,8 @@ void nr_feptx0(RU_t *ru,int tti_tx,int first_symbol, int num_symbols, int aa) { fp->nb_prefix_samples, CYCLIC_PREFIX); } - } - - else { + } // numerology_index!=0 + else { //numerology_index == 0 for (uint16_t idx_sym=abs_first_symbol; idx_symcommon.txdataF_BF[aa][slot_offsetF], @@ -121,6 +141,12 @@ void nr_feptx0(RU_t *ru,int tti_tx,int first_symbol, int num_symbols, int aa) { 1, fp->nb_prefix_samples, CYCLIC_PREFIX); + apply_nr_rotation(fp, + (int16_t*)&ru->common.txdata[aa][slot_offset], + slot, + idx_sym, + 1, + fp->ofdm_symbol_size+fp->nb_prefix_samples); slot_offset += fp->nb_prefix_samples+fp->ofdm_symbol_size; } else { @@ -130,6 +156,12 @@ void nr_feptx0(RU_t *ru,int tti_tx,int first_symbol, int num_symbols, int aa) { 1, fp->nb_prefix_samples0, CYCLIC_PREFIX); + apply_nr_rotation(fp, + (int16_t*)&ru->common.txdata[aa][slot_offset], + slot, + 0, + 1, + fp->ofdm_symbol_size+fp->nb_prefix_samples0); slot_offset += fp->nb_prefix_samples0+fp->ofdm_symbol_size; } } @@ -520,7 +552,7 @@ void nr_fep0(RU_t *ru, int first_half) { ru->common.rxdataF[aa], l, proc->tti_rx, - 0, + ru->N_TA_offset, 0); } } @@ -642,6 +674,8 @@ void nr_fep_full(RU_t *ru, int slot) { // if ((fp->frame_type == TDD) && // (subframe_select(fp,proc->tti_rx) != NR_UPLINK_SLOT)) return; + LOG_D(PHY,"In fep_full for slot = %d\n", proc->tti_rx); + start_meas(&ru->ofdm_demod_stats); if (ru->idx == 0) VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPRX, 1 ); @@ -655,7 +689,7 @@ void nr_fep_full(RU_t *ru, int slot) { ru->common.rxdataF[aa], l, proc->tti_rx, - 0, + ru->N_TA_offset, 0); } } diff --git a/openair1/SCHED_NR/phy_frame_config_nr.c b/openair1/SCHED_NR/phy_frame_config_nr.c index 9fe093c4d0..9de805607f 100644 --- a/openair1/SCHED_NR/phy_frame_config_nr.c +++ b/openair1/SCHED_NR/phy_frame_config_nr.c @@ -29,11 +29,9 @@ * ************************************************************************/ -#include "SCHED_NR_UE/defs.h" +#include "PHY/defs_nr_common.h" #include "PHY/defs_nr_UE.h" -#include "SCHED_NR_UE/phy_frame_config_nr.h" -#include "PHY/impl_defs_nr.h" -#include "PHY/impl_defs_top.h" +#include "SCHED_NR/phy_frame_config_nr.h" /******************************************************************* * diff --git a/openair1/SCHED_NR/phy_frame_config_nr.h b/openair1/SCHED_NR/phy_frame_config_nr.h index d1ec5c80d8..ee4b500280 100644 --- a/openair1/SCHED_NR/phy_frame_config_nr.h +++ b/openair1/SCHED_NR/phy_frame_config_nr.h @@ -76,9 +76,9 @@ int set_tdd_configuration_dedicated_nr(NR_DL_FRAME_PARMS *frame_parms); * @param frame_parms NR DL Frame parameters * @param nr_frame : frame number * @param nr_tti : slot number - @returns nr_slot_t : downlink or uplink */ + @returns int : downlink, uplink or mixed slot type*/ -nr_slot_t nr_slot_select(nfapi_nr_config_request_scf_t *cfg, int nr_frame, int nr_tti); +int nr_slot_select(nfapi_nr_config_request_scf_t *cfg, int nr_frame, int nr_tti); /** \brief This function frees tdd configuration for nr * @param frame_parms NR DL Frame parameters diff --git a/openair1/SCHED_NR/phy_procedures_nr_gNB.c b/openair1/SCHED_NR/phy_procedures_nr_gNB.c index 5eb629e222..6dfe967edc 100644 --- a/openair1/SCHED_NR/phy_procedures_nr_gNB.c +++ b/openair1/SCHED_NR/phy_procedures_nr_gNB.c @@ -23,10 +23,10 @@ #include "PHY/defs_gNB.h" #include "sched_nr.h" #include "PHY/NR_REFSIG/dmrs_nr.h" -#include "PHY/NR_TRANSPORT/nr_transport.h" #include "PHY/NR_TRANSPORT/nr_transport_proto.h" #include "PHY/NR_TRANSPORT/nr_dlsch.h" #include "PHY/NR_TRANSPORT/nr_ulsch.h" +#include "PHY/NR_TRANSPORT/nr_dci.h" #include "PHY/NR_ESTIMATION/nr_ul_estimation.h" #include "PHY/NR_UE_TRANSPORT/pucch_nr.h" #include "SCHED/sched_eNB.h" @@ -50,6 +50,8 @@ #include "intertask_interface.h" +//#define DEBUG_RXDATA + uint8_t SSB_Table[38]={0,2,4,6,8,10,12,14,254,254,16,18,20,22,24,26,28,30,254,254,32,34,36,38,40,42,44,46,254,254,48,50,52,54,56,58,60,62}; extern uint8_t nfapi_mode; @@ -143,7 +145,7 @@ void phy_procedures_gNB_TX(PHY_VARS_gNB *gNB, if ((cfg->cell_config.frame_duplex_type.value == TDD) && (nr_slot_select(cfg,frame,slot) == NR_UPLINK_SLOT)) return; - VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_TX+offset,1); + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_gNB_TX+offset,1); if (do_meas==1) start_meas(&gNB->phy_proc_tx); @@ -152,52 +154,52 @@ void phy_procedures_gNB_TX(PHY_VARS_gNB *gNB, memset(&gNB->common_vars.txdataF[aa][txdataF_offset],0,fp->samples_per_slot_wCP*sizeof(int32_t)); } - VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_COMMON_TX,1); + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_gNB_COMMON_TX,1); if (nfapi_mode == 0 || nfapi_mode == 1) { if ((!(frame%ssb_frame_periodicity))) // generate SSB only for given frames according to SSB periodicity nr_common_signal_procedures(gNB,frame, slot); } - VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_COMMON_TX,0); + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_gNB_COMMON_TX,0); + int pdcch_pdu_id=find_nr_pdcch(frame,slot,gNB,SEARCH_EXIST); + int ul_pdcch_pdu_id=find_nr_ul_dci(frame,slot,gNB,SEARCH_EXIST); - if (gNB->pdcch_pdu || gNB->ul_dci_pdu) { + LOG_D(PHY,"[gNB %d] Frame %d slot %d, pdcch_pdu_id %d, ul_pdcch_pdu_id %d\n", + gNB->Mod_id,frame,slot,pdcch_pdu_id,ul_pdcch_pdu_id); + + if (pdcch_pdu_id >= 0 || ul_pdcch_pdu_id >= 0) { LOG_D(PHY, "[gNB %d] Frame %d slot %d Calling nr_generate_dci_top (number of UL/DL DCI %d/%d)\n", gNB->Mod_id, frame, slot, - gNB->ul_dci_pdu==NULL?0:gNB->ul_dci_pdu->pdcch_pdu.pdcch_pdu_rel15.numDlDci, - gNB->pdcch_pdu==NULL?0:gNB->pdcch_pdu->pdcch_pdu_rel15.numDlDci); + gNB->ul_pdcch_pdu[ul_pdcch_pdu_id].pdcch_pdu.pdcch_pdu.pdcch_pdu_rel15.numDlDci, + gNB->pdcch_pdu[pdcch_pdu_id].pdcch_pdu.pdcch_pdu_rel15.numDlDci); - VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_PDCCH_TX,1); + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_gNB_PDCCH_TX,1); - nr_generate_dci_top(gNB->pdcch_pdu, - gNB->ul_dci_pdu, + nr_generate_dci_top(gNB, + pdcch_pdu_id>=0 ? &gNB->pdcch_pdu[pdcch_pdu_id].pdcch_pdu : NULL, + ul_pdcch_pdu_id>=0 ? &gNB->ul_pdcch_pdu[ul_pdcch_pdu_id].pdcch_pdu.pdcch_pdu : NULL, gNB->nr_gold_pdcch_dmrs[slot], &gNB->common_vars.txdataF[0][txdataF_offset], AMP, *fp); - - VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_PDCCH_TX,0); + + // free up entry in pdcch tables + if (pdcch_pdu_id>=0) gNB->pdcch_pdu[pdcch_pdu_id].frame = -1; + if (ul_pdcch_pdu_id>=0) gNB->ul_pdcch_pdu[ul_pdcch_pdu_id].frame = -1; + + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_gNB_PDCCH_TX,0); + if (pdcch_pdu_id >= 0) gNB->pdcch_pdu[pdcch_pdu_id].frame = -1; + if (ul_pdcch_pdu_id >= 0) gNB->ul_pdcch_pdu[ul_pdcch_pdu_id].frame = -1; } - LOG_D(PHY, "PDSCH generation started (%d)\n", gNB->num_pdsch_rnti); - for (int i=0; inum_pdsch_rnti; i++) { + for (int i=0; inum_pdsch_rnti[slot]; i++) { VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_GENERATE_DLSCH,1); - nr_generate_pdsch(gNB->dlsch[i][0], - gNB->nr_gold_pdsch_dmrs[slot], - gNB->common_vars.txdataF, - AMP, frame, slot, fp, 0, - &gNB->dlsch_encoding_stats, - &gNB->dlsch_scrambling_stats, - &gNB->dlsch_modulation_stats, - &gNB->tinput, - &gNB->tprep, - &gNB->tparity, - &gNB->toutput, - &gNB->dlsch_rate_matching_stats, - &gNB->dlsch_interleaving_stats, - &gNB->dlsch_segmentation_stats); + LOG_D(PHY, "PDSCH generation started (%d) in frame %d.%d\n", gNB->num_pdsch_rnti[slot],frame,slot); + nr_generate_pdsch(gNB,frame, slot); + if ((frame&127) == 0) dump_pdsch_stats(gNB); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_GENERATE_DLSCH,0); } - VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_TX+offset,0); + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_gNB_TX+offset,0); } @@ -209,8 +211,6 @@ void phy_procedures_gNB_TX(PHY_VARS_gNB *gNB, // VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_RX,1); - - if (do_prach_rx(fp,frame,slot)) L1_nr_prach_procedures(gNB,frame,slot/fp->slots_per_subframe); */ void nr_ulsch_procedures(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx, int ULSCH_id, uint8_t harq_pid) @@ -227,9 +227,12 @@ void nr_ulsch_procedures(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx, int ULSCH number_symbols = pusch_pdu->nr_of_symbols; for (l = start_symbol; l < start_symbol + number_symbols; l++) - number_dmrs_symbols += ((pusch_pdu->ul_dmrs_symb_pos)>>l)&0x01; + number_dmrs_symbols += ((pusch_pdu->ul_dmrs_symb_pos)>>l)&0x01; - nb_re_dmrs = ((pusch_pdu->dmrs_config_type == pusch_dmrs_type1)?6:4); + if (pusch_pdu->dmrs_config_type==pusch_dmrs_type1) + nb_re_dmrs = 6*pusch_pdu->num_dmrs_cdm_grps_no_data; + else + nb_re_dmrs = 4*pusch_pdu->num_dmrs_cdm_grps_no_data; G = nr_get_G(pusch_pdu->rb_size, number_symbols, @@ -237,18 +240,30 @@ void nr_ulsch_procedures(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx, int ULSCH number_dmrs_symbols, // number of dmrs symbols irrespective of single or double symbol dmrs pusch_pdu->qam_mod_order, pusch_pdu->nrOfLayers); - - + + AssertFatal(G>0,"G is 0 : rb_size %u, number_symbols %d, nb_re_dmrs %d, number_dmrs_symbols %d, qam_mod_order %u, nrOfLayer %u\n", + pusch_pdu->rb_size, + number_symbols, + nb_re_dmrs, + number_dmrs_symbols, // number of dmrs symbols irrespective of single or double symbol dmrs + pusch_pdu->qam_mod_order, + pusch_pdu->nrOfLayers); + LOG_D(PHY,"rb_size %d, number_symbols %d, nb_re_dmrs %d, number_dmrs_symbols %d, qam_mod_order %d, nrOfLayer %d\n", + pusch_pdu->rb_size, + number_symbols, + nb_re_dmrs, + number_dmrs_symbols, // number of dmrs symbols irrespective of single or double symbol dmrs + pusch_pdu->qam_mod_order, + pusch_pdu->nrOfLayers); //---------------------------------------------------------- //------------------- ULSCH unscrambling ------------------- //---------------------------------------------------------- - start_meas(&gNB->ulsch_unscrambling_stats); - nr_ulsch_unscrambling(gNB->pusch_vars[ULSCH_id]->llr, - G, - 0, - pusch_pdu->data_scrambling_id, - pusch_pdu->rnti); + nr_ulsch_unscrambling_optim(gNB->pusch_vars[ULSCH_id]->llr, + G, + 0, + pusch_pdu->data_scrambling_id, + pusch_pdu->rnti); stop_meas(&gNB->ulsch_unscrambling_stats); //---------------------------------------------------------- //--------------------- ULSCH decoding --------------------- @@ -267,11 +282,11 @@ void nr_ulsch_procedures(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx, int ULSCH stop_meas(&gNB->ulsch_decoding_stats); if (ret > gNB->ulsch[ULSCH_id][0]->max_ldpc_iterations){ - LOG_I(PHY, "ULSCH %d in error\n",ULSCH_id); + LOG_D(PHY, "ULSCH %d in error\n",ULSCH_id); nr_fill_indication(gNB,frame_rx, slot_rx, ULSCH_id, harq_pid, 1); } else if(gNB->ulsch[ULSCH_id][0]->harq_processes[harq_pid]->b!=NULL){ - LOG_I(PHY, "ULSCH received ok \n"); + LOG_D(PHY, "ULSCH received ok \n"); nr_fill_indication(gNB,frame_rx, slot_rx, ULSCH_id, harq_pid, 0); } } @@ -312,7 +327,9 @@ void nr_fill_indication(PHY_VARS_gNB *gNB, int frame, int slot_rx, int ULSCH_id, LOG_D(PHY, "Estimated timing advance PUSCH is = %d, timing_advance_update is %d \n", sync_pos,timing_advance_update); // estimate UL_CQI for MAC (from antenna port 0 only) - int SNRtimes10 = dB_fixed_times10(gNB->pusch_vars[ULSCH_id]->ulsch_power[0]) - 300;//(10*gNB->measurements.n0_power_dB[0]); + int SNRtimes10 = dB_fixed_times10(gNB->pusch_vars[ULSCH_id]->ulsch_power[0]) - (10*gNB->measurements.n0_power_dB[0]); + + LOG_D(PHY, "Estimated SNR for PUSCH is = %d dB\n", SNRtimes10/10); if (SNRtimes10 < -640) cqi=0; else if (SNRtimes10 > 635) cqi=255; @@ -331,7 +348,8 @@ void nr_fill_indication(PHY_VARS_gNB *gNB, int frame, int slot_rx, int ULSCH_id, gNB->crc_pdu_list[num_crc].num_cb = pusch_pdu->pusch_data.num_cb; gNB->crc_pdu_list[num_crc].ul_cqi = cqi; gNB->crc_pdu_list[num_crc].timing_advance = timing_advance_update; - gNB->crc_pdu_list[num_crc].rssi = 0xffff; // invalid value as this is not yet computed + // in terms of dBFS range -128 to 0 with 0.1 step + gNB->crc_pdu_list[num_crc].rssi = 1280 - (10*dB_fixed(32767*32767)-dB_fixed_times10(gNB->pusch_vars[ULSCH_id]->ulsch_power[0])); gNB->UL_INFO.crc_ind.number_crcs++; @@ -345,7 +363,7 @@ void nr_fill_indication(PHY_VARS_gNB *gNB, int frame, int slot_rx, int ULSCH_id, gNB->rx_pdu_list[num_rx].harq_id = harq_pid; gNB->rx_pdu_list[num_rx].ul_cqi = cqi; gNB->rx_pdu_list[num_rx].timing_advance = timing_advance_update; - gNB->rx_pdu_list[num_rx].rssi = 0xffff; // invalid value as this is not yet computed + gNB->rx_pdu_list[num_rx].rssi = 1280 - (10*dB_fixed(32767*32767)-dB_fixed_times10(gNB->pusch_vars[ULSCH_id]->ulsch_power[0])); if (crc_flag) gNB->rx_pdu_list[num_rx].pdu_length = 0; else { @@ -358,6 +376,71 @@ void nr_fill_indication(PHY_VARS_gNB *gNB, int frame, int slot_rx, int ULSCH_id, pthread_mutex_unlock(&gNB->UL_INFO_mutex); } +// Function to fill UL RB mask to be used for N0 measurements +void fill_ul_rb_mask(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx) { + + int rb2, rb, nb_rb; + for (int symbol=0;symbol<14;symbol++) { + if (gNB->gNB_config.tdd_table.max_tdd_periodicity_list[slot_rx].max_num_of_symbol_per_slot_list[symbol].slot_config.value==1){ + nb_rb = 0; + for (int m=0;m<9;m++) gNB->rb_mask_ul[m] = 0; + gNB->ulmask_symb = -1; + + for (int i=0;ipucch[i]; + if (pucch) { + if ((pucch->active == 1) && + (pucch->frame == frame_rx) && + (pucch->slot == slot_rx) ) { + gNB->ulmask_symb = symbol; + nfapi_nr_pucch_pdu_t *pucch_pdu = &pucch[i].pucch_pdu; + if ((symbol>=pucch_pdu->start_symbol_index) && + (symbol<(pucch_pdu->start_symbol_index + pucch_pdu->nr_of_symbols))){ + for (rb=0; rbprb_size; rb++) { + rb2 = rb+pucch_pdu->prb_start; + gNB->rb_mask_ul[rb2>>5] |= (1<<(rb2&31)); + } + nb_rb+=pucch_pdu->prb_size; + } + } + } + } + for (int ULSCH_id=0;ULSCH_idulsch[ULSCH_id][0]; + int harq_pid; + NR_UL_gNB_HARQ_t *ulsch_harq; + + if ((ulsch) && + (ulsch->rnti > 0)) { + for (harq_pid=0;harq_pidharq_processes[harq_pid]; + AssertFatal(ulsch_harq!=NULL,"harq_pid %d is not allocated\n",harq_pid); + if ((ulsch_harq->status == NR_ACTIVE) && + (ulsch_harq->frame == frame_rx) && + (ulsch_harq->slot == slot_rx) && + (ulsch_harq->handled == 0)){ + uint8_t symbol_start = ulsch_harq->ulsch_pdu.start_symbol_index; + uint8_t symbol_end = symbol_start + ulsch_harq->ulsch_pdu.nr_of_symbols; + gNB->ulmask_symb = symbol; + if ((symbol>=symbol_start) && + (symbolulsch_pdu.rb_size; rb++) { + rb2 = rb+ulsch_harq->ulsch_pdu.rb_start; + gNB->rb_mask_ul[rb2>>5] |= (1<<(rb2&31)); + } + nb_rb+=ulsch_harq->ulsch_pdu.rb_size; + } + } + } + } + //TODO Add check for PRACH as well? + } + if (nb_rbframe_parms.N_RB_UL) + return; + } + } +} + void phy_procedures_gNB_common_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx) { uint8_t symbol; @@ -365,6 +448,7 @@ void phy_procedures_gNB_common_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx) for(symbol = 0; symbol < NR_SYMBOLS_PER_SLOT; symbol++) { // nr_slot_fep_ul(gNB, symbol, proc->slot_rx, 0, 0); + for (aa = 0; aa < gNB->frame_parms.nb_antennas_rx; aa++) { nr_slot_fep_ul(&gNB->frame_parms, gNB->common_vars.rxdata[aa], @@ -380,68 +464,118 @@ void phy_procedures_gNB_common_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx) void phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx) { - nfapi_nr_ul_tti_request_t *UL_tti_req = &gNB->UL_tti_req; - int num_pdus = UL_tti_req->n_pdus; + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_gNB_UESPEC_RX,1); + LOG_D(PHY,"phy_procedures_gNB_uespec_RX frame %d, slot %d\n",frame_rx,slot_rx); - nfapi_nr_uci_indication_t *uci_indication = &gNB->uci_indication; - uci_indication->sfn = frame_rx; - uci_indication->slot = slot_rx; - uci_indication->num_ucis = 0; + fill_ul_rb_mask(gNB, frame_rx, slot_rx); + gNB_I0_measurements(gNB); + for (int i=0;ipucch[i]; + if (pucch) { + if ((pucch->active == 1) && + (pucch->frame == frame_rx) && + (pucch->slot == slot_rx) ) { - LOG_D(PHY,"phy_procedures_gNB_uespec_RX frame %d, slot %d, num_pdus %d\n",frame_rx,slot_rx,num_pdus); + nfapi_nr_pucch_pdu_t *pucch_pdu = &pucch[i].pucch_pdu; + uint16_t num_ucis; - gNB->UL_INFO.rx_ind.number_of_pdus = 0; - gNB->UL_INFO.crc_ind.number_crcs = 0; + switch (pucch_pdu->format_type) { + case 0: - for (int i = 0; i < num_pdus; i++) { - switch (UL_tti_req->pdus_list[i].pdu_type) { - case NFAPI_NR_UL_CONFIG_PUSCH_PDU_TYPE: - { - LOG_D(PHY,"frame %d, slot %d, Got NFAPI_NR_UL_CONFIG_PUSCH_PDU_TYPE\n",frame_rx,slot_rx); - - nfapi_nr_pusch_pdu_t *pusch_pdu = &UL_tti_req->pdus_list[0].pusch_pdu; - nr_fill_ulsch(gNB,frame_rx,slot_rx,pusch_pdu); - - uint8_t ULSCH_id = find_nr_ulsch(pusch_pdu->rnti,gNB,SEARCH_EXIST); - uint8_t harq_pid = pusch_pdu->pusch_data.harq_process_id; - uint8_t symbol_start = pusch_pdu->start_symbol_index; - uint8_t symbol_end = symbol_start + pusch_pdu->nr_of_symbols; - - for(uint8_t symbol = symbol_start; symbol < symbol_end; symbol++) { - nr_rx_pusch(gNB, ULSCH_id, frame_rx, slot_rx, symbol, harq_pid); - } - //LOG_M("rxdataF_comp.m","rxF_comp",gNB->pusch_vars[0]->rxdataF_comp[0],6900,1,1); - //LOG_M("rxdataF_ext.m","rxF_ext",gNB->pusch_vars[0]->rxdataF_ext[0],6900,1,1); - nr_ulsch_procedures(gNB, frame_rx, slot_rx, ULSCH_id, harq_pid); - } - break; - case NFAPI_NR_UL_CONFIG_PUCCH_PDU_TYPE: - { - LOG_D(PHY,"frame %d, slot %d, Got NFAPI_NR_UL_CONFIG_PUCCH_PDU_TYPE\n",frame_rx,slot_rx); - - nfapi_nr_pucch_pdu_t *pucch_pdu = &UL_tti_req->pdus_list[i].pucch_pdu; - switch (pucch_pdu->format_type) { - case 0: - uci_indication->uci_list[uci_indication->num_ucis].pdu_type = NFAPI_NR_UCI_FORMAT_0_1_PDU_TYPE; - uci_indication->uci_list[uci_indication->num_ucis].pdu_size = sizeof(nfapi_nr_uci_pucch_pdu_format_0_1_t); - nfapi_nr_uci_pucch_pdu_format_0_1_t *uci_pdu_format0 = &uci_indication->uci_list[uci_indication->num_ucis].pucch_pdu_format_0_1; - - nr_decode_pucch0(gNB, - slot_rx, - uci_pdu_format0, - pucch_pdu); - - uci_indication->num_ucis += 1; + num_ucis = gNB->UL_INFO.uci_ind.num_ucis; + gNB->UL_INFO.uci_ind.uci_list = &gNB->uci_pdu_list[0]; + gNB->UL_INFO.uci_ind.sfn = frame_rx; + gNB->UL_INFO.uci_ind.slot = slot_rx; + gNB->uci_pdu_list[num_ucis].pdu_type = NFAPI_NR_UCI_FORMAT_0_1_PDU_TYPE; + gNB->uci_pdu_list[num_ucis].pdu_size = sizeof(nfapi_nr_uci_pucch_pdu_format_0_1_t); + nfapi_nr_uci_pucch_pdu_format_0_1_t *uci_pdu_format0 = &gNB->uci_pdu_list[num_ucis].pucch_pdu_format_0_1; + + nr_decode_pucch0(gNB, + slot_rx, + uci_pdu_format0, + pucch_pdu); + + gNB->UL_INFO.uci_ind.num_ucis += 1; + pucch->active = 0; break; - case 1: - break; - case 2: - break; - default: - AssertFatal(1==0,"Only PUCCH format 0,1 and 2 are currently supported\n"); - } + default: + AssertFatal(1==0,"Only PUCCH format 0 is currently supported\n"); + } } } } + + for (int ULSCH_id=0;ULSCH_idulsch[ULSCH_id][0]; + int harq_pid; + int no_sig; + NR_UL_gNB_HARQ_t *ulsch_harq; + + if ((ulsch) && + (ulsch->rnti > 0)) { + // for for an active HARQ process + for (harq_pid=0;harq_pidharq_processes[harq_pid]; + AssertFatal(ulsch_harq!=NULL,"harq_pid %d is not allocated\n",harq_pid); + if ((ulsch_harq->status == NR_ACTIVE) && + (ulsch_harq->frame == frame_rx) && + (ulsch_harq->slot == slot_rx) && + (ulsch_harq->handled == 0)){ + + LOG_D(PHY, "PUSCH detection started in frame %d slot %d\n", + frame_rx,slot_rx); + +#ifdef DEBUG_RXDATA + NR_DL_FRAME_PARMS *frame_parms = &gNB->frame_parms; + RU_t *ru = gNB->RU_list[0]; + int slot_offset = frame_parms->get_samples_slot_timestamp(slot_rx,frame_parms,0); + slot_offset -= ru->N_TA_offset; + ((int16_t*)&gNB->common_vars.debugBuff[gNB->common_vars.debugBuff_sample_offset])[0]=(int16_t)ulsch->rnti; + ((int16_t*)&gNB->common_vars.debugBuff[gNB->common_vars.debugBuff_sample_offset])[1]=(int16_t)ulsch_harq->ulsch_pdu.rb_size; + ((int16_t*)&gNB->common_vars.debugBuff[gNB->common_vars.debugBuff_sample_offset])[2]=(int16_t)ulsch_harq->ulsch_pdu.rb_start; + ((int16_t*)&gNB->common_vars.debugBuff[gNB->common_vars.debugBuff_sample_offset])[3]=(int16_t)ulsch_harq->ulsch_pdu.nr_of_symbols; + ((int16_t*)&gNB->common_vars.debugBuff[gNB->common_vars.debugBuff_sample_offset])[4]=(int16_t)ulsch_harq->ulsch_pdu.start_symbol_index; + ((int16_t*)&gNB->common_vars.debugBuff[gNB->common_vars.debugBuff_sample_offset])[5]=(int16_t)ulsch_harq->ulsch_pdu.mcs_index; + ((int16_t*)&gNB->common_vars.debugBuff[gNB->common_vars.debugBuff_sample_offset])[6]=(int16_t)ulsch_harq->ulsch_pdu.pusch_data.rv_index; + ((int16_t*)&gNB->common_vars.debugBuff[gNB->common_vars.debugBuff_sample_offset])[7]=(int16_t)harq_pid; + memcpy(&gNB->common_vars.debugBuff[gNB->common_vars.debugBuff_sample_offset+4],&ru->common.rxdata[0][slot_offset],frame_parms->get_samples_per_slot(slot_rx,frame_parms)*sizeof(int32_t)); + gNB->common_vars.debugBuff_sample_offset+=(frame_parms->get_samples_per_slot(slot_rx,frame_parms)+1000+4); + if(gNB->common_vars.debugBuff_sample_offset>((frame_parms->get_samples_per_slot(slot_rx,frame_parms)+1000+2)*20)) { + FILE *f; + f = fopen("rxdata_buff.raw", "w"); if (f == NULL) exit(1); + fwrite((int16_t*)gNB->common_vars.debugBuff,2,(frame_parms->get_samples_per_slot(slot_rx,frame_parms)+1000+4)*20*2, f); + fclose(f); + exit(-1); + } +#endif + + uint8_t symbol_start = ulsch_harq->ulsch_pdu.start_symbol_index; + uint8_t symbol_end = symbol_start + ulsch_harq->ulsch_pdu.nr_of_symbols; + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_NR_RX_PUSCH,1); + start_meas(&gNB->rx_pusch_stats); + for(uint8_t symbol = symbol_start; symbol < symbol_end; symbol++) { + no_sig = nr_rx_pusch(gNB, ULSCH_id, frame_rx, slot_rx, symbol, harq_pid); + if (no_sig) { + LOG_I(PHY, "PUSCH not detected in symbol %d\n",symbol); + nr_fill_indication(gNB,frame_rx, slot_rx, ULSCH_id, harq_pid, 1); + return; + } + } + stop_meas(&gNB->rx_pusch_stats); + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_NR_RX_PUSCH,0); + //LOG_M("rxdataF_comp.m","rxF_comp",gNB->pusch_vars[0]->rxdataF_comp[0],6900,1,1); + //LOG_M("rxdataF_ext.m","rxF_ext",gNB->pusch_vars[0]->rxdataF_ext[0],6900,1,1); + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_NR_ULSCH_PROCEDURES_RX,1); + nr_ulsch_procedures(gNB, frame_rx, slot_rx, ULSCH_id, harq_pid); + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_NR_ULSCH_PROCEDURES_RX,0); + break; + } + } + } + } + // figure out a better way to choose slot_rx, 19 is ok for a particular TDD configuration with 30kHz SCS + if ((frame_rx&127) == 0 && slot_rx==19) dump_pusch_stats(gNB); + + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_gNB_UESPEC_RX,0); } diff --git a/openair1/SCHED_NR/sched_nr.h b/openair1/SCHED_NR/sched_nr.h index 5f54539b71..59ac1496e7 100644 --- a/openair1/SCHED_NR/sched_nr.h +++ b/openair1/SCHED_NR/sched_nr.h @@ -34,11 +34,12 @@ #include "PHY/NR_TRANSPORT/nr_dci.h" #include "phy_frame_config_nr.h" - +void fill_ul_rb_mask(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx); void nr_set_ssb_first_subcarrier(nfapi_nr_config_request_scf_t *cfg, NR_DL_FRAME_PARMS *fp); void phy_procedures_gNB_TX(PHY_VARS_gNB *gNB, int frame_tx, int slot_tx, int do_meas); void phy_procedures_gNB_common_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx); void phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx); +void L1_nr_prach_procedures(PHY_VARS_gNB *gNB,int frame,int slot,nfapi_nr_prach_pdu_t *prach_pdu); void nr_common_signal_procedures (PHY_VARS_gNB *gNB,int frame, int slot); void nr_feptx_ofdm(RU_t *ru,int frame_tx,int tti_tx); void nr_feptx_ofdm_2thread(RU_t *ru,int frame_tx,int tti_tx); diff --git a/openair1/SCHED_NR_UE/defs.h b/openair1/SCHED_NR_UE/defs.h index e34ce2b6de..c6aea2ec08 100644 --- a/openair1/SCHED_NR_UE/defs.h +++ b/openair1/SCHED_NR_UE/defs.h @@ -218,6 +218,15 @@ void ra_failed(uint8_t Mod_id,uint8_t CC_id,uint8_t eNB_index); */ void ra_succeeded(uint8_t Mod_id,uint8_t CC_id,uint8_t eNB_index); +/*! \brief UE PRACH procedures. + @param + @param + @param + */ +void nr_ue_prach_procedures(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc, uint8_t gNB_id, runmode_t mode); + +int is_nr_prach_subframe(NR_DL_FRAME_PARMS *frame_parms, uint32_t frame, uint8_t subframe); + #if 0 /*! \brief Compute ACK/NACK information for PUSCH/PUCCH for UE transmission in subframe n. This function implements table 10.1-1 of 36.213, p. 69. @param frame_parms Pointer to DL frame parameter descriptor @@ -322,13 +331,14 @@ uint16_t nr_get_n1_pucch(PHY_VARS_NR_UE *phy_vars_ue, uint8_t SR); #endif + /*! \brief This function retrieves the PHY UE mode. It is used as a helper function for the UE MAC. @param Mod_id Local UE index on which to act @param CC_id Component Carrier Index - @param eNB_index ID of eNB + @param gNB_index ID of gNB @returns UE mode */ -UE_MODE_t get_ue_mode(uint8_t Mod_id,uint8_t CC_id,uint8_t eNB_index); +UE_MODE_t get_nrUE_mode(uint8_t Mod_id,uint8_t CC_id,uint8_t gNB_index); /*! \brief This function implements the power control mechanism for PUCCH from 36.213. @param phy_vars_ue PHY variables diff --git a/openair1/SCHED_NR_UE/fapi_nr_ue_l1.c b/openair1/SCHED_NR_UE/fapi_nr_ue_l1.c index 7439c26eb7..55c7cd0baf 100644 --- a/openair1/SCHED_NR_UE/fapi_nr_ue_l1.c +++ b/openair1/SCHED_NR_UE/fapi_nr_ue_l1.c @@ -34,30 +34,30 @@ #include "fapi_nr_ue_interface.h" #include "fapi_nr_ue_l1.h" +#include "harq_nr.h" //#include "PHY/phy_vars_nr_ue.h" #include "PHY/defs_nr_UE.h" #include "PHY/impl_defs_nr.h" + extern PHY_VARS_NR_UE ***PHY_vars_UE_g; -int8_t nr_ue_scheduled_response(nr_scheduled_response_t *scheduled_response) -{ - +int8_t nr_ue_scheduled_response(nr_scheduled_response_t *scheduled_response){ if(scheduled_response != NULL){ - /// module id - module_id_t module_id = scheduled_response->module_id; - /// component carrier id - uint8_t cc_id = scheduled_response->CC_id; + + module_id_t module_id = scheduled_response->module_id; + uint8_t cc_id = scheduled_response->CC_id, thread_id; uint32_t i; - int slot = scheduled_response->slot; + int slot = scheduled_response->slot; + // Note: we have to handle the thread IDs for this. To be revisited completely. - uint8_t thread_id = PHY_vars_UE_g[module_id][cc_id]->current_thread_id[slot]; + thread_id = PHY_vars_UE_g[module_id][cc_id]->current_thread_id[slot]; + NR_UE_DLSCH_t *dlsch0 = NULL; NR_UE_PDCCH *pdcch_vars = PHY_vars_UE_g[module_id][cc_id]->pdcch_vars[thread_id][0]; - NR_UE_DLSCH_t *dlsch0 = PHY_vars_UE_g[module_id][cc_id]->dlsch[thread_id][0][0]; NR_UE_ULSCH_t *ulsch0 = PHY_vars_UE_g[module_id][cc_id]->ulsch[thread_id][0][0]; - //NR_DL_FRAME_PARMS frame_parms = PHY_vars_UE_g[module_id][cc_id]->frame_parms; - PRACH_RESOURCES_t *prach_resources = PHY_vars_UE_g[module_id][cc_id]->prach_resources[0]; + NR_DL_FRAME_PARMS frame_parms = PHY_vars_UE_g[module_id][cc_id]->frame_parms; + //PRACH_RESOURCES_t *prach_resources = PHY_vars_UE_g[module_id][cc_id]->prach_resources[0]; // PUCCH_ConfigCommon_nr_t *pucch_config_common = PHY_vars_UE_g[module_id][cc_id]->pucch_config_common_nr[0]; // PUCCH_Config_t *pucch_config_dedicated = PHY_vars_UE_g[module_id][cc_id]->pucch_config_dedicated_nr[0]; @@ -67,132 +67,190 @@ int8_t nr_ue_scheduled_response(nr_scheduled_response_t *scheduled_response) LOG_D(PHY,"Received %d DL pdus\n",dl_config->number_pdus); pdcch_vars->nb_search_space = 0; - for(i=0; inumber_pdus; ++i){ - if(dl_config->dl_config_list[i].pdu_type == FAPI_NR_DL_CONFIG_TYPE_DCI){ - fapi_nr_dl_config_dci_dl_pdu_rel15_t *pdcch_config = &dl_config->dl_config_list[i].dci_config_pdu.dci_config_rel15; - memcpy((void*)&pdcch_vars->pdcch_config[pdcch_vars->nb_search_space],(void*)pdcch_config,sizeof(*pdcch_config)); - pdcch_vars->nb_search_space = pdcch_vars->nb_search_space + 1; - LOG_D(PHY,"Number of DCI SearchSpaces %d\n",pdcch_vars->nb_search_space); - }else{ //FAPI_NR_DL_CONFIG_TYPE_DLSCH - // dlsch config pdu - fapi_nr_dl_config_dlsch_pdu_rel15_t *dlsch_config_pdu = &dl_config->dl_config_list[i].dlsch_config_pdu.dlsch_config_rel15; - uint8_t current_harq_pid = dlsch_config_pdu->harq_process_nbr; - dlsch0->current_harq_pid = current_harq_pid; - dlsch0->active = 1; - dlsch0->rnti = dl_config->dl_config_list[i].dlsch_config_pdu.rnti; - - //dlsch0->harq_processes[0]->mcs = &dlsch_config_pdu->mcs; - - NR_DL_UE_HARQ_t *dlsch0_harq = dlsch0->harq_processes[current_harq_pid]; + for (i = 0; i < dl_config->number_pdus; ++i){ - dlsch0_harq->BWPStart = dlsch_config_pdu->BWPStart; - dlsch0_harq->BWPSize = dlsch_config_pdu->BWPSize; - dlsch0_harq->nb_rb = dlsch_config_pdu->number_rbs; - dlsch0_harq->start_rb = dlsch_config_pdu->start_rb; - dlsch0_harq->nb_symbols = dlsch_config_pdu->number_symbols; - dlsch0_harq->start_symbol = dlsch_config_pdu->start_symbol; - dlsch0_harq->dlDmrsSymbPos = dlsch_config_pdu->dlDmrsSymbPos; - dlsch0_harq->dmrsConfigType = dlsch_config_pdu->dmrsConfigType; - dlsch0_harq->mcs = dlsch_config_pdu->mcs; - dlsch0_harq->DCINdi = dlsch_config_pdu->ndi; - dlsch0_harq->rvidx = dlsch_config_pdu->rv; - dlsch0->g_pucch = dlsch_config_pdu->accumulated_delta_PUCCH; - dlsch0_harq->harq_ack.pucch_resource_indicator = dlsch_config_pdu->pucch_resource_id; - dlsch0_harq->harq_ack.slot_for_feedback_ack = dlsch_config_pdu->pdsch_to_harq_feedback_time_ind; - dlsch0_harq->Nl=1; - dlsch0_harq->mcs_table=0; - dlsch0_harq->status = ACTIVE; - LOG_D(MAC,">>>> \tdlsch0->g_pucch=%d\tdlsch0_harq.mcs=%d\n",dlsch0->g_pucch,dlsch0_harq->mcs); + if (dl_config->dl_config_list[i].pdu_type == FAPI_NR_DL_CONFIG_TYPE_DCI) { - } + fapi_nr_dl_config_dci_dl_pdu_rel15_t *pdcch_config = &dl_config->dl_config_list[i].dci_config_pdu.dci_config_rel15; + memcpy((void*)&pdcch_vars->pdcch_config[pdcch_vars->nb_search_space],(void*)pdcch_config,sizeof(*pdcch_config)); + pdcch_vars->nb_search_space = pdcch_vars->nb_search_space + 1; + LOG_D(PHY,"Number of DCI SearchSpaces %d\n",pdcch_vars->nb_search_space); + + } else { + + if (dl_config->dl_config_list[i].pdu_type == FAPI_NR_DL_CONFIG_TYPE_DLSCH){ + dlsch0 = PHY_vars_UE_g[module_id][cc_id]->dlsch[thread_id][0][0]; + } + else if (dl_config->dl_config_list[i].pdu_type == FAPI_NR_DL_CONFIG_TYPE_RA_DLSCH){ + dlsch0 = PHY_vars_UE_g[module_id][cc_id]->dlsch_ra[0]; + } + + fapi_nr_dl_config_dlsch_pdu_rel15_t *dlsch_config_pdu = &dl_config->dl_config_list[i].dlsch_config_pdu.dlsch_config_rel15; + uint8_t current_harq_pid = dlsch_config_pdu->harq_process_nbr; + NR_DL_UE_HARQ_t *dlsch0_harq; + + dlsch0->current_harq_pid = current_harq_pid; + dlsch0->active = 1; + dlsch0->rnti = dl_config->dl_config_list[i].dlsch_config_pdu.rnti; + //dlsch0->harq_processes[0]->mcs = &dlsch_config_pdu->mcs; + dlsch0_harq = dlsch0->harq_processes[current_harq_pid]; + + if (dlsch0_harq){ + + dlsch0_harq->BWPStart = dlsch_config_pdu->BWPStart; + dlsch0_harq->BWPSize = dlsch_config_pdu->BWPSize; + dlsch0_harq->nb_rb = dlsch_config_pdu->number_rbs; + dlsch0_harq->start_rb = dlsch_config_pdu->start_rb; + dlsch0_harq->nb_symbols = dlsch_config_pdu->number_symbols; + dlsch0_harq->start_symbol = dlsch_config_pdu->start_symbol; + dlsch0_harq->dlDmrsSymbPos = dlsch_config_pdu->dlDmrsSymbPos; + dlsch0_harq->dmrsConfigType = dlsch_config_pdu->dmrsConfigType; + dlsch0_harq->n_dmrs_cdm_groups = dlsch_config_pdu->n_dmrs_cdm_groups; + dlsch0_harq->mcs = dlsch_config_pdu->mcs; + dlsch0_harq->rvidx = dlsch_config_pdu->rv; + dlsch0->g_pucch = dlsch_config_pdu->accumulated_delta_PUCCH; + dlsch0_harq->harq_ack.pucch_resource_indicator = dlsch_config_pdu->pucch_resource_id; + dlsch0_harq->harq_ack.slot_for_feedback_ack = (slot+dlsch_config_pdu->pdsch_to_harq_feedback_time_ind)%frame_parms.slots_per_frame; + dlsch0_harq->Nl=1; + dlsch0_harq->mcs_table=0; + dlsch0_harq->harq_ack.rx_status = downlink_harq_process(dlsch0_harq, dlsch0->current_harq_pid, dlsch_config_pdu->ndi, dlsch0->rnti_type); + dlsch0_harq->harq_ack.vDAI_DL = dlsch_config_pdu->dai; + LOG_D(MAC, ">>>> \tdlsch0->g_pucch = %d\tdlsch0_harq.mcs = %d\n", dlsch0->g_pucch, dlsch0_harq->mcs); + + } + } } - }else{ + } else { pdcch_vars->nb_search_space = 0; } - if(scheduled_response->ul_config != NULL){ + if (scheduled_response->ul_config != NULL){ + fapi_nr_ul_config_request_t *ul_config = scheduled_response->ul_config; - for(i=0; inumber_pdus; ++i){ - if(ul_config->ul_config_list[i].pdu_type == FAPI_NR_UL_CONFIG_TYPE_PUSCH){ - // pusch config pdu - nfapi_nr_ue_pusch_pdu_t *pusch_config_pdu = &ul_config->ul_config_list[i].pusch_config_pdu; - uint8_t current_harq_pid = pusch_config_pdu->pusch_data.harq_process_id; - nfapi_nr_ue_pusch_pdu_t *pusch_pdu = &ulsch0->harq_processes[current_harq_pid]->pusch_pdu; - memcpy(pusch_pdu, pusch_config_pdu, sizeof(nfapi_nr_ue_pusch_pdu_t)); + for (i = 0; i < ul_config->number_pdus; ++i){ - ulsch0->f_pusch = pusch_config_pdu->absolute_delta_PUSCH; - } - if(ul_config->ul_config_list[i].pdu_type == FAPI_NR_UL_CONFIG_TYPE_PUCCH){ - // pucch config pdu - fapi_nr_ul_config_pucch_pdu *pucch_config_pdu = &ul_config->ul_config_list[i].pucch_config_pdu; - uint8_t pucch_resource_id = 0; //FIXME!!! - uint8_t format = 1; // FIXME!!! - PHY_vars_UE_g[module_id][cc_id]->pucch_config_dedicated_nr[0].PUCCH_Resource[pucch_resource_id]->format_parameters.initialCyclicShift = pucch_config_pdu->initialCyclicShift; - PHY_vars_UE_g[module_id][cc_id]->pucch_config_dedicated_nr[0].PUCCH_Resource[pucch_resource_id]->format_parameters.nrofSymbols = pucch_config_pdu->nrofSymbols; - PHY_vars_UE_g[module_id][cc_id]->pucch_config_dedicated_nr[0].PUCCH_Resource[pucch_resource_id]->format_parameters.startingSymbolIndex = pucch_config_pdu->startingSymbolIndex; - PHY_vars_UE_g[module_id][cc_id]->pucch_config_dedicated_nr[0].PUCCH_Resource[pucch_resource_id]->format_parameters.nrofPRBs = pucch_config_pdu->nrofPRBs; - PHY_vars_UE_g[module_id][cc_id]->pucch_config_dedicated_nr[0].PUCCH_Resource[pucch_resource_id]->startingPRB = pucch_config_pdu->startingPRB; - PHY_vars_UE_g[module_id][cc_id]->pucch_config_dedicated_nr[0].PUCCH_Resource[pucch_resource_id]->format_parameters.timeDomainOCC = pucch_config_pdu->timeDomainOCC; - PHY_vars_UE_g[module_id][cc_id]->pucch_config_dedicated_nr[0].PUCCH_Resource[pucch_resource_id]->format_parameters.occ_length = pucch_config_pdu->occ_length; - PHY_vars_UE_g[module_id][cc_id]->pucch_config_dedicated_nr[0].PUCCH_Resource[pucch_resource_id]->format_parameters.occ_Index = pucch_config_pdu->occ_Index; - PHY_vars_UE_g[module_id][cc_id]->pucch_config_dedicated_nr[0].PUCCH_Resource[pucch_resource_id]->intraSlotFrequencyHopping = pucch_config_pdu->intraSlotFrequencyHopping; - PHY_vars_UE_g[module_id][cc_id]->pucch_config_dedicated_nr[0].PUCCH_Resource[pucch_resource_id]->secondHopPRB = pucch_config_pdu->secondHopPRB; // Not sure this parameter is used - PHY_vars_UE_g[module_id][cc_id]->pucch_config_dedicated_nr[0].formatConfig[format-1]->additionalDMRS = pucch_config_pdu->additionalDMRS; // At this point we need to know which format is going to be used - PHY_vars_UE_g[module_id][cc_id]->pucch_config_dedicated_nr[0].formatConfig[format-1]->pi2PBSK = pucch_config_pdu->pi2PBSK; - PHY_vars_UE_g[module_id][cc_id]->pucch_config_common_nr[0].pucch_GroupHopping = pucch_config_pdu->pucch_GroupHopping; - PHY_vars_UE_g[module_id][cc_id]->pucch_config_common_nr[0].hoppingId = pucch_config_pdu->hoppingId; - PHY_vars_UE_g[module_id][cc_id]->pucch_config_common_nr[0].p0_nominal = pucch_config_pdu->p0_nominal; - /* pucch_config_dedicated->PUCCH_Resource[pucch_resource_id]->format_parameters.initialCyclicShift = pucch_config_pdu->initialCyclicShift; - pucch_config_dedicated->PUCCH_Resource[pucch_resource_id]->format_parameters.nrofSymbols = pucch_config_pdu->nrofSymbols; - pucch_config_dedicated->PUCCH_Resource[pucch_resource_id]->format_parameters.startingSymbolIndex = pucch_config_pdu->startingSymbolIndex; - pucch_config_dedicated->PUCCH_Resource[pucch_resource_id]->format_parameters.nrofPRBs = pucch_config_pdu->nrofPRBs; - pucch_config_dedicated->PUCCH_Resource[pucch_resource_id]->startingPRB = pucch_config_pdu->startingPRB; - pucch_config_dedicated->PUCCH_Resource[pucch_resource_id]->format_parameters.timeDomainOCC = pucch_config_pdu->timeDomainOCC; - pucch_config_dedicated->PUCCH_Resource[pucch_resource_id]->format_parameters.occ_length = pucch_config_pdu->occ_length; - pucch_config_dedicated->PUCCH_Resource[pucch_resource_id]->format_parameters.occ_Index = pucch_config_pdu->occ_Index; - pucch_config_dedicated->PUCCH_Resource[pucch_resource_id]->intraSlotFrequencyHopping = pucch_config_pdu->intraSlotFrequencyHopping; - pucch_config_dedicated->PUCCH_Resource[pucch_resource_id]->secondHopPRB = pucch_config_pdu->secondHopPRB; // Not sure this parameter is used - pucch_config_dedicated->formatConfig[format-1]->additionalDMRS = pucch_config_pdu->additionalDMRS; // At this point we need to know which format is going to be used - pucch_config_dedicated->formatConfig[format-1]->pi2PBSK = pucch_config_pdu->pi2PBSK; - pucch_config_common->pucch_GroupHopping = pucch_config_pdu->pucch_GroupHopping; - pucch_config_common->hoppingId = pucch_config_pdu->hoppingId; - pucch_config_common->p0_nominal = pucch_config_pdu->p0_nominal;*/ - } - if(ul_config->ul_config_list[i].pdu_type == FAPI_NR_UL_CONFIG_TYPE_PRACH){ - // prach config pdu - fapi_nr_ul_config_prach_pdu *prach_config_pdu = &ul_config->ul_config_list[i].prach_config_pdu; - /*frame_parms.prach_config_common.rootSequenceIndex = prach_config_pdu->root_sequence_index; - frame_parms.prach_config_common.prach_ConfigInfo.prach_ConfigIndex = prach_config_pdu->prach_configuration_index; - frame_parms.prach_config_common.prach_ConfigInfo.zeroCorrelationZoneConfig = prach_config_pdu->zero_correlation_zone_config; - frame_parms.prach_config_common.prach_ConfigInfo.highSpeedFlag = prach_config_pdu->restrictedset_config; - frame_parms.prach_config_common.prach_ConfigInfo.prach_FreqOffset = prach_config_pdu->prach_freq_offset;*/ - prach_resources->ra_PreambleIndex = prach_config_pdu->preamble_index; - } + uint8_t pdu_type = ul_config->ul_config_list[i].pdu_type, pucch_resource_id, current_harq_pid, format, gNB_id = 0; + /* PRACH */ + //NR_PRACH_RESOURCES_t *prach_resources; + fapi_nr_ul_config_prach_pdu *prach_config_pdu; + /* PUSCH */ + nfapi_nr_ue_pusch_pdu_t *pusch_config_pdu; + /* PUCCH */ + fapi_nr_ul_config_pucch_pdu *pucch_config_pdu; + PUCCH_ConfigCommon_nr_t *pucch_config_common_nr; + PUCCH_Config_t *pucch_config_dedicated_nr; + PUCCH_format_t *format_params; + + switch (pdu_type){ + + case (FAPI_NR_UL_CONFIG_TYPE_PUSCH): + // pusch config pdu + pusch_config_pdu = &ul_config->ul_config_list[i].pusch_config_pdu; + current_harq_pid = pusch_config_pdu->pusch_data.harq_process_id; + NR_UL_UE_HARQ_t *harq_process_ul_ue = ulsch0->harq_processes[current_harq_pid]; + + if (harq_process_ul_ue){ + + nfapi_nr_ue_pusch_pdu_t *pusch_pdu = &harq_process_ul_ue->pusch_pdu; + + memcpy(pusch_pdu, pusch_config_pdu, sizeof(nfapi_nr_ue_pusch_pdu_t)); + + ulsch0->f_pusch = pusch_config_pdu->absolute_delta_PUSCH; + + if (scheduled_response->tx_request){ + fapi_nr_tx_request_body_t *tx_req_body = scheduled_response->tx_request->tx_request_body; + + //harq_process_ul_ue->a = (unsigned char*)calloc(TBS/8, sizeof(unsigned char)); + memcpy(harq_process_ul_ue->a, tx_req_body->pdu, tx_req_body->pdu_length); + + harq_process_ul_ue->status = ACTIVE; + } + + } else { + + LOG_E(PHY, "[phy_procedures_nrUE_TX] harq_process_ul_ue is NULL !!\n"); + return -1; + + } + + break; + + case (FAPI_NR_UL_CONFIG_TYPE_PUCCH): + // pucch config pdu + pucch_config_pdu = &ul_config->ul_config_list[i].pucch_config_pdu; + pucch_resource_id = 0; //FIXME!!! + format = 1; // FIXME!!! + pucch_config_common_nr = &PHY_vars_UE_g[module_id][cc_id]->pucch_config_common_nr[0]; + pucch_config_dedicated_nr = &PHY_vars_UE_g[module_id][cc_id]->pucch_config_dedicated_nr[0]; + format_params = &pucch_config_dedicated_nr->PUCCH_Resource[pucch_resource_id]->format_parameters; + + format_params->initialCyclicShift = pucch_config_pdu->initialCyclicShift; + format_params->nrofSymbols = pucch_config_pdu->nrofSymbols; + format_params->startingSymbolIndex = pucch_config_pdu->startingSymbolIndex; + format_params->nrofPRBs = pucch_config_pdu->nrofPRBs; + format_params->timeDomainOCC = pucch_config_pdu->timeDomainOCC; + format_params->occ_length = pucch_config_pdu->occ_length; + format_params->occ_Index = pucch_config_pdu->occ_Index; + + pucch_config_dedicated_nr->PUCCH_Resource[pucch_resource_id]->startingPRB = pucch_config_pdu->startingPRB; + pucch_config_dedicated_nr->PUCCH_Resource[pucch_resource_id]->intraSlotFrequencyHopping = pucch_config_pdu->intraSlotFrequencyHopping; + pucch_config_dedicated_nr->PUCCH_Resource[pucch_resource_id]->secondHopPRB = pucch_config_pdu->secondHopPRB; // Not sure this parameter is used + pucch_config_dedicated_nr->formatConfig[format - 1]->additionalDMRS = pucch_config_pdu->additionalDMRS; // At this point we need to know which format is going to be used + pucch_config_dedicated_nr->formatConfig[format - 1]->pi2PBSK = pucch_config_pdu->pi2PBSK; + + pucch_config_common_nr->pucch_GroupHopping = pucch_config_pdu->pucch_GroupHopping; + pucch_config_common_nr->hoppingId = pucch_config_pdu->hoppingId; + pucch_config_common_nr->p0_nominal = pucch_config_pdu->p0_nominal; + + /* pucch_config_dedicated->PUCCH_Resource[pucch_resource_id]->format_parameters.initialCyclicShift = pucch_config_pdu->initialCyclicShift; + pucch_config_dedicated->PUCCH_Resource[pucch_resource_id]->format_parameters.nrofSymbols = pucch_config_pdu->nrofSymbols; + pucch_config_dedicated->PUCCH_Resource[pucch_resource_id]->format_parameters.startingSymbolIndex = pucch_config_pdu->startingSymbolIndex; + pucch_config_dedicated->PUCCH_Resource[pucch_resource_id]->format_parameters.nrofPRBs = pucch_config_pdu->nrofPRBs; + pucch_config_dedicated->PUCCH_Resource[pucch_resource_id]->startingPRB = pucch_config_pdu->startingPRB; + pucch_config_dedicated->PUCCH_Resource[pucch_resource_id]->format_parameters.timeDomainOCC = pucch_config_pdu->timeDomainOCC; + pucch_config_dedicated->PUCCH_Resource[pucch_resource_id]->format_parameters.occ_length = pucch_config_pdu->occ_length; + pucch_config_dedicated->PUCCH_Resource[pucch_resource_id]->format_parameters.occ_Index = pucch_config_pdu->occ_Index; + pucch_config_dedicated->PUCCH_Resource[pucch_resource_id]->intraSlotFrequencyHopping = pucch_config_pdu->intraSlotFrequencyHopping; + pucch_config_dedicated->PUCCH_Resource[pucch_resource_id]->secondHopPRB = pucch_config_pdu->secondHopPRB; // Not sure this parameter is used + pucch_config_dedicated->formatConfig[format-1]->additionalDMRS = pucch_config_pdu->additionalDMRS; // At this point we need to know which format is going to be used + pucch_config_dedicated->formatConfig[format-1]->pi2PBSK = pucch_config_pdu->pi2PBSK; + pucch_config_common->pucch_GroupHopping = pucch_config_pdu->pucch_GroupHopping; + pucch_config_common->hoppingId = pucch_config_pdu->hoppingId; + pucch_config_common->p0_nominal = pucch_config_pdu->p0_nominal;*/ + break; + + case (FAPI_NR_UL_CONFIG_TYPE_PRACH): + // prach config pdu + //prach_resources = PHY_vars_UE_g[module_id][cc_id]->prach_resources[gNB_id]; + prach_config_pdu = &ul_config->ul_config_list[i].prach_config_pdu; + memcpy((void*)&(PHY_vars_UE_g[module_id][cc_id]->prach_vars[gNB_id]->prach_pdu), (void*)prach_config_pdu, sizeof(fapi_nr_ul_config_prach_pdu)); + PHY_vars_UE_g[module_id][cc_id]->prach_vars[gNB_id]->prach_Config_enabled = 1; + break; + + default: + break; + } } - }else{ - + } else { } - if(scheduled_response->tx_request != NULL){ - - }else{ - - } } return 0; } + + int8_t nr_ue_phy_config_request(nr_phy_config_t *phy_config){ fapi_nr_config_request_t *nrUE_config = &PHY_vars_UE_g[phy_config->Mod_id][phy_config->CC_id]->nrUE_config; - + if(phy_config != NULL) memcpy(nrUE_config,&phy_config->config_req,sizeof(fapi_nr_config_request_t)); - + return 0; } diff --git a/openair1/SCHED_NR_UE/phy_frame_config_nr.h b/openair1/SCHED_NR_UE/phy_frame_config_nr.h index 81b6d373df..3669239578 100644 --- a/openair1/SCHED_NR_UE/phy_frame_config_nr.h +++ b/openair1/SCHED_NR_UE/phy_frame_config_nr.h @@ -62,10 +62,18 @@ int set_tdd_configuration_dedicated_nr(NR_DL_FRAME_PARMS *frame_parms); * @param frame_parms NR DL Frame parameters * @param nr_frame : frame number * @param nr_tti : slot number - @returns nr_slot_t : downlink or uplink */ + @returns int : downlink or uplink */ int slot_select_nr(NR_DL_FRAME_PARMS *frame_parms, int nr_frame, int nr_tti); +/** \brief This function checks nr UE slot direction : downlink or uplink + * @param cfg : FAPI Config Request + * @param nr_frame : frame number + * @param nr_tti : slot number + @returns int : downlink, uplink or mixed slot type */ + +int nr_ue_slot_select(fapi_nr_config_request_t *cfg, int nr_frame, int nr_tti); + /** \brief This function frees tdd configuration for nr * @param frame_parms NR DL Frame parameters @returns none */ @@ -78,6 +86,5 @@ void free_tdd_configuration_nr(NR_DL_FRAME_PARMS *frame_parms); void free_tdd_configuration_dedicated_nr(NR_DL_FRAME_PARMS *frame_parms); -void nr_ue_prach_procedures(PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc,uint8_t eNB_id,uint8_t abstraction_flag,runmode_t mod); #endif /* PHY_FRAME_CONFIG_NR_H */ diff --git a/openair1/SCHED_NR_UE/phy_frame_config_nr_ue.c b/openair1/SCHED_NR_UE/phy_frame_config_nr_ue.c new file mode 100644 index 0000000000..640ffb4ac3 --- /dev/null +++ b/openair1/SCHED_NR_UE/phy_frame_config_nr_ue.c @@ -0,0 +1,99 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*********************************************************************** +* +* FILENAME : phy_frame_configuration_nr_ue.c +* +* DESCRIPTION : functions related to FDD/TDD configuration for NR +* see TS 38.213 11.1 Slot configuration +* and TS 38.331 for RRC configuration +* +************************************************************************/ + +#include "PHY/defs_nr_UE.h" + +/******************************************************************* +* +* NAME : nr_ue_slot_select +* +* DESCRIPTION : function for the UE equivalent to nr_slot_select +* +*********************************************************************/ + +int nr_ue_slot_select(fapi_nr_config_request_t *cfg, int nr_frame, int nr_tti) { + /* for FFD all slot can be considered as an uplink */ + int mu = cfg->ssb_config.scs_common, check_slot = 0; + + if (cfg->cell_config.frame_duplex_type == FDD) { + return (NR_UPLINK_SLOT | NR_DOWNLINK_SLOT); + } + + if (nr_frame%2 == 0) { + for(int symbol_count=0; symbol_counttdd_table.max_tdd_periodicity_list[nr_tti].max_num_of_symbol_per_slot_list[symbol_count].slot_config == 1) { + check_slot++; + } + } + + if(check_slot == NR_NUMBER_OF_SYMBOLS_PER_SLOT) { + return (NR_UPLINK_SLOT); + } + + check_slot = 0; + + for(int symbol_count=0; symbol_counttdd_table.max_tdd_periodicity_list[nr_tti].max_num_of_symbol_per_slot_list[symbol_count].slot_config == 0) { + check_slot++; + } + } + + if(check_slot == NR_NUMBER_OF_SYMBOLS_PER_SLOT) { + return (NR_DOWNLINK_SLOT); + } else { + return (NR_MIXED_SLOT); + } + } else { + for(int symbol_count=0; symbol_counttdd_table.max_tdd_periodicity_list[((1<tdd_table.max_tdd_periodicity_list[((1< @@ -53,7 +54,7 @@ #ifdef EMOS #include "SCHED/phy_procedures_emos.h" #endif - +#include "executables/softmodem-common.h" //#define DEBUG_PHY_PROC #define NR_PDCCH_SCHED @@ -66,6 +67,7 @@ #endif #include "LAYER2/NR_MAC_UE/mac_defs.h" +#include "LAYER2/NR_MAC_UE/mac_proto.h" #include "common/utils/LOG/log.h" #ifdef EMOS @@ -84,6 +86,8 @@ fifo_dump_emos_UE emos_dump_UE; char nr_mode_string[4][20] = {"NOT SYNCHED","PRACH","RAR","PUSCH"}; +const uint8_t nr_rv_round_map_ue[4] = {0, 2, 1, 3}; + extern double cpuf; /* @@ -190,14 +194,13 @@ void nr_dump_dlsch_SI(PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc,uint8_t eNB_id, exit(-1); } -#if defined(EXMIMO) || defined(OAI_USRP) || defined(OAI_BLADERF) || defined(OAI_LMSSDR) || defined(OAI_ADRV9371_ZC706) -//unsigned int gain_table[31] = {100,112,126,141,158,178,200,224,251,282,316,359,398,447,501,562,631,708,794,891,1000,1122,1258,1412,1585,1778,1995,2239,2512,2818,3162}; -/* - unsigned int get_tx_amp_prach(int power_dBm, int power_max_dBm, int N_RB_UL) - { +#endif - int gain_dB = power_dBm - power_max_dBm; - int amp_x_100; +unsigned int gain_table[31] = {100,112,126,141,158,178,200,224,251,282,316,359,398,447,501,562,631,708,794,891,1000,1122,1258,1412,1585,1778,1995,2239,2512,2818,3162}; + +int get_tx_amp_prach(int power_dBm, int power_max_dBm, int N_RB_UL){ + + int gain_dB = power_dBm - power_max_dBm, amp_x_100 = -1; switch (N_RB_UL) { case 6: @@ -219,37 +222,21 @@ void nr_dump_dlsch_SI(PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc,uint8_t eNB_id, amp_x_100 = 408*AMP; // 408 = 100*sqrt(100/6) break; default: - LOG_E(PHY,"Unknown PRB size %d\n",N_RB_UL); - //mac_xface->macphy_exit(""); + LOG_E(PHY, "Unknown PRB size %d\n", N_RB_UL); + return (amp_x_100); break; } if (gain_dB < -30) { - return(amp_x_100/3162); - } else if (gain_dB>0) - return(amp_x_100); + return (amp_x_100/3162); + } else if (gain_dB > 0) + return (amp_x_100); else - return(amp_x_100/gain_table[-gain_dB]); // 245 corresponds to the factor sqrt(25/6) - } -*/ + return (amp_x_100/gain_table[-gain_dB]); // 245 corresponds to the factor sqrt(25/6) -unsigned int get_tx_amp(int power_dBm, int power_max_dBm, int N_RB_UL, int nb_rb) -{ - - int gain_dB = power_dBm - power_max_dBm; - double gain_lin; - - gain_lin = pow(10,.1*gain_dB); - if ((nb_rb >0) && (nb_rb <= N_RB_UL)) { - return((int)(AMP*sqrt(gain_lin*N_RB_UL/(double)nb_rb))); - } - else { - LOG_E(PHY,"Illegal nb_rb/N_RB_UL combination (%d/%d)\n",nb_rb,N_RB_UL); - //mac_xface->macphy_exit(""); - } - return(0); + return (amp_x_100); } -#endif +#if 0 void nr_dump_dlsch_ra(PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc,uint8_t eNB_id,uint8_t nr_tti_rx) { @@ -289,107 +276,6 @@ void nr_dump_dlsch_ra(PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc,uint8_t eNB_id, write_output("dlsch_mag2.m","dlschmag2",ue->pdsch_vars_ra[0]->dl_ch_magb0,300*nsymb,1,1); } -void phy_reset_ue(uint8_t Mod_id,uint8_t CC_id,uint8_t eNB_index) -{ - - // This flushes ALL DLSCH and ULSCH harq buffers of ALL connected eNBs...add the eNB_index later - // for more flexibility - - uint8_t i,j,k,s; - PHY_VARS_NR_UE *ue = PHY_vars_UE_g[Mod_id][CC_id]; - - //[NUMBER_OF_RX_THREAD=2][NUMBER_OF_CONNECTED_eNB_MAX][2]; - for(int l=0; ldlsch[l][i][j]) { - for(k=0; kdlsch[l][i][j]->harq_processes[k]; k++) { - ue->dlsch[l][i][j]->harq_processes[k]->status = SCH_IDLE; - for (s=0; s<10; s++) { - // reset ACK/NACK bit to DTX for all nr_tti_rxs s = 0..9 - ue->dlsch[l][i][j]->harq_ack[s].ack = 2; - ue->dlsch[l][i][j]->harq_ack[s].send_harq_status = 0; - ue->dlsch[l][i][j]->harq_ack[s].vDAI_UL = 0xff; - ue->dlsch[l][i][j]->harq_ack[s].vDAI_DL = 0xff; - } - } - } - } - - //UL HARQ - if(ue->ulsch[i]) { - for(k=0; kulsch[i]->harq_processes[k]; k++) { - ue->ulsch[i]->harq_processes[k]->status = SCH_IDLE; - //Set NDIs for all UL HARQs to 0 - // ue->ulsch[i]->harq_processes[k]->Ndi = 0; - - } - } - - // flush Msg3 buffer - ue->ulsch_Msg3_active[i] = 0; - - } - } -} - -void ra_failed(uint8_t Mod_id,uint8_t CC_id,uint8_t eNB_index) -{ - - // if contention resolution fails, go back to PRACH - PHY_vars_UE_g[Mod_id][CC_id]->UE_mode[eNB_index] = PRACH; - PHY_vars_UE_g[Mod_id][CC_id]->pdcch_vars[0][eNB_index]->crnti_is_temporary = 0; - PHY_vars_UE_g[Mod_id][CC_id]->pdcch_vars[0][eNB_index]->crnti = 0; - PHY_vars_UE_g[Mod_id][CC_id]->pdcch_vars[1][eNB_index]->crnti_is_temporary = 0; - PHY_vars_UE_g[Mod_id][CC_id]->pdcch_vars[1][eNB_index]->crnti = 0; - LOG_E(PHY,"[UE %d] Random-access procedure fails, going back to PRACH, setting SIStatus = 0, discard temporary C-RNTI and State RRC_IDLE\n",Mod_id); - //mac_xface->macphy_exit(""); -} - -void ra_succeeded(uint8_t Mod_id,uint8_t CC_id,uint8_t eNB_index) -{ - - int i; - - LOG_I(PHY,"[UE %d][RAPROC] Random-access procedure succeeded. Set C-RNTI = Temporary C-RNTI\n",Mod_id); - - PHY_vars_UE_g[Mod_id][CC_id]->pdcch_vars[0][eNB_index]->crnti_is_temporary = 0; - PHY_vars_UE_g[Mod_id][CC_id]->pdcch_vars[1][eNB_index]->crnti_is_temporary = 0; - PHY_vars_UE_g[Mod_id][CC_id]->ulsch_Msg3_active[eNB_index] = 0; - PHY_vars_UE_g[Mod_id][CC_id]->UE_mode[eNB_index] = PUSCH; - - for (i=0; i<8; i++) { - if (PHY_vars_UE_g[Mod_id][CC_id]->ulsch[eNB_index]->harq_processes[i]) { - PHY_vars_UE_g[Mod_id][CC_id]->ulsch[eNB_index]->harq_processes[i]->status=IDLE; - PHY_vars_UE_g[Mod_id][CC_id]->dlsch[0][eNB_index][0]->harq_processes[i]->round=0; - PHY_vars_UE_g[Mod_id][CC_id]->dlsch[1][eNB_index][0]->harq_processes[i]->round=0; - PHY_vars_UE_g[Mod_id][CC_id]->ulsch[eNB_index]->harq_processes[i]->subframe_scheduling_flag=0; - } - } - - -} - -UE_MODE_t get_ue_mode(uint8_t Mod_id,uint8_t CC_id,uint8_t eNB_index) -{ - - return(PHY_vars_UE_g[Mod_id][CC_id]->UE_mode[eNB_index]); - -} -void nr_process_timing_advance_rar(PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc,uint16_t timing_advance) { - - ue->timing_advance = timing_advance*4; - - -#ifdef DEBUG_PHY_PROC - /* TODO: fix this log, what is 'HW timing advance'? */ - /*LOG_I(PHY,"[UE %d] AbsoluteSubFrame %d.%d, received (rar) timing_advance %d, HW timing advance %d\n",ue->Mod_id,proc->frame_rx, proc->nr_tti_rx_rx, ue->timing_advance);*/ - LOG_I(PHY,"[UE %d] AbsoluteSubFrame %d.%d, received (rar) timing_advance %d\n",ue->Mod_id,proc->frame_rx, proc->nr_tti_rx, ue->timing_advance); -#endif - -} - uint8_t nr_is_SR_TXOp(PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc,uint8_t eNB_id) { @@ -1215,179 +1101,14 @@ uint16_t nr_get_n1_pucch(PHY_VARS_NR_UE *ue, return(-1); } - - -void ulsch_common_procedures(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc, uint8_t empty_subframe) { - - int aa; - NR_DL_FRAME_PARMS *frame_parms=&ue->frame_parms; - - int nsymb; - int nr_tti_tx = proc->nr_tti_tx; - int frame_tx = proc->frame_tx; - int ulsch_start; - int overflow=0; -#if defined(EXMIMO) || defined(OAI_USRP) || defined(OAI_BLADERF) || defined(OAI_LMSSDR) || defined(OAI_ADRV9371_ZC706) - int k,l; - int dummy_tx_buffer[frame_parms->samples_per_subframe] __attribute__((aligned(16))); #endif - VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX_ULSCH_COMMON,VCD_FUNCTION_IN); -#if UE_TIMING_TRACE - start_meas(&ue->ofdm_mod_stats); -#endif - nsymb = (frame_parms->Ncp == 0) ? 14 : 12; - -#if defined(EXMIMO) || defined(OAI_USRP) || defined(OAI_BLADERF) || defined(OAI_LMSSDR) || defined(OAI_ADRV9371_ZC706)//this is the EXPRESS MIMO case - ulsch_start = (ue->rx_offset+nr_tti_tx*frame_parms->samples_per_subframe- - ue->hw_timing_advance- - ue->timing_advance- - ue->N_TA_offset+5); - //LOG_E(PHY,"ul-signal [nr_tti_rx: %d, ulsch_start %d]\n",nr_tti_tx, ulsch_start); - - if(ulsch_start < 0) - ulsch_start = ulsch_start + (LTE_NUMBER_OF_SUBFRAMES_PER_FRAME*frame_parms->samples_per_subframe); - - if (ulsch_start > (LTE_NUMBER_OF_SUBFRAMES_PER_FRAME*frame_parms->samples_per_subframe)) - ulsch_start = ulsch_start % (LTE_NUMBER_OF_SUBFRAMES_PER_FRAME*frame_parms->samples_per_subframe); - - //LOG_E(PHY,"ul-signal [nr_tti_rx: %d, ulsch_start %d]\n",nr_tti_tx, ulsch_start); -#else //this is the normal case - ulsch_start = (frame_parms->samples_per_subframe*nr_tti_tx)-ue->N_TA_offset; //-ue->timing_advance; -#endif //else EXMIMO - - //#if defined(EXMIMO) || defined(OAI_USRP) || defined(OAI_BLADERF) || defined(OAI_LMSSDR) || defined(OAI_ADRV9371_ZC706) - if (empty_subframe) - { - //#if 1 - overflow = ulsch_start - 9*frame_parms->samples_per_subframe; - for (aa=0; aanb_antennas_tx; aa++) { - - if (overflow > 0) - { - memset(&ue->common_vars.txdata[aa][ulsch_start],0,4*(frame_parms->samples_per_subframe-overflow)); - memset(&ue->common_vars.txdata[aa][0],0,4*overflow); - } - else - { - memset(&ue->common_vars.txdata[aa][ulsch_start],0,4*frame_parms->samples_per_subframe); - } - } - /*#else - overflow = ulsch_start - 9*frame_parms->samples_per_subframe; - for (aa=0; aanb_antennas_tx; aa++) { - for (k=ulsch_start; ksamples_per_subframe*LTE_NUMBER_OF_SUBFRAMES_PER_FRAME,ulsch_start+frame_parms->samples_per_subframe); k++) { - ((short*)ue->common_vars.txdata[aa])[2*k] = 0; - ((short*)ue->common_vars.txdata[aa])[2*k+1] = 0; - } - - for (k=0; kcommon_vars.txdata[aa])[2*k] = 0; - ((short*)ue->common_vars.txdata[aa])[2*k+1] = 0; - } - } - endif*/ - return; - } - - - if ((frame_tx%100) == 0) - LOG_D(PHY,"[UE %d] Frame %d, nr_tti_rx %d: ulsch_start = %d (rxoff %d, HW TA %d, timing advance %d, TA_offset %d\n", - ue->Mod_id,frame_tx,nr_tti_tx, - ulsch_start, - ue->rx_offset, - ue->hw_timing_advance, - ue->timing_advance, - ue->N_TA_offset); - - - for (aa=0; aanb_antennas_tx; aa++) { - if (frame_parms->Ncp == 1) - PHY_ofdm_mod(&ue->common_vars.txdataF[aa][nr_tti_tx*nsymb*frame_parms->ofdm_symbol_size], -#if defined(EXMIMO) || defined(OAI_USRP) || defined(OAI_BLADERF) || defined(OAI_LMSSDR) || defined(OAI_ADRV9371_ZC706) - dummy_tx_buffer, -#else - &ue->common_vars.txdata[aa][ulsch_start], -#endif - frame_parms->ofdm_symbol_size, - nsymb, - frame_parms->nb_prefix_samples, - CYCLIC_PREFIX); - else - normal_prefix_mod(&ue->common_vars.txdataF[aa][nr_tti_tx*nsymb*frame_parms->ofdm_symbol_size], -#if defined(EXMIMO) || defined(OAI_USRP) || defined(OAI_BLADERF) || defined(OAI_LMSSDR) || defined(OAI_ADRV9371_ZC706) - dummy_tx_buffer, -#else - &ue->common_vars.txdata[aa][ulsch_start], -#endif - nsymb, - &ue->frame_parms); - - -#if defined(EXMIMO) || defined(OAI_USRP) || defined(OAI_BLADERF) || defined(OAI_LMSSDR) || defined(OAI_ADRV9371_ZC706) - apply_7_5_kHz(ue,dummy_tx_buffer,0); - apply_7_5_kHz(ue,dummy_tx_buffer,1); -#else - apply_7_5_kHz(ue,&ue->common_vars.txdata[aa][ulsch_start],0); - apply_7_5_kHz(ue,&ue->common_vars.txdata[aa][ulsch_start],1); -#endif - - -#if defined(EXMIMO) || defined(OAI_USRP) || defined(OAI_BLADERF) || defined(OAI_LMSSDR) || defined(OAI_ADRV9371_ZC706) - overflow = ulsch_start - 9*frame_parms->samples_per_subframe; - - - for (k=ulsch_start,l=0; ksamples_per_subframe*LTE_NUMBER_OF_SUBFRAMES_PER_FRAME,ulsch_start+frame_parms->samples_per_subframe); k++,l++) { - ((short*)ue->common_vars.txdata[aa])[2*k] = ((short*)dummy_tx_buffer)[2*l]<<4; - ((short*)ue->common_vars.txdata[aa])[2*k+1] = ((short*)dummy_tx_buffer)[2*l+1]<<4; - } - - for (k=0; kcommon_vars.txdata[aa])[2*k] = ((short*)dummy_tx_buffer)[2*l]<<4; - ((short*)ue->common_vars.txdata[aa])[2*k+1] = ((short*)dummy_tx_buffer)[2*l+1]<<4; - } -#if defined(EXMIMO) - // handle switch before 1st TX nr_tti_rx, guarantee that the slot prior to transmission is switch on - for (k=ulsch_start - (frame_parms->samples_per_subframe>>1) ; kcommon_vars.txdata[aa][k+frame_parms->samples_per_subframe*LTE_NUMBER_OF_SUBFRAMES_PER_FRAME] &= 0xFFFEFFFE; - else if (k>(frame_parms->samples_per_subframe*LTE_NUMBER_OF_SUBFRAMES_PER_FRAME)) - ue->common_vars.txdata[aa][k-frame_parms->samples_per_subframe*LTE_NUMBER_OF_SUBFRAMES_PER_FRAME] &= 0xFFFEFFFE; - else - ue->common_vars.txdata[aa][k] &= 0xFFFEFFFE; - } -#endif -#endif - /* - only for debug - LOG_I(PHY,"ul-signal [nr_tti_rx: %d, ulsch_start %d, TA: %d, rxOffset: %d, timing_advance: %d, hw_timing_advance: %d]\n",nr_tti_tx, ulsch_start, ue->N_TA_offset, ue->rx_offset, ue->timing_advance, ue->hw_timing_advance); - if( (crash == 1) && (nr_tti_tx == 0) ) - { - LOG_E(PHY,"***** DUMP TX Signal [ulsch_start %d] *****\n",ulsch_start); - write_output("txBuff.m","txSignal",&ue->common_vars.txdata[aa][ulsch_start],frame_parms->samples_per_subframe,1,1); - } - */ - - } //nb_antennas_tx - -#if UE_TIMING_TRACE - stop_meas(&ue->ofdm_mod_stats); -#endif - - VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX_ULSCH_COMMON,VCD_FUNCTION_OUT); - +UE_MODE_t get_nrUE_mode(uint8_t Mod_id,uint8_t CC_id,uint8_t gNB_id){ + return(PHY_vars_UE_g[Mod_id][CC_id]->UE_mode[gNB_id]); } -#endif - - -void nr_process_timing_advance(module_id_t Mod_id, uint8_t CC_id, uint8_t ta_command, uint8_t mu, uint16_t bwp_ul_NB_RB){ - - // 3GPP TS 38.213 p4.2 - // scale by the scs numerology - int factor_mu = 1 << mu; +uint16_t get_bw_scaling(uint16_t bwp_ul_NB_RB){ uint16_t bw_scaling; - // scale the 16 factor in N_TA calculation in 38.213 section 4.2 according to the used FFT size switch (bwp_ul_NB_RB) { case 32: bw_scaling = 4; break; @@ -1398,13 +1119,37 @@ void nr_process_timing_advance(module_id_t Mod_id, uint8_t CC_id, uint8_t ta_com case 273: bw_scaling = 32; break; default: abort(); } + return bw_scaling; +} + +void nr_process_timing_advance(module_id_t Mod_id, uint8_t CC_id, uint8_t ta_command, uint8_t mu, uint16_t bwp_ul_NB_RB){ + + // 3GPP TS 38.213 p4.2 + // scale by the scs numerology + int factor_mu = 1 << mu; + uint16_t bw_scaling = get_bw_scaling(bwp_ul_NB_RB); PHY_vars_UE_g[Mod_id][CC_id]->timing_advance += (ta_command - 31) * bw_scaling / factor_mu; - LOG_D(PHY, "[UE %d] Got timing advance command %u from MAC, new value is %u\n", Mod_id, ta_command, PHY_vars_UE_g[Mod_id][CC_id]->timing_advance); + LOG_D(PHY, "[UE %d] Got timing advance command %u from MAC, new value is %d\n", Mod_id, ta_command, PHY_vars_UE_g[Mod_id][CC_id]->timing_advance); +} + +// WIP +// - todo: handle TA application as per ch 4.2 TS 38.213 +void nr_process_timing_advance_rar(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc, uint16_t ta_command) { + + int factor_mu = 1 << ue->frame_parms.numerology_index; + uint16_t bwp_ul_NB_RB = ue->frame_parms.N_RB_UL; + uint16_t bw_scaling = get_bw_scaling(bwp_ul_NB_RB); + + // Transmission timing adjustment (TS 38.213 p4.2) + ue->timing_advance = bw_scaling / factor_mu; + + LOG_D(PHY, "[UE %d] Frame %d Slot %d, Received (RAR) timing advance command %d new value is %u \n", ue->Mod_id, proc->frame_rx, proc->nr_tti_rx, ta_command, ue->timing_advance); } #if 0 + void ue_ulsch_uespec_procedures(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc, uint8_t eNB_id, @@ -1518,7 +1263,7 @@ void ue_ulsch_uespec_procedures(PHY_VARS_NR_UE *ue, } if (isBad) { - LOG_I(PHY,"Skip PUSCH generation!\n"); + LOG_D(PHY,"Skip PUSCH generation!\n"); ue->ulsch[eNB_id]->harq_processes[harq_pid]->subframe_scheduling_flag = 0; } } @@ -2312,28 +2057,26 @@ void ue_pucch_procedures(PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc,uint8_t eNB_ void phy_procedures_nrUE_TX(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc, uint8_t gNB_id, - uint8_t thread_id) -{ + uint8_t thread_id){ //int32_t ulsch_start=0; int slot_tx = proc->nr_tti_tx; int frame_tx = proc->frame_tx; + uint8_t harq_pid = 0; + runmode_t mode = normal_txrx; VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX,VCD_FUNCTION_IN); - LOG_I(PHY,"****** start TX-Chain for AbsSubframe %d.%d ******\n", frame_tx, slot_tx); + memset(ue->common_vars.txdataF[0], 0, sizeof(int)*14*ue->frame_parms.ofdm_symbol_size); + + LOG_D(PHY,"****** start TX-Chain for AbsSubframe %d.%d ******\n", frame_tx, slot_tx); #if UE_TIMING_TRACE start_meas(&ue->phy_proc_tx); #endif - uint8_t harq_pid = 0; //temporary implementation - - nr_ue_ulsch_procedures(ue, - harq_pid, - frame_tx, - slot_tx, - thread_id, - gNB_id); + if (ue->UE_mode[gNB_id] == PUSCH || get_softmodem_params()->phy_test == 1){ + if (ue->ulsch[thread_id][gNB_id][0]->harq_processes[harq_pid]->status == ACTIVE) + nr_ue_ulsch_procedures(ue, harq_pid, frame_tx, slot_tx, thread_id, gNB_id); /* @@ -2345,34 +2088,29 @@ void phy_procedures_nrUE_TX(PHY_VARS_NR_UE *ue, } // UE_mode==PUSCH */ - LOG_D(PHY, "Sending data \n"); - nr_ue_pusch_common_procedures(ue, - harq_pid, - slot_tx, - thread_id, - gNB_id, - &ue->frame_parms); + if (get_softmodem_params()->usim_test==0) { + LOG_D(PHY, "Generating PUCCH\n"); + pucch_procedures_ue_nr(ue, + gNB_id, + proc, + FALSE); + } + LOG_D(PHY, "Sending Uplink data \n"); + nr_ue_pusch_common_procedures(ue, + slot_tx, + &ue->frame_parms,1); + //ue->ulsch[thread_id][gNB_id][0]->harq_processes[harq_pid]->pusch_pdu.nrOfLayers); + } //LOG_M("txdata.m","txs",ue->common_vars.txdata[0],1228800,1,1); - -/* - if ((ue->UE_mode[eNB_id] == PRACH) && - (ue->frame_parms.prach_config_common.prach_Config_enabled==1)) { - - // check if we have PRACH opportunity - - if (is_prach_subframe(&ue->frame_parms,frame_tx,nr_tti_tx)) { - - ue_prach_procedures(ue,proc,eNB_id,abstraction_flag,mode); + /* RACH */ + if (get_softmodem_params()->do_ra==1) { + if ((ue->UE_mode[gNB_id] < PUSCH) && (ue->prach_vars[gNB_id]->prach_Config_enabled == 1)) { + nr_ue_prach_procedures(ue, proc, gNB_id, mode); } - } // mode is PRACH - else { - ue->generate_prach=0; } -*/ - - LOG_I(PHY,"****** end TX-Chain for AbsSubframe %d.%d ******\n", frame_tx, slot_tx); + LOG_D(PHY,"****** end TX-Chain for AbsSubframe %d.%d ******\n", frame_tx, slot_tx); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX, VCD_FUNCTION_OUT); #if UE_TIMING_TRACE @@ -2381,137 +2119,6 @@ void phy_procedures_nrUE_TX(PHY_VARS_NR_UE *ue, } - -void nr_ue_prach_procedures(PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc,uint8_t eNB_id,uint8_t abstraction_flag,runmode_t mode) { - - int frame_tx = proc->frame_tx; - int nr_tti_tx = proc->nr_tti_tx; - int prach_power; - uint16_t preamble_tx=50; - PRACH_RESOURCES_t prach_resources; - - VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX_PRACH, VCD_FUNCTION_IN); - - ue->generate_nr_prach=0; - if (ue->mac_enabled==0){ - ue->prach_resources[eNB_id] = &prach_resources; - ue->prach_resources[eNB_id]->ra_PreambleIndex = preamble_tx; - ue->prach_resources[eNB_id]->ra_TDD_map_index = 0; - } - - if (ue->mac_enabled==1){ - - // ask L2 for RACH transport - if ((mode != rx_calib_ue) && (mode != rx_calib_ue_med) && (mode != rx_calib_ue_byp) && (mode != no_L2_connect) ) { - LOG_D(PHY,"Getting PRACH resources\n"); - //ue->prach_resources[eNB_id] = mac_xface->ue_get_rach(ue->Mod_id,ue->CC_id,frame_tx,eNB_id,nr_tti_tx); - // LOG_D(PHY,"Got prach_resources for eNB %d address %p, RRCCommon %p\n",eNB_id,ue->prach_resources[eNB_id],UE_mac_inst[ue->Mod_id].radioResourceConfigCommon); - // LOG_D(PHY,"Prach resources %p\n",ue->prach_resources[eNB_id]); - } -} - -if (ue->prach_resources[eNB_id]!=NULL) { - - ue->generate_nr_prach=1; - ue->prach_cnt=0; -#ifdef SMBV -ue->prach_resources[eNB_id]->ra_PreambleIndex = preamble_tx; -#endif - -#ifdef OAI_EMU - ue->prach_PreambleIndex=ue->prach_resources[eNB_id]->ra_PreambleIndex; -#endif - - if (abstraction_flag == 0) { - - LOG_I(PHY,"mode %d\n",mode); - - if ((ue->mac_enabled==1) && (mode != calib_prach_tx)) { - - ue->tx_power_dBm[nr_tti_tx] = ue->prach_resources[eNB_id]->ra_PREAMBLE_RECEIVED_TARGET_POWER+get_nr_PL(ue,eNB_id); - } - else { - ue->tx_power_dBm[nr_tti_tx] = ue->tx_power_max_dBm; - ue->prach_resources[eNB_id]->ra_PreambleIndex = preamble_tx; - } - - LOG_I(PHY,"[UE %d][RAPROC] Frame %d, nr_tti_rx %d : Generating PRACH, preamble %d,PL %d, P0_PRACH %d, TARGET_RECEIVED_POWER %d dBm, PRACH TDD Resource index %d, RA-RNTI %d\n", - ue->Mod_id, - frame_tx, - nr_tti_tx, - ue->prach_resources[eNB_id]->ra_PreambleIndex, - get_nr_PL(ue,eNB_id), - ue->tx_power_dBm[nr_tti_tx], - ue->prach_resources[eNB_id]->ra_PREAMBLE_RECEIVED_TARGET_POWER, - ue->prach_resources[eNB_id]->ra_TDD_map_index, - ue->prach_resources[eNB_id]->ra_RNTI); - - ue->tx_total_RE[nr_tti_tx] = 96; - -#if defined(EXMIMO) || defined(OAI_USRP) || defined(OAI_BLADERF) || defined(OAI_LMSSDR) || defined(OAI_ADRV9371_ZC706) - ue->prach_vars[eNB_id]->amp = nr_get_tx_amp(ue->tx_power_dBm[nr_tti_tx], - ue->tx_power_max_dBm, - ue->frame_parms.N_RB_UL, - 6); -#else - ue->prach_vars[eNB_id]->amp = AMP; -#endif - if ((mode == calib_prach_tx) && (((proc->frame_tx&0xfffe)%100)==0)) - LOG_D(PHY,"[UE %d][RAPROC] Frame %d, nr_tti_rx %d : PRACH TX power %d dBm, amp %d\n", - ue->Mod_id, - proc->frame_rx, - proc->nr_tti_tx, - ue->tx_power_dBm[nr_tti_tx], - ue->prach_vars[eNB_id]->amp); - - - // start_meas(&ue->tx_prach); - VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_GENERATE_PRACH, VCD_FUNCTION_IN); - -// prach_power = generate_nr_prach(ue,eNB_id,nr_tti_tx,frame_tx); -prach_power = generate_nr_prach(ue,0,9,0); //subframe number hardcoded according to the simulator - - VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_GENERATE_PRACH, VCD_FUNCTION_OUT); - // stop_meas(&ue->tx_prach); - LOG_D(PHY,"[UE %d][RAPROC] PRACH PL %d dB, power %d dBm, digital power %d dB (amp %d)\n", - ue->Mod_id, - get_nr_PL(ue,eNB_id), - ue->tx_power_dBm[nr_tti_tx], - dB_fixed(prach_power), - ue->prach_vars[eNB_id]->amp); - }/* else { - UE_transport_info[ue->Mod_id][ue->CC_id].cntl.prach_flag=1; - UE_transport_info[ue->Mod_id][ue->CC_id].cntl.prach_id=ue->prach_resources[eNB_id]->ra_PreambleIndex; - }*/ // commented for compiling as abstraction flag is 0 - - if (ue->mac_enabled==1){ - //mac_xface->Msg1_transmitted(ue->Mod_id,ue->CC_id,frame_tx,eNB_id); - } - -LOG_I(PHY,"[UE %d][RAPROC] Frame %d, nr_tti_rx %d: Generating PRACH (eNB %d) preamble index %d for UL, TX power %d dBm (PL %d dB), l3msg \n", - ue->Mod_id,frame_tx,nr_tti_tx,eNB_id, - ue->prach_resources[eNB_id]->ra_PreambleIndex, - ue->prach_resources[eNB_id]->ra_PREAMBLE_RECEIVED_TARGET_POWER+get_nr_PL(ue,eNB_id), - get_nr_PL(ue,eNB_id)); - -} - - -// if we're calibrating the PRACH kill the pointer to its resources so that the RA protocol doesn't continue -if (mode == calib_prach_tx) - ue->prach_resources[eNB_id]=NULL; - -LOG_D(PHY,"[UE %d] frame %d nr_tti_rx %d : generate_nr_prach %d, prach_cnt %d\n", - ue->Mod_id,frame_tx,nr_tti_tx,ue->generate_nr_prach,ue->prach_cnt); - -ue->prach_cnt++; - -if (ue->prach_cnt==3) - ue->generate_nr_prach=0; - -VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX_PRACH, VCD_FUNCTION_OUT); -} - /* void phy_procedures_UE_S_TX(PHY_VARS_NR_UE *ue,uint8_t eNB_id,uint8_t abstraction_flag,relaying_type_t r_type) { @@ -2678,7 +2285,7 @@ void restart_phy(PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc, uint8_t eNB_id,uint } #endif //(0) -void nr_ue_pbch_procedures(uint8_t eNB_id, +void nr_ue_pbch_procedures(uint8_t gNB_id, PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc, uint8_t abstraction_flag) @@ -2697,20 +2304,26 @@ void nr_ue_pbch_procedures(uint8_t eNB_id, VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_PBCH_PROCEDURES, VCD_FUNCTION_IN); - //LOG_I(PHY,"[UE %d] Frame %d, Trying PBCH %d (NidCell %d, eNB_id %d)\n",ue->Mod_id,frame_rx,pbch_phase,ue->frame_parms.Nid_cell,eNB_id); + //LOG_I(PHY,"[UE %d] Frame %d, Trying PBCH %d (NidCell %d, gNB_id %d)\n",ue->Mod_id,frame_rx,pbch_phase,ue->frame_parms.Nid_cell,gNB_id); ret = nr_rx_pbch(ue, proc, - ue->pbch_vars[eNB_id], + ue->pbch_vars[gNB_id], &ue->frame_parms, - eNB_id, + gNB_id, (ue->frame_parms.ssb_index)&7, SISO, ue->high_speed_flag); if (ret==0) { - ue->pbch_vars[eNB_id]->pdu_errors_conseq = 0; + ue->pbch_vars[gNB_id]->pdu_errors_conseq = 0; + // Switch to PRACH state if it is first PBCH after initial synch and no timing correction is performed + if (ue->UE_mode[gNB_id] == NOT_SYNCHED && ue->no_timing_correction == 1){ + ue->UE_mode[gNB_id] = PRACH; + ue->prach_resources[gNB_id]->sync_frame = frame_rx; + ue->prach_resources[gNB_id]->init_msg1 = 0; + } #ifdef DEBUG_PHY_PROC uint16_t frame_tx; @@ -2740,25 +2353,25 @@ void nr_ue_pbch_procedures(uint8_t eNB_id, exit(-1); */ - ue->pbch_vars[eNB_id]->pdu_errors_conseq++; - ue->pbch_vars[eNB_id]->pdu_errors++; + ue->pbch_vars[gNB_id]->pdu_errors_conseq++; + ue->pbch_vars[gNB_id]->pdu_errors++; - if (ue->pbch_vars[eNB_id]->pdu_errors_conseq>=100) { + if (ue->pbch_vars[gNB_id]->pdu_errors_conseq>=100) { LOG_E(PHY,"More that 100 consecutive PBCH errors! Exiting!\n"); exit_fun("More that 100 consecutive PBCH errors! Exiting!\n"); } } if (frame_rx % 100 == 0) { - ue->pbch_vars[eNB_id]->pdu_fer = ue->pbch_vars[eNB_id]->pdu_errors - ue->pbch_vars[eNB_id]->pdu_errors_last; - ue->pbch_vars[eNB_id]->pdu_errors_last = ue->pbch_vars[eNB_id]->pdu_errors; + ue->pbch_vars[gNB_id]->pdu_fer = ue->pbch_vars[gNB_id]->pdu_errors - ue->pbch_vars[gNB_id]->pdu_errors_last; + ue->pbch_vars[gNB_id]->pdu_errors_last = ue->pbch_vars[gNB_id]->pdu_errors; } #ifdef DEBUG_PHY_PROC LOG_D(PHY,"[UE %d] frame %d, slot %d, PBCH errors = %d, consecutive errors = %d!\n", ue->Mod_id,frame_rx, nr_tti_rx, - ue->pbch_vars[eNB_id]->pdu_errors, - ue->pbch_vars[eNB_id]->pdu_errors_conseq); + ue->pbch_vars[gNB_id]->pdu_errors, + ue->pbch_vars[gNB_id]->pdu_errors_conseq); #endif VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_PBCH_PROCEDURES, VCD_FUNCTION_OUT); } @@ -2989,10 +2602,8 @@ int nr_ue_pdcch_procedures(uint8_t gNB_id, pdcch_vars->nb_search_space); #endif - fapi_nr_dci_indication_t dci_ind; - nr_downlink_indication_t dl_indication; - memset((void*)&dci_ind,0,sizeof(dci_ind)); - memset((void*)&dl_indication,0,sizeof(dl_indication)); + fapi_nr_dci_indication_t dci_ind={0}; + nr_downlink_indication_t dl_indication={0}; dci_cnt = nr_dci_decoding_procedure(ue, proc->frame_rx, nr_tti_rx, @@ -3006,11 +2617,12 @@ int nr_ue_pdcch_procedures(uint8_t gNB_id, //LOG_D(PHY,"[UE %d][PUSCH] Frame %d nr_tti_rx %d PHICH RX\n",ue->Mod_id,frame_rx,nr_tti_rx); for (int i=0; i rnti %x : format %d\n", - ue->Mod_id,frame_rx%1024,nr_tti_rx,nr_mode_string[ue->UE_mode[gNB_id]], - i, - dci_ind.dci_list[i].rnti, - dci_ind.dci_list[i].dci_format); + LOG_D(PHY,"[UE %d] AbsSubFrame %d.%d, Mode %s: DCI %i of %d total DCIs found --> rnti %x : format %d\n", + ue->Mod_id,frame_rx%1024,nr_tti_rx,nr_mode_string[ue->UE_mode[gNB_id]], + i + 1, + dci_cnt, + dci_ind.dci_list[i].rnti, + dci_ind.dci_list[i].dci_format); } ue->pdcch_vars[ue->current_thread_id[nr_tti_rx]][gNB_id]->dci_received += dci_cnt; @@ -3251,7 +2863,7 @@ void copy_harq_proc_struct(NR_DL_UE_HARQ_t *harq_processes_dest, NR_DL_UE_HARQ_t memcpy(harq_ack_dest, current_harq_ack, sizeof(nr_harq_status_t)); }*/ -void nr_ue_pdsch_procedures(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc, int eNB_id, PDSCH_t pdsch, NR_UE_DLSCH_t *dlsch0, NR_UE_DLSCH_t *dlsch1) { +int nr_ue_pdsch_procedures(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc, int eNB_id, PDSCH_t pdsch, NR_UE_DLSCH_t *dlsch0, NR_UE_DLSCH_t *dlsch1) { int nr_tti_rx = proc->nr_tti_rx; int m; @@ -3259,20 +2871,20 @@ void nr_ue_pdsch_procedures(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc, int eNB int first_symbol_flag=0; if (!dlsch0) - return; + return 0; if (dlsch0->active == 0) - return; + return 0; if (!dlsch1) { int harq_pid = dlsch0->current_harq_pid; uint16_t BWPStart = dlsch0->harq_processes[harq_pid]->BWPStart; // uint16_t BWPSize = dlsch0->harq_processes[harq_pid]->BWPSize; uint16_t pdsch_start_rb = dlsch0->harq_processes[harq_pid]->start_rb; - uint16_t pdsch_nb_rb = dlsch0->harq_processes[harq_pid]->nb_rb; - uint16_t s0 = dlsch0->harq_processes[harq_pid]->start_symbol; - uint16_t s1 = dlsch0->harq_processes[harq_pid]->nb_symbols; + uint16_t pdsch_nb_rb = dlsch0->harq_processes[harq_pid]->nb_rb; + uint16_t s0 = dlsch0->harq_processes[harq_pid]->start_symbol; + uint16_t s1 = dlsch0->harq_processes[harq_pid]->nb_symbols; - LOG_D(PHY,"[UE %d] PDSCH type %d active in nr_tti_rx %d, harq_pid %d, rb_start %d, nb_rb %d, symbol_start %d, nb_symbols %d, DMRS mask %x\n",ue->Mod_id,pdsch,nr_tti_rx,harq_pid,pdsch_start_rb,pdsch_nb_rb,s0,s1,dlsch0->harq_processes[harq_pid]->dlDmrsSymbPos); + LOG_D(PHY,"[UE %d] PDSCH type %d active in nr_tti_rx %d, harq_pid %d (%d), rb_start %d, nb_rb %d, symbol_start %d, nb_symbols %d, DMRS mask %x\n",ue->Mod_id,pdsch,nr_tti_rx,harq_pid,dlsch0->harq_processes[harq_pid]->status,pdsch_start_rb,pdsch_nb_rb,s0,s1,dlsch0->harq_processes[harq_pid]->dlDmrsSymbPos); // do channel estimation for first DMRS only for (m = s0; m < 3; m++) { @@ -3305,17 +2917,40 @@ void nr_ue_pdsch_procedures(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc, int eNB start_meas(&ue->dlsch_llr_stats_parallelization[ue->current_thread_id[nr_tti_rx]][slot]); #endif // process DLSCH received in first slot - nr_rx_pdsch(ue, - pdsch, - eNB_id, - eNB_id_i, - proc->frame_rx, - nr_tti_rx, // nr_tti_rx, - m, - first_symbol_flag, - dual_stream_UE, - i_mod, - dlsch0->current_harq_pid); + // skip DMRS symbols (will have to check later if PDSCH/DMRS are multiplexed + if (((1<harq_processes[harq_pid]->dlDmrsSymbPos) == 0) { + if (nr_rx_pdsch(ue, + pdsch, + eNB_id, + eNB_id_i, + proc->frame_rx, + nr_tti_rx, // nr_tti_rx, + m, + first_symbol_flag, + dual_stream_UE, + i_mod, + dlsch0->current_harq_pid) < 0) + return -1; + } + else { // This is to adjust the llr offset in the case of skipping over a dmrs symbol (i.e. in case of no PDSCH REs in DMRS) + if (pdsch == RA_PDSCH) ue->pdsch_vars[ue->current_thread_id[nr_tti_rx]][eNB_id]->llr_offset[m]=ue->pdsch_vars[ue->current_thread_id[nr_tti_rx]][eNB_id]->llr_offset[m-1]; + else if (pdsch == PDSCH) { + if (nr_rx_pdsch(ue, + pdsch, + eNB_id, + eNB_id_i, + proc->frame_rx, + nr_tti_rx, // nr_tti_rx, + m, + first_symbol_flag, + dual_stream_UE, + i_mod, + dlsch0->current_harq_pid) < 0) + return -1; + } + else AssertFatal(1==0,"not RA_PDSCH or PDSCH\n"); + } + if (pdsch == PDSCH) LOG_D(PHY,"Done processing symbol %d : llr_offset %d\n",m,ue->pdsch_vars[ue->current_thread_id[nr_tti_rx]][eNB_id]->llr_offset[m]); #if UE_TIMING_TRACE stop_meas(&ue->dlsch_llr_stats_parallelization[ue->current_thread_id[nr_tti_rx]][slot]); #if DISABLE_LOG_X @@ -3331,104 +2966,155 @@ void nr_ue_pdsch_procedures(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc, int eNB } } // CRNTI active } + return 0; } -#if 0 -void process_rar(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc, int eNB_id, runmode_t mode, int abstraction_flag) { - int frame_rx = proc->frame_rx; - int nr_tti_rx = proc->nr_tti_rx; - int timing_advance; - NR_UE_DLSCH_t *dlsch0 = ue->dlsch_ra[eNB_id]; - int harq_pid = 0; - uint8_t *rar; - /* - uint8_t next1_thread_id = ue->current_thread_id[nr_tti_rx]== (RX_NB_TH-1) ? 0:(ue->current_thread_id[nr_tti_rx]+1); - uint8_t next2_thread_id = next1_thread_id== (RX_NB_TH-1) ? 0:(next1_thread_id+1); - */ +// WIP fix: +// - time domain indication hardcoded to 0 for k2 offset +// - extend TS 38.213 ch 8.3 Msg3 PUSCH +// - b buffer +// - ulsch power offset +// - UE_mode == PUSCH case (should be handled by TA updates) +// - harq +// - optimize: mu_pusch, j and table_6_1_2_1_1_2_time_dom_res_alloc_A are already defined in nr_ue_procedures +void nr_process_rar(nr_downlink_indication_t *dl_info) { - LOG_D(PHY,"[UE %d][RAPROC] Frame %d nr_tti_rx %d Received RAR mode %d\n", - ue->Mod_id, - frame_rx, - nr_tti_rx, ue->UE_mode[eNB_id]); + module_id_t module_id = dl_info->module_id; + int cc_id = dl_info->cc_id, frame_rx = dl_info->proc->frame_rx, nr_tti_rx = dl_info->proc->nr_tti_rx, ta_command, k2, delta; + uint8_t gNB_index = dl_info->gNB_index; // *rar; + //fapi_nr_dci_indication_t *dci_ind = dl_info->dci_ind; + PHY_VARS_NR_UE *ue = PHY_vars_UE_g[module_id][cc_id]; + NR_UE_DLSCH_t *dlsch0 = ue->dlsch_ra[gNB_index]; + UE_MODE_t UE_mode = ue->UE_mode[gNB_index]; + NR_PRACH_RESOURCES_t *prach_resources = ue->prach_resources[gNB_index]; + uint16_t slots_per_frame = ue->frame_parms.slots_per_frame; + uint8_t mu_pusch = 1, sliv_S, sliv_L; + // definition table j Table 6.1.2.1.1-4 + uint8_t j = (mu_pusch==3)?3:(mu_pusch==2)?2:1; + uint8_t table_6_1_2_1_1_2_time_dom_res_alloc_A[16][3]={ // for PUSCH from TS 38.214 subclause 6.1.2.1.1 + {j, 0,14}, // row index 1 + {j, 0,12}, // row index 2 + {j, 0,10}, // row index 3 + {j, 2,10}, // row index 4 + {j, 4,10}, // row index 5 + {j, 4,8}, // row index 6 + {j, 4,6}, // row index 7 + {j+1,0,14}, // row index 8 + {j+1,0,12}, // row index 9 + {j+1,0,10}, // row index 10 + {j+2,0,14}, // row index 11 + {j+2,0,12}, // row index 12 + {j+2,0,10}, // row index 13 + {j, 8,6}, // row index 14 + {j+3,0,14}, // row index 15 + {j+3,0,10} // row index 16 + }; + + LOG_D(PHY,"[UE %d][RAPROC] Frame %d subframe %d Received RAR mode %d\n", module_id, frame_rx, nr_tti_rx, UE_mode); if (ue->mac_enabled == 1) { - if ((ue->UE_mode[eNB_id] != PUSCH) && - (ue->prach_resources[eNB_id]->Msg3!=NULL)) { - LOG_D(PHY,"[UE %d][RAPROC] Frame %d nr_tti_rx %d Invoking MAC for RAR (current preamble %d)\n", - ue->Mod_id,frame_rx, - nr_tti_rx, - ue->prach_resources[eNB_id]->ra_PreambleIndex); - - /* timing_advance = mac_xface->ue_process_rar(ue->Mod_id, - ue->CC_id, - frame_rx, - ue->prach_resources[eNB_id]->ra_RNTI, - dlsch0->harq_processes[0]->b, - &ue->pdcch_vars[ue->current_thread_id[nr_tti_rx]][eNB_id]->crnti, - ue->prach_resources[eNB_id]->ra_PreambleIndex, - dlsch0->harq_processes[0]->b); // alter the 'b' buffer so it contains only the selected RAR header and RAR payload - */ - /* - ue->pdcch_vars[next1_thread_id][eNB_id]->crnti = ue->pdcch_vars[ue->current_thread_id[nr_tti_rx]][eNB_id]->crnti; - ue->pdcch_vars[next2_thread_id][eNB_id]->crnti = ue->pdcch_vars[ue->current_thread_id[nr_tti_rx]][eNB_id]->crnti; - */ + if ((UE_mode != PUSCH) && (prach_resources->Msg3 != NULL)) { - if (timing_advance!=0xffff) { + LOG_D(PHY,"[UE %d][RAPROC] Frame %d subframe %d Invoking MAC for RAR (current preamble %d)\n", module_id, frame_rx, nr_tti_rx, prach_resources->ra_PreambleIndex); - LOG_D(PHY,"[UE %d][RAPROC] Frame %d nr_tti_rx %d Got rnti %x and timing advance %d from RAR\n", - ue->Mod_id, - frame_rx, - nr_tti_rx, - ue->pdcch_vars[ue->current_thread_id[nr_tti_rx]][eNB_id]->crnti, - timing_advance); + ta_command = nr_ue_process_rar(ue->Mod_id, + cc_id, + frame_rx, + dlsch0->harq_processes[0]->b, + &ue->pdcch_vars[ue->current_thread_id[nr_tti_rx]][gNB_index]->pdcch_config[0].rnti, + prach_resources->ra_PreambleIndex, + dlsch0->harq_processes[0]->b); // alter the 'b' buffer so it contains only the selected RAR header and RAR payload - // remember this c-rnti is still a tc-rnti + if (ta_command != 0xffff) { + LOG_D(PHY,"[UE %d][RAPROC] Frame %d subframe %d Got Temporary C-RNTI %x and timing advance %d from RAR\n", + ue->Mod_id, + frame_rx, + nr_tti_rx, + ue->pdcch_vars[ue->current_thread_id[nr_tti_rx]][gNB_index]->pdcch_config[0].rnti, + ta_command); - ue->pdcch_vars[ue->current_thread_id[nr_tti_rx]][eNB_id]->crnti_is_temporary = 1; - - //timing_advance = 0; - nr_process_timing_advance_rar(ue,proc,timing_advance); - - if (mode!=debug_prach) { - ue->ulsch_Msg3_active[eNB_id]=1; - nr_get_Msg3_alloc(&ue->frame_parms, - nr_tti_rx, - frame_rx, - &ue->ulsch_Msg3_frame[eNB_id], - &ue->ulsch_Msg3_subframe[eNB_id]); - - LOG_D(PHY,"[UE %d][RAPROC] Got Msg3_alloc Frame %d nr_tti_rx %d: Msg3_frame %d, Msg3_subframe %d\n", - ue->Mod_id, - frame_rx, - nr_tti_rx, - ue->ulsch_Msg3_frame[eNB_id], - ue->ulsch_Msg3_subframe[eNB_id]); - harq_pid = nr_subframe2harq_pid(&ue->frame_parms, - ue->ulsch_Msg3_frame[eNB_id], - ue->ulsch_Msg3_subframe[eNB_id]); - ue->ulsch[eNB_id]->harq_processes[harq_pid]->round = 0; - - ue->UE_mode[eNB_id] = RA_RESPONSE; - // ue->Msg3_timer[eNB_id] = 10; - ue->ulsch[eNB_id]->power_offset = 6; - ue->ulsch_no_allocation_counter[eNB_id] = 0; - } - } else { // PRACH preamble doesn't match RAR - LOG_W(PHY,"[UE %d][RAPROC] Received RAR preamble (%d) doesn't match !!!\n", - ue->Mod_id, - ue->prach_resources[eNB_id]->ra_PreambleIndex); + nr_process_timing_advance_rar(ue, dl_info->proc, ta_command); + + if (ue->mode != debug_prach) { + ue->ulsch_Msg3_active[gNB_index] = 1; + // TS 38.213 ch 8.3 Msg3 PUSCH + // PUSCH time domain resource allocation A for normal CP + // TS 38.214 ch 6.1.2.1.1 + k2 = table_6_1_2_1_1_2_time_dom_res_alloc_A[0][0]; + sliv_S = table_6_1_2_1_1_2_time_dom_res_alloc_A[0][1]; + sliv_L = table_6_1_2_1_1_2_time_dom_res_alloc_A[0][2]; + + switch (mu_pusch) { + case 0: + delta = 2; + break; + case 1: + delta = 3; + break; + case 2: + delta = 4; + break; + case 3: + delta = 6; + break; + } + + ue->Msg3_startSymbol[gNB_index] = sliv_S; + ue->Msg3_Length[gNB_index] = sliv_L; + ue->ulsch_Msg3_subframe[gNB_index] = (nr_tti_rx + k2 + delta) % slots_per_frame; + if (nr_tti_rx + k2 + delta > slots_per_frame){ + ue->ulsch_Msg3_frame[gNB_index] = (frame_rx + 1) % 1024; + } else { + ue->ulsch_Msg3_frame[gNB_index] = frame_rx; + } + + LOG_D(PHY,"[UE %d][RAPROC] Got Msg3_alloc Frame %d subframe %d: Msg3_frame %d, Msg3_subframe %d\n", + ue->Mod_id, + frame_rx, + nr_tti_rx, + ue->ulsch_Msg3_frame[gNB_index], + ue->ulsch_Msg3_subframe[gNB_index]); + // harq_pid = subframe2harq_pid(&ue->frame_parms, + // ue->ulsch_Msg3_frame[gNB_index], + // ue->ulsch_Msg3_subframe[gNB_index]); + // ue->ulsch[gNB_index]->harq_processes[harq_pid]->round = 0; + // ue->Msg3_timer[gNB_index] = 10; + // ue->ulsch[gNB_index].power_offset = 6; + // ue->ulsch_no_allocation_counter[gNB_index] = 0; + ue->UE_mode[gNB_index] = RA_RESPONSE; + } + } else { + LOG_W(PHY,"[UE %d][RAPROC] Received RAR preamble (%d) doesn't match !!!\n", ue->Mod_id, prach_resources->ra_PreambleIndex); } - } // mode != PUSCH + } + } else { + // rar = dlsch0->harq_processes[0]->b+1; + // ta_command = ((((uint16_t)(rar[0]&0x7f))<<4) + (rar[1]>>4)); + // nr_process_timing_advance_rar(ue, dl_info->proc, ta_command); } - else { - rar = dlsch0->harq_processes[0]->b+1; - timing_advance = ((((uint16_t)(rar[0]&0x7f))<<4) + (rar[1]>>4)); - nr_process_timing_advance_rar(ue,proc,timing_advance); - } - } -#endif + +// if contention resolution fails, go back to UE mode PRACH +void nr_ra_failed(uint8_t Mod_id, uint8_t CC_id, uint8_t gNB_index) { + + PHY_VARS_NR_UE *ue = PHY_vars_UE_g[Mod_id][CC_id]; + ue->UE_mode[gNB_index] = PRACH; + + for (int i=0; i pdcch_vars[i][gNB_index]->pdcch_config[0].rnti = 0; + } + LOG_E(PHY,"[UE %d] [RAPROC] Random-access procedure fails, going back to PRACH\n", Mod_id); +} + +void nr_ra_succeeded(uint8_t Mod_id, + uint8_t CC_id, + uint8_t gNB_index){ + LOG_I(PHY,"[UE %d][RAPROC] RA procedure succeeded. UE set to PUSCH mode\n", Mod_id); + PHY_VARS_NR_UE *ue = PHY_vars_UE_g[Mod_id][CC_id]; + ue->ulsch_Msg3_active[gNB_index] = 0; + ue->UE_mode[gNB_index] = PUSCH; +} void nr_ue_dlsch_procedures(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc, @@ -3439,17 +3125,15 @@ void nr_ue_dlsch_procedures(PHY_VARS_NR_UE *ue, int *dlsch_errors, runmode_t mode) { - int harq_pid; + int harq_pid = dlsch0->current_harq_pid; int frame_rx = proc->frame_rx; int nr_tti_rx = proc->nr_tti_rx; int ret=0, ret1=0; NR_UE_PDSCH *pdsch_vars; uint8_t is_cw0_active = 0; uint8_t is_cw1_active = 0; - //nfapi_nr_config_request_t *cfg = &ue->nrUE_config; - //uint8_t dmrs_type = cfg->pdsch_config.dmrs_type.value; - uint8_t nb_re_dmrs = 6; //(dmrs_type==NFAPI_NR_DMRS_TYPE1)?6:4; - uint16_t length_dmrs = 1; //cfg->pdsch_config.dmrs_max_length.value; + uint8_t dmrs_type, nb_re_dmrs; + uint16_t length_dmrs = 1; uint16_t nb_symb_sch = 9; nr_downlink_indication_t dl_indication; fapi_nr_rx_indication_t rx_ind; @@ -3471,13 +3155,16 @@ void nr_ue_dlsch_procedures(PHY_VARS_NR_UE *ue, if (dlsch0==NULL) AssertFatal(0,"dlsch0 should be defined at this level \n"); - - harq_pid = dlsch0->current_harq_pid; is_cw0_active = dlsch0->harq_processes[harq_pid]->status; nb_symb_sch = dlsch0->harq_processes[harq_pid]->nb_symbols; start_symbol = dlsch0->harq_processes[harq_pid]->start_symbol; - - + dmrs_type = dlsch0->harq_processes[harq_pid]->dmrsConfigType; + if (dmrs_type==NFAPI_NR_DMRS_TYPE1) { + nb_re_dmrs = 6*dlsch0->harq_processes[harq_pid]->n_dmrs_cdm_groups; + } + else { + nb_re_dmrs = 4*dlsch0->harq_processes[harq_pid]->n_dmrs_cdm_groups; + } if(dlsch1) is_cw1_active = dlsch1->harq_processes[harq_pid]->status; @@ -3497,14 +3184,8 @@ void nr_ue_dlsch_procedures(PHY_VARS_NR_UE *ue, if (1) { switch (pdsch) { case SI_PDSCH: - pdsch_vars = ue->pdsch_vars_SI[eNB_id]; - break; case RA_PDSCH: - pdsch_vars = ue->pdsch_vars_ra[eNB_id]; - break; case P_PDSCH: - pdsch_vars = ue->pdsch_vars_p[eNB_id]; - break; case PDSCH: pdsch_vars = ue->pdsch_vars[ue->current_thread_id[nr_tti_rx]][eNB_id]; break; @@ -3523,32 +3204,35 @@ void nr_ue_dlsch_procedures(PHY_VARS_NR_UE *ue, if (frame_rx < *dlsch_errors) *dlsch_errors=0; - if (pdsch==RA_PDSCH) { + if (pdsch == RA_PDSCH) { if (ue->prach_resources[eNB_id]!=NULL) - dlsch0->rnti = ue->prach_resources[eNB_id]->ra_RNTI; + dlsch0->rnti = ue->prach_resources[eNB_id]->ra_RNTI; else { - LOG_E(PHY,"[UE %d] Frame %d, nr_tti_rx %d: FATAL, prach_resources is NULL\n",ue->Mod_id,frame_rx,nr_tti_rx); - //mac_xface->macphy_exit("prach_resources is NULL"); - return; + LOG_E(PHY,"[UE %d] Frame %d, nr_tti_rx %d: FATAL, prach_resources is NULL\n", ue->Mod_id, frame_rx, nr_tti_rx); + //mac_xface->macphy_exit("prach_resources is NULL"); + return; } } + // exit dlsch procedures as there are no active dlsch + if (is_cw0_active != ACTIVE && is_cw1_active != ACTIVE) + return; - // start ldpc decode for CW 0 - dlsch0->harq_processes[harq_pid]->G = nr_get_G(dlsch0->harq_processes[harq_pid]->nb_rb, - nb_symb_sch, - nb_re_dmrs, - length_dmrs, - dlsch0->harq_processes[harq_pid]->Qm, - dlsch0->harq_processes[harq_pid]->Nl); + // start ldpc decode for CW 0 + dlsch0->harq_processes[harq_pid]->G = nr_get_G(dlsch0->harq_processes[harq_pid]->nb_rb, + nb_symb_sch, + nb_re_dmrs, + length_dmrs, + dlsch0->harq_processes[harq_pid]->Qm, + dlsch0->harq_processes[harq_pid]->Nl); #if UE_TIMING_TRACE start_meas(&ue->dlsch_unscrambling_stats); #endif nr_dlsch_unscrambling(pdsch_vars->llr[0], - dlsch0->harq_processes[harq_pid]->G, - 0, - ue->frame_parms.Nid_cell, - dlsch0->rnti); + dlsch0->harq_processes[harq_pid]->G, + 0, + ue->frame_parms.Nid_cell, + dlsch0->rnti); #if UE_TIMING_TRACE @@ -3629,10 +3313,10 @@ void nr_ue_dlsch_procedures(PHY_VARS_NR_UE *ue, start_meas(&ue->dlsch_unscrambling_stats); #endif nr_dlsch_unscrambling(pdsch_vars->llr[1], - dlsch1->harq_processes[harq_pid]->G, - 0, - ue->frame_parms.Nid_cell, - dlsch1->rnti); + dlsch1->harq_processes[harq_pid]->G, + 0, + ue->frame_parms.Nid_cell, + dlsch1->rnti); #if UE_TIMING_TRACE stop_meas(&ue->dlsch_unscrambling_stats); #endif @@ -3653,31 +3337,31 @@ void nr_ue_dlsch_procedures(PHY_VARS_NR_UE *ue, #ifdef UE_DLSCH_PARALLELISATION ret1 = nr_dlsch_decoding_mthread(ue, - proc, - eNB_id, - pdsch_vars->llr[1], - &ue->frame_parms, - dlsch1, - dlsch1->harq_processes[harq_pid], - frame_rx, - nb_symb_sch, - nr_tti_rx, - harq_pid, - pdsch==PDSCH?1:0, - dlsch1->harq_processes[harq_pid]->TBS>256?1:0); + proc, + eNB_id, + pdsch_vars->llr[1], + &ue->frame_parms, + dlsch1, + dlsch1->harq_processes[harq_pid], + frame_rx, + nb_symb_sch, + nr_tti_rx, + harq_pid, + pdsch==PDSCH?1:0, + dlsch1->harq_processes[harq_pid]->TBS>256?1:0); LOG_T(PHY,"UE_DLSCH_PARALLELISATION is defined, ret1 = %d\n", ret1); #else ret1 = nr_dlsch_decoding(ue, - pdsch_vars->llr[1], - &ue->frame_parms, - dlsch1, - dlsch1->harq_processes[harq_pid], - frame_rx, - nb_symb_sch, - nr_tti_rx, - harq_pid, - pdsch==PDSCH?1:0,//proc->decoder_switch, - dlsch1->harq_processes[harq_pid]->TBS>256?1:0); + pdsch_vars->llr[1], + &ue->frame_parms, + dlsch1, + dlsch1->harq_processes[harq_pid], + frame_rx, + nb_symb_sch, + nr_tti_rx, + harq_pid, + pdsch==PDSCH?1:0,//proc->decoder_switch, + dlsch1->harq_processes[harq_pid]->TBS>256?1:0); LOG_T(PHY,"UE_DLSCH_PARALLELISATION is NOT defined, ret1 = %d\n", ret1); printf("start cw1 dlsch decoding\n"); #endif @@ -3699,35 +3383,46 @@ void nr_ue_dlsch_procedures(PHY_VARS_NR_UE *ue, #endif LOG_I(PHY,"AbsSubframe %d.%d --> ldpc Decoding for CW1 %5.3f\n", frame_rx%1024, nr_tti_rx,(ue->dlsch_decoding_stats[ue->current_thread_id[nr_tti_rx]].p_time)/(cpuf*1000.0)); + + LOG_D(PHY, "harq_pid: %d, TBS expected dlsch1: %d \n", harq_pid, dlsch1->harq_processes[harq_pid]->TBS); } LOG_D(PHY," ------ end ldpc decoder for AbsSubframe %d.%d ------ \n", frame_rx, nr_tti_rx); - - LOG_D(PHY, "harq_pid: %d, TBS expected dlsch0: %d, TBS expected dlsch1: %d \n",harq_pid, dlsch0->harq_processes[harq_pid]->TBS, dlsch1->harq_processes[harq_pid]->TBS); + LOG_D(PHY, "harq_pid: %d, TBS expected dlsch0: %d \n",harq_pid, dlsch0->harq_processes[harq_pid]->TBS); if(retmax_ldpc_iterations+1){ - // fill dl_indication message - dl_indication.module_id = ue->Mod_id; - dl_indication.cc_id = ue->CC_id; - dl_indication.gNB_index = eNB_id; - dl_indication.frame = frame_rx; - dl_indication.slot = nr_tti_rx; - dl_indication.rx_ind = &rx_ind; // hang on rx_ind instance - dl_indication.proc=proc; + // fill dl_indication message + dl_indication.module_id = ue->Mod_id; + dl_indication.cc_id = ue->CC_id; + dl_indication.gNB_index = eNB_id; + dl_indication.frame = frame_rx; + dl_indication.slot = nr_tti_rx; + dl_indication.rx_ind = &rx_ind; // hang on rx_ind instance + dl_indication.proc=proc; - //dl_indication.rx_ind->number_pdus - rx_ind.rx_indication_body[0].pdu_type = FAPI_NR_RX_PDU_TYPE_DLSCH; - rx_ind.rx_indication_body[0].pdsch_pdu.pdu = dlsch0->harq_processes[harq_pid]->b; - rx_ind.rx_indication_body[0].pdsch_pdu.pdu_length = dlsch0->harq_processes[harq_pid]->TBS>>3; - LOG_D(PHY, "PDU length in bits: %d, in bytes: %d \n", dlsch0->harq_processes[harq_pid]->TBS, rx_ind.rx_indication_body[0].pdsch_pdu.pdu_length); - rx_ind.number_pdus = 1; + //dl_indication.rx_ind->number_pdus + switch (pdsch) { + case RA_PDSCH: + rx_ind.rx_indication_body[0].pdu_type = FAPI_NR_RX_PDU_TYPE_RAR; + break; + case PDSCH: + rx_ind.rx_indication_body[0].pdu_type = FAPI_NR_RX_PDU_TYPE_DLSCH; + break; + default: + break; + } - //ue->dl_indication.rx_ind = &dlsch1->harq_processes[harq_pid]->b; //no data, only dci for now - dl_indication.dci_ind = NULL; //&ue->dci_ind; - // send to mac - if (ue->if_inst && ue->if_inst->dl_indication) - ue->if_inst->dl_indication(&dl_indication, ul_time_alignment); + rx_ind.rx_indication_body[0].pdsch_pdu.pdu = dlsch0->harq_processes[harq_pid]->b; + rx_ind.rx_indication_body[0].pdsch_pdu.pdu_length = dlsch0->harq_processes[harq_pid]->TBS>>3; + LOG_D(PHY, "PDU length in bits: %d, in bytes: %d \n", dlsch0->harq_processes[harq_pid]->TBS, rx_ind.rx_indication_body[0].pdsch_pdu.pdu_length); + rx_ind.number_pdus = 1; + + //ue->dl_indication.rx_ind = &dlsch1->harq_processes[harq_pid]->b; //no data, only dci for now + dl_indication.dci_ind = NULL; //&ue->dci_ind; + // send to mac + if (ue->if_inst && ue->if_inst->dl_indication) + ue->if_inst->dl_indication(&dl_indication, ul_time_alignment); } // TODO CRC check for CW0 @@ -3871,7 +3566,7 @@ void *UE_thread_slot1_dl_processing(void *arg) { int frame_rx; uint8_t nr_tti_rx; - uint8_t pilot0; + uint8_t pilot0; uint8_t pilot1; uint8_t slot1; @@ -4045,7 +3740,6 @@ void *UE_thread_slot1_dl_processing(void *arg) { } //printf("[slot1 dl processing] AbsSubframe %d.%d LLR Computation Start wait DCI %d\n",frame_rx,nr_tti_rx,wait); - /**** Pdsch Procedure Slot1 ****/ // start slot1 thread for Pdsch Procedure (slot1) // do procedures for C-RNTI @@ -4133,7 +3827,6 @@ void *UE_thread_slot1_dl_processing(void *arg) { #endif #endif - if (pthread_mutex_lock(&proc->mutex_slot1_dl_processing) != 0) { LOG_E( PHY, "[SCHED][UE] error locking mutex for UE RXTX\n" ); exit_fun("noting to add"); @@ -4182,18 +3875,14 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue, int nr_tti_rx = proc->nr_tti_rx; int slot_pbch; NR_UE_PDCCH *pdcch_vars = ue->pdcch_vars[ue->current_thread_id[nr_tti_rx]][0]; - NR_UE_DLSCH_t **dlsch = ue->dlsch[ue->current_thread_id[nr_tti_rx]][eNB_id]; fapi_nr_config_request_t *cfg = &ue->nrUE_config; - uint8_t harq_pid = ue->dlsch[ue->current_thread_id[nr_tti_rx]][eNB_id][0]->current_harq_pid; - NR_DL_UE_HARQ_t *dlsch0_harq = dlsch[0]->harq_processes[harq_pid]; - uint16_t nb_symb_sch = dlsch0_harq->nb_symbols; - uint16_t start_symb_sch = dlsch0_harq->start_symbol; + uint8_t nb_symb_pdcch = pdcch_vars->nb_search_space > 0 ? pdcch_vars->pdcch_config[0].coreset.duration : 0; uint8_t dci_cnt = 0; NR_DL_FRAME_PARMS *fp = &ue->frame_parms; - + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_RX, VCD_FUNCTION_IN); - + LOG_D(PHY," ****** start RX-Chain for Frame.Slot %d.%d ****** \n", frame_rx%1024, nr_tti_rx); /* @@ -4201,9 +3890,9 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue, uint8_t next2_thread_id = next1_thread_id== (RX_NB_TH-1) ? 0:(next1_thread_id+1); */ - int coreset_nb_rb=0; int coreset_start_rb=0; + if (pdcch_vars->nb_search_space > 0) get_coreset_rballoc(pdcch_vars->pdcch_config[0].coreset.frequency_domain_resource,&coreset_nb_rb,&coreset_start_rb); @@ -4213,7 +3902,6 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue, if ((ue->decode_MIB == 1) && slot_pbch) { LOG_I(PHY," ------ PBCH ChannelComp/LLR: frame.slot %d.%d ------ \n", frame_rx%1024, nr_tti_rx); - for (int i=1; i<4; i++) { nr_slot_fep(ue, @@ -4236,11 +3924,12 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue, if (ue->no_timing_correction==0) { LOG_I(PHY,"start adjust sync slot = %d no timing %d\n", nr_tti_rx, ue->no_timing_correction); nr_adjust_synch_ue(fp, - ue, - eNB_id, - nr_tti_rx, - 0, - 16384); + ue, + eNB_id, + frame_rx, + nr_tti_rx, + 0, + 16384); } } @@ -4255,10 +3944,10 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue, #endif VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SLOT_FEP, VCD_FUNCTION_IN); nr_slot_fep(ue, - l, - nr_tti_rx, - 0, - 0); + l, + nr_tti_rx, + 0, + 0); // note: this only works if RBs for PDCCH are contigous! LOG_D(PHY,"pdcch_channel_estimation: first_carrier_offset %d, BWPStart %d, coreset_start_rb %d\n", @@ -4285,54 +3974,58 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue, if (dci_cnt > 0) { - LOG_D(PHY,"[UE %d] Frame %d, nr_tti_rx %d: found %d DCIs\n",ue->Mod_id,frame_rx,nr_tti_rx,dci_cnt); + LOG_D(PHY,"[UE %d] Frame %d, nr_tti_rx %d: found %d DCIs\n", ue->Mod_id, frame_rx, nr_tti_rx, dci_cnt); - } else { - LOG_D(PHY,"[UE %d] Frame %d, nr_tti_rx %d: No DCIs found\n",ue->Mod_id,frame_rx,nr_tti_rx); - } -#endif //NR_PDCCH_SCHED - - - if (dci_cnt > 0){ - LOG_D(PHY," ------ --> PDSCH ChannelComp/LLR Frame.slot %d.%d ------ \n", frame_rx%1024, nr_tti_rx); - //to update from pdsch config - start_symb_sch = dlsch0_harq->start_symbol; - int symb_dmrs=-1; - for (int i=0;i<4;i++) if (((1<dlDmrsSymbPos) > 0) {symb_dmrs=i;break;} - AssertFatal(symb_dmrs>=0,"no dmrs in 0..3\n"); - LOG_D(PHY,"Initializing dmrs for symb %d DMRS mask %x\n",symb_dmrs,dlsch0_harq->dlDmrsSymbPos); - nr_gold_pdsch(ue,symb_dmrs,0, 1); - - nb_symb_sch = dlsch0_harq->nb_symbols; - - for (uint16_t m=start_symb_sch;m<(nb_symb_sch+start_symb_sch) ; m++){ - nr_slot_fep(ue, - m, //to be updated from higher layer - nr_tti_rx, - 0, - 0); - - + NR_UE_DLSCH_t *dlsch = NULL; + if (ue->dlsch[ue->current_thread_id[nr_tti_rx]][eNB_id][0]->active == 1){ + dlsch = ue->dlsch[ue->current_thread_id[nr_tti_rx]][eNB_id][0]; + } else if (ue->dlsch_ra[0]->active == 1){ + dlsch = ue->dlsch_ra[0]; } - //set active for testing, to be removed - ue->dlsch[ue->current_thread_id[nr_tti_rx]][eNB_id][0]->active = 1; + + if (dlsch) { + uint8_t harq_pid = dlsch->current_harq_pid; + NR_DL_UE_HARQ_t *dlsch0_harq = dlsch->harq_processes[harq_pid]; + uint16_t nb_symb_sch = dlsch0_harq->nb_symbols; + uint16_t start_symb_sch = dlsch0_harq->start_symbol; + int symb_dmrs = -1; + + LOG_D(PHY," ------ --> PDSCH ChannelComp/LLR Frame.slot %d.%d ------ \n", frame_rx%1024, nr_tti_rx); + //to update from pdsch config + + for (int i=0;i<4;i++) if (((1<dlDmrsSymbPos) > 0) {symb_dmrs=i;break;} + AssertFatal(symb_dmrs>=0,"no dmrs in 0..3\n"); + LOG_D(PHY,"Initializing dmrs for symb %d DMRS mask %x\n",symb_dmrs,dlsch0_harq->dlDmrsSymbPos); + nr_gold_pdsch(ue,symb_dmrs,0, 1); + + for (uint16_t m=start_symb_sch;m<(nb_symb_sch+start_symb_sch) ; m++){ + nr_slot_fep(ue, + m, //to be updated from higher layer + nr_tti_rx, + 0, + 0); + } + } + } else { + LOG_D(PHY,"[UE %d] Frame %d, nr_tti_rx %d: No DCIs found\n", ue->Mod_id, frame_rx, nr_tti_rx); } - else - ue->dlsch[ue->current_thread_id[nr_tti_rx]][eNB_id][0]->active = 0; + +#endif //NR_PDCCH_SCHED #if UE_TIMING_TRACE start_meas(&ue->generic_stat); #endif // do procedures for C-RNTI + int ret_pdsch = 0; if (ue->dlsch[ue->current_thread_id[nr_tti_rx]][eNB_id][0]->active == 1) { //VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PDSCH_PROC, VCD_FUNCTION_IN); - nr_ue_pdsch_procedures(ue, + ret_pdsch = nr_ue_pdsch_procedures(ue, proc, eNB_id, PDSCH, ue->dlsch[ue->current_thread_id[nr_tti_rx]][eNB_id][0], NULL); - + //printf("phy procedure pdsch start measurement\n"); nr_ue_measurement_procedures(2,ue,proc,eNB_id,nr_tti_rx,mode); @@ -4344,7 +4037,7 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue, write_output("rxF_comp.m","rxFc",&ue->pdsch_vars[ue->current_thread_id[nr_tti_rx]][eNB_id]->rxdataF_comp0[0][0],fp->N_RB_DL*12*14,1,1); write_output("rxF_llr.m","rxFllr",ue->pdsch_vars[ue->current_thread_id[nr_tti_rx]][eNB_id]->llr[0],(nb_symb_sch-1)*50*12+50*6,1,0); */ - + //VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PDSCH_PROC, VCD_FUNCTION_OUT); } @@ -4352,11 +4045,11 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue, if ((ue->dlsch_SI[eNB_id]) && (ue->dlsch_SI[eNB_id]->active == 1)) { VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PDSCH_PROC_SI, VCD_FUNCTION_IN); nr_ue_pdsch_procedures(ue, - proc, - eNB_id, - SI_PDSCH, - ue->dlsch_SI[eNB_id], - NULL); + proc, + eNB_id, + SI_PDSCH, + ue->dlsch_SI[eNB_id], + NULL); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PDSCH_PROC_SI, VCD_FUNCTION_OUT); } @@ -4365,11 +4058,11 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue, if ((ue->dlsch_p[eNB_id]) && (ue->dlsch_p[eNB_id]->active == 1)) { VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PDSCH_PROC_P, VCD_FUNCTION_IN); nr_ue_pdsch_procedures(ue, - proc, - eNB_id, - P_PDSCH, - ue->dlsch_p[eNB_id], - NULL); + proc, + eNB_id, + P_PDSCH, + ue->dlsch_p[eNB_id], + NULL); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PDSCH_PROC_P, VCD_FUNCTION_OUT); } @@ -4378,18 +4071,42 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue, if ((ue->dlsch_ra[eNB_id]) && (ue->dlsch_ra[eNB_id]->active == 1)) { VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PDSCH_PROC_RA, VCD_FUNCTION_IN); nr_ue_pdsch_procedures(ue, - proc, - eNB_id, - RA_PDSCH, - ue->dlsch_ra[eNB_id], - NULL); + proc, + eNB_id, + RA_PDSCH, + ue->dlsch_ra[eNB_id], + NULL); - VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PDSCH_PROC_RA, VCD_FUNCTION_OUT); + // #if UE_TIMING_TRACE + // start_meas(&ue->dlsch_procedures_stat[ue->current_thread_id[nr_tti_rx]]); + // #endif + + nr_ue_dlsch_procedures(ue, + proc, + eNB_id, + RA_PDSCH, + ue->dlsch_ra[eNB_id], + NULL, + &ue->dlsch_ra_errors[eNB_id], + mode); + + // #if UE_TIMING_TRACE + // stop_meas(&ue->dlsch_procedures_stat[ue->current_thread_id[nr_tti_rx]]); + #if DISABLE_LOG_X + printf("[SFN %d] Slot1: Pdsch Proc %5.2f\n", nr_tti_rx, ue->pdsch_procedures_stat[ue->current_thread_id[nr_tti_rx]].p_time/(cpuf*1000.0)); + printf("[SFN %d] Slot0 Slot1: Dlsch Proc %5.2f\n", nr_tti_rx, ue->dlsch_procedures_stat[ue->current_thread_id[ nr_tti_rx]].p_time/(cpuf*1000.0)); + #else + LOG_D(PHY, "[SFN %d] Slot1: Pdsch Proc %5.2f\n", nr_tti_rx, ue->pdsch_procedures_stat[ue->current_thread_id[ nr_tti_rx]].p_time/(cpuf*1000.0)); + LOG_D(PHY, "[SFN %d] Slot0 Slot1: Dlsch Proc %5.2f\n", nr_tti_rx, ue->dlsch_procedures_stat[ue->current_thread_id[ nr_tti_rx]].p_time/(cpuf*1000.0)); + #endif + // #endif + + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PDSCH_PROC_RA, VCD_FUNCTION_OUT); } // do procedures for C-RNTI if (ue->dlsch[ue->current_thread_id[nr_tti_rx]][eNB_id][0]->active == 1) { - + LOG_D(PHY, "DLSCH data reception at nr_tti_rx: %d \n \n", nr_tti_rx); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PDSCH_PROC, VCD_FUNCTION_IN); @@ -4397,7 +4114,8 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue, start_meas(&ue->dlsch_procedures_stat[ue->current_thread_id[nr_tti_rx]]); #endif - nr_ue_dlsch_procedures(ue, + if (ret_pdsch >= 0) + nr_ue_dlsch_procedures(ue, proc, eNB_id, PDSCH, @@ -4419,6 +4137,9 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue, #endif + // deactivate dlsch once dlsch proc is done + ue->dlsch[ue->current_thread_id[nr_tti_rx]][eNB_id][0]->active = 0; + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PDSCH_PROC, VCD_FUNCTION_OUT); } @@ -4624,3 +4345,121 @@ uint8_t nr_is_ri_TXOp(PHY_VARS_NR_UE *ue, return(0); } +// WIP +// todo: +// - set tx_total_RE +// - power control as per 38.213 ch 7.4 +void nr_ue_prach_procedures(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc, uint8_t gNB_id, runmode_t runmode) { + + int frame_tx = proc->frame_tx, nr_tti_tx = proc->nr_tti_tx, prach_power; // tx_amp + uint16_t /*preamble_tx = 50,*/ pathloss; + uint8_t mod_id = ue->Mod_id; + UE_MODE_t UE_mode = get_nrUE_mode(mod_id, ue->CC_id, gNB_id); + NR_PRACH_RESOURCES_t * prach_resources = ue->prach_resources[gNB_id]; + uint8_t nr_prach = 0; + + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX_PRACH, VCD_FUNCTION_IN); + + if (ue->mac_enabled == 0){ + // prach_resources->ra_PreambleIndex = preamble_tx; + prach_resources->ra_TDD_map_index = 0; + prach_resources->ra_PREAMBLE_RECEIVED_TARGET_POWER = 10; + prach_resources->ra_RNTI = 0x1234; + nr_prach = 1; + } else { + // ask L2 for RACH transport + if ((runmode != rx_calib_ue) && (runmode != rx_calib_ue_med) && (runmode != rx_calib_ue_byp) && (runmode != no_L2_connect) ) { + LOG_D(PHY, "Getting PRACH resources. Frame %d Slot %d \n", frame_tx, nr_tti_tx); + // flush Msg3 Buffer + if (prach_resources->Msg3 == NULL){ + for(int i = 0; iulsch_Msg3_active[i] = 0; + } + } + nr_prach = nr_ue_get_rach(ue->prach_resources[gNB_id], mod_id, ue->CC_id, UE_mode, frame_tx, gNB_id, nr_tti_tx); + } + } + + if (!prach_resources->init_msg1 && (frame_tx > ue->prach_resources[gNB_id]->sync_frame + 150)){ + ue->prach_cnt = 0; + prach_resources->init_msg1 = 1; + } + + if (ue->prach_resources[gNB_id] != NULL && nr_prach == 1 && prach_resources->init_msg1) { + + pathloss = get_nr_PL(mod_id, ue->CC_id, gNB_id); + LOG_D(PHY,"runmode %d\n",runmode); + + if ((ue->mac_enabled == 1) && (runmode != calib_prach_tx)) { + ue->tx_power_dBm[nr_tti_tx] = prach_resources->ra_PREAMBLE_RECEIVED_TARGET_POWER + pathloss; + } + + LOG_I(PHY,"[UE %d][RAPROC] Frame %d, nr_tti_tx %d : Generating PRACH, preamble %d, PL %d, P0_PRACH %d, TARGET_RECEIVED_POWER %d dBm, RA-RNTI %x\n", + ue->Mod_id, + frame_tx, + nr_tti_tx, + prach_resources->ra_PreambleIndex, + pathloss, + ue->tx_power_dBm[nr_tti_tx], + prach_resources->ra_PREAMBLE_RECEIVED_TARGET_POWER, + prach_resources->ra_RNTI); + + //ue->tx_total_RE[nr_tti_tx] = 96; // todo + ue->prach_vars[gNB_id]->amp = AMP; + + /* #if defined(EXMIMO) || defined(OAI_USRP) || defined(OAI_BLADERF) || defined(OAI_LMSSDR) || defined(OAI_ADRV9371_ZC706) + tx_amp = get_tx_amp_prach(ue->tx_power_dBm[nr_tti_tx], ue->tx_power_max_dBm, ue->frame_parms.N_RB_UL); + if (tx_amp != -1) + ue->prach_vars[gNB_id]->amp = tx_amp; + #else + ue->prach_vars[gNB_id]->amp = AMP; + #endif */ + + if ((runmode == calib_prach_tx) && (((proc->frame_tx&0xfffe)%100)==0)) + LOG_D(PHY,"[UE %d][RAPROC] Frame %d, nr_tti_tx %d : PRACH TX power %d dBm, amp %d\n", ue->Mod_id, + proc->frame_rx, + proc->nr_tti_tx, + ue->tx_power_dBm[nr_tti_tx], + ue->prach_vars[gNB_id]->amp); + + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_GENERATE_PRACH, VCD_FUNCTION_IN); + + prach_power = generate_nr_prach(ue, gNB_id, nr_tti_tx); + + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_GENERATE_PRACH, VCD_FUNCTION_OUT); + + LOG_D(PHY,"[UE %d][RAPROC] PRACH PL %d dB, power %d dBm, digital power %d dB (amp %d)\n", + ue->Mod_id, + pathloss, + ue->tx_power_dBm[nr_tti_tx], + dB_fixed(prach_power), + ue->prach_vars[gNB_id]->amp); + + if (ue->mac_enabled == 1) + nr_Msg1_transmitted(ue->Mod_id, ue->CC_id, frame_tx, gNB_id); + + LOG_I(PHY,"[UE %d][RAPROC] Frame %d, nr_tti_tx %d: Generated PRACH Msg1 (gNB %d) preamble index %d for UL, TX power %d dBm (PL %d dB) \n", + ue->Mod_id, + frame_tx, + nr_tti_tx, + gNB_id, + prach_resources->ra_PreambleIndex, + ue->tx_power_dBm[nr_tti_tx], + pathloss); + + LOG_D(PHY,"[UE %d] frame %d nr_tti_tx %d : prach_cnt %d\n", ue->Mod_id, frame_tx, nr_tti_tx, ue->prach_cnt); + + ue->prach_cnt++; + + if (ue->prach_cnt == 3) + ue->prach_cnt = 0; + } else if (nr_prach == 2) { + nr_ra_succeeded(mod_id, ue->CC_id, gNB_id); + } + + // if we're calibrating the PRACH kill the pointer to its resources so that the RA protocol doesn't continue + if (runmode == calib_prach_tx) + ue->prach_resources[gNB_id] = NULL; + + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX_PRACH, VCD_FUNCTION_OUT); +} diff --git a/openair1/SCHED_NR_UE/pucch_power_control_ue_nr.c b/openair1/SCHED_NR_UE/pucch_power_control_ue_nr.c index 9632291e67..b51c8afbb0 100644 --- a/openair1/SCHED_NR_UE/pucch_power_control_ue_nr.c +++ b/openair1/SCHED_NR_UE/pucch_power_control_ue_nr.c @@ -104,7 +104,7 @@ int16_t get_pucch_tx_power_ue(PHY_VARS_NR_UE *ue, int P_O_PUCCH = P_O_NOMINAL_PUCCH + P_O_UE_PUCCH; - int16_t PL = get_nr_PL(ue, gNB_id); /* LTE function because NR path loss not yet implemented FFS TODO NR */ + int16_t PL = get_nr_PL(ue->Mod_id, ue->CC_id, gNB_id); /* LTE function because NR path loss not yet implemented FFS TODO NR */ int16_t delta_F_PUCCH = power_config->deltaF_PUCCH_f[pucch_format]; diff --git a/openair1/SCHED_NR_UE/pucch_uci_ue_nr.c b/openair1/SCHED_NR_UE/pucch_uci_ue_nr.c index 1b62ff81bf..ccbe502194 100644 --- a/openair1/SCHED_NR_UE/pucch_uci_ue_nr.c +++ b/openair1/SCHED_NR_UE/pucch_uci_ue_nr.c @@ -37,7 +37,6 @@ #include "PHY/defs_nr_UE.h" #include #include -#include "openair2/LAYER2/NR_MAC_UE/mac_proto.h" #ifndef NO_RAT_NR @@ -162,6 +161,8 @@ void nr_generate_pucch3_4(int32_t **txdataF, * *********************************************************************/ +static int bwp_id = 1; + bool pucch_procedures_ue_nr(PHY_VARS_NR_UE *ue, uint8_t gNB_id, UE_nr_rxtx_proc_t *proc, bool reset_harq) { uint8_t sr_payload = 0; @@ -186,12 +187,18 @@ bool pucch_procedures_ue_nr(PHY_VARS_NR_UE *ue, uint8_t gNB_id, UE_nr_rxtx_proc_ int pucch_resource_id = MAX_NB_OF_PUCCH_RESOURCES; int pucch_resource_indicator = MAX_PUCCH_RESOURCE_INDICATOR; int n_HARQ_ACK; + uint16_t crnti=0x1234; int dmrs_scrambling_id=0,data_scrambling_id=0; + + NR_UE_MAC_INST_t *mac = get_mac_inst(0); + NR_PUCCH_Resource_t *pucch_resource; + //NR_UE_MAC_INST_t *mac = get_mac_inst(0); + /* update current context */ - int subframe_number = (proc->nr_tti_rx)/(ue->frame_parms.ttis_per_subframe); + int subframe_number = (proc->nr_tti_rx)/(ue->frame_parms.slots_per_subframe);//ttis_per_subframe); nb_pucch_format_4_in_subframes[subframe_number] = 0; /* reset pucch format 4 counter at current rx position */ int dl_harq_pid = ue->dlsch[ue->current_thread_id[proc->nr_tti_rx]][gNB_id][0]->current_harq_pid; @@ -214,11 +221,11 @@ bool pucch_procedures_ue_nr(PHY_VARS_NR_UE *ue, uint8_t gNB_id, UE_nr_rxtx_proc_ /* sr_payload = 1 means that this is a positive SR, sr_payload = 0 means that it is a negative SR */ sr_payload = nr_ue_get_SR(Mod_id, - CC_id, - frame_tx, - gNB_id, - 0,//ue->pdcch_vars[ue->current_thread_id[proc->nr_tti_rx]][gNB_id]->crnti, - nr_tti_tx); // nr_tti_rx used for meas gap + CC_id, + frame_tx, + gNB_id, + 0,//ue->pdcch_vars[ue->current_thread_id[proc->nr_tti_rx]][gNB_id]->crnti, + nr_tti_tx); // nr_tti_rx used for meas gap } else { sr_payload = 1; @@ -250,10 +257,10 @@ bool pucch_procedures_ue_nr(PHY_VARS_NR_UE *ue, uint8_t gNB_id, UE_nr_rxtx_proc_ } else { /* a resource set and a resource should be find according to payload size */ - pucch_resource_set = find_pucch_resource_set( ue, gNB_id, N_UCI); + pucch_resource_set = find_pucch_resource_set( mac, gNB_id, N_UCI); if (pucch_resource_set != MAX_NB_OF_PUCCH_RESOURCE_SETS) { pucch_resource_indicator = 0; - pucch_resource_id = ue->pucch_config_dedicated_nr[gNB_id].PUCCH_ResourceSet[pucch_resource_set]->pucch_resource_id[pucch_resource_indicator]; /* get the first resource of the set */ + pucch_resource_id = mac->ULbwp[bwp_id-1]->bwp_Dedicated->pucch_Config->choice.setup->resourceSetToAddModList->list.array[pucch_resource_set]->resourceList.list.array[pucch_resource_indicator][0]; /* get the first resource of the set */ } else { LOG_W(PHY,"PUCCH no resource set found for CSI at line %d in function %s of file %s \n", LINE_FILE , __func__, FILE_NAME); @@ -299,7 +306,7 @@ bool pucch_procedures_ue_nr(PHY_VARS_NR_UE *ue, uint8_t gNB_id, UE_nr_rxtx_proc_ NR_UE_HARQ_STATUS_t *harq_status = &ue->dlsch[ue->current_thread_id[proc->nr_tti_rx]][gNB_id][0]->harq_processes[dl_harq_pid]->harq_ack; - if (select_pucch_resource(ue, gNB_id, N_UCI, pucch_resource_indicator, &initial_pucch_id, &pucch_resource_set, + if (select_pucch_resource(ue, mac, gNB_id, N_UCI, pucch_resource_indicator, &initial_pucch_id, &pucch_resource_set, &pucch_resource_id, harq_status) == TRUE) { /* use of initial pucch configuration provided by system information 1 */ /***********************************************************************/ @@ -340,33 +347,43 @@ bool pucch_procedures_ue_nr(PHY_VARS_NR_UE *ue, uint8_t gNB_id, UE_nr_rxtx_proc_ /**********************************************/ else if ((pucch_resource_set != MAX_NB_OF_PUCCH_RESOURCE_SETS) && (pucch_resource_id != MAX_NB_OF_PUCCH_RESOURCES)) { /* check that current configuration is supported */ - if ((ue->cell_group_config.physicalCellGroupConfig.harq_ACK_SpatialBundlingPUCCH != FALSE) - || (ue->cell_group_config.physicalCellGroupConfig.pdsch_HARQ_ACK_Codebook != dynamic)) { + if ((mac->scg->physicalCellGroupConfig->harq_ACK_SpatialBundlingPUCCH != NULL) + || (mac->scg->physicalCellGroupConfig->pdsch_HARQ_ACK_Codebook != 1)) { LOG_E(PHY,"PUCCH Unsupported cell group configuration : at line %d in function %s of file %s \n", LINE_FILE , __func__, FILE_NAME); return(FALSE); } - else if (ue->PDSCH_ServingCellConfig.codeBlockGroupTransmission != NULL) { + else if (mac->scg->spCellConfig->spCellConfigDedicated->pdsch_ServingCellConfig->choice.setup->codeBlockGroupTransmission != NULL) { LOG_E(PHY,"PUCCH Unsupported code block group for serving cell config : at line %d in function %s of file %s \n", LINE_FILE , __func__, FILE_NAME); return(FALSE); } - format = ue->pucch_config_dedicated_nr[gNB_id].PUCCH_Resource[pucch_resource_id]->format_parameters.format; - nb_symbols_total = ue->pucch_config_dedicated_nr[gNB_id].PUCCH_Resource[pucch_resource_id]->format_parameters.nrofSymbols; - starting_symbol_index = ue->pucch_config_dedicated_nr[gNB_id].PUCCH_Resource[pucch_resource_id]->format_parameters.startingSymbolIndex; - starting_prb = ue->pucch_config_dedicated_nr[gNB_id].PUCCH_Resource[pucch_resource_id]->startingPRB; + pucch_resource = select_resource_by_id(pucch_resource_id, mac->ULbwp[bwp_id-1]->bwp_Dedicated->pucch_Config->choice.setup); + format = pucch_resource->format.present; + nb_symbols_total = get_nb_symbols_pucch(pucch_resource, format); + starting_symbol_index = get_starting_symb_idx(pucch_resource, format); + starting_prb = pucch_resource->startingPRB; second_hop = starting_prb; - time_domain_occ = ue->pucch_config_dedicated_nr[gNB_id].PUCCH_Resource[pucch_resource_id]->format_parameters.timeDomainOCC; /* format 1 only */ - occ_length = ue->pucch_config_dedicated_nr[gNB_id].PUCCH_Resource[pucch_resource_id]->format_parameters.occ_length; /* format 4 only */ - occ_Index = ue->pucch_config_dedicated_nr[gNB_id].PUCCH_Resource[pucch_resource_id]->format_parameters.occ_Index; /* format 4 only */ - - if ((format == pucch_format0_nr) || (format == pucch_format1_nr)) { - m_0 = ue->pucch_config_dedicated_nr[gNB_id].PUCCH_Resource[pucch_resource_id]->format_parameters.initialCyclicShift; + if (format==pucch_format1_nr) + time_domain_occ = pucch_resource->format.choice.format1->timeDomainOCC; + if (format==pucch_format4_nr) { + occ_length = pucch_resource->format.choice.format4->occ_Length; + occ_Index = pucch_resource->format.choice.format4->occ_Index; } - else if ((format == pucch_format3_nr) || (format == pucch_format4_nr)) { - if (ue->pucch_config_dedicated_nr[gNB_id].formatConfig[format-1]->additionalDMRS == enable_feature) { + + m_0 = get_ics_pucch(pucch_resource, format); + AssertFatal(m_0 >= 0, "Invalid m_0\n"); + if (format == pucch_format3_nr) { + if (mac->ULbwp[bwp_id-1]->bwp_Dedicated->pucch_Config->choice.setup->format3->choice.setup->additionalDMRS[0] == 1) { index_additional_dmrs = I_PUCCH_ADDITIONAL_DMRS; } + } + else if (format == pucch_format4_nr) { + if (mac->ULbwp[bwp_id-1]->bwp_Dedicated->pucch_Config->choice.setup->format4->choice.setup->additionalDMRS[0] == 1) { + index_additional_dmrs = I_PUCCH_ADDITIONAL_DMRS; + } + } - if (ue->pucch_config_dedicated_nr[gNB_id].PUCCH_Resource[pucch_resource_id]->intraSlotFrequencyHopping == feature_enabled) { + if ((format == pucch_format3_nr) || (format == pucch_format4_nr)) { + if (pucch_resource->intraSlotFrequencyHopping[0] == 1) { index_hopping = I_PUCCH_HOPING; } } @@ -385,6 +402,7 @@ bool pucch_procedures_ue_nr(PHY_VARS_NR_UE *ue, uint8_t gNB_id, UE_nr_rxtx_proc_ int O_CRC = 0; nb_symbols = nb_symbols_total; /* by default, it can be reduced due to symbols reserved for dmrs */ + pucch_resource = mac->ULbwp[bwp_id-1]->bwp_Dedicated->pucch_Config->choice.setup->resourceToAddModList->list.array[pucch_resource_id]; switch(format) { case pucch_format0_nr: @@ -401,14 +419,14 @@ bool pucch_procedures_ue_nr(PHY_VARS_NR_UE *ue, uint8_t gNB_id, UE_nr_rxtx_proc_ } case pucch_format2_nr: { - nb_of_prbs = ue->pucch_config_dedicated_nr[gNB_id].PUCCH_Resource[pucch_resource_id]->format_parameters.nrofPRBs; + nb_of_prbs = pucch_resource->format.choice.format2->nrofPRBs; N_sc_ctrl_RB = N_SC_RB - 4; break; } case pucch_format3_nr: { - nb_of_prbs = ue->pucch_config_dedicated_nr[gNB_id].PUCCH_Resource[pucch_resource_id]->format_parameters.nrofPRBs; - if (ue->pucch_config_dedicated_nr[gNB_id].formatConfig[format-1]->pi2PBSK == feature_enabled) { + nb_of_prbs = pucch_resource->format.choice.format3->nrofPRBs; + if (mac->ULbwp[bwp_id-1]->bwp_Dedicated->pucch_Config->choice.setup->format3->choice.setup->pi2BPSK[0] == 1) { Q_m = BITS_PER_SYMBOL_BPSK; /* set bpsk modulation type with 1 bit per modulation symbol */ } N_sc_ctrl_RB = N_SC_RB; @@ -417,12 +435,12 @@ bool pucch_procedures_ue_nr(PHY_VARS_NR_UE *ue, uint8_t gNB_id, UE_nr_rxtx_proc_ } case pucch_format4_nr: { - if (ue->pucch_config_dedicated_nr[gNB_id].formatConfig[format-1]->pi2PBSK == feature_enabled) { + if (mac->ULbwp[bwp_id-1]->bwp_Dedicated->pucch_Config->choice.setup->format4->choice.setup->pi2BPSK[0] == 1) { Q_m = BITS_PER_SYMBOL_BPSK; /* set bpsk modulation type with 1 bit per modulation symbol */ } nb_symbols = nb_symbols_excluding_dmrs[nb_symbols_total-4][index_additional_dmrs][index_hopping]; nb_of_prbs = 1; - subframe_number = nr_tti_tx/(ue->frame_parms.ttis_per_subframe); + subframe_number = nr_tti_tx/(ue->frame_parms.slots_per_subframe);//ttis_per_subframe); nb_pucch_format_4_in_subframes[subframe_number]++; /* increment number of transmit pucch 4 in current subframe */ NR_TST_PHY_PRINTF("PUCCH Number of pucch format 4 in subframe %d is %d \n", subframe_number, nb_pucch_format_4_in_subframes[subframe_number]); N_sc_ctrl_RB = N_SC_RB/(nb_pucch_format_4_in_subframes[subframe_number]); @@ -434,10 +452,10 @@ bool pucch_procedures_ue_nr(PHY_VARS_NR_UE *ue, uint8_t gNB_id, UE_nr_rxtx_proc_ /* drop CSI report if simultaneous HARQ-ACK/SR and periodic/semi-periodic CSI cannot be transmitted at the same time */ if (format != pucch_format0_nr) { - if (ue->pucch_config_dedicated_nr[gNB_id].formatConfig[format-1] != NULL) { - max_code_rate = code_rate_r_time_100[ue->pucch_config_dedicated_nr[gNB_id].formatConfig[format-1]->maxCodeRate]; /* it is code rate * 10 */ + if (mac->ULbwp[bwp_id-1]->bwp_Dedicated->pucch_Config->choice.setup->format1 != NULL) { + max_code_rate = code_rate_r_time_100[mac->ULbwp[bwp_id-1]->bwp_Dedicated->pucch_Config->choice.setup->format1->choice.setup->maxCodeRate[0]]; /* it is code rate * 10 */ - if ((O_ACK != 0) && (ue->pucch_config_dedicated_nr[gNB_id].formatConfig[format-1]->simultaneousHARQ_ACK_CSI == disable_feature)) { + if ((O_ACK != 0) && (mac->ULbwp[bwp_id-1]->bwp_Dedicated->pucch_Config->choice.setup->format1->choice.setup->simultaneousHARQ_ACK_CSI[0] == 0)) { N_UCI = N_UCI - O_CSI; O_CSI = cqi_status = ri_status = 0; csi_payload = 0; /* csi should be dropped in this case */ @@ -563,7 +581,8 @@ bool pucch_procedures_ue_nr(PHY_VARS_NR_UE *ue, uint8_t gNB_id, UE_nr_rxtx_proc_ { nr_generate_pucch0(ue,ue->common_vars.txdataF, &ue->frame_parms, - &ue->pucch_config_dedicated[gNB_id], + mac->ULbwp[bwp_id-1]->bwp_Common->pucch_ConfigCommon->choice.setup->pucch_GroupHopping, + mac->ULbwp[bwp_id-1]->bwp_Common->pucch_ConfigCommon->choice.setup->hoppingId[0], tx_amp, nr_tti_tx, (uint8_t)m_0, @@ -679,8 +698,11 @@ uint8_t get_downlink_ack(PHY_VARS_NR_UE *ue, uint8_t gNB_id, UE_nr_rxtx_proc_t int U_DAI_c = 0; int N_m_c_rx = 0; int V_DAI_m_DL = 0; + NR_UE_MAC_INST_t *mac = get_mac_inst(0); - if (ue->PDSCH_Config.maxNrofCodeWordsScheduledByDCI == nb_code_n2) { + if (mac->DLbwp[0] == NULL) return 0; + + if (mac->DLbwp[0]->bwp_Dedicated->pdsch_Config->choice.setup->maxNrofCodeWordsScheduledByDCI[0] == 2) { two_transport_blocks = TRUE; number_of_code_word = 2; } @@ -698,46 +720,49 @@ uint8_t get_downlink_ack(PHY_VARS_NR_UE *ue, uint8_t gNB_id, UE_nr_rxtx_proc_t for (int dl_harq_pid = 0; dl_harq_pid < number_pid_dl; dl_harq_pid++) { - harq_status = &ue->dlsch[ue->current_thread_id[proc->nr_tti_rx]][gNB_id][code_word]->harq_processes[dl_harq_pid]->harq_ack; + for (int thread_idx = 0; thread_idx < RX_NB_TH; thread_idx++) { - /* check if current tx slot should transmit downlink acknowlegment */ - if (harq_status->slot_for_feedback_ack == proc->nr_tti_tx) { + harq_status = &ue->dlsch[thread_idx][gNB_id][code_word]->harq_processes[dl_harq_pid]->harq_ack; - if (harq_status->ack == DL_ACKNACK_NO_SET) { - LOG_E(PHY,"PUCCH Downlink acknowledgment has not been set : at line %d in function %s of file %s \n", LINE_FILE , __func__, FILE_NAME); - return (0); - } - else if (harq_status->vDAI_DL == DL_DAI_NO_SET) { - LOG_E(PHY,"PUCCH Downlink DAI has not been set : at line %d in function %s of file %s \n", LINE_FILE , __func__, FILE_NAME); - return (0); - } - else if (harq_status->vDAI_DL > NR_DL_MAX_DAI) { - LOG_E(PHY,"PUCCH Downlink DAI has an invalid value : at line %d in function %s of file %s \n", LINE_FILE , __func__, FILE_NAME); - return (0); - } - else if (harq_status->send_harq_status == 0) { - LOG_E(PHY,"PUCCH Downlink ack can not be transmitted : at line %d in function %s of file %s \n", LINE_FILE , __func__, FILE_NAME); - return(0); - } - else { + /* check if current tx slot should transmit downlink acknowlegment */ + if (harq_status->slot_for_feedback_ack == proc->nr_tti_tx) { - dai_current = harq_status->vDAI_DL; - - if (dai_current == 0) { - LOG_E(PHY,"PUCCH Downlink dai is invalid : at line %d in function %s of file %s \n", LINE_FILE , __func__, FILE_NAME); - return(0); - } else if (dai_current > dai_max) { - dai_max = dai_current; + if (harq_status->ack == DL_ACKNACK_NO_SET) { + LOG_E(PHY,"PUCCH Downlink acknowledgment has not been set : at line %d in function %s of file %s \n", LINE_FILE , __func__, FILE_NAME); + return (0); } + else if (harq_status->vDAI_DL == DL_DAI_NO_SET) { + LOG_E(PHY,"PUCCH Downlink DAI has not been set : at line %d in function %s of file %s \n", LINE_FILE , __func__, FILE_NAME); + return (0); + } + else if (harq_status->vDAI_DL > NR_DL_MAX_DAI) { + LOG_E(PHY,"PUCCH Downlink DAI has an invalid value : at line %d in function %s of file %s \n", LINE_FILE , __func__, FILE_NAME); + return (0); + } + else if (harq_status->send_harq_status == 0) { + LOG_E(PHY,"PUCCH Downlink ack can not be transmitted : at line %d in function %s of file %s \n", LINE_FILE , __func__, FILE_NAME); + return(0); + } + else { - number_harq_feedback++; - ack_data[code_word][dai_current - 1] = harq_status->ack; - dai[code_word][dai_current - 1] = dai_current; + dai_current = harq_status->vDAI_DL+1; // DCI DAI to counter DAI conversion + + if (dai_current == 0) { + LOG_E(PHY,"PUCCH Downlink dai is invalid : at line %d in function %s of file %s \n", LINE_FILE , __func__, FILE_NAME); + return(0); + } else if (dai_current > dai_max) { + dai_max = dai_current; + } + + number_harq_feedback++; + ack_data[code_word][dai_current - 1] = harq_status->ack; + dai[code_word][dai_current - 1] = dai_current; + } + if (do_reset == TRUE) { + init_downlink_harq_status(ue->dlsch[thread_idx][gNB_id][code_word]->harq_processes[dl_harq_pid]); + } } } - if (do_reset == TRUE) { - init_downlink_harq_status(ue->dlsch[ue->current_thread_id[proc->nr_tti_rx]][gNB_id][code_word]->harq_processes[dl_harq_pid]); - } } } @@ -756,8 +781,8 @@ uint8_t get_downlink_ack(PHY_VARS_NR_UE *ue, uint8_t gNB_id, UE_nr_rxtx_proc_t U_DAI_c = number_harq_feedback/number_of_code_word; N_m_c_rx = number_harq_feedback; int N_SPS_c = 0; /* FFS TODO_NR multicells and SPS are not supported at the moment */ - if (ue->cell_group_config.physicalCellGroupConfig.harq_ACK_SpatialBundlingPUCCH == FALSE) { - int N_TB_max_DL = ue->PDSCH_Config.maxNrofCodeWordsScheduledByDCI; + if (mac->scg->physicalCellGroupConfig->harq_ACK_SpatialBundlingPUCCH == NULL) { + int N_TB_max_DL = mac->DLbwp[0]->bwp_Dedicated->pdsch_Config->choice.setup->maxNrofCodeWordsScheduledByDCI[0]; *n_HARQ_ACK = (((V_DAI_m_DL - U_DAI_c)%4) * N_TB_max_DL) + N_m_c_rx + N_SPS_c; NR_TST_PHY_PRINTF("PUCCH power n(%d) = ( V(%d) - U(%d) )mod4 * N_TB(%d) + N(%d) \n", *n_HARQ_ACK, V_DAI_m_DL, U_DAI_c, N_TB_max_DL, N_m_c_rx); } @@ -853,7 +878,7 @@ uint8_t get_downlink_ack(PHY_VARS_NR_UE *ue, uint8_t gNB_id, UE_nr_rxtx_proc_t * *********************************************************************/ -boolean_t select_pucch_resource(PHY_VARS_NR_UE *ue, uint8_t gNB_id, int uci_size, int pucch_resource_indicator, +boolean_t select_pucch_resource(PHY_VARS_NR_UE *ue, NR_UE_MAC_INST_t *mac, uint8_t gNB_id, int uci_size, int pucch_resource_indicator, int *initial_pucch_id, int *resource_set_id, int *resource_id, NR_UE_HARQ_STATUS_t *harq_status) { boolean_t resource_set_found = FALSE; @@ -861,18 +886,19 @@ boolean_t select_pucch_resource(PHY_VARS_NR_UE *ue, uint8_t gNB_id, int uci_size int current_resource_id = MAX_NB_OF_PUCCH_RESOURCES; pucch_format_nr_t format_pucch; int ready_pucch_resource_id = FALSE; /* in the case that it is already given */ + NR_PUCCH_Resource_t *pucch_resource; /* ini values to unset */ *initial_pucch_id = NB_INITIAL_PUCCH_RESOURCE; //*resource_set_id = MAX_NB_OF_PUCCH_RESOURCE_SETS; //*resource_id = MAX_NB_OF_PUCCH_RESOURCES; - if (ue->pucch_config_dedicated_nr[gNB_id].PUCCH_ResourceSet[0] == NULL) { + if (mac->ULbwp[bwp_id-1]->bwp_Dedicated->pucch_Config->choice.setup->resourceSetToAddModList->list.array[0] == NULL) { /* No resource set has been already configured so pucch_configCommon from Sib1 should be used in this case */ if (ue->UE_mode[gNB_id] != PUSCH) { - *initial_pucch_id = ue->pucch_config_common_nr[gNB_id].pucch_ResourceCommon; + *initial_pucch_id = mac->ULbwp[bwp_id-1]->bwp_Common->pucch_ConfigCommon->choice.setup->pucch_ResourceCommon[0]; if (*initial_pucch_id >= NB_INITIAL_PUCCH_RESOURCE) { LOG_E(PHY,"PUCCH Invalid initial resource index : at line %d in function %s of file %s \n", LINE_FILE , __func__, FILE_NAME); *initial_pucch_id = NB_INITIAL_PUCCH_RESOURCE; @@ -897,7 +923,7 @@ boolean_t select_pucch_resource(PHY_VARS_NR_UE *ue, uint8_t gNB_id, int uci_size } nb_symbols_for_tx = initial_pucch_resource[*initial_pucch_id].nrofSymbols; format_pucch = initial_pucch_resource[*initial_pucch_id].format; - if (check_pucch_format(ue, gNB_id, format_pucch, nb_symbols_for_tx, uci_size) == TRUE) { + if (check_pucch_format(mac, gNB_id, format_pucch, nb_symbols_for_tx, uci_size) == TRUE) { return (TRUE); } else { @@ -917,7 +943,7 @@ boolean_t select_pucch_resource(PHY_VARS_NR_UE *ue, uint8_t gNB_id, int uci_size -- This field can take integer values that are multiples of 4. Corresponds to L1 parameter 'N_2' or 'N_3' (see 38.213, section 9.2) */ /* look for the first resource set which supports uci_size number of bits for payload */ - pucch_resource_set_id = find_pucch_resource_set( ue, gNB_id, uci_size); + pucch_resource_set_id = find_pucch_resource_set(mac, gNB_id, uci_size); if (pucch_resource_set_id != MAX_NB_OF_PUCCH_RESOURCE_SETS) { resource_set_found = TRUE; } @@ -932,13 +958,13 @@ boolean_t select_pucch_resource(PHY_VARS_NR_UE *ue, uint8_t gNB_id, int uci_size if (resource_set_found == TRUE) { if (pucch_resource_indicator < MAX_PUCCH_RESOURCE_INDICATOR) { /* check if resource indexing by pucch_resource_indicator of this set is compatible */ - if ((ready_pucch_resource_id == TRUE) || (ue->pucch_config_dedicated_nr[gNB_id].PUCCH_ResourceSet[pucch_resource_set_id]->pucch_resource_id[pucch_resource_indicator] != MAX_NB_OF_PUCCH_RESOURCES)) { + if ((ready_pucch_resource_id == TRUE) || (mac->ULbwp[bwp_id-1]->bwp_Dedicated->pucch_Config->choice.setup->resourceSetToAddModList->list.array[pucch_resource_set_id]->resourceList.list.array[pucch_resource_indicator][0] != MAX_NB_OF_PUCCH_RESOURCES)) { if (ready_pucch_resource_id == TRUE) { current_resource_id = *resource_id; } else { - int R_PUCCH = ue->pucch_config_dedicated_nr[gNB_id].PUCCH_ResourceSet[pucch_resource_set_id]->first_resources_set_R_PUCCH; + int R_PUCCH = mac->ULbwp[bwp_id-1]->bwp_Dedicated->pucch_Config->choice.setup->resourceSetToAddModList->list.array[pucch_resource_set_id]->resourceList.list.count; /* is it the first resource and its size exceeds 8 */ if ((pucch_resource_set_id == 0) && (R_PUCCH > MAX_NB_OF_PUCCH_RESOURCES_PER_SET_NOT_0)) { @@ -960,15 +986,22 @@ boolean_t select_pucch_resource(PHY_VARS_NR_UE *ue, uint8_t gNB_id, int uci_size current_resource_id = r_PUCCH; } else { - current_resource_id = ue->pucch_config_dedicated_nr[gNB_id].PUCCH_ResourceSet[pucch_resource_set_id]->pucch_resource_id[pucch_resource_indicator]; + current_resource_id = mac->ULbwp[bwp_id-1]->bwp_Dedicated->pucch_Config->choice.setup->resourceSetToAddModList->list.array[pucch_resource_set_id]->resourceList.list.array[pucch_resource_indicator][0]; } } - if (ue->pucch_config_dedicated_nr[gNB_id].PUCCH_Resource[current_resource_id] != NULL) { - nb_symbols_for_tx = ue->pucch_config_dedicated_nr[gNB_id].PUCCH_Resource[current_resource_id]->format_parameters.nrofSymbols; - format_pucch = ue->pucch_config_dedicated_nr[gNB_id].PUCCH_Resource[current_resource_id]->format_parameters.format; + /*uint8_t pucch_resource_count = mac->ULbwp[bwp_id-1]->bwp_Dedicated->pucch_Config->choice.setup->resourceToAddModList.list.count; + for (uint8_t i=0; iULbwp[bwp_id-1]->bwp_Dedicated->pucch_Config->choice.setup->resourceToAddModList.list.array[i]->pucch_ResourceId == current_resource_id) + pucch_resource = mac->ULbwp[bwp_id-1]->bwp_Dedicated->pucch_Config->choice.setup->resourceToAddModList.list.array[i]; + }*/ - if (check_pucch_format(ue, gNB_id, format_pucch, nb_symbols_for_tx, uci_size) == TRUE) { + pucch_resource = mac->ULbwp[bwp_id-1]->bwp_Dedicated->pucch_Config->choice.setup->resourceToAddModList->list.array[current_resource_id]; + if (pucch_resource != NULL) { + format_pucch = mac->ULbwp[bwp_id-1]->bwp_Dedicated->pucch_Config->choice.setup->resourceToAddModList->list.array[current_resource_id]->format.present; + nb_symbols_for_tx = get_nb_symbols_pucch(pucch_resource, format_pucch); + + if (check_pucch_format(mac, gNB_id, format_pucch, nb_symbols_for_tx, uci_size) == TRUE) { *resource_set_id = pucch_resource_set_id; *resource_id = current_resource_id; return (TRUE); @@ -1014,9 +1047,10 @@ boolean_t select_pucch_resource(PHY_VARS_NR_UE *ue, uint8_t gNB_id, int uci_size * *********************************************************************/ -int find_pucch_resource_set(PHY_VARS_NR_UE *ue, uint8_t gNB_id, int uci_size) +int find_pucch_resource_set(NR_UE_MAC_INST_t *mac, uint8_t gNB_id, int uci_size) { int pucch_resource_set_id = 0; + long *pucch_max_pl_bits = NULL; /* from TS 38.331 field maxPayloadMinus1 -- Maximum number of payload bits minus 1 that the UE may transmit using this PUCCH resource set. In a PUCCH occurrence, the UE @@ -1027,8 +1061,9 @@ int find_pucch_resource_set(PHY_VARS_NR_UE *ue, uint8_t gNB_id, int uci_size) */ /* look for the first resource set which supports uci_size number of bits for payload */ while (pucch_resource_set_id < MAX_NB_OF_PUCCH_RESOURCE_SETS) { - if (ue->pucch_config_dedicated_nr[gNB_id].PUCCH_ResourceSet[pucch_resource_set_id] != NULL) { - if (uci_size <= ue->pucch_config_dedicated_nr[gNB_id].PUCCH_ResourceSet[pucch_resource_set_id]->maxPayloadMinus1 + 1) { + if (mac->ULbwp[bwp_id-1]->bwp_Dedicated->pucch_Config->choice.setup->resourceSetToAddModList->list.array[pucch_resource_set_id] != NULL) { + pucch_max_pl_bits = mac->ULbwp[bwp_id-1]->bwp_Dedicated->pucch_Config->choice.setup->resourceSetToAddModList->list.array[pucch_resource_set_id]->maxPayloadMinus1; + if (uci_size <= (((pucch_max_pl_bits != NULL) ? *pucch_max_pl_bits : 1706) + 1)) { NR_TST_PHY_PRINTF("PUCCH found resource set %d \n", pucch_resource_set_id); return (pucch_resource_set_id); break; @@ -1057,18 +1092,40 @@ int find_pucch_resource_set(PHY_VARS_NR_UE *ue, uint8_t gNB_id, int uci_size) * *********************************************************************/ -boolean_t check_pucch_format(PHY_VARS_NR_UE *ue, uint8_t gNB_id, pucch_format_nr_t format_pucch, int nb_symbols_for_tx, int uci_size) +boolean_t check_pucch_format(NR_UE_MAC_INST_t *mac, uint8_t gNB_id, pucch_format_nr_t format_pucch, int nb_symbols_for_tx, int uci_size) { pucch_format_nr_t selected_pucch_format; pucch_format_nr_t selected_pucch_format_second; + NR_SetupRelease_PUCCH_FormatConfig_t *identified_format = NULL; - if (format_pucch != pucch_format0_nr) { - if (ue->pucch_config_dedicated_nr[gNB_id].formatConfig[format_pucch-1] != NULL) { - if (ue->pucch_config_dedicated_nr[gNB_id].formatConfig[format_pucch-1]->nrofSlots != 1) { - LOG_E(PHY,"PUCCH not implemented multislots transmission : at line %d in function %s of file %s \n", LINE_FILE , __func__, FILE_NAME); - return (FALSE); - } - } + switch (format_pucch) { + case pucch_format1_nr: + if (mac->ULbwp[bwp_id-1]->bwp_Dedicated->pucch_Config->choice.setup->format1 != NULL) + identified_format = mac->ULbwp[bwp_id-1]->bwp_Dedicated->pucch_Config->choice.setup->format1; + break; + + case pucch_format2_nr: + if (mac->ULbwp[bwp_id-1]->bwp_Dedicated->pucch_Config->choice.setup->format2 != NULL) + identified_format = mac->ULbwp[bwp_id-1]->bwp_Dedicated->pucch_Config->choice.setup->format2; + break; + + case pucch_format3_nr: + if (mac->ULbwp[bwp_id-1]->bwp_Dedicated->pucch_Config->choice.setup->format3 != NULL) + identified_format = mac->ULbwp[bwp_id-1]->bwp_Dedicated->pucch_Config->choice.setup->format3; + break; + + case pucch_format4_nr: + if (mac->ULbwp[bwp_id-1]->bwp_Dedicated->pucch_Config->choice.setup->format4 != NULL) + identified_format = mac->ULbwp[bwp_id-1]->bwp_Dedicated->pucch_Config->choice.setup->format4; + break; + + default: + break; + } + + if ((identified_format != NULL) && (identified_format->choice.setup->nrofSlots[0] != 1)) { + LOG_E(PHY,"PUCCH not implemented multislots transmission : at line %d in function %s of file %s \n", LINE_FILE , __func__, FILE_NAME); + return (FALSE); } if (nb_symbols_for_tx <= 2) { @@ -1160,7 +1217,7 @@ int trigger_periodic_scheduling_request(PHY_VARS_NR_UE *ue, uint8_t gNB_id, UE_n return (1); /* period is slot */ } - int16_t N_slot_frame = NR_NUMBER_OF_SUBFRAMES_PER_FRAME * ue->frame_parms.ttis_per_subframe; + int16_t N_slot_frame = NR_NUMBER_OF_SUBFRAMES_PER_FRAME * ue->frame_parms.slots_per_subframe;//ttis_per_subframe; if (((proc->frame_tx * N_slot_frame) + proc->nr_tti_tx - SR_offset)%SR_periodicity == 0) { return (1); } @@ -1219,4 +1276,74 @@ void set_csi_nr(int csi_status, uint32_t csi_payload) } } +uint8_t get_nb_symbols_pucch(NR_PUCCH_Resource_t *pucch_resource, pucch_format_nr_t format_type) +{ + switch (format_type) { + case pucch_format0_nr: + return pucch_resource->format.choice.format0->nrofSymbols; + + case pucch_format1_nr: + return pucch_resource->format.choice.format1->nrofSymbols; + + case pucch_format2_nr: + return pucch_resource->format.choice.format2->nrofSymbols; + + case pucch_format3_nr: + return pucch_resource->format.choice.format3->nrofSymbols; + + case pucch_format4_nr: + return pucch_resource->format.choice.format4->nrofSymbols; + } + return 0; +} + +uint16_t get_starting_symb_idx(NR_PUCCH_Resource_t *pucch_resource, pucch_format_nr_t format_type) +{ + switch (format_type) { + case pucch_format0_nr: + return pucch_resource->format.choice.format0->startingSymbolIndex; + + case pucch_format1_nr: + return pucch_resource->format.choice.format1->startingSymbolIndex; + + case pucch_format2_nr: + return pucch_resource->format.choice.format2->startingSymbolIndex; + + case pucch_format3_nr: + return pucch_resource->format.choice.format3->startingSymbolIndex; + + case pucch_format4_nr: + return pucch_resource->format.choice.format4->startingSymbolIndex; + } + return 0; +} + +int get_ics_pucch(NR_PUCCH_Resource_t *pucch_resource, pucch_format_nr_t format_type) +{ + switch (format_type) { + case pucch_format0_nr: + return pucch_resource->format.choice.format0->initialCyclicShift; + + case pucch_format1_nr: + return pucch_resource->format.choice.format1->initialCyclicShift; + + default: + return -1; + } + return -1; +} + +NR_PUCCH_Resource_t *select_resource_by_id(int resource_id, NR_PUCCH_Config_t *pucch_config) +{ + int n_list = pucch_config->resourceToAddModList->list.count; + NR_PUCCH_Resource_t *pucchres; + AssertFatal(n_list>0,"PUCCH resourceToAddModList is empty\n"); + + for (int i=0; iresourceToAddModList->list.array[i]; + if (pucchres->pucch_ResourceId == resource_id) + return pucchres; + } + return NULL; +} diff --git a/openair1/SCHED_NR_UE/pucch_uci_ue_nr.h b/openair1/SCHED_NR_UE/pucch_uci_ue_nr.h index 85cd969e26..089fae9f55 100644 --- a/openair1/SCHED_NR_UE/pucch_uci_ue_nr.h +++ b/openair1/SCHED_NR_UE/pucch_uci_ue_nr.h @@ -41,6 +41,9 @@ /************** INCLUDE *******************************************/ #include "PHY/defs_nr_UE.h" +#include "openair2/LAYER2/NR_MAC_UE/mac_proto.h" +#include "openair2/LAYER2/NR_MAC_UE/mac_defs.h" +#include "RRC/NR_UE/rrc_proto.h" #ifdef DEFINE_VARIABLES_PUCCH_UE_NR_H #define EXTERN @@ -187,7 +190,7 @@ uint8_t get_downlink_ack(PHY_VARS_NR_UE *ue, uint8_t gNB_id, UE_nr_rxtx_proc_t @param resource_id pucch resource id if any @returns TRUE a pucch resource has been found FALSE no valid pucch resource */ -boolean_t select_pucch_resource(PHY_VARS_NR_UE *ue, uint8_t gNB_id, int uci_size, int pucch_resource_indicator, +boolean_t select_pucch_resource(PHY_VARS_NR_UE *ue, NR_UE_MAC_INST_t *mac, uint8_t gNB_id, int uci_size, int pucch_resource_indicator, int *initial_pucch_id, int *resource_set_id, int *resource_id, NR_UE_HARQ_STATUS_t *harq_status); /** \brief This function select a pucch resource set @@ -196,7 +199,7 @@ boolean_t select_pucch_resource(PHY_VARS_NR_UE *ue, uint8_t gNB_id, int uci_size @param uci size number of uci bits @returns number of the pucch resource set */ -int find_pucch_resource_set(PHY_VARS_NR_UE *ue, uint8_t gNB_id, int uci_size); +int find_pucch_resource_set(NR_UE_MAC_INST_t *mac, uint8_t gNB_id, int uci_size); /** \brief This function check pucch format @param ue context @@ -206,7 +209,7 @@ int find_pucch_resource_set(PHY_VARS_NR_UE *ue, uint8_t gNB_id, int uci_size); @param uci size number of uci bits @returns TRUE pucch format matched uci size and constraints, FALSE invalid pucch format */ -boolean_t check_pucch_format(PHY_VARS_NR_UE *ue, uint8_t gNB_id, pucch_format_nr_t format_pucch, int nb_symbols_for_tx, +boolean_t check_pucch_format(NR_UE_MAC_INST_t *mac, uint8_t gNB_id, pucch_format_nr_t format_pucch, int nb_symbols_for_tx, int uci_size); /** \brief This function selects a pucch resource @@ -232,4 +235,11 @@ int get_csi_nr(PHY_VARS_NR_UE *ue, uint8_t gNB_id, uint32_t *csi_payload); void set_csi_nr(int csi_status, uint32_t csi_payload); +uint8_t get_nb_symbols_pucch(NR_PUCCH_Resource_t *pucch_resource, pucch_format_nr_t format_type); + +uint16_t get_starting_symb_idx(NR_PUCCH_Resource_t *pucch_resource, pucch_format_nr_t format_type); + +int get_ics_pucch(NR_PUCCH_Resource_t *pucch_resource, pucch_format_nr_t format_type); + +NR_PUCCH_Resource_t *select_resource_by_id(int resource_id, NR_PUCCH_Config_t *pucch_config); #endif /* PUCCH_UCI_UE_NR_H */ diff --git a/openair1/SCHED_UE/phy_procedures_lte_ue.c b/openair1/SCHED_UE/phy_procedures_lte_ue.c index e0ea4ef2b2..3215718f8e 100644 --- a/openair1/SCHED_UE/phy_procedures_lte_ue.c +++ b/openair1/SCHED_UE/phy_procedures_lte_ue.c @@ -2383,10 +2383,12 @@ void ue_pbch_procedures(uint8_t eNB_id, if (pbch_phase>=4) pbch_phase=0; +if((ue->frame_parms.FeMBMS_active == 0)|| is_fembms_cas_subframe(frame_rx,subframe_rx,&ue->frame_parms) || first_run) { + for (pbch_trials=0; pbch_trials<4; pbch_trials++) { //for (pbch_phase=0;pbch_phase<4;pbch_phase++) { //LOG_I(PHY,"[UE %d] Frame %d, Trying PBCH %d (NidCell %d, eNB_id %d)\n",ue->Mod_id,frame_rx,pbch_phase,ue->frame_parms.Nid_cell,eNB_id); - if(is_fembms_cas_subframe(frame_rx,subframe_rx,&ue->frame_parms)) { + if(is_fembms_cas_subframe(frame_rx,subframe_rx,&ue->frame_parms) || ue->frame_parms.FeMBMS_active) { pbch_tx_ant = rx_pbch_fembms(&ue->common_vars, ue->pbch_vars[eNB_id], &ue->frame_parms, @@ -2431,9 +2433,10 @@ void ue_pbch_procedures(uint8_t eNB_id, ue->pbch_vars[eNB_id]->pdu_errors_conseq = 0; - if(is_fembms_cas_subframe(frame_rx,subframe_rx,&ue->frame_parms)) { + if(is_fembms_cas_subframe(frame_rx,subframe_rx,&ue->frame_parms) || ue->frame_parms.FeMBMS_active) { frame_tx = (int)((ue->pbch_vars[eNB_id]->decoded_output[2]&31)<<1); frame_tx += ue->pbch_vars[eNB_id]->decoded_output[1]>>7; + frame_tx = frame_tx<<4; frame_tx +=4*pbch_phase; } else { frame_tx = (((int)(ue->pbch_vars[eNB_id]->decoded_output[2]&0x03))<<8); @@ -2490,7 +2493,7 @@ void ue_pbch_procedures(uint8_t eNB_id, } if (LOG_DEBUGFLAG(DEBUG_UE_PHYPROC)) { - LOG_UI(PHY,"[UE %d] frame %d, subframe %d, Received PBCH (MIB): nb_antenna_ports_eNB %d, tx_ant %d, frame_tx %d. N_RB_DL %d, phich_duration %d, phich_resource %d/6!\n", + LOG_D(PHY,"[UE %d] frame %d, subframe %d, Received PBCH (MIB): nb_antenna_ports_eNB %d, tx_ant %d, frame_tx %d. N_RB_DL %d, phich_duration %d, phich_resource %d/6!\n", ue->Mod_id, frame_rx, subframe_rx, @@ -2501,6 +2504,17 @@ void ue_pbch_procedures(uint8_t eNB_id, ue->frame_parms.phich_config_common.phich_duration, ue->frame_parms.phich_config_common.phich_resource); } + LOG_D(PHY,"[UE %d] frame %d, subframe %d, Received PBCH (MIB): nb_antenna_ports_eNB %d, tx_ant %d, frame_tx %d. N_RB_DL %d, phich_duration %d, phich_resource %d/6!\n", + ue->Mod_id, + frame_rx, + subframe_rx, + ue->frame_parms.nb_antenna_ports_eNB, + pbch_tx_ant, + frame_tx, + ue->frame_parms.N_RB_DL, + ue->frame_parms.phich_config_common.phich_duration, + ue->frame_parms.phich_config_common.phich_resource); + } else { if (LOG_DUMPFLAG(DEBUG_UE_PHYPROC)) { LOG_E(PHY,"[UE %d] frame %d, subframe %d, Error decoding PBCH!\n", @@ -2533,6 +2547,8 @@ void ue_pbch_procedures(uint8_t eNB_id, ue->pbch_vars[eNB_id]->pdu_errors_conseq); } +} //if((ue->frame_parms.FeMBMS_active == 0)|| is_fembms_cas_subframe(frame_rx,subframe_rx,&ue->frame_parms) || first_run) + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_PBCH_PROCEDURES, VCD_FUNCTION_OUT); } @@ -2877,10 +2893,19 @@ void ue_pmch_procedures(PHY_VARS_UE *ue, int l; int ret=0; - if (is_pmch_subframe(frame_rx,subframe_rx,&ue->frame_parms)) { + if (is_pmch_subframe(frame_rx,subframe_rx,&ue->frame_parms) || fembms_flag) { // LOG_D(PHY,"ue calling pmch subframe ..\n "); LOG_D(PHY,"[UE %d] Frame %d, subframe %d: Querying for PMCH demodulation\n", ue->Mod_id,frame_rx,subframe_rx); + if(fembms_flag) + pmch_mcs = ue_query_mch_fembms(ue->Mod_id, + CC_id, + frame_rx, + subframe_rx, + eNB_id, + &sync_area, + &mcch_active); + else pmch_mcs = ue_query_mch(ue->Mod_id, CC_id, frame_rx, @@ -2960,6 +2985,7 @@ void ue_pmch_procedures(PHY_VARS_UE *ue, LOG_D(PHY,"start turbo decode for MCH %d.%d --> Nl %d \n", frame_rx, subframe_rx, ue->dlsch_MCH[0]->harq_processes[0]->Nl); LOG_D(PHY,"start turbo decode for MCH %d.%d --> G %d \n", frame_rx, subframe_rx, ue->dlsch_MCH[0]->harq_processes[0]->G); LOG_D(PHY,"start turbo decode for MCH %d.%d --> Kmimo %d \n", frame_rx, subframe_rx, ue->dlsch_MCH[0]->Kmimo); + ret = dlsch_decoding(ue, ue->pdsch_vars_MCH[ue->current_thread_id[subframe_rx]][0]->llr[0], &ue->frame_parms, @@ -3007,14 +3033,14 @@ void ue_pmch_procedures(PHY_VARS_UE *ue, // if (subframe_rx==9) // mac_xface->macphy_exit("Why are we exiting here?"); } else { // decoding successful - LOG_D(PHY,"[UE %d] Frame %d, subframe %d: PMCH OK (%d,%d), passing to L2 (TBS %d, iter %d,G %d)\n", + LOG_D(PHY,"[UE %d] Frame %d, subframe %d: PMCH OK (%d,%d), passing to L2 (TBS %d, iter %d,G %d) ret %d\n", ue->Mod_id, frame_rx,subframe_rx, ue->dlsch_mcch_errors[sync_area][0], ue->dlsch_mtch_errors[sync_area][0], ue->dlsch_MCH[0]->harq_processes[0]->TBS>>3, ue->dlsch_MCH[0]->max_turbo_iterations, - ue->dlsch_MCH[0]->harq_processes[0]->G); + ue->dlsch_MCH[0]->harq_processes[0]->G,ret); ue_send_mch_sdu(ue->Mod_id, CC_id, frame_rx, @@ -3022,6 +3048,8 @@ void ue_pmch_procedures(PHY_VARS_UE *ue, ue->dlsch_MCH[0]->harq_processes[0]->TBS>>3, eNB_id,// not relevant in eMBMS context sync_area); + //dump_mch(ue,0,ue->dlsch_MCH[0]->harq_processes[0]->G,subframe_rx); + //exit_fun("nothing to add"); if (mcch_active == 1) ue->dlsch_mcch_received[sync_area][0]++; @@ -4429,6 +4457,15 @@ int phy_procedures_UE_RX(PHY_VARS_UE *ue, ue_pmch_procedures(ue,proc,eNB_id,abstraction_flag,1); return 0; } else { // this gets closed at end + if (is_fembms_cas_subframe(frame_rx,subframe_rx,&ue->frame_parms) || is_fembms_nonMBSFN_subframe(frame_rx,subframe_rx,&ue->frame_parms) ) { + l=0; + slot_fep(ue, + l, + subframe_rx<<1, + 0, + 0, + 0); + } pmch_flag = is_pmch_subframe(frame_rx,subframe_rx,&ue->frame_parms) ? 1 : 0; if (do_pdcch_flag) { diff --git a/openair1/SIMULATION/LTE_PHY/dlsim.c b/openair1/SIMULATION/LTE_PHY/dlsim.c index f65e1f9633..94214ab3b3 100644 --- a/openair1/SIMULATION/LTE_PHY/dlsim.c +++ b/openair1/SIMULATION/LTE_PHY/dlsim.c @@ -78,6 +78,8 @@ double t_rx_min = 1000000000; /*!< \brief initial min process time for rx */ int n_tx_dropped = 0; /*!< \brief initial max process time for tx */ int n_rx_dropped = 0; /*!< \brief initial max process time for rx */ +double DS_TDL = .03; + int emulate_rf = 0; int split73=0; void sendFs6Ul(PHY_VARS_eNB *eNB, int UE_id, int harq_pid, int segmentID, int16_t *data, int dataLen, int r_offset) { @@ -161,7 +163,7 @@ void DL_channel(RU_t *ru,PHY_VARS_UE *UE,uint subframe,int awgn_flag,double SNR, // Multipath channel if (awgn_flag == 0) { multipath_channel(eNB2UE[round],s_re,s_im,r_re,r_im, - 2*UE->frame_parms.samples_per_tti,hold_channel); + 2*UE->frame_parms.samples_per_tti,hold_channel,0); // printf("amc: ****************** eNB2UE[%d]->n_rx = %d,dd %d\n",round,eNB2UE[round]->nb_rx,eNB2UE[round]->channel_offset); if(abstx==1 && num_rounds>1) @@ -1172,6 +1174,7 @@ int main(int argc, char **argv) { channel_model, N_RB2sampling_rate(eNB->frame_parms.N_RB_DL), N_RB2channel_bandwidth(eNB->frame_parms.N_RB_DL), + DS_TDL, forgetting_factor, rx_sample_offset, 0); @@ -1185,6 +1188,7 @@ int main(int argc, char **argv) { channel_model, N_RB2sampling_rate(eNB->frame_parms.N_RB_DL), N_RB2channel_bandwidth(eNB->frame_parms.N_RB_DL), + DS_TDL, forgetting_factor, rx_sample_offset, 0); diff --git a/openair1/SIMULATION/LTE_PHY/dummy_functions.c b/openair1/SIMULATION/LTE_PHY/dummy_functions.c index 5ec0f6e696..120e4845d9 100644 --- a/openair1/SIMULATION/LTE_PHY/dummy_functions.c +++ b/openair1/SIMULATION/LTE_PHY/dummy_functions.c @@ -67,6 +67,11 @@ int ue_query_mch(module_id_t Mod_id, uint8_t CC_id, uint32_t frame, sub_frame_t subframe, uint8_t eNB_index, uint8_t * sync_area, uint8_t * mcch_active){ return(0);} + +int ue_query_mch_fembms(module_id_t Mod_id, uint8_t CC_id, uint32_t frame, + sub_frame_t subframe, uint8_t eNB_index, + uint8_t * sync_area, uint8_t * mcch_active){ return(0);} + void dl_phy_sync_success(module_id_t module_idP, frame_t frameP, unsigned char eNB_index, uint8_t first_sync){} diff --git a/openair1/SIMULATION/LTE_PHY/mbmssim.c b/openair1/SIMULATION/LTE_PHY/mbmssim.c index 65415e7c68..5073be24f5 100644 --- a/openair1/SIMULATION/LTE_PHY/mbmssim.c +++ b/openair1/SIMULATION/LTE_PHY/mbmssim.c @@ -19,204 +19,1048 @@ * contact@openairinterface.org */ +/*! \file mbmssim.c + \brief Top-level MBMS DL simulator + \authors R. Knopp, J. Morgade + \date 2011 - 2014 (Knopp) / 2020 (Morgade) + \version 0.1 + \company Eurecom + \email: knopp@eurecom.fr, javier.morgade@ieee.org + \note + \warning +*/ + #include #include #include -#include -#include -#include +#include +#include -#include "SIMULATION/TOOLS/defs.h" -#include "SIMULATION/RF/defs.h" +#include "SIMULATION/TOOLS/sim.h" #include "PHY/types.h" -#include "PHY/defs.h" -#include "PHY/vars.h" -#include "SCHED/defs.h" -#include "SCHED/vars.h" -#include "LAYER2/MAC/vars.h" - -#ifdef XFORMS - #include "PHY/TOOLS/lte_phy_scope.h" -#endif //XFORMS +#include "PHY/defs_eNB.h" +#include "PHY/defs_UE.h" +#include "PHY/phy_vars.h" +#include "SCHED/sched_eNB.h" +#include "SCHED/sched_common_vars.h" +#include "LAYER2/MAC/mac_vars.h" #include "OCG_vars.h" +#include "common/utils/LOG/log.h" +#include "UTIL/LISTS/list.h" + #include "unitary_defs.h" -PHY_VARS_eNB *eNB; -PHY_VARS_UE *UE; +#include "PHY/TOOLS/lte_phy_scope.h" + +#include "dummy_functions.c" + +#include "PHY/MODULATION/modulation_common.h" +#include "PHY/MODULATION/modulation_eNB.h" +#include "PHY/MODULATION/modulation_UE.h" +#include "PHY/LTE_TRANSPORT/transport_proto.h" +#include "PHY/LTE_UE_TRANSPORT/transport_proto_ue.h" +#include "SCHED/sched_eNB.h" +#include "SCHED_UE/sched_UE.h" +#include "common/config/config_load_configmodule.h" +#include "PHY/INIT/phy_init.h" +#include "nfapi/oai_integration/vendor_ext.h" + +#define ENABLE_MBMS_SIM + +int enable_fembms=1; + +void feptx_ofdm(RU_t *ru); +void feptx_prec(RU_t *ru); double cpuf; +#define inMicroS(a) (((double)(a))/(cpu_freq_GHz*1000.0)) +//#define MCS_COUNT 23//added for PHY abstraction +#include + +int otg_enabled=0; +/*the following parameters are used to control the processing times calculations*/ +double t_tx_max = -1000000000; /*!< \brief initial max process time for tx */ +double t_rx_max = -1000000000; /*!< \brief initial max process time for rx */ +double t_tx_min = 1000000000; /*!< \brief initial min process time for tx */ +double t_rx_min = 1000000000; /*!< \brief initial min process time for rx */ +int n_tx_dropped = 0; /*!< \brief initial max process time for tx */ +int n_rx_dropped = 0; /*!< \brief initial max process time for rx */ + +THREAD_STRUCT thread_struct; + +int emulate_rf = 0; + +void handler(int sig) { + void *array[10]; + size_t size; + // get void*'s for all entries on the stack + size = backtrace(array, 10); + // print out all the frames to stderr + fprintf(stderr, "Error: signal %d:\n", sig); + backtrace_symbols_fd(array, size, 2); + exit(1); +} + + + +//DCI2_5MHz_2A_M10PRB_TDD_t DLSCH_alloc_pdu2_2A[2]; DCI1E_5MHz_2A_M10PRB_TDD_t DLSCH_alloc_pdu2_1E[2]; +uint64_t DLSCH_alloc_pdu_1[2]; + #define UL_RB_ALLOC 0x1ff; #define CCCH_RB_ALLOC computeRIV(eNB->frame_parms.N_RB_UL,0,2) +//#define DLSCH_RB_ALLOC 0x1fbf // igore DC component,RB13 +//#define DLSCH_RB_ALLOC 0x0001 +void do_OFDM_mod_l(int32_t **txdataF, int32_t **txdata, uint16_t next_slot, LTE_DL_FRAME_PARMS *frame_parms) { + int aa, slot_offset, slot_offset_F; + slot_offset_F = (next_slot)*(frame_parms->ofdm_symbol_size)*((frame_parms->Ncp==1) ? 6 : 7); + slot_offset = (next_slot)*(frame_parms->samples_per_tti>>1); + + for (aa=0; aanb_antennas_tx; aa++) { + // printf("Thread %d starting ... aa %d (%llu)\n",omp_get_thread_num(),aa,rdtsc()); + if (frame_parms->Ncp == 1) + PHY_ofdm_mod(&txdataF[aa][slot_offset_F], // input + &txdata[aa][slot_offset], // output + frame_parms->ofdm_symbol_size, + 6, // number of symbols + frame_parms->nb_prefix_samples, // number of prefix samples + CYCLIC_PREFIX); + else { + normal_prefix_mod(&txdataF[aa][slot_offset_F], + &txdata[aa][slot_offset], + 7, + frame_parms); + } + } +} + +void DL_channel(RU_t *ru,PHY_VARS_UE *UE,uint subframe,int awgn_flag,double SNR, int tx_lev,int hold_channel,int abstx, int num_rounds, int trials, int round, channel_desc_t *eNB2UE[4], + double *s_re[2],double *s_im[2],double *r_re[2],double *r_im[2],FILE *csv_fd) { + int i,u; + int aa,aarx,aatx; + double channelx,channely; + double sigma2_dB,sigma2; + double iqim=0.0; + + // printf("Copying tx ..., nsymb %d (n_tx %d), awgn %d\n",nsymb,eNB->frame_parms.nb_antennas_tx,awgn_flag); + for (i=0; i<2*UE->frame_parms.samples_per_tti; i++) { + for (aa=0; aaframe_parms.nb_antennas_tx; aa++) { + if (awgn_flag == 0) { + s_re[aa][i] = ((double)(((short *)ru->common.txdata[aa]))[(2*subframe*UE->frame_parms.samples_per_tti) + (i<<1)]); + s_im[aa][i] = ((double)(((short *)ru->common.txdata[aa]))[(2*subframe*UE->frame_parms.samples_per_tti) +(i<<1)+1]); + } else { + for (aarx=0; aarxframe_parms.nb_antennas_rx; aarx++) { + if (aa==0) { + r_re[aarx][i] = ((double)(((short *)ru->common.txdata[aa]))[(2*subframe*UE->frame_parms.samples_per_tti) +(i<<1)]); + r_im[aarx][i] = ((double)(((short *)ru->common.txdata[aa]))[(2*subframe*UE->frame_parms.samples_per_tti) +(i<<1)+1]); + } else { + r_re[aarx][i] += ((double)(((short *)ru->common.txdata[aa]))[(2*subframe*UE->frame_parms.samples_per_tti) +(i<<1)]); + r_im[aarx][i] += ((double)(((short *)ru->common.txdata[aa]))[(2*subframe*UE->frame_parms.samples_per_tti) +(i<<1)+1]); + } + } + } + } + } + + // Multipath channel + if (awgn_flag == 0) { + multipath_channel(eNB2UE[round],s_re,s_im,r_re,r_im, + 2*UE->frame_parms.samples_per_tti,hold_channel); + + // printf("amc: ****************** eNB2UE[%d]->n_rx = %d,dd %d\n",round,eNB2UE[round]->nb_rx,eNB2UE[round]->channel_offset); + if(abstx==1 && num_rounds>1) + if(round==0 && hold_channel==0) { + random_channel(eNB2UE[1],0); + random_channel(eNB2UE[2],0); + random_channel(eNB2UE[3],0); + } + + if (UE->perfect_ce==1) { + // fill in perfect channel estimates + freq_channel(eNB2UE[round],UE->frame_parms.N_RB_DL,12*UE->frame_parms.N_RB_DL + 1); + /* + LOG_M("channel.m","ch",eNB2UE[round]->ch[0],eNB2UE[round]->channel_length,1,8); + LOG_M("channelF.m","chF",eNB2UE[round]->chF[0],12*UE->frame_parms.N_RB_DL + 1,1,8); + */ + } + } + + if(abstx) { + if (trials==0 && round==0) { + // calculate freq domain representation to compute SINR + freq_channel(eNB2UE[0], ru->frame_parms.N_RB_DL,2*ru->frame_parms.N_RB_DL + 1); + // snr=pow(10.0,.1*SNR); + fprintf(csv_fd,"%f,",SNR); + + for (u=0; u<2*ru->frame_parms.N_RB_DL; u++) { + for (aarx=0; aarxnb_rx; aarx++) { + for (aatx=0; aatxnb_tx; aatx++) { + channelx = eNB2UE[0]->chF[aarx+(aatx*eNB2UE[0]->nb_rx)][u].x; + channely = eNB2UE[0]->chF[aarx+(aatx*eNB2UE[0]->nb_rx)][u].y; + fprintf(csv_fd,"%e+i*(%e),",channelx,channely); + } + } + } + + if(num_rounds>1) { + freq_channel(eNB2UE[1], ru->frame_parms.N_RB_DL,2*ru->frame_parms.N_RB_DL + 1); + + for (u=0; u<2*ru->frame_parms.N_RB_DL; u++) { + for (aarx=0; aarxnb_rx; aarx++) { + for (aatx=0; aatxnb_tx; aatx++) { + channelx = eNB2UE[1]->chF[aarx+(aatx*eNB2UE[1]->nb_rx)][u].x; + channely = eNB2UE[1]->chF[aarx+(aatx*eNB2UE[1]->nb_rx)][u].y; + fprintf(csv_fd,"%e+i*(%e),",channelx,channely); + } + } + } + + freq_channel(eNB2UE[2], ru->frame_parms.N_RB_DL,2*ru->frame_parms.N_RB_DL + 1); + + for (u=0; u<2*ru->frame_parms.N_RB_DL; u++) { + for (aarx=0; aarxnb_rx; aarx++) { + for (aatx=0; aatxnb_tx; aatx++) { + channelx = eNB2UE[2]->chF[aarx+(aatx*eNB2UE[2]->nb_rx)][u].x; + channely = eNB2UE[2]->chF[aarx+(aatx*eNB2UE[2]->nb_rx)][u].y; + fprintf(csv_fd,"%e+i*(%e),",channelx,channely); + } + } + } + + freq_channel(eNB2UE[3], ru->frame_parms.N_RB_DL,2*ru->frame_parms.N_RB_DL + 1); + + for (u=0; u<2*ru->frame_parms.N_RB_DL; u++) { + for (aarx=0; aarxnb_rx; aarx++) { + for (aatx=0; aatxnb_tx; aatx++) { + channelx = eNB2UE[3]->chF[aarx+(aatx*eNB2UE[3]->nb_rx)][u].x; + channely = eNB2UE[3]->chF[aarx+(aatx*eNB2UE[3]->nb_rx)][u].y; + fprintf(csv_fd,"%e+i*(%e),",channelx,channely); + } + } + } + } + } + } + + //AWGN + // tx_lev is the average energy over the whole subframe + // but SNR should be better defined wrt the energy in the reference symbols + sigma2_dB = 10*log10((double)tx_lev) +10*log10((double)ru->frame_parms.ofdm_symbol_size/(double)(ru->frame_parms.N_RB_DL*12)) - SNR; + sigma2 = pow(10,sigma2_dB/10); + + for (i=0; i<2*UE->frame_parms.samples_per_tti; i++) { + for (aa=0; aaframe_parms.nb_antennas_rx; aa++) { + //printf("s_re[0][%d]=> %f , r_re[0][%d]=> %f\n",i,s_re[aa][i],i,r_re[aa][i]); + ((short *) UE->common_vars.rxdata[aa])[(2*subframe*UE->frame_parms.samples_per_tti)+2*i] = + (short) (r_re[aa][i] + sqrt(sigma2/2)*gaussdouble(0.0,1.0)); + ((short *) UE->common_vars.rxdata[aa])[(2*subframe*UE->frame_parms.samples_per_tti)+2*i+1] = + (short) (r_im[aa][i] + (iqim*r_re[aa][i]) + sqrt(sigma2/2)*gaussdouble(0.0,1.0)); + } + } +} + +uint16_t +fill_tx_req(nfapi_tx_request_body_t *tx_req_body, + uint16_t absSF, + uint16_t pdu_length, + uint16_t pdu_index, + uint8_t *pdu) { + nfapi_tx_request_pdu_t *TX_req = &tx_req_body->tx_pdu_list[tx_req_body->number_of_pdus]; + LOG_D(MAC, "Filling TX_req %d for pdu length %d\n", + tx_req_body->number_of_pdus, pdu_length); + TX_req->pdu_length = pdu_length; + TX_req->pdu_index = pdu_index; + TX_req->num_segments = 1; + TX_req->segments[0].segment_length = pdu_length; + TX_req->segments[0].segment_data = pdu; + tx_req_body->tl.tag = NFAPI_TX_REQUEST_BODY_TAG; + tx_req_body->number_of_pdus++; + return (((absSF / 10) << 4) + (absSF % 10)); +} + +void +fill_mch_config(nfapi_dl_config_request_body_t *dl_req, + uint16_t length, + uint16_t pdu_index, + uint16_t rnti, + uint8_t resource_allocation_type, + uint16_t resource_block_coding, + uint8_t modulation, + uint16_t transmission_power, + uint8_t mbsfn_area_id){ + nfapi_dl_config_request_pdu_t *dl_config_pdu = + &dl_req->dl_config_pdu_list[dl_req->number_pdu]; + memset((void *) dl_config_pdu, 0, + sizeof(nfapi_dl_config_request_pdu_t)); + dl_config_pdu->pdu_type = NFAPI_DL_CONFIG_MCH_PDU_TYPE; + dl_config_pdu->pdu_size = (uint8_t) (2 + sizeof(nfapi_dl_config_mch_pdu)); + dl_config_pdu->mch_pdu.mch_pdu_rel8.tl.tag = NFAPI_DL_CONFIG_REQUEST_MCH_PDU_REL8_TAG; + dl_config_pdu->mch_pdu.mch_pdu_rel8.length = length; + dl_config_pdu->mch_pdu.mch_pdu_rel8.pdu_index = pdu_index; + dl_config_pdu->mch_pdu.mch_pdu_rel8.rnti = rnti; + dl_config_pdu->mch_pdu.mch_pdu_rel8.resource_allocation_type = resource_allocation_type; + dl_config_pdu->mch_pdu.mch_pdu_rel8.resource_block_coding = resource_block_coding; + dl_config_pdu->mch_pdu.mch_pdu_rel8.modulation = modulation; + dl_config_pdu->mch_pdu.mch_pdu_rel8.transmission_power = transmission_power; + dl_config_pdu->mch_pdu.mch_pdu_rel8.mbsfn_area_id = mbsfn_area_id; + dl_req->number_pdu++; +} + +void +fill_dlsch_config(nfapi_dl_config_request_body_t *dl_req, + uint16_t length, + uint16_t pdu_index, + uint16_t rnti, + uint8_t resource_allocation_type, + uint8_t virtual_resource_block_assignment_flag, + uint16_t resource_block_coding, + uint8_t modulation, + uint8_t redundancy_version, + uint8_t transport_blocks, + uint8_t transport_block_to_codeword_swap_flag, + uint8_t transmission_scheme, + uint8_t number_of_layers, + uint8_t number_of_subbands, + // uint8_t codebook_index, + uint8_t ue_category_capacity, + uint8_t pa, + uint8_t delta_power_offset_index, + uint8_t ngap, + uint8_t nprb, + uint8_t transmission_mode, + uint8_t num_bf_prb_per_subband, + uint8_t num_bf_vector) { + nfapi_dl_config_request_pdu_t *dl_config_pdu = + &dl_req->dl_config_pdu_list[dl_req->number_pdu]; + memset((void *) dl_config_pdu, 0, + sizeof(nfapi_dl_config_request_pdu_t)); + dl_config_pdu->pdu_type = NFAPI_DL_CONFIG_DLSCH_PDU_TYPE; + dl_config_pdu->pdu_size = (uint8_t) (2 + sizeof(nfapi_dl_config_dlsch_pdu)); + dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.tl.tag = NFAPI_DL_CONFIG_REQUEST_DLSCH_PDU_REL8_TAG; + dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.length = length; + dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.pdu_index = pdu_index; + dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.rnti = rnti; + dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.resource_allocation_type = resource_allocation_type; + dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.virtual_resource_block_assignment_flag = virtual_resource_block_assignment_flag; + dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.resource_block_coding = resource_block_coding; + dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.modulation = modulation; + dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.redundancy_version = redundancy_version; + dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.transport_blocks = transport_blocks; + dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.transport_block_to_codeword_swap_flag = transport_block_to_codeword_swap_flag; + dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.transmission_scheme = transmission_scheme; + dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.number_of_layers = number_of_layers; + dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.number_of_subbands = number_of_subbands; + // dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.codebook_index = codebook_index; + dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.ue_category_capacity = ue_category_capacity; + dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.pa = pa; + dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.delta_power_offset_index = delta_power_offset_index; + dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.ngap = ngap; + dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.nprb = nprb; + dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.transmission_mode = transmission_mode; + dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.num_bf_prb_per_subband = num_bf_prb_per_subband; + dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.num_bf_vector = num_bf_vector; + dl_config_pdu->dlsch_pdu.dlsch_pdu_rel13.initial_transmission_sf_io = 0xFFFF; + dl_req->number_pdu++; +} + +void fill_MCH(PHY_VARS_eNB *eNB, + int frame, + int subframe, + Sched_Rsp_t *sched_resp, + uint8_t input_buffer[NUMBER_OF_UE_MAX][20000], + int n_rnti, + int common_flag, + int NB_RB, + int TPC, + int mcs1){ + + nfapi_dl_config_request_body_t *dl_req=&sched_resp->DL_req->dl_config_request_body; + nfapi_dl_config_request_pdu_t *dl_config_pdu; + nfapi_tx_request_body_t *TX_req=&sched_resp->TX_req->tx_request_body; + int NB_RB4TBS = common_flag == 0 ? NB_RB : (2+TPC); + dl_req->number_dci=0; + dl_req->number_pdu=0; + TX_req->number_of_pdus=0; + dl_req->tl.tag = NFAPI_DL_CONFIG_REQUEST_BODY_TAG; + fill_mch_config( + dl_req, + get_TBS_DL(mcs1,NB_RB4TBS), + 0, + 0xfffd, + 0, + get_Qm(mcs1), + mcs1, + 6000, //equal to RS power + 0 //mbsfn_area_id + ); + + fill_tx_req(TX_req, + (frame * 10) + subframe, + get_TBS_DL(mcs1,NB_RB4TBS), + 0, + input_buffer[0]); +} + +void fill_DCI(PHY_VARS_eNB *eNB, + int frame, + int subframe, + Sched_Rsp_t *sched_resp, + uint8_t input_buffer[NUMBER_OF_UE_MAX][20000], + int n_rnti, + int n_users, + int transmission_mode, + int retrans, + int common_flag, + int NB_RB, + int DLSCH_RB_ALLOC, + int TPC, + int mcs1, + int mcs2, + int ndi, + int rv, + int pa, + int *num_common_dci, + int *num_ue_spec_dci, + int *num_dci) { + int k; + nfapi_dl_config_request_body_t *dl_req=&sched_resp->DL_req->dl_config_request_body; + nfapi_dl_config_request_pdu_t *dl_config_pdu; + nfapi_tx_request_body_t *TX_req=&sched_resp->TX_req->tx_request_body; + int NB_RB4TBS = common_flag == 0 ? NB_RB : (2+TPC); + dl_req->number_dci=0; + dl_req->number_pdu=0; + TX_req->number_of_pdus=0; + + for(k=0; kdl_config_pdu_list[dl_req->number_pdu]; + memset((void *) dl_config_pdu, 0, + sizeof(nfapi_dl_config_request_pdu_t)); + dl_config_pdu->pdu_type = NFAPI_DL_CONFIG_DCI_DL_PDU_TYPE; + dl_config_pdu->pdu_size = (uint8_t) (2 + sizeof(nfapi_dl_config_dci_dl_pdu)); + dl_config_pdu->dci_dl_pdu.dci_dl_pdu_rel8.dci_format = (common_flag == 0) ? NFAPI_DL_DCI_FORMAT_1 : NFAPI_DL_DCI_FORMAT_1A; + dl_config_pdu->dci_dl_pdu.dci_dl_pdu_rel8.aggregation_level = 4; + dl_config_pdu->dci_dl_pdu.dci_dl_pdu_rel8.tl.tag = NFAPI_DL_CONFIG_REQUEST_DCI_DL_PDU_REL8_TAG; + dl_config_pdu->dci_dl_pdu.dci_dl_pdu_rel8.rnti = (common_flag == 0) ? n_rnti+k : SI_RNTI; + dl_config_pdu->dci_dl_pdu.dci_dl_pdu_rel8.rnti_type = (common_flag ==0 ) ? 1: 2; // CRNTI : see Table 4-10 from SCF082 - nFAPI specifications + dl_config_pdu->dci_dl_pdu.dci_dl_pdu_rel8.transmission_power = 6000; // equal to RS power + dl_config_pdu->dci_dl_pdu.dci_dl_pdu_rel8.harq_process = 0; + dl_config_pdu->dci_dl_pdu.dci_dl_pdu_rel8.tpc = TPC; // dont adjust power when retransmitting + dl_config_pdu->dci_dl_pdu.dci_dl_pdu_rel8.new_data_indicator_1 = (common_flag == 0) ? ndi : 0; + dl_config_pdu->dci_dl_pdu.dci_dl_pdu_rel8.mcs_1 = mcs1; + dl_config_pdu->dci_dl_pdu.dci_dl_pdu_rel8.redundancy_version_1 = rv; + dl_config_pdu->dci_dl_pdu.dci_dl_pdu_rel8.resource_block_coding = (common_flag == 0) ? DLSCH_RB_ALLOC : computeRIV(eNB->frame_parms.N_RB_DL,0,NB_RB); + //deactivate second codeword + dl_config_pdu->dci_dl_pdu.dci_dl_pdu_rel8.mcs_2 = 0; + dl_config_pdu->dci_dl_pdu.dci_dl_pdu_rel8.redundancy_version_2 = 1; + dl_config_pdu->dci_dl_pdu.dci_dl_pdu_rel8.downlink_assignment_index = 0; + dl_config_pdu->dci_dl_pdu.dci_dl_pdu_rel8.cce_idx = 0; + dl_req->number_dci++; + dl_req->number_pdu++; + dl_req->tl.tag = NFAPI_DL_CONFIG_REQUEST_BODY_TAG; + AssertFatal(TPC>=0 && TPC<2, "TPC should be 0 or 1\n"); + if(1){ + fill_mch_config( + dl_req, + get_TBS_DL(mcs1,NB_RB4TBS), + 0, + 0xfffd, + 0, + get_Qm(mcs1), + mcs1, + 6000, //equal to RS power + 0 //mbsfn_area_id + ); + + fill_tx_req(TX_req, + (frame * 10) + subframe, + get_TBS_DL(mcs1,NB_RB4TBS), + 0, + input_buffer[0]); + + }else{ + fill_dlsch_config(dl_req, + get_TBS_DL(mcs1,NB_RB4TBS), + (retrans > 0) ? -1 : 0, /* retransmission, no pdu_index */ + (common_flag == 0) ? n_rnti : SI_RNTI, + 0, // type 0 allocation from 7.1.6 in 36.213 + 0, // virtual_resource_block_assignment_flag, unused here + DLSCH_RB_ALLOC, // resource_block_coding, + get_Qm(mcs1), + rv, // redundancy version + 1, // transport blocks + 0, // transport block to codeword swap flag + transmission_mode == 1 ? 0 : 1, // transmission_scheme + 1, // number of layers + 1, // number of subbands + // uint8_t codebook_index, + 4, // UE category capacity + pa, // pa + 0, // delta_power_offset for TM5 + 0, // ngap + 0, // nprb + transmission_mode, + 0, //number of PRBs treated as one subband, not used here + 0 // number of beamforming vectors, not used here + ); + fill_tx_req(TX_req, + (frame * 10) + subframe, + get_TBS_DL(mcs1,NB_RB4TBS), + 0, + input_buffer[k]); + } + break; + + case 3: + if (common_flag == 0) { + if (eNB->frame_parms.nb_antennas_tx == 2) { + if (eNB->frame_parms.frame_type == TDD) { + } else { + } + } + } + + break; + + case 4: + if (common_flag == 0) { + if (eNB->frame_parms.nb_antennas_tx == 2) { + if (eNB->frame_parms.frame_type == TDD) { + } else { + } + } else if (eNB->frame_parms.nb_antennas_tx == 4) { + } + } else { + } + + break; + + case 5: + case 6: + break; + + default: + printf("Unsupported Transmission Mode %d!!!\n",transmission_mode); + exit(-1); + break; + } + } + + *num_dci = dl_req->number_dci; + *num_ue_spec_dci = dl_req->number_dci; + *num_common_dci = 0; +} + +int n_users = 1; +int subframe=7; +int num_common_dci=0,num_ue_spec_dci=0,num_dci=0,num_pdcch_symbols=1; +uint16_t n_rnti=0x1234; + +int abstx=0; +int Nid_cell=0; +int N_RB_DL=25; +int tdd_config=3; +int dci_flag=0; +int threequarter_fs=0; +double snr_step=1,input_snr_step=1, snr_int=30; +double forgetting_factor=0.0; //in [0,1] 0 means a new channel every time, 1 means keep the same channel +int test_perf=0; +int n_frames; +int n_ch_rlz = 1; +int rx_sample_offset = 0; +int xforms=0; +int dump_table=0; +int loglvl=OAILOG_WARNING; +int mcs1=0,mcs2=0,mcs_i=0,dual_stream_UE = 0,awgn_flag=0; +int two_thread_flag=0; +int num_rounds = 4;//,fix_rounds=0; +int perfect_ce = 0; +int extended_prefix_flag=0; +int verbose=0, help=0; +double SNR,snr0=-2.0,snr1,rate = 0; +int print_perf=0; + int main(int argc, char **argv) { - char c; - int i,l,l2,aa,aarx,k; - double sigma2, sigma2_dB=0,SNR,snr0=-2.0,snr1=0.0; - uint8_t snr1set=0; - double snr_step=1,input_snr_step=1; - int **txdata; - double s_re0[2*30720],s_im0[2*30720],s_re1[2*30720],s_im1[2*30720]; - double r_re0[2*30720],r_im0[2*30720],r_re1[2*30720],r_im1[2*30720]; - double *s_re[2]= {s_re0,s_re1},*s_im[2]= {s_im0,s_im1},*r_re[2]= {r_re0,r_re1},*r_im[2]= {r_im0,r_im1}; - double iqim = 0.0; - int subframe=1; - char fname[40];//, vname[40]; - uint8_t transmission_mode = 1,n_tx=1,n_rx=2; - uint16_t Nid_cell=0; - FILE *fd; - int eNB_id = 0; - unsigned char mcs=0,awgn_flag=0,round; - int n_frames=1; - channel_desc_t *eNB2UE; - uint32_t nsymb,tx_lev,tx_lev_dB; - uint8_t extended_prefix_flag=1; + int k,i,j,aa; + int re; + int s,Kr,Kr_bytes; LTE_DL_FRAME_PARMS *frame_parms; + double s_re0[30720*2],s_im0[30720*2],r_re0[30720*2],r_im0[30720*2]; + double s_re1[30720*2],s_im1[30720*2],r_re1[30720*2],r_im1[30720*2]; + double *s_re[2]= {s_re0,s_re1}; + double *s_im[2]= {s_im0,s_im1}; + double *r_re[2]= {r_re0,r_re1}; + double *r_im[2]= {r_im0,r_im1}; + uint8_t transmission_mode=1,n_tx_port=1,n_tx_phy=1,n_rx=2; + int eNB_id = 0; + unsigned char round; + unsigned char i_mod = 2; + int NB_RB; + SCM_t channel_model=Rayleigh1; + // unsigned char *input_data,*decoded_output; + DCI_ALLOC_t da; + DCI_ALLOC_t *dci_alloc = &da; + unsigned int coded_bits_per_codeword=0,nsymb; //,tbs=0; + unsigned int tx_lev=0,tx_lev_dB=0,trials; + unsigned int errs[4],errs2[4],round_trials[4],dci_errors[4];//,num_layers; + memset(errs,0,4*sizeof(unsigned int)); + memset(errs2,0,4*sizeof(unsigned int)); + memset(round_trials,0,4*sizeof(unsigned int)); + memset(dci_errors,0,4*sizeof(unsigned int)); + //int re_allocated; + char fname[32],vname[32]; + FILE *bler_fd; + char bler_fname[256]; + FILE *time_meas_fd; + char time_meas_fname[256]; + // FILE *tikz_fd; + // char tikz_fname[256]; + FILE *input_trch_fd=NULL; + unsigned char input_trch_file=0; + FILE *input_fd=NULL; + unsigned char input_file=0; + channel_desc_t *eNB2UE[4]; + //uint8_t num_pdcch_symbols_2=0; + //char stats_buffer[4096]; + //int len; + //int u; + int n=0; + //int iii; + int ch_realization; + //int pmi_feedback=0; int hold_channel=0; - uint16_t NB_RB=25; - int tdd_config=3; - SCM_t channel_model=MBSFN; - unsigned char *input_buffer; - unsigned short input_buffer_length; - unsigned int ret; - unsigned int trials,errs[4]= {0,0,0,0}; //,round_trials[4]={0,0,0,0}; - uint8_t N_RB_DL=25,osf=1; - uint32_t perfect_ce = 0; - lte_frame_type_t frame_type = FDD; - uint32_t Nsoft = 1827072; - /* - #ifdef XFORMS - FD_lte_phy_scope_ue *form_ue; + // void *data; + // int ii; + // int bler; + double blerr[4]; + short *uncoded_ber_bit=NULL; + int osf=1; + frame_t frame_type = FDD; + FD_lte_phy_scope_ue *form_ue = NULL; char title[255]; + int numCCE=0; + //int dci_length_bytes=0,dci_length=0; + //double channel_bandwidth = 5.0, sampling_rate=7.68; + int common_flag=0,TPC=0; + double cpu_freq_GHz; + // time_stats_t ts;//,sts,usts; + int avg_iter,iter_trials; + int rballocset=0; + int test_passed=0; + double effective_rate=0.0; + char channel_model_input[10]="I"; + int TB0_active = 1; + // LTE_DL_UE_HARQ_t *dlsch0_ue_harq; + // LTE_DL_eNB_HARQ_t *dlsch0_eNB_harq; + uint8_t Kmimo; + uint8_t ue_category=4; + uint32_t Nsoft; + int sf; + int CCE_table[800]; + opp_enabled=1; // to enable the time meas + FILE *csv_fd=NULL; + char csv_fname[FILENAME_MAX]; + int DLSCH_RB_ALLOC = 0; + int dci_received; + PHY_VARS_eNB *eNB; + RU_t *ru; + PHY_VARS_UE *UE=NULL; + nfapi_dl_config_request_t DL_req; + nfapi_ul_config_request_t UL_req; + nfapi_hi_dci0_request_t HI_DCI0_req; + nfapi_dl_config_request_pdu_t dl_config_pdu_list[MAX_NUM_DL_PDU]; + nfapi_tx_request_pdu_t tx_pdu_list[MAX_NUM_TX_REQUEST_PDU]; + nfapi_tx_request_t TX_req; + Sched_Rsp_t sched_resp; + int pa=dB0; +#if defined(__arm__) + FILE *proc_fd = NULL; + char buf[64]; + memset(buf,0,sizeof(buf)); + proc_fd = fopen("/sys/devices/system/cpu/cpu4/cpufreq/cpuinfo_cur_freq", "r"); - fl_initialize (&argc, argv, NULL, 0, 0); - form_ue = create_lte_phy_scope_ue(); - sprintf (title, "LTE DL SCOPE UE"); - fl_show_form (form_ue->lte_phy_scope_ue, FL_PLACE_HOTSPOT, FL_FULLBORDER, title); - #endif - */ - cpuf = get_cpu_freq_GHz(); - logInit(); - number_of_cards = 1; + if(!proc_fd) + printf("cannot open /sys/devices/system/cpu/cpu4/cpufreq/cpuinfo_cur_freq"); + else { + while(fgets(buf, 63, proc_fd)) + printf("%s", buf); + } - while ((c = getopt (argc, argv, "ahA:Cp:n:s:S:t:x:y:z:N:F:R:O:dm:i:Y")) != -1) { - switch (c) { + fclose(proc_fd); + cpu_freq_GHz = ((double)atof(buf))/1e6; +#else + cpu_freq_GHz = get_cpu_freq_GHz(); +#endif + printf("Detected cpu_freq %f GHz\n",cpu_freq_GHz); + memset((void *)&sched_resp,0,sizeof(sched_resp)); + sched_resp.DL_req = &DL_req; + sched_resp.UL_req = &UL_req; + sched_resp.HI_DCI0_req = &HI_DCI0_req; + sched_resp.TX_req = &TX_req; + memset((void *)&DL_req,0,sizeof(DL_req)); + memset((void *)&UL_req,0,sizeof(UL_req)); + memset((void *)&HI_DCI0_req,0,sizeof(HI_DCI0_req)); + memset((void *)&TX_req,0,sizeof(TX_req)); + DL_req.dl_config_request_body.dl_config_pdu_list = dl_config_pdu_list; + TX_req.tx_request_body.tx_pdu_list = tx_pdu_list; + set_parallel_conf("PARALLEL_SINGLE_THREAD"); + cpuf = cpu_freq_GHz; + //signal(SIGSEGV, handler); + //signal(SIGABRT, handler); + // default parameters + n_frames = 1000; + snr0 = 0; + // num_layers = 1; + perfect_ce = 0; + static paramdef_t options[] = { + { "awgn", "Use AWGN channel and not multipath", PARAMFLAG_BOOL, strptr:NULL, defintval:0, TYPE_INT, 0, NULL, NULL }, + { "Abstx", "Turns on calibration mode for abstraction.", PARAMFLAG_BOOL, iptr:&abstx, defintval:0, TYPE_INT, 0 }, + { "bTDD", "Set the tdd configuration mode",0, iptr:&tdd_config, defintval:3, TYPE_INT, 0 }, + { "BnbRBs", "The LTE bandwith in RBs (100 is 20MHz)",0, iptr:&N_RB_DL, defintval:25, TYPE_INT, 0 }, + { "cPdcch", "Number of PDCCH symbols",0, iptr:&num_pdcch_symbols, defintval:1, TYPE_INT, 0 }, + { "CnidCell", "The cell id ",0, iptr:&Nid_cell, defintval:0, TYPE_INT, 0 }, + { "dciFlag", "Transmit the DCI and compute its error statistics", PARAMFLAG_BOOL, iptr:&dci_flag, defintval:0, TYPE_INT, 0 }, + { "Dtdd", "Enable tdd", PARAMFLAG_BOOL, strptr:NULL, defintval:0, TYPE_INT, 0, NULL, NULL }, + { "eRounds", "Number of rounds",0, iptr:NULL, defintval:25, TYPE_INT, 0 }, + { "EsubSampling","three quarters sub-sampling",PARAMFLAG_BOOL, iptr:&threequarter_fs, defintval:0, TYPE_INT, 0 }, + { "f_snr_step", "step size of SNR, default value is 1.",0, dblptr:&input_snr_step, defdblval:1, TYPE_DOUBLE, 0 }, + { "Forgetting", "forgetting factor (0 new channel every trial, 1 channel constant)",0, dblptr:&forgetting_factor, defdblval:0.0, TYPE_DOUBLE, 0 }, + { "input_file", "input IQ data file",0, iptr:NULL, defintval:0, TYPE_INT, 0 }, + { "Input_file_trch", " Input filename for TrCH data (binary)",0, iptr:NULL, defintval:0, TYPE_INT, 0 }, + { "WtwoThreads", "two_thread_flag", PARAMFLAG_BOOL, iptr:&two_thread_flag, defintval:0, TYPE_INT, 0 }, + { "lMuMimo", "offset_mumimo_llr_drange_fix",0, u8ptr:&offset_mumimo_llr_drange_fix, defintval:0, TYPE_UINT8, 0 }, + { "mcs1", "The MCS for TB 1", 0, iptr:&mcs1, defintval:0, TYPE_INT, 0 }, + { "Mcs2", "The MCS for TB 2", 0, iptr:&mcs2, defintval:0, TYPE_INT, 0 }, + { "Operf", "Set the percenatge of effective rate to testbench the modem performance (typically 30 and 70, range 1-100)",0, iptr:&test_perf, defintval:0, TYPE_INT, 0 }, + { "tmcs_i", "MCS of interfering UE",0, iptr:NULL, defintval:0, TYPE_INT, 0 }, + { "nb_frame", "number of frame in a test",0, iptr:&n_frames, defintval:1, TYPE_INT, 0 }, + { "offsetRxSample", "Sample offset for receiver", 0, iptr:&rx_sample_offset, defintval:0, TYPE_INT, 0 }, + { "rballocset", "ressource block allocation (see section 7.1.6.3 in 36.213)",0, iptr:NULL, defintval:0, TYPE_INT, 0 }, + { "snr", "Starting SNR, runs from SNR to SNR+%.1fdB in steps of %.1fdB. If n_frames is 1 then just SNR is simulated and MATLAB/OCTAVE output is generated", dblptr:&snr0, defdblval:-2.0, TYPE_DOUBLE, 0 }, + { "wsnrInterrupt", "snr int ?", 0, dblptr:&snr_int, defdblval:30, TYPE_DOUBLE, 0 }, + { "N_ch_rlzN0", "Determines the number of Channel Realizations in Abstraction mode. Default value is 1",0, iptr:&n_ch_rlz, defintval:1, TYPE_INT, 0 }, + { "prefix_extended","Enable extended prefix", PARAMFLAG_BOOL, iptr:&extended_prefix_flag, defintval:0, TYPE_INT, 0 }, + { "RNumRound", "Number of HARQ rounds (fixed)",0, iptr:&num_rounds, defintval:4, TYPE_INT, 0 }, + { "Subframe", "subframe ",0, iptr:&subframe, defintval:7, TYPE_INT, 0 }, + { "Trnti", "rnti",0, u16ptr:&n_rnti, defuintval:0x1234, TYPE_UINT16, 0 }, + { "vi_mod", "i_mod",0, iptr:NULL, defintval:0, TYPE_INT, 0 }, + { "Qparallel", "Enable parallel execution",0, strptr:NULL, defstrval:NULL, TYPE_STRING, 0 }, + { "Performance", "Display CPU perfomance of each L1 piece", PARAMFLAG_BOOL, iptr:&print_perf, defintval:0, TYPE_INT, 0 }, + { "q_tx_port", "Number of TX antennas ports used in eNB",0, iptr:NULL, defintval:0, TYPE_INT, 0 }, + { "uEdual", "Enables the Interference Aware Receiver for TM5 (default is normal receiver)",0, iptr:NULL, defintval:0, TYPE_INT, 0 }, + { "xTransmission","Transmission mode (1,2,6,7 for the moment)",0, iptr:NULL, defintval:25, TYPE_INT, 0 }, + { "yn_tx_phy","Number of TX antennas used in eNB",0, iptr:NULL, defintval:25, TYPE_INT, 0 }, + { "XForms", "Display the soft scope", PARAMFLAG_BOOL, iptr:&xforms, defintval:0, TYPE_INT, 0 }, + { "Yperfect_ce","Perfect CE", PARAMFLAG_BOOL, iptr:&perfect_ce, defintval:0, TYPE_INT, 0 }, + { "Zdump", "dump table",PARAMFLAG_BOOL, iptr:&dump_table, defintval:0, TYPE_INT, 0 }, + { "Loglvl", "log level",0, iptr:&loglvl, defintval:OAILOG_DEBUG, TYPE_INT, 0 }, + { "zn_rx", "Number of RX antennas used in UE",0, iptr:NULL, defintval:2, TYPE_INT, 0 }, + { "gchannel", "[A:M] Use 3GPP 25.814 SCM-A/B/C/D('A','B','C','D') or 36-101 EPA('E'), EVA ('F'),ETU('G') models (ignores delay spread and Ricean factor), Rayghleigh8 ('H'), Rayleigh1('I'), Rayleigh1_corr('J'), Rayleigh1_anticorr ('K'), Rice8('L'), Rice1('M')",0, strptr:NULL, defstrval:NULL, TYPE_STRING, 0 }, + { "verbose", "display debug text", PARAMFLAG_BOOL, iptr:&verbose, defintval:0, TYPE_INT, 0 }, + { "mmse", "Use MMSE whitening", PARAMFLAG_BOOL, strptr:NULL, defintval:0, TYPE_INT, 0, NULL, NULL }, + { "help", "display help and exit", PARAMFLAG_BOOL, iptr:&help, defintval:0, TYPE_INT, 0 }, + { "", "",0, iptr:NULL, defintval:0, TYPE_INT, 0 }, + }; + struct option *long_options = parse_oai_options(options); + int option_index; + int res; + + while ((res=getopt_long_only(argc, argv, "", long_options, &option_index)) == 0) { + if (options[option_index].voidptr != NULL ) { + if (long_options[option_index].has_arg==no_argument) + *(bool *)options[option_index].iptr=1; + else switch (options[option_index].type) { + case TYPE_INT: + *(int *)options[option_index].iptr=atoi(optarg); + break; + + case TYPE_DOUBLE: + *(double *)options[option_index].dblptr=atof(optarg); + break; + + case TYPE_UINT8: + *(uint8_t *)options[option_index].dblptr=atoi(optarg); + break; + + case TYPE_UINT16: + *(uint16_t *)options[option_index].dblptr=atoi(optarg); + break; + + default: + printf("not decoded type.\n"); + exit(1); + } + + continue; + } + + switch (long_options[option_index].name[0]) { case 'a': - awgn_flag=1; + awgn_flag = 1; + channel_model = AWGN; break; - case 'd': - frame_type = 0; + case 'D': + frame_type=TDD; break; - case 'n': - n_frames = atoi(optarg); - break; - - case 'm': - mcs=atoi(optarg); - break; - - case 's': - snr0 = atof(optarg); - msg("Setting SNR0 to %f\n",snr0); + case 'e': + num_rounds=1; + common_flag = 1; + TPC = atoi(optarg); break; case 'i': - input_snr_step = atof(optarg); + input_fd = fopen(optarg,"r"); + input_file=1; + dci_flag = 1; break; - case 'S': - snr1 = atof(optarg); - snr1set=1; - msg("Setting SNR1 to %f\n",snr1); + case 'I': + input_trch_fd = fopen(optarg,"r"); + input_trch_file=1; break; - case 'p': // subframe no; - subframe=atoi(optarg); + case 't': + mcs_i = atoi(optarg); + i_mod = get_Qm(mcs_i); + break; + + case 'r': + DLSCH_RB_ALLOC = atoi(optarg); + rballocset = 1; + break; + + case 'g': + strncpy(channel_model_input,optarg,9); + struct tmp { + char opt; + int m; + int M; + } + tmp[]= { + {'A',SCM_A,2}, + {'B',SCM_B,3}, + {'C',SCM_C,4}, + {'D',SCM_D,5}, + {'E',EPA,6}, + {'F',EVA,6}, + {'G',ETU,8}, + {'H',Rayleigh8,9}, + {'I',Rayleigh1,10}, + {'J',Rayleigh1_corr,11}, + {'K',Rayleigh1_anticorr,12}, + {'L',Rice8,13}, + {'M',Rice1,14}, + {'N',AWGN,1}, + {0,0,0} + }; + struct tmp *ptr; + + for (ptr=tmp; ptr->opt!=0; ptr++) + if ( ptr->opt == optarg[0] ) { + channel_model=ptr->m; + break; + } + + AssertFatal(ptr->opt != 0, "Unsupported channel model: %s !\n", optarg ); + break; + + case 'u': + dual_stream_UE=1; + + if (UE != NULL) + UE->use_ia_receiver = 1; + else { + printf("UE is NULL\n"); + exit(-1); + } + + if ((n_tx_port!=2) || (transmission_mode!=5)) { + printf("IA receiver only supported for TM5!"); + exit(-1); + } + + break; + + case 'v': + i_mod = atoi(optarg); + + if (i_mod!=2 && i_mod!=4 && i_mod!=6) { + printf("Wrong i_mod %d, should be 2,4 or 6\n",i_mod); + exit(-1); + } + + break; + + case 'q': + n_tx_port=atoi(optarg); + + if ((n_tx_port==0) || ((n_tx_port>2))) { + printf("Unsupported number of cell specific antennas ports %d\n",n_tx_port); + exit(-1); + } + + break; + + case 'x': + transmission_mode=atoi(optarg); + + if ((transmission_mode!=1) && + (transmission_mode!=2) && + (transmission_mode!=3) && + (transmission_mode!=4) && + (transmission_mode!=5) && + (transmission_mode!=6) && + (transmission_mode!=7)) { + printf("Unsupported transmission mode %d\n",transmission_mode); + exit(-1); + } + + if (transmission_mode>1 && transmission_mode<7) { + n_tx_port = 2; + } + + break; + + case 'y': + n_tx_phy=atoi(optarg); + + if (n_tx_phy < n_tx_port) { + printf("n_tx_phy mush not be smaller than n_tx_port"); + exit(-1); + } + + if ((transmission_mode>1 && transmission_mode<7) && n_tx_port<2) { + printf("n_tx_port must be >1 for transmission_mode %d\n",transmission_mode); + exit(-1); + } + + if (transmission_mode==7 && (n_tx_phy!=1 && n_tx_phy!=2 && n_tx_phy!=4 && n_tx_phy!=8 && n_tx_phy!=16 && n_tx_phy!=64 && n_tx_phy!=128)) { + printf("Physical number of antennas not supported for TM7.\n"); + exit(-1); + } + break; case 'z': n_rx=atoi(optarg); if ((n_rx==0) || (n_rx>2)) { - msg("Unsupported number of rx antennas %d\n",n_rx); + printf("Unsupported number of rx antennas %d\n",n_rx); exit(-1); } break; - case 'N': - Nid_cell = atoi(optarg); - break; - - case 'R': - N_RB_DL = atoi(optarg); - - if ((N_RB_DL!=6) && (N_RB_DL!=25) && (N_RB_DL!=50) && (N_RB_DL!=100)) { - printf("Unsupported Bandwidth %d\n",N_RB_DL); - exit(-1); - } - - break; - - case 'O': - osf = atoi(optarg); - break; - - case 'Y': - perfect_ce = 1; + case 'Q': + set_parallel_conf(optarg); break; default: - case 'h': - printf("%s -h(elp) -p(subframe) -N cell_id -g channel_model -n n_frames -t Delayspread -s snr0 -S snr1 -i snr increment -z RXant \n",argv[0]); - printf("-h This message\n"); - printf("-a Use AWGN Channel\n"); - printf("-p Use extended prefix mode\n"); - printf("-d Use TDD\n"); - printf("-n Number of frames to simulate\n"); - printf("-s Starting SNR, runs from SNR0 to SNR0 + 5 dB. If n_frames is 1 then just SNR is simulated\n"); - printf("-S Ending SNR, runs from SNR0 to SNR1\n"); - printf("-t Delay spread for multipath channel\n"); - printf("-g [A,B,C,D,E,F,G] Use 3GPP SCM (A,B,C,D) or 36-101 (E-EPA,F-EVA,G-ETU) models (ignores delay spread and Ricean factor)\n"); - printf("-x Transmission mode (1,2,6 for the moment)\n"); - printf("-y Number of TX antennas used in eNB\n"); - printf("-z Number of RX antennas used in UE\n"); - printf("-i Relative strength of first intefering eNB (in dB) - cell_id mod 3 = 1\n"); - printf("-j Relative strength of second intefering eNB (in dB) - cell_id mod 3 = 2\n"); - printf("-N Nid_cell\n"); - printf("-R N_RB_DL\n"); - printf("-O oversampling factor (1,2,4,8,16)\n"); - printf("-A Interpolation_filname Run with Abstraction to generate Scatter plot using interpolation polynomial in file\n"); - printf("-C Generate Calibration information for Abstraction (effective SNR adjustment to remove Pe bias w.r.t. AWGN)\n"); - printf("-f Output filename (.txt format) for Pe/SNR results\n"); - printf("-F Input filename (.txt format) for RX conformance testing\n"); - exit (-1); + printf("Wrong option: %s\n",long_options[option_index].name); + exit(1); break; } } - if (awgn_flag == 1) - channel_model = AWGN; - - // check that subframe is legal for eMBMS - - if ((subframe == 0) || (subframe == 5) || // TDD and FDD SFn 0,5; - ((frame_type == FDD) && ((subframe == 4) || (subframe == 9))) || // FDD SFn 4,9; - ((frame_type == TDD ) && ((subframe<3) || (subframe==6)))) { // TDD SFn 1,2,6; - printf("Illegal subframe %d for eMBMS transmission (frame_type %d)\n",subframe,frame_type); - exit(-1); + if ( res != -1 ) { + printf("A wrong option has been found\n"); + exit(1); } - if (transmission_mode==2) - n_tx=2; + if (help || verbose ) + display_options_values(options, true); - lte_param_init(n_tx, - n_tx, + if (help) + exit(0); + if (thread_struct.parallel_conf != PARALLEL_SINGLE_THREAD) + set_worker_conf("WORKER_ENABLE"); + + if (transmission_mode>1) pa=dBm3; + + printf("dlsim: tmode %d, pa %d\n",transmission_mode,pa); + AssertFatal(load_configmodule(argc,argv, CONFIG_ENABLECMDLINEONLY) != NULL, + "cannot load configuration module, exiting\n"); + logInit(); + set_glog_onlinelog(true); + // enable these lines if you need debug info + set_glog(loglvl); + SET_LOG_DEBUG(UE_TIMING); + // moreover you need to init itti with the following line + // however itti will catch all signals, so ctrl-c won't work anymore + // alternatively you can disable ITTI completely in CMakeLists.txt + //itti_init(TASK_MAX, THREAD_MAX, MESSAGES_ID_MAX, tasks_info, messages_info, messages_definition_xml, NULL); + + if (common_flag == 0) { + switch (N_RB_DL) { + case 6: + if (rballocset==0) DLSCH_RB_ALLOC = 0x3f; + + num_pdcch_symbols = 3; + break; + + case 25: + if (rballocset==0) DLSCH_RB_ALLOC = 0x1fff; + + break; + + case 50: + if (rballocset==0) DLSCH_RB_ALLOC = 0x1ffff; + + break; + + case 100: + if (rballocset==0) DLSCH_RB_ALLOC = 0x1ffffff; + + break; + } + + NB_RB = conv_nprb(0,DLSCH_RB_ALLOC,N_RB_DL); + } else { + if (rballocset==0) NB_RB = 8; + else NB_RB = DLSCH_RB_ALLOC; + + AssertFatal(NB_RB <= N_RB_DL,"illegal NB_RB %d\n",NB_RB); + } + + if (xforms==1) { + fl_initialize (&argc, argv, NULL, 0, 0); + form_ue = create_lte_phy_scope_ue(); + sprintf (title, "LTE PHY SCOPE eNB"); + fl_show_form (form_ue->lte_phy_scope_ue, FL_PLACE_HOTSPOT, FL_FULLBORDER, title); + + if (!dual_stream_UE==0) { + if (UE) { + UE->use_ia_receiver = 1; + fl_set_button(form_ue->button_0,1); + fl_set_object_label(form_ue->button_0, "IA Receiver ON"); + fl_set_object_color(form_ue->button_0, FL_GREEN, FL_GREEN); + } else { + printf("UE is NULL\n"); + exit(-1); + } + } + } + + if (transmission_mode==5) { + n_users = 2; + printf("dual_stream_UE=%d\n", dual_stream_UE); + } + + RC.nb_L1_inst = 1; + RC.nb_RU = 1; + lte_param_init(&eNB,&UE,&ru, + n_tx_port, + n_tx_phy, + 1, n_rx, transmission_mode, extended_prefix_flag, @@ -224,281 +1068,1251 @@ int main(int argc, char **argv) { Nid_cell, tdd_config, N_RB_DL, - 0, + pa, + threequarter_fs, osf, perfect_ce); + RC.eNB = (PHY_VARS_eNB ** *)malloc(sizeof(PHY_VARS_eNB **)); + RC.eNB[0] = (PHY_VARS_eNB **)malloc(sizeof(PHY_VARS_eNB *)); + RC.ru = (RU_t **)malloc(sizeof(RC.ru)); + RC.eNB[0][0] = eNB; + RC.ru[0] = ru; + printf("lte_param_init done\n"); - if (snr1set==0) { - if (n_frames==1) - snr1 = snr0+.1; - else - snr1 = snr0+5.0; + if ((transmission_mode==1) || (transmission_mode==7)) { + for (aa=0; aanb_tx; aa++) + for (re=0; reframe_parms.ofdm_symbol_size; re++) + ru->beam_weights[0][0][aa][re] = 0x00007fff/eNB->frame_parms.nb_antennas_tx; } + if (transmission_mode<7) + ru->do_precoding=0; + else + ru->do_precoding=1; + + eNB->mac_enabled=1; + + +#ifdef ENABLE_MBMS_SIM + //eNB->pbch_configured=1; + eNB_MAC_INST ** mac; + mac = malloc16(1 * sizeof(eNB_MAC_INST *)); + for (int ii = 0;ii < 1; ii++) { + mac[ii] = malloc16(sizeof(eNB_MAC_INST)); + bzero(mac[ii], sizeof(eNB_MAC_INST)); + } + RC.mac = mac; + COMMON_channels_t *cc = &RC.mac[0]->common_channels[0]; + cc->MCH_pdu.mcs = 9; + cc->MCH_pdu.Pdu_size = get_TBS_DL(cc->MCH_pdu.mcs,N_RB_DL); + printf("MCH_pdu.Pdu_size %d\n",cc->MCH_pdu.Pdu_size); + cc->MCH_pdu.sync_area =0; + for(int ii=0; ii < cc->MCH_pdu.Pdu_size; ii++) + cc->MCH_pdu.payload[ii] = (char)(taus() & 0xff); + eNB->frame_parms.Nid_cell_mbsfn=0; +#endif + + + if(get_thread_worker_conf() == WORKER_ENABLE) { + extern void init_td_thread(PHY_VARS_eNB *); + extern void init_te_thread(PHY_VARS_eNB *); + init_td_thread(eNB); + init_te_thread(eNB); + } + + // callback functions required for phy_procedures_tx + // eNB_id_i = UE->n_connected_eNB; + printf("Setting mcs1 = %d\n",mcs1); + printf("Setting mcs2 = %d\n",mcs2); + printf("NPRB = %d\n",NB_RB); + printf("n_frames = %d\n",n_frames); + printf("Transmission mode %d with %dx%d antenna configuration, Extended Prefix %d\n",transmission_mode,n_tx_phy,n_rx,extended_prefix_flag); + snr1 = snr0+snr_int; printf("SNR0 %f, SNR1 %f\n",snr0,snr1); + uint8_t input_buffer[NUMBER_OF_UE_MAX][20000]; + + for (i=0; iframe_parms; + nsymb = (eNB->frame_parms.Ncp == 0) ? 14 : 12; + printf("Channel Model= (%s,%d)\n",channel_model_input, channel_model); + printf("SCM-A=%d, SCM-B=%d, SCM-C=%d, SCM-D=%d, EPA=%d, EVA=%d, ETU=%d, Rayleigh8=%d, Rayleigh1=%d, Rayleigh1_corr=%d, Rayleigh1_anticorr=%d, Rice1=%d, Rice8=%d\n", + SCM_A, SCM_B, SCM_C, SCM_D, EPA, EVA, ETU, Rayleigh8, Rayleigh1, Rayleigh1_corr, Rayleigh1_anticorr, Rice1, Rice8); - if (awgn_flag == 0) - sprintf(fname,"embms_%d_%d.m",mcs,N_RB_DL); + if(transmission_mode==5) + sprintf(bler_fname,"bler_tx%d_chan%d_nrx%d_mcs%d_mcsi%d_u%d_imod%d.csv",transmission_mode,channel_model,n_rx,mcs1,mcs_i,dual_stream_UE,i_mod); else - sprintf(fname,"embms_awgn_%d_%d.m",mcs,N_RB_DL); + sprintf(bler_fname,"bler_tx%d_chan%d_nrx%d_mcs%d.csv",transmission_mode,channel_model,n_rx,mcs1); - if (!(fd = fopen(fname,"w"))) { - printf("Cannot open %s, check permissions\n",fname); + bler_fd = fopen(bler_fname,"w"); + + if (bler_fd==NULL) { + fprintf(stderr,"Cannot create file %s!\n",bler_fname); exit(-1); } - if (awgn_flag==0) - fprintf(fd,"SNR_%d_%d=[];errs_mch_%d_%d=[];mch_trials_%d_%d=[];\n", - mcs,N_RB_DL, - mcs,N_RB_DL, - mcs,N_RB_DL); - else - fprintf(fd,"SNR_awgn_%d_%d=[];errs_mch_awgn_%d_%d=[];mch_trials_awgn_%d_%d=[];\n", - mcs,N_RB_DL, - mcs,N_RB_DL, - mcs,N_RB_DL); + fprintf(bler_fd,"SNR; MCS; TBS; rate; err0; trials0; err1; trials1; err2; trials2; err3; trials3; dci_err\n"); - fflush(fd); - txdata = eNB->common_vars.txdata[0]; - nsymb = 12; - printf("FFT Size %d, Extended Prefix %d, Samples per subframe %d, Symbols per subframe %d, AWGN %d\n",NUMBER_OF_OFDM_CARRIERS, - frame_parms->Ncp,frame_parms->samples_per_tti,nsymb,awgn_flag); - eNB2UE = new_channel_desc_scm(eNB->frame_parms.nb_antennas_tx, - UE->frame_parms.nb_antennas_rx, - channel_model, - N_RB2sampling_rate(eNB->frame_parms.N_RB_DL), - N_RB2channel_bandwidth(eNB->frame_parms.N_RB_DL), - 0, - 0, - 0); - // Create transport channel structures for 2 transport blocks (MIMO) - eNB->dlsch_MCH = new_eNB_dlsch(1,8,Nsoft,N_RB_DL,0,&eNB->frame_parms); + if (test_perf != 0) { + char hostname[1024]; + hostname[1023] = '\0'; + gethostname(hostname, 1023); + printf("Hostname: %s\n", hostname); + //char dirname[FILENAME_MAX]; + //sprintf(dirname, "%s/SIMU/USER/pre-ci-logs-%s", getenv("OPENAIR_TARGETS"),hostname ); + sprintf(time_meas_fname,"time_meas_prb%d_mcs%d_anttx%d_antrx%d_pdcch%d_channel%s_tx%d.csv", + N_RB_DL,mcs1,n_tx_phy,n_rx,num_pdcch_symbols,channel_model_input,transmission_mode); + //mkdir(dirname,0777); + time_meas_fd = fopen(time_meas_fname,"w"); - if (!eNB->dlsch_MCH) { - printf("Can't get eNB dlsch structures\n"); - exit(-1); + if (time_meas_fd==NULL) { + fprintf(stderr,"Cannot create file %s!\n",time_meas_fname); + exit(-1); + } } - UE->dlsch_MCH[0] = new_ue_dlsch(1,8,Nsoft,MAX_TURBO_ITERATIONS_MBSFN,N_RB_DL,0); - eNB->frame_parms.num_MBSFN_config = 1; - eNB->frame_parms.MBSFN_config[0].radioframeAllocationPeriod = 0; - eNB->frame_parms.MBSFN_config[0].radioframeAllocationOffset = 0; - eNB->frame_parms.MBSFN_config[0].fourFrames_flag = 0; - eNB->frame_parms.MBSFN_config[0].mbsfn_SubframeConfig=0xff; // activate all possible subframes - UE->frame_parms.num_MBSFN_config = 1; - UE->frame_parms.MBSFN_config[0].radioframeAllocationPeriod = 0; - UE->frame_parms.MBSFN_config[0].radioframeAllocationOffset = 0; - UE->frame_parms.MBSFN_config[0].fourFrames_flag = 0; - UE->frame_parms.MBSFN_config[0].mbsfn_SubframeConfig=0xff; // activate all possible subframes - fill_eNB_dlsch_MCH(eNB,mcs,1,0); - fill_UE_dlsch_MCH(UE,mcs,1,0,0); + if(abstx) { + // CSV file + sprintf(csv_fname,"dataout_tx%d_u2%d_mcs%d_chan%d_nsimus%d_R%d.m",transmission_mode,dual_stream_UE,mcs1,channel_model,n_frames,num_rounds); + csv_fd = fopen(csv_fname,"w"); - if (is_pmch_subframe(0,subframe,&eNB->frame_parms)==0) { - printf("eNB is not configured for MBSFN in subframe %d\n",subframe); - exit(-1); - } else if (is_pmch_subframe(0,subframe,&UE->frame_parms)==0) { - printf("UE is not configured for MBSFN in subframe %d\n",subframe); - exit(-1); - } - - input_buffer_length = eNB->dlsch_MCH->harq_processes[0]->TBS/8; - input_buffer = (unsigned char *)malloc(input_buffer_length+4); - memset(input_buffer,0,input_buffer_length+4); - - for (i=0; iproc.proc_rxtx[0].frame_tx=0; - eNB->proc.proc_rxtx[0].frame_tx=0; - eNB->proc.proc_rxtx[0].subframe_tx=subframe; - errs[0]=0; - errs[1]=0; - errs[2]=0; - errs[3]=0; - /* - round_trials[0] = 0; - round_trials[1] = 0; - round_trials[2] = 0; - round_trials[3] = 0;*/ - printf("********************** SNR %f (step %f)\n",SNR,snr_step); - - for (trials = 0; trialsfirst_run = 1; - eNB2UE->first_run = 1; - memset(&eNB->common_vars.txdataF[0][0][0],0,FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX*sizeof(int32_t)); - generate_mch(eNB,&eNB->proc.proc_rxtx[0],input_buffer); - PHY_ofdm_mod(eNB->common_vars.txdataF[0][0], // input, - txdata[0], // output - frame_parms->ofdm_symbol_size, - LTE_NUMBER_OF_SUBFRAMES_PER_FRAME*nsymb, // number of symbols - frame_parms->nb_prefix_samples, // number of prefix samples - CYCLIC_PREFIX); - - if (n_frames==1) { - LOG_M("txsigF0.m","txsF0", &eNB->common_vars.txdataF[0][0][subframe*nsymb*eNB->frame_parms.ofdm_symbol_size], - nsymb*eNB->frame_parms.ofdm_symbol_size,1,1); - //if (eNB->frame_parms.nb_antennas_tx>1) - //LOG_M("txsigF1.m","txsF1", &eNB->lte_eNB_common_vars.txdataF[eNB_id][1][subframe*nsymb*eNB->frame_parms.ofdm_symbol_size],nsymb*eNB->frame_parms.ofdm_symbol_size,1,1); - } - - tx_lev = 0; - - for (aa=0; aaframe_parms.nb_antennas_tx; aa++) { - tx_lev += signal_energy(&eNB->common_vars.txdata[eNB_id][aa] - [subframe*eNB->frame_parms.samples_per_tti], - eNB->frame_parms.samples_per_tti); - } - - tx_lev_dB = (unsigned int) dB_fixed(tx_lev); - - if (n_frames==1) { - printf("tx_lev = %d (%d dB)\n",tx_lev,tx_lev_dB); - // LOG_M("txsig0.m","txs0", &eNB->common_vars.txdata[0][0][subframe* eNB->frame_parms.samples_per_tti], - // eNB->frame_parms.samples_per_tti,1,1); - } - - for (i=0; i<2*frame_parms->samples_per_tti; i++) { - for (aa=0; aaframe_parms.nb_antennas_tx; aa++) { - s_re[aa][i] = ((double)(((short *)eNB->common_vars.txdata[0][aa]))[(2*subframe*UE->frame_parms.samples_per_tti) + (i<<1)]); - s_im[aa][i] = ((double)(((short *)eNB->common_vars.txdata[0][aa]))[(2*subframe*UE->frame_parms.samples_per_tti) +(i<<1)+1]); - } - } - - //Multipath channel - multipath_channel(eNB2UE,s_re,s_im,r_re,r_im, - 2*frame_parms->samples_per_tti,hold_channel); - //AWGN - sigma2_dB = 10*log10((double)tx_lev) +10*log10((double)eNB->frame_parms.ofdm_symbol_size/(NB_RB*12)) - SNR; - sigma2 = pow(10,sigma2_dB/10); - - if (n_frames==1) - printf("Sigma2 %f (sigma2_dB %f)\n",sigma2,sigma2_dB); - - for (i=0; i<2*frame_parms->samples_per_tti; i++) { - for (aa=0; aaframe_parms.nb_antennas_rx; aa++) { - //printf("s_re[0][%d]=> %f , r_re[0][%d]=> %f\n",i,s_re[aa][i],i,r_re[aa][i]); - ((short *) UE->common_vars.rxdata[aa])[(2*subframe*UE->frame_parms.samples_per_tti)+2*i] = - (short) (r_re[aa][i] + sqrt(sigma2/2)*gaussdouble(0.0,1.0)); - ((short *) UE->common_vars.rxdata[aa])[(2*subframe*UE->frame_parms.samples_per_tti)+2*i+1] = - (short) (r_im[aa][i] + (iqim*r_re[aa][i]) + sqrt(sigma2/2)*gaussdouble(0.0,1.0)); - } - } - - for (l=2; l<12; l++) { - slot_fep_mbsfn(UE, - l, - subframe%10, - 0, - 0); - - if (UE->perfect_ce==1) { - // fill in perfect channel estimates - freq_channel(eNB2UE,UE->frame_parms.N_RB_DL,12*UE->frame_parms.N_RB_DL + 1); - - for(k=0; knb_antennas_tx; aa++) { - for (aarx=0; aarxnb_antennas_rx; aarx++) { - for (i=0; iN_RB_DL*12; i++) { - ((int16_t *) UE->common_vars.common_vars_rx_data_per_thread[subframe&0x1].dl_ch_estimates[k][(aa<<1)+aarx])[2*i+(l*frame_parms->ofdm_symbol_size+LTE_CE_FILTER_LENGTH)*2]=(int16_t)(eNB2UE->chF[aarx+ - (aa*frame_parms->nb_antennas_rx)][i].x*AMP); - ((int16_t *) UE->common_vars.common_vars_rx_data_per_thread[subframe&0x1].dl_ch_estimates[k][(aa<<1)+aarx])[2*i+1+(l*frame_parms->ofdm_symbol_size+LTE_CE_FILTER_LENGTH)*2]=(int16_t)(eNB2UE->chF[aarx+ - (aa*frame_parms->nb_antennas_rx)][i].y*AMP); - } - } - } - } - } - - if (l==6) - for (l2=2; l2<7; l2++) - rx_pmch(UE, - 0, - subframe%10, - l2); - - if (l==6) - for (l2=2; l2<7; l2++) - rx_pmch(UE, - 0, - subframe%10, - l2); - - if (l==11) - for (l2=7; l2<12; l2++) - rx_pmch(UE, - 0, - subframe%10, - l2); - } - - UE->dlsch_MCH[0]->harq_processes[0]->G = get_G(&UE->frame_parms, - UE->dlsch_MCH[0]->harq_processes[0]->nb_rb, - UE->dlsch_MCH[0]->harq_processes[0]->rb_alloc_even, - get_Qm(UE->dlsch_MCH[0]->harq_processes[0]->mcs), - 1,2, - UE->proc.proc_rxtx[0].frame_tx,subframe,0); - UE->dlsch_MCH[0]->harq_processes[0]->Qm = get_Qm(UE->dlsch_MCH[0]->harq_processes[0]->mcs); - dlsch_unscrambling(&UE->frame_parms,1,UE->dlsch_MCH[0], - UE->dlsch_MCH[0]->harq_processes[0]->G, - UE->pdsch_vars_MCH[0]->llr[0],0,subframe<<1); - ret = dlsch_decoding(UE, - UE->pdsch_vars_MCH[0]->llr[0], - &UE->frame_parms, - UE->dlsch_MCH[0], - UE->dlsch_MCH[0]->harq_processes[0], - trials, - subframe, - 0,0,0); - - if (n_frames==1) - printf("MCH decoding returns %u\n",ret); - - if (ret == (1+UE->dlsch_MCH[0]->max_turbo_iterations)) - errs[0]++; - - UE->proc.proc_rxtx[0].frame_tx++; - eNB->proc.proc_rxtx[0].frame_tx++; + if (csv_fd==NULL) { + fprintf(stderr,"Cannot create file %s!\n",csv_fname); + exit(-1); } - printf("errors %u/%u (Pe %e)\n",errs[round],trials,(double)errs[round]/trials); + fprintf(csv_fd,"data_all%d=[",mcs1); + } - if (awgn_flag==0) - fprintf(fd,"SNR_%d_%d = [SNR_%d_%d %f]; errs_mch_%d_%d =[errs_mch_%d_%d %u]; mch_trials_%d_%d =[mch_trials_%d_%d %u];\n", - mcs,N_RB_DL,mcs,N_RB_DL,SNR, - mcs,N_RB_DL,mcs,N_RB_DL,errs[0], - mcs,N_RB_DL,mcs,N_RB_DL,trials); - else - fprintf(fd,"SNR_awgn_%d = [SNR_awgn_%d %f]; errs_mch_awgn_%d =[errs_mch_awgn_%d %u]; mch_trials_awgn_%d =[mch_trials_awgn_%d %u];\n", - N_RB_DL,N_RB_DL,SNR, - N_RB_DL,N_RB_DL,errs[0], - N_RB_DL,N_RB_DL,trials); + /* + //sprintf(tikz_fname, "second_bler_tx%d_u2=%d_mcs%d_chan%d_nsimus%d.tex",transmission_mode,dual_stream_UE,mcs,channel_model,n_frames); + sprintf(tikz_fname, "second_bler_tx%d_u2%d_mcs%d_chan%d_nsimus%d",transmission_mode,dual_stream_UE,mcs,channel_model,n_frames); + tikz_fd = fopen(tikz_fname,"w"); + //fprintf(tikz_fd,"\\addplot[color=red, mark=o] plot coordinates {"); + switch (mcs) + { + case 0: + fprintf(tikz_fd,"\\addplot[color=blue, mark=star] plot coordinates {"); + break; + case 1: + fprintf(tikz_fd,"\\addplot[color=red, mark=star] plot coordinates {"); + break; + case 2: + fprintf(tikz_fd,"\\addplot[color=green, mark=star] plot coordinates {"); + break; + case 3: + fprintf(tikz_fd,"\\addplot[color=yellow, mark=star] plot coordinates {"); + break; + case 4: + fprintf(tikz_fd,"\\addplot[color=black, mark=star] plot coordinates {"); + break; + case 5: + fprintf(tikz_fd,"\\addplot[color=blue, mark=o] plot coordinates {"); + break; + case 6: + fprintf(tikz_fd,"\\addplot[color=red, mark=o] plot coordinates {"); + break; + case 7: + fprintf(tikz_fd,"\\addplot[color=green, mark=o] plot coordinates {"); + break; + case 8: + fprintf(tikz_fd,"\\addplot[color=yellow, mark=o] plot coordinates {"); + break; + case 9: + fprintf(tikz_fd,"\\addplot[color=black, mark=o] plot coordinates {"); + break; + case 10: + fprintf(tikz_fd,"\\addplot[color=blue, mark=square] plot coordinates {"); + break; + case 11: + fprintf(tikz_fd,"\\addplot[color=red, mark=square] plot coordinates {"); + break; + case 12: + fprintf(tikz_fd,"\\addplot[color=green, mark=square] plot coordinates {"); + break; + case 13: + fprintf(tikz_fd,"\\addplot[color=yellow, mark=square] plot coordinates {"); + break; + case 14: + fprintf(tikz_fd,"\\addplot[color=black, mark=square] plot coordinates {"); + break; + case 15: + fprintf(tikz_fd,"\\addplot[color=blue, mark=diamond] plot coordinates {"); + break; + case 16: + fprintf(tikz_fd,"\\addplot[color=red, mark=diamond] plot coordinates {"); + break; + case 17: + fprintf(tikz_fd,"\\addplot[color=green, mark=diamond] plot coordinates {"); + break; + case 18: + fprintf(tikz_fd,"\\addplot[color=yellow, mark=diamond] plot coordinates {"); + break; + case 19: + fprintf(tikz_fd,"\\addplot[color=black, mark=diamond] plot coordinates {"); + break; + case 20: + fprintf(tikz_fd,"\\addplot[color=blue, mark=x] plot coordinates {"); + break; + case 21: + fprintf(tikz_fd,"\\addplot[color=red, mark=x] plot coordinates {"); + break; + case 22: + fprintf(tikz_fd,"\\addplot[color=green, mark=x] plot coordinates {"); + break; + case 23: + fprintf(tikz_fd,"\\addplot[color=yellow, mark=x] plot coordinates {"); + break; + case 24: + fprintf(tikz_fd,"\\addplot[color=black, mark=x] plot coordinates {"); + break; + case 25: + fprintf(tikz_fd,"\\addplot[color=blue, mark=x] plot coordinates {"); + break; + case 26: + fprintf(tikz_fd,"\\addplot[color=red, mark=+] plot coordinates {"); + break; + case 27: + fprintf(tikz_fd,"\\addplot[color=green, mark=+] plot coordinates {"); + break; + case 28: + fprintf(tikz_fd,"\\addplot[color=yellow, mark=+] plot coordinates {"); + break; + } + */ + UE->pdcch_vars[UE->current_thread_id[subframe]][0]->crnti = n_rnti; + UE->n_connected_eNB = 1; + printf("Allocating %dx%d eNB->UE channel descriptor\n",eNB->frame_parms.nb_antennas_tx,UE->frame_parms.nb_antennas_rx); + eNB2UE[0] = new_channel_desc_scm(eNB->frame_parms.nb_antennas_tx, + UE->frame_parms.nb_antennas_rx, + channel_model, + N_RB2sampling_rate(eNB->frame_parms.N_RB_DL), + N_RB2channel_bandwidth(eNB->frame_parms.N_RB_DL), + forgetting_factor, + rx_sample_offset, + 0); + reset_meas(&eNB2UE[0]->random_channel); + reset_meas(&eNB2UE[0]->interp_time); - fflush(fd); + if(num_rounds>1) { + for(n=1; n<4; n++) { + eNB2UE[n] = new_channel_desc_scm(eNB->frame_parms.nb_antennas_tx, + UE->frame_parms.nb_antennas_rx, + channel_model, + N_RB2sampling_rate(eNB->frame_parms.N_RB_DL), + N_RB2channel_bandwidth(eNB->frame_parms.N_RB_DL), + forgetting_factor, + rx_sample_offset, + 0); + reset_meas(&eNB2UE[n]->random_channel); + reset_meas(&eNB2UE[n]->interp_time); + } + } - if (errs[0] == 0) + if (eNB2UE[0]==NULL) { + printf("Problem generating channel model. Exiting.\n"); + exit(-1); + } + + if ((transmission_mode == 3) || (transmission_mode==4)) + Kmimo=2; + else + Kmimo=1; + + switch (ue_category) { + case 1: + Nsoft = 250368; + break; + + case 2: + case 3: + Nsoft = 1237248; + break; + + case 4: + Nsoft = 1827072; + break; + + default: + printf("Unsupported UE category %d\n",ue_category); + exit(-1); break; } - if (n_frames==1) { - printf("Dumping PMCH files ( G %d)\n",UE->dlsch_MCH[0]->harq_processes[0]->G); - dump_mch(UE,0, - UE->dlsch_MCH[0]->harq_processes[0]->G, - subframe); + for (k=0; kdlsch[k][i] = new_eNB_dlsch(Kmimo,8,Nsoft,N_RB_DL,0,&eNB->frame_parms); + + if (!eNB->dlsch[k][i]) { + printf("Can't get eNB dlsch structures\n"); + exit(-1); + } + + eNB->dlsch[k][i]->rnti = n_rnti+k; + } } - printf("Freeing dlsch structures\n"); - free_eNB_dlsch(eNB->dlsch_MCH); - free_ue_dlsch(UE->dlsch_MCH[0]); - fclose(fd); - return(0); -} +#ifdef ENABLE_MBMS_SIM + eNB->dlsch_MCH = new_eNB_dlsch(1,8,Nsoft,N_RB_DL, 0, &eNB->frame_parms); +#endif + + /* allocate memory for both subframes (only one is really used + * but there is now "copy_harq_proc_struct" which needs both + * to be valid) + * TODO: refine this somehow (necessary?) + */ + for (sf = 0; sf < 2; sf++) { + for (i=0; i<2; i++) { + UE->dlsch[sf][0][i] = new_ue_dlsch(Kmimo,8,Nsoft,MAX_TURBO_ITERATIONS,N_RB_DL,0); + + if (!UE->dlsch[sf][0][i]) { + printf("Can't get ue dlsch structures\n"); + exit(-1); + } + + UE->dlsch[sf][0][i]->rnti = n_rnti; + } + } + +#ifdef ENABLE_MBMS_SIM + UE->dlsch_MCH[0] = new_ue_dlsch(1,8,Nsoft,MAX_TURBO_ITERATIONS_MBSFN,N_RB_DL,0); + UE->dlsch_MCH[0]->active = 1; + UE->dlsch_MCH[0]->harq_processes[0]->mcs = mcs1; +#endif + + UE->dlsch_SI[0] = new_ue_dlsch(1,1,Nsoft,MAX_TURBO_ITERATIONS,N_RB_DL,0); + UE->dlsch_ra[0] = new_ue_dlsch(1,1,Nsoft,MAX_TURBO_ITERATIONS,N_RB_DL,0); + UE->ulsch[0] = new_ue_ulsch(N_RB_DL,0); + // structure for SIC at UE + UE->dlsch_eNB[0] = new_eNB_dlsch(Kmimo,8,Nsoft,N_RB_DL,0,&eNB->frame_parms); + + if (DLSCH_alloc_pdu2_1E[0].tpmi == 5) { + eNB->UE_stats[0].DL_pmi_single = (unsigned short)(taus()&0xffff); + + if (n_users>1) + eNB->UE_stats[1].DL_pmi_single = (eNB->UE_stats[0].DL_pmi_single ^ 0x1555); //opposite PMI + } else { + eNB->UE_stats[0].DL_pmi_single = 0; + + if (n_users>1) + eNB->UE_stats[1].DL_pmi_single = 0; + } + + L1_rxtx_proc_t *proc_eNB = &eNB->proc.L1_proc; + + if (input_fd==NULL) { + DL_req.dl_config_request_body.number_pdcch_ofdm_symbols = num_pdcch_symbols; + DL_req.sfn_sf = (proc_eNB->frame_tx<<4)+subframe; + TX_req.sfn_sf = (proc_eNB->frame_tx<<4)+subframe; + // UE specific DCI + fill_DCI(eNB, + proc_eNB->frame_tx,subframe, + &sched_resp, + input_buffer, + n_rnti, + n_users, + transmission_mode, + 0, + common_flag, + NB_RB, + DLSCH_RB_ALLOC, + TPC, + mcs1, + mcs2, + 1, + 0, + pa, + &num_common_dci, + &num_ue_spec_dci, + &num_dci); + numCCE = get_nCCE(num_pdcch_symbols,&eNB->frame_parms,get_mi(&eNB->frame_parms,subframe)); + + if (n_frames==1) printf("num_pdcch_symbols %d, numCCE %d, num_dci %d/%d/%d\n",num_pdcch_symbols,numCCE, num_dci,num_ue_spec_dci,num_common_dci); + } + + eNB->frame_parms.Nid_cell_mbsfn=0; + if(enable_fembms){ + lte_gold_mbsfn_khz_1dot25 (&eNB->frame_parms, eNB->lte_gold_mbsfn_khz_1dot25_table, eNB->frame_parms.Nid_cell_mbsfn); + eNB->frame_parms.NonMBSFN_config_flag=1; + }else{ + lte_gold_mbsfn (&eNB->frame_parms, eNB->lte_gold_mbsfn_table, eNB->frame_parms.Nid_cell_mbsfn); + eNB->frame_parms.num_MBSFN_config=1; + eNB->frame_parms.MBSFN_config[0].radioframeAllocationPeriod=0; + eNB->frame_parms.MBSFN_config[0].fourFrames_flag=0; + eNB->frame_parms.MBSFN_config[0].radioframeAllocationOffset=0; + //eNB->frame_parms.MBSFN_config[0].mbsfn_SubframeConfig=0xC0; + eNB->frame_parms.MBSFN_config[0].mbsfn_SubframeConfig=0xFC; + } + + + + snr_step = input_snr_step; + UE->high_speed_flag = 1; + UE->ch_est_alpha=0; + + for (ch_realization=0; ch_realizationproc.proc_rxtx[UE->current_thread_id[subframe]].frame_rx=0; + errs[0]=0; + errs[1]=0; + errs[2]=0; + errs[3]=0; + errs2[0]=0; + errs2[1]=0; + errs2[2]=0; + errs2[3]=0; + round_trials[0] = 0; + round_trials[1] = 0; + round_trials[2] = 0; + round_trials[3] = 0; + dci_errors[0]=0; + dci_errors[1]=0; + dci_errors[2]=0; + dci_errors[3]=0; + // avg_ber = 0; + round=0; + avg_iter = 0; + iter_trials=0; + reset_meas(&eNB->phy_proc_tx); // total eNB tx + reset_meas(&eNB->dlsch_scrambling_stats); + reset_meas(&UE->dlsch_unscrambling_stats); + reset_meas(&eNB->ofdm_mod_stats); + reset_meas(&eNB->dlsch_modulation_stats); + reset_meas(&eNB->dlsch_encoding_stats); + reset_meas(&eNB->dlsch_interleaving_stats); + reset_meas(&eNB->dlsch_rate_matching_stats); + reset_meas(&eNB->dlsch_turbo_encoding_stats); + reset_meas(&eNB->dlsch_common_and_dci); + reset_meas(&eNB->dlsch_ue_specific); + + for (int i=0; iphy_proc_rx[i]); // total UE rx + reset_meas(&UE->ue_front_end_stat[i]); + reset_meas(&UE->pdsch_procedures_stat[i]); + reset_meas(&UE->dlsch_procedures_stat[i]); + reset_meas(&UE->dlsch_decoding_stats[i]); + reset_meas(&UE->dlsch_llr_stats_parallelization[i][0]); + reset_meas(&UE->dlsch_llr_stats_parallelization[i][1]); + } + + reset_meas(&UE->ofdm_demod_stats); + reset_meas(&UE->crnti_procedures_stats); + reset_meas(&UE->dlsch_channel_estimation_stats); + reset_meas(&UE->dlsch_freq_offset_estimation_stats); + reset_meas(&UE->rx_dft_stats); + reset_meas(&UE->dlsch_decoding_stats[0]); + reset_meas(&UE->dlsch_decoding_stats[1]); + reset_meas(&UE->dlsch_turbo_decoding_stats); + reset_meas(&UE->dlsch_deinterleaving_stats); + reset_meas(&UE->dlsch_rate_unmatching_stats); + reset_meas(&UE->dlsch_tc_init_stats); + reset_meas(&UE->dlsch_tc_alpha_stats); + reset_meas(&UE->dlsch_tc_beta_stats); + reset_meas(&UE->dlsch_tc_gamma_stats); + reset_meas(&UE->dlsch_tc_ext_stats); + reset_meas(&UE->dlsch_tc_intl1_stats); + reset_meas(&UE->dlsch_tc_intl2_stats); + // initialization + // initialization + varArray_t *table_tx=initVarArray(1000,sizeof(double)); + varArray_t *table_tx_ifft=initVarArray(1000,sizeof(double)); + varArray_t *table_tx_mod=initVarArray(1000,sizeof(double)); + varArray_t *table_tx_enc=initVarArray(1000,sizeof(double)); + varArray_t *table_rx=initVarArray(1000,sizeof(double)); + time_stats_t phy_proc_rx_tot; + time_stats_t pdsch_procedures_tot; + time_stats_t dlsch_procedures_tot; + time_stats_t dlsch_decoding_tot; + time_stats_t dlsch_llr_tot; + time_stats_t ue_front_end_tot; + varArray_t *table_rx_fft=initVarArray(1000,sizeof(double)); + varArray_t *table_rx_demod=initVarArray(1000,sizeof(double)); + varArray_t *table_rx_dec=initVarArray(1000,sizeof(double)); + + for (trials = 0; trialsfirst_run = 1; + UE->dlsch[UE->current_thread_id[subframe]][eNB_id][0]->harq_ack[subframe].ack = 0; + UE->dlsch[UE->current_thread_id[subframe]][eNB_id][1]->harq_ack[subframe].ack = 0; + + while ((round < num_rounds) && (UE->dlsch[UE->current_thread_id[subframe]][eNB_id][0]->harq_ack[subframe].ack == 0)) { + // printf("Trial %d, round %d\n",trials,round); + round_trials[round]++; + + //if(transmission_mode>=5) + // pmi_feedback=1; + //else + // pmi_feedback=0; + + if (abstx) { + if (trials==0 && round==0 && SNR==snr0) //generate a new channel + hold_channel = 0; + else + hold_channel = 1; + } else + hold_channel = 0;//(round==0) ? 0 : 1; + + //PMI_FEEDBACK: + + // printf("Trial %d : Round %d, pmi_feedback %d \n",trials,round,pmi_feedback); + for (aa=0; aaframe_parms.nb_antennas_tx; aa++) { + memset(&eNB->common_vars.txdataF[aa][0],0,FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX*sizeof(int32_t)); + } + + if (input_fd==NULL) { + // Simulate HARQ procedures!!! + memset(CCE_table,0,800*sizeof(int)); + + if (/*common_flag == 0*/ 1) { + num_dci=0; + num_common_dci=0; + num_ue_spec_dci=0; + + if (round == 0) { // First round + TB0_active = 1; + eNB->dlsch[0][0]->harq_processes[0]->rvidx = round&3; + DL_req.sfn_sf = (proc_eNB->frame_tx<<4)+subframe; + TX_req.sfn_sf = (proc_eNB->frame_tx<<4)+subframe; + fill_DCI(eNB,proc_eNB->frame_tx,subframe,&sched_resp,input_buffer,n_rnti,n_users,transmission_mode,0,common_flag,NB_RB,DLSCH_RB_ALLOC,TPC, + mcs1,mcs2,!(trials&1),round&3,pa,&num_common_dci,&num_ue_spec_dci,&num_dci); + } else { + DL_req.sfn_sf = (proc_eNB->frame_tx<<4)+subframe; + TX_req.sfn_sf = (proc_eNB->frame_tx<<4)+subframe; + fill_DCI(eNB,proc_eNB->frame_tx,subframe,&sched_resp,input_buffer,n_rnti,n_users,transmission_mode,1,common_flag,NB_RB,DLSCH_RB_ALLOC,TPC, + (TB0_active==1)?mcs1:0,mcs2,!(trials&1),(TB0_active==1)?round&3:0,pa,&num_common_dci,&num_ue_spec_dci,&num_dci); + } + } + +//#ifdef ENABLE_MBMS_SIM +// eNB->frame_parms.Nid_cell_mbsfn=0; +// lte_gold_mbsfn (&eNB->frame_parms, eNB->lte_gold_mbsfn_table, eNB->frame_parms.Nid_cell_mbsfn); +//#endif + + UE->measurements.n0_power_tot_dB = 10*log10((double)tx_lev) +10*log10((double)ru->frame_parms.ofdm_symbol_size/(double)(ru->frame_parms.N_RB_DL*12)) - SNR; + UE->measurements.n0_power_tot = pow(10,( 10*log10((double)tx_lev) +10*log10((double)ru->frame_parms.ofdm_symbol_size/(double)(ru->frame_parms.N_RB_DL*12)) - SNR)/10); + + proc_eNB->subframe_tx = subframe; + sched_resp.subframe=subframe; + sched_resp.frame=proc_eNB->frame_tx; + eNB->abstraction_flag=0; + schedule_response(&sched_resp); + phy_procedures_eNB_TX(eNB,proc_eNB,1); + + if (uncoded_ber_bit == NULL) { + // this is for user 0 only + printf("nb_rb %d, rb_alloc %x, mcs %d\n", + eNB->dlsch[0][0]->harq_processes[0]->nb_rb, + eNB->dlsch[0][0]->harq_processes[0]->rb_alloc[0], + eNB->dlsch[0][0]->harq_processes[0]->mcs); + coded_bits_per_codeword = get_G(&eNB->frame_parms, + eNB->dlsch[0][0]->harq_processes[0]->nb_rb, + eNB->dlsch[0][0]->harq_processes[0]->rb_alloc, + get_Qm(eNB->dlsch[0][0]->harq_processes[0]->mcs), + eNB->dlsch[0][0]->harq_processes[0]->Nl, + num_pdcch_symbols, + 0, + subframe, + transmission_mode>=7?transmission_mode:0); + uncoded_ber_bit = (short *) malloc(sizeof(short)*coded_bits_per_codeword); + printf("uncoded_ber_bit=%p\n",uncoded_ber_bit); + } + + + + start_meas(&eNB->ofdm_mod_stats); + ru->proc.subframe_tx=subframe; + LOG_W(PHY,"eNB %d\n",eNB->frame_parms.num_MBSFN_config); + LOG_W(PHY,"eNB %d\n",eNB->frame_parms.NonMBSFN_config_flag); + memcpy((void *)&ru->frame_parms,(void *)&eNB->frame_parms,sizeof(LTE_DL_FRAME_PARMS)); + LOG_W(PHY,"RU %d\n",ru->frame_parms.num_MBSFN_config); + LOG_W(PHY,"RU %d\n",ru->frame_parms.NonMBSFN_config_flag); + feptx_prec(ru); + feptx_ofdm(ru); + stop_meas(&eNB->ofdm_mod_stats); + // generate next subframe for channel estimation + DL_req.dl_config_request_body.number_dci=0; + DL_req.dl_config_request_body.number_pdu=0; + TX_req.tx_request_body.number_of_pdus=0; + proc_eNB->subframe_tx = subframe+1; + sched_resp.subframe=subframe+1; + schedule_response(&sched_resp); + + phy_procedures_eNB_TX(eNB,proc_eNB,0); + ru->proc.subframe_tx=(subframe+1)%10; + feptx_prec(ru); + feptx_ofdm(ru); + proc_eNB->frame_tx++; + tx_lev = 0; + + for (aa=0; aaframe_parms.nb_antennas_tx; aa++) { + tx_lev += signal_energy(&ru->common.txdata[aa] + [subframe*eNB->frame_parms.samples_per_tti], + eNB->frame_parms.samples_per_tti); + } + + tx_lev_dB = (unsigned int) dB_fixed(tx_lev); + + if (n_frames==1) { + printf("tx_lev = %u (%u dB)\n",tx_lev,tx_lev_dB); + LOG_M("txsig0.m","txs0", &ru->common.txdata[0][subframe* eNB->frame_parms.samples_per_tti], eNB->frame_parms.samples_per_tti,1,1); + + if (transmission_mode<7) { + LOG_M("txsigF0.m","txsF0x", &ru->common.txdataF_BF[0][subframe*nsymb*eNB->frame_parms.ofdm_symbol_size],nsymb*eNB->frame_parms.ofdm_symbol_size,1,1); + } else if (transmission_mode == 7) { + LOG_M("txsigF0.m","txsF0", &ru->common.txdataF_BF[5][subframe*nsymb*eNB->frame_parms.ofdm_symbol_size],nsymb*eNB->frame_parms.ofdm_symbol_size,1,1); + LOG_M("txsigF0_BF.m","txsF0_BF", &ru->common.txdataF_BF[0][0],eNB->frame_parms.ofdm_symbol_size,1,1); + } + } + } + + DL_channel(ru,UE,subframe,awgn_flag,SNR,tx_lev,hold_channel,abstx,num_rounds,trials,round,eNB2UE,s_re,s_im,r_re,r_im,csv_fd); + UE_rxtx_proc_t *proc = &UE->proc.proc_rxtx[UE->current_thread_id[subframe]]; + proc->subframe_rx = subframe; + UE->UE_mode[0] = PUSCH; + // first symbol has to be done separately in one-shot mode + slot_fep(UE, + 0, + (proc->subframe_rx<<1), + UE->rx_offset, + 0, + 0); + + if (n_frames==1) printf("Running phy_procedures_UE_RX\n"); + + if (dci_flag==0) { + memcpy(dci_alloc,eNB->pdcch_vars[subframe&1].dci_alloc,num_dci*sizeof(DCI_ALLOC_t)); + UE->pdcch_vars[UE->current_thread_id[proc->subframe_rx]][eNB_id]->num_pdcch_symbols = num_pdcch_symbols; + + if (n_frames==1) + printf("bypassing PDCCH/DCI detection\n"); + + if (generate_ue_dlsch_params_from_dci(proc->frame_rx, + proc->subframe_rx, + (void *)&dci_alloc[0].dci_pdu, + common_flag == 0 ? n_rnti : SI_RNTI, + dci_alloc[0].format, + UE->pdcch_vars[UE->current_thread_id[proc->subframe_rx]][eNB_id], + UE->pdsch_vars[UE->current_thread_id[proc->subframe_rx]][eNB_id], + UE->dlsch[UE->current_thread_id[proc->subframe_rx]][0], + &UE->frame_parms, + UE->pdsch_config_dedicated, + SI_RNTI, + 0, + P_RNTI, + UE->transmission_mode[eNB_id]<7?0:UE->transmission_mode[eNB_id], + 0)==0) { + dump_dci(&UE->frame_parms, &dci_alloc[0]); + //UE->dlsch[UE->current_thread_id[proc->subframe_rx]][eNB_id][0]->active = 1; + //UE->dlsch[UE->current_thread_id[proc->subframe_rx]][eNB_id][1]->active = 1; + UE->pdcch_vars[UE->current_thread_id[proc->subframe_rx]][eNB_id]->num_pdcch_symbols = num_pdcch_symbols; + UE->dlsch_received[eNB_id]++; + } else { + LOG_E(PHY,"Problem in DCI!\n"); + } + } + + + UE->frame_parms.Nid_cell_mbsfn=0; + if(enable_fembms){ + lte_gold_mbsfn_khz_1dot25 (&UE->frame_parms, UE->lte_gold_mbsfn_khz_1dot25_table, UE->frame_parms.Nid_cell_mbsfn); + UE->frame_parms.NonMBSFN_config_flag=1; + }else{ + lte_gold_mbsfn (&UE->frame_parms, UE->lte_gold_mbsfn_table, UE->frame_parms.Nid_cell_mbsfn); + UE->frame_parms.num_MBSFN_config=1; + UE->frame_parms.MBSFN_config[0].radioframeAllocationPeriod=0; + UE->frame_parms.MBSFN_config[0].fourFrames_flag=0; + UE->frame_parms.MBSFN_config[0].radioframeAllocationOffset=0; + UE->frame_parms.MBSFN_config[0].mbsfn_SubframeConfig=0xC0; + } + + + + + dci_received = UE->pdcch_vars[UE->current_thread_id[proc->subframe_rx]][eNB_id]->dci_received; + phy_procedures_UE_RX(UE,proc,0,0,dci_flag,normal_txrx); + dci_received = dci_received - UE->pdcch_vars[UE->current_thread_id[proc->subframe_rx]][eNB_id]->dci_received; + + if (dci_flag && (dci_received == 0)) { + printf("DCI not received\n"); + dci_errors[round]++; + LOG_M("pdcchF0_ext.m","pdcchF_ext", UE->pdcch_vars[0][eNB_id]->rxdataF_ext[0],2*3*UE->frame_parms.ofdm_symbol_size,1,1); + LOG_M("pdcch00_ch0_ext.m","pdcch00_ch0_ext",UE->pdcch_vars[0][eNB_id]->dl_ch_estimates_ext[0],300*3,1,1); + LOG_M("pdcch_rxF_comp0.m","pdcch0_rxF_comp0",UE->pdcch_vars[0][eNB_id]->rxdataF_comp[0],4*300,1,1); + LOG_M("pdcch_rxF_llr.m","pdcch_llr",UE->pdcch_vars[0][eNB_id]->llr,2400,1,4); + LOG_M("rxsig0.m","rxs0", &UE->common_vars.rxdata[0][0],10*UE->frame_parms.samples_per_tti,1,1); + LOG_M("rxsigF0.m","rxsF0", &UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].rxdataF[0][0],UE->frame_parms.ofdm_symbol_size*nsymb,1,1); + exit(-1); + } + + int bit_errors=0; + + if ((test_perf ==0 ) && (n_frames==1)) { + dlsch_unscrambling(&eNB->frame_parms, + 0, + UE->dlsch[UE->current_thread_id[subframe]][0][0], + coded_bits_per_codeword, + UE->pdsch_vars[UE->current_thread_id[subframe]][0]->llr[0], + 0, + subframe<<1); + + for (i=0; idlsch[0][0]->harq_processes[0]->e[i]==1 && UE->pdsch_vars[UE->current_thread_id[subframe]][0]->llr[0][i] > 0)|| + (eNB->dlsch[0][0]->harq_processes[0]->e[i]==0 && UE->pdsch_vars[UE->current_thread_id[subframe]][0]->llr[0][i] < 0)) { + uncoded_ber_bit[bit_errors++] = 1; + printf("error in pos %d : %d => %d\n",i, + eNB->dlsch[0][0]->harq_processes[0]->e[i], + UE->pdsch_vars[UE->current_thread_id[subframe]][0]->llr[0][i]); + } else { + /* + printf("no error in pos %d : %d => %d\n",i, + eNB->dlsch[0][0]->harq_processes[0]->e[i], + UE->pdsch_vars[UE->current_thread_id[subframe]][0]->llr[0][i]); + */ + } + + LOG_M("dlsch_ber_bit.m","ber_bit",uncoded_ber_bit,coded_bits_per_codeword,1,0); + LOG_M("ch0.m","ch0",eNB2UE[0]->ch[0],eNB2UE[0]->channel_length,1,8); + + if (eNB->frame_parms.nb_antennas_tx>1) + LOG_M("ch1.m","ch1",eNB2UE[0]->ch[eNB->frame_parms.nb_antennas_rx],eNB2UE[0]->channel_length,1,8); + + //common vars + LOG_M("rxsig0.m","rxs0", &UE->common_vars.rxdata[0][0],10*UE->frame_parms.samples_per_tti,1,1); + LOG_M("rxsigF0.m","rxsF0", &UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].rxdataF[0][0],UE->frame_parms.ofdm_symbol_size*nsymb,1,1); + + if (UE->frame_parms.nb_antennas_rx>1) { + LOG_M("rxsig1.m","rxs1", UE->common_vars.rxdata[1],UE->frame_parms.samples_per_tti,1,1); + LOG_M("rxsigF1.m","rxsF1", UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].rxdataF[1],UE->frame_parms.ofdm_symbol_size*nsymb,1,1); + } + + LOG_M("dlsch00_r0.m","dl00_r0", + &(UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].dl_ch_estimates[eNB_id][0][0]), + UE->frame_parms.ofdm_symbol_size*nsymb,1,1); + + if (UE->frame_parms.nb_antennas_rx>1) + LOG_M("dlsch01_r0.m","dl01_r0", + &(UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].dl_ch_estimates[eNB_id][1][0]), + UE->frame_parms.ofdm_symbol_size*nsymb,1,1); + + if (eNB->frame_parms.nb_antennas_tx>1) + LOG_M("dlsch10_r0.m","dl10_r0", + &(UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].dl_ch_estimates[eNB_id][2][0]), + UE->frame_parms.ofdm_symbol_size*nsymb,1,1); + + if ((UE->frame_parms.nb_antennas_rx>1) && (eNB->frame_parms.nb_antennas_tx>1)) + LOG_M("dlsch11_r0.m","dl11_r0", + &(UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].dl_ch_estimates[eNB_id][3][0]), + UE->frame_parms.ofdm_symbol_size*nsymb/2,1,1); + + //pdsch_vars + printf("coded_bits_per_codeword %u\n",coded_bits_per_codeword); + dump_dlsch2(UE,eNB_id,subframe,&coded_bits_per_codeword,round, UE->dlsch[UE->current_thread_id[subframe]][0][0]->current_harq_pid); + LOG_M("dlsch_e.m","e",eNB->dlsch[0][0]->harq_processes[0]->e,coded_bits_per_codeword,1,4); + //pdcch_vars + LOG_M("pdcchF0_ext.m","pdcchF_ext", UE->pdcch_vars[0][eNB_id]->rxdataF_ext[0],2*3*UE->frame_parms.ofdm_symbol_size,1,1); + LOG_M("pdcch00_ch0_ext.m","pdcch00_ch0_ext",UE->pdcch_vars[0][eNB_id]->dl_ch_estimates_ext[0],300*3,1,1); + LOG_M("pdcch_rxF_comp0.m","pdcch0_rxF_comp0",UE->pdcch_vars[0][eNB_id]->rxdataF_comp[0],4*300,1,1); + LOG_M("pdcch_rxF_llr.m","pdcch_llr",UE->pdcch_vars[0][eNB_id]->llr,2400,1,4); + } + + if (UE->dlsch[UE->current_thread_id[subframe]][eNB_id][0]->harq_ack[subframe].ack == 1) { + avg_iter += UE->dlsch[UE->current_thread_id[subframe]][eNB_id][0]->last_iteration_cnt; + iter_trials++; + + if (n_frames==1) + printf("No DLSCH errors found (round %d),uncoded ber %f\n",round,(double)bit_errors/coded_bits_per_codeword); + + UE->total_TBS[eNB_id] = UE->total_TBS[eNB_id] + UE->dlsch[UE->current_thread_id[subframe]][eNB_id][0]->harq_processes[UE->dlsch[UE->current_thread_id[subframe]][eNB_id][0]->current_harq_pid]->TBS; + TB0_active = 0; + } // DLSCH received ok + else { + errs[round]++; + avg_iter += UE->dlsch[UE->current_thread_id[subframe]][eNB_id][0]->last_iteration_cnt-1; + iter_trials++; + + if (n_frames==1) { + //if ((n_frames==1) || (SNR>=30)) { + printf("DLSCH errors found (round %d), uncoded ber %f\n",round,(double)bit_errors/coded_bits_per_codeword); + + for (s=0; sdlsch[UE->current_thread_id[subframe]][0][0]->harq_processes[0]->C; s++) { + if (sdlsch[UE->current_thread_id[subframe]][0][0]->harq_processes[0]->Cminus) + Kr = UE->dlsch[UE->current_thread_id[subframe]][0][0]->harq_processes[0]->Kminus; + else + Kr = UE->dlsch[UE->current_thread_id[subframe]][0][0]->harq_processes[0]->Kplus; + + Kr_bytes = Kr>>3; + printf("Decoded_output (Segment %d):\n",s); + + for (i=0; idlsch[UE->current_thread_id[subframe]][0][0]->harq_processes[0]->c[s][i], + UE->dlsch[UE->current_thread_id[subframe]][0][0]->harq_processes[0]->c[s][i]^eNB->dlsch[0][0]->harq_processes[0]->c[s][i]); + } + + sprintf(fname,"rxsig0_r%d.m",round); + sprintf(vname,"rxs0_r%d",round); + LOG_M(fname,vname, &UE->common_vars.rxdata[0][0],10*UE->frame_parms.samples_per_tti,1,1); + sprintf(fname,"rxsigF0_r%d.m",round); + sprintf(vname,"rxs0F_r%d",round); + LOG_M(fname,vname, &UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].rxdataF[0][0],UE->frame_parms.ofdm_symbol_size*nsymb,1,1); + + if (UE->frame_parms.nb_antennas_rx>1) { + sprintf(fname,"rxsig1_r%d.m",round); + sprintf(vname,"rxs1_r%d.m",round); + LOG_M(fname,vname, UE->common_vars.rxdata[1],UE->frame_parms.samples_per_tti,1,1); + sprintf(fname,"rxsigF1_r%d.m",round); + sprintf(vname,"rxs1F_r%d.m",round); + LOG_M(fname,vname, UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].rxdataF[1],UE->frame_parms.ofdm_symbol_size*nsymb,1,1); + } + + sprintf(fname,"dlsch00_r%d.m",round); + sprintf(vname,"dl00_r%d",round); + LOG_M(fname,vname, + &(UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].dl_ch_estimates[eNB_id][0][0]), + UE->frame_parms.ofdm_symbol_size*nsymb,1,1); + + if (UE->frame_parms.nb_antennas_rx>1) { + sprintf(fname,"dlsch01_r%d.m",round); + sprintf(vname,"dl01_r%d",round); + LOG_M(fname,vname, + &(UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].dl_ch_estimates[eNB_id][1][0]), + UE->frame_parms.ofdm_symbol_size*nsymb/2,1,1); + } + + if (eNB->frame_parms.nb_antennas_tx>1) { + sprintf(fname,"dlsch10_r%d.m",round); + sprintf(vname,"dl10_r%d",round); + LOG_M(fname,vname, + &(UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].dl_ch_estimates[eNB_id][2][0]), + UE->frame_parms.ofdm_symbol_size*nsymb/2,1,1); + } + + if ((UE->frame_parms.nb_antennas_rx>1) && (eNB->frame_parms.nb_antennas_tx>1)) { + sprintf(fname,"dlsch11_r%d.m",round); + sprintf(vname,"dl11_r%d",round); + LOG_M(fname,vname, + &(UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].dl_ch_estimates[eNB_id][3][0]), + UE->frame_parms.ofdm_symbol_size*nsymb/2,1,1); + } + + //pdsch_vars + dump_dlsch2(UE,eNB_id,subframe,&coded_bits_per_codeword,round, UE->dlsch[UE->current_thread_id[subframe]][0][0]->current_harq_pid); + //LOG_M("dlsch_e.m","e",eNB->dlsch[0][0]->harq_processes[0]->e,coded_bits_per_codeword,1,4); + //LOG_M("dlsch_ber_bit.m","ber_bit",uncoded_ber_bit,coded_bits_per_codeword,1,0); + //LOG_M("dlsch_w.m","w",eNB->dlsch[0][0]->harq_processes[0]->w[0],3*(tbs+64),1,4); + //LOG_M("dlsch_w.m","w",UE->dlsch[UE->current_thread_id[subframe]][0][0]->harq_processes[0]->w[0],3*(tbs+64),1,0); + //pdcch_vars + LOG_M("pdcchF0_ext.m","pdcchF_ext", UE->pdcch_vars[0][eNB_id]->rxdataF_ext[0],2*3*UE->frame_parms.ofdm_symbol_size,1,1); + LOG_M("pdcch00_ch0_ext.m","pdcch00_ch0_ext",UE->pdcch_vars[0][eNB_id]->dl_ch_estimates_ext[0],300*3,1,1); + LOG_M("pdcch_rxF_comp0.m","pdcch0_rxF_comp0",UE->pdcch_vars[0][eNB_id]->rxdataF_comp[0],4*300,1,1); + LOG_M("pdcch_rxF_llr.m","pdcch_llr",UE->pdcch_vars[0][eNB_id]->llr,2400,1,4); + + if (round == 3) exit(-1); + } + + // printf("round %d errors %d/%d\n",round,errs[round],trials); + round++; + // UE->dlsch[UE->current_thread_id[subframe]][0][0]->harq_processes[0]->round++; + } + + if (xforms==1) { + phy_scope_UE(form_ue, + UE, + eNB_id, + 0,// UE_id + subframe); + } + + UE->proc.proc_rxtx[UE->current_thread_id[subframe]].frame_rx++; + } //round + + // printf("\n"); + + if ((errs[0]>=n_frames/10) && (trials>(n_frames/2))) + break; + + //len = chbch_stats_read(stats_buffer,NULL,0,4096); + //printf("%s\n\n",stats_buffer); + + if (UE->proc.proc_rxtx[UE->current_thread_id[subframe]].frame_rx % 10 == 0) { + UE->bitrate[eNB_id] = (UE->total_TBS[eNB_id] - UE->total_TBS_last[eNB_id])*10; + LOG_D(PHY,"[UE %d] Calculating bitrate: total_TBS = %d, total_TBS_last = %d, bitrate = %d kbits/s\n",UE->Mod_id,UE->total_TBS[eNB_id],UE->total_TBS_last[eNB_id], + UE->bitrate[eNB_id]/1000); + UE->total_TBS_last[eNB_id] = UE->total_TBS[eNB_id]; + } + + /* calculate the total processing time for each packet, + * get the max, min, and number of packets that exceed t>2000us + */ + double t_tx = inMicroS(eNB->phy_proc_tx.p_time); + double t_tx_ifft = inMicroS(eNB->ofdm_mod_stats.p_time); + double t_rx = inMicroS(UE->phy_proc_rx[UE->current_thread_id[subframe]].p_time); + sumUpStats(&phy_proc_rx_tot, UE->phy_proc_rx, UE->current_thread_id[subframe]); + sumUpStats(&ue_front_end_tot, UE->ue_front_end_stat, UE->current_thread_id[subframe]); + sumUpStats(&pdsch_procedures_tot, UE->pdsch_procedures_stat, UE->current_thread_id[subframe]); + sumUpStats(&dlsch_procedures_tot, UE->dlsch_procedures_stat, UE->current_thread_id[subframe]); + sumUpStats(&dlsch_decoding_tot, UE->dlsch_decoding_stats, UE->current_thread_id[subframe]); + sumUpStatsSlot(&dlsch_llr_tot, UE->dlsch_llr_stats_parallelization, UE->current_thread_id[subframe]); + double t_rx_fft = inMicroS(UE->ofdm_demod_stats.p_time); + double t_rx_demod = inMicroS(UE->dlsch_rx_pdcch_stats.p_time); + double t_rx_dec = inMicroS(UE->dlsch_decoding_stats[UE->current_thread_id[subframe]].p_time); + + if (t_tx > 2000 )// 2ms is too much time for a subframe + n_tx_dropped++; + + if (t_rx > 2000 ) + n_rx_dropped++; + + appendVarArray(table_tx, &t_tx); + appendVarArray(table_tx_ifft, &t_tx_ifft); + appendVarArray(table_rx, &t_rx ); + appendVarArray(table_rx_fft, &t_rx_fft ); + appendVarArray(table_rx_demod, &t_rx_demod ); + appendVarArray(table_rx_dec, &t_rx_dec ); + } //trials + + // round_trials[0]: number of code word : goodput the protocol + // sort table + qsort (dataArray(table_tx), table_tx->size, table_tx->atomSize, &cmpdouble); + qsort (dataArray(table_tx_ifft), table_tx_ifft->size, table_tx_ifft->atomSize, &cmpdouble); + qsort (dataArray(table_tx_mod), table_tx_mod->size, table_tx_mod->atomSize, &cmpdouble); + qsort (dataArray(table_tx_enc), table_tx_enc->size, table_tx_enc->atomSize, &cmpdouble); + qsort (dataArray(table_rx), table_rx->size, table_rx->atomSize, &cmpdouble); + qsort (dataArray(table_rx_fft), table_rx_fft->size, table_rx_fft->atomSize, &cmpdouble); + qsort (dataArray(table_rx_demod), table_rx_demod->size, table_rx_demod->atomSize, &cmpdouble); + qsort (dataArray(table_rx_dec), table_rx_dec->size, table_rx_dec->atomSize, &cmpdouble); + + if (dump_table == 1 ) { + set_component_filelog(SIM); // file located in /tmp/usim.txt + LOG_UDUMPMSG(SIM,table_tx,table_tx->size,LOG_DUMP_DOUBLE,"The transmitter raw data: \n"); + LOG_UDUMPMSG(SIM,table_rx,table_rx->size,LOG_DUMP_DOUBLE,"Thereceiver raw data: \n"); + } + + effective_rate = 1.0-((double)(errs[0]+errs[1]+errs[2]+errs[3])/((double)round_trials[0] + round_trials[1] + round_trials[2] + round_trials[3])); + printf("\n**********************SNR = %f dB (tx_lev %f)**************************\n", + SNR, + (double)tx_lev_dB+10*log10(UE->frame_parms.ofdm_symbol_size/(NB_RB*12))); + printf("Errors (%u(%u)/%u %u/%u %u/%u %u/%u), Pe = (%e,%e,%e,%e), dci_errors %u/%u, Pe = %e => effective rate %f, normalized delay %f (%f)\n", + errs[0], + errs2[0], + round_trials[0], + errs[1], + round_trials[1], + errs[2], + round_trials[2], + errs[3], + round_trials[3], + (double)errs[0]/(round_trials[0]), + (double)errs[1]/(round_trials[1]), + (double)errs[2]/(round_trials[2]), + (double)errs[3]/(round_trials[3]), + dci_errors[0]+dci_errors[1]+dci_errors[2]+dci_errors[3], + round_trials[0]+round_trials[1]+round_trials[2]+round_trials[3], + (double)(dci_errors[0]+dci_errors[1]+dci_errors[2]+dci_errors[3])/(round_trials[0]+round_trials[1]+round_trials[2]+round_trials[3]), + //rate*effective_rate, + 100*effective_rate, + //rate, + //rate*get_Qm(UE->dlsch[UE->current_thread_id[subframe]][0][0]->harq_processes[UE->dlsch[UE->current_thread_id[subframe]][0][0]->current_harq_pid]->mcs), + (1.0*(round_trials[0]-errs[0])+2.0*(round_trials[1]-errs[1])+3.0*(round_trials[2]-errs[2])+4.0*(round_trials[3]-errs[3]))/((double)round_trials[0])/ + (double)eNB->dlsch[0][0]->harq_processes[0]->TBS, + (1.0*(round_trials[0]-errs[0])+2.0*(round_trials[1]-errs[1])+3.0*(round_trials[2]-errs[2])+4.0*(round_trials[3]-errs[3]))/((double)round_trials[0])); + double timeBase=1/(1000*cpu_freq_GHz); + + if (print_perf==1) { + printf("\neNB TX function statistics (per 1ms subframe)\n"); + printDistribution(&eNB->phy_proc_tx,table_tx,"PHY proc tx"); + printStatIndent(&eNB->dlsch_common_and_dci,"DL common channels and dci time"); + printStatIndent(&eNB->dlsch_ue_specific,"DL per ue part time"); + printStatIndent2(&eNB->dlsch_encoding_stats,"DLSCH encoding time"); + printStatIndent3(&eNB->dlsch_rate_matching_stats,"DLSCH rate matching time"); + printStatIndent3(&eNB->dlsch_turbo_encoding_stats,"DLSCH turbo encoding time"); + printStatIndent3(&eNB->dlsch_interleaving_stats,"DLSCH interleaving time"); + printStatIndent2(&eNB->dlsch_scrambling_stats, "DLSCH scrambling time"); + printStatIndent2(&eNB->dlsch_modulation_stats, "DLSCH modulation time"); + printDistribution(&eNB->ofdm_mod_stats,table_tx_ifft,"OFDM_mod (idft) time"); + printf("\nUE RX function statistics (per 1ms subframe)\n"); + printDistribution(&phy_proc_rx_tot, table_rx,"Total PHY proc rx"); + printStatIndent(&ue_front_end_tot,"Front end processing"); + printStatIndent(&dlsch_llr_tot,"rx_pdsch processing"); + printStatIndent2(&pdsch_procedures_tot,"pdsch processing"); + printStatIndent2(&dlsch_procedures_tot,"dlsch processing"); + printStatIndent2(&UE->crnti_procedures_stats,"C-RNTI processing"); + printStatIndent(&UE->ofdm_demod_stats,"ofdm demodulation"); + printStatIndent(&UE->dlsch_channel_estimation_stats,"DLSCH channel estimation time"); + printStatIndent(&UE->dlsch_freq_offset_estimation_stats,"DLSCH frequency offset estimation time"); + printStatIndent(&dlsch_decoding_tot, "DLSCH Decoding time "); + printStatIndent(&UE->dlsch_unscrambling_stats,"DLSCH unscrambling time"); + printStatIndent(&UE->dlsch_rate_unmatching_stats,"DLSCH Rate Unmatching"); + printf("|__ DLSCH Turbo Decoding(%d bits), avg iterations: %.1f %.2f us (%d cycles, %d trials)\n", + UE->dlsch[UE->current_thread_id[subframe]][0][0]->harq_processes[0]->Cminus ? + UE->dlsch[UE->current_thread_id[subframe]][0][0]->harq_processes[0]->Kminus : + UE->dlsch[UE->current_thread_id[subframe]][0][0]->harq_processes[0]->Kplus, + UE->dlsch_tc_intl1_stats.trials/(double)UE->dlsch_tc_init_stats.trials, + (double)UE->dlsch_turbo_decoding_stats.diff/UE->dlsch_turbo_decoding_stats.trials*timeBase, + (int)((double)UE->dlsch_turbo_decoding_stats.diff/UE->dlsch_turbo_decoding_stats.trials), + UE->dlsch_turbo_decoding_stats.trials); + printStatIndent2(&UE->dlsch_tc_init_stats,"init"); + printStatIndent2(&UE->dlsch_tc_alpha_stats,"alpha"); + printStatIndent2(&UE->dlsch_tc_beta_stats,"beta"); + printStatIndent2(&UE->dlsch_tc_gamma_stats,"gamma"); + printStatIndent2(&UE->dlsch_tc_ext_stats,"ext"); + printStatIndent2(&UE->dlsch_tc_intl1_stats,"turbo internal interleaver"); + printStatIndent2(&UE->dlsch_tc_intl2_stats,"intl2+HardDecode+CRC"); + } + + if ((transmission_mode != 3) && (transmission_mode != 4)) { + fprintf(bler_fd,"%f;%d;%d;%f;%u;%u;%u;%u;%u;%u;%u;%u;%u\n", + SNR, + mcs1, + eNB->dlsch[0][0]->harq_processes[0]->TBS, + rate, + errs[0], + round_trials[0], + errs[1], + round_trials[1], + errs[2], + round_trials[2], + errs[3], + round_trials[3], + dci_errors[0]); + } else { + fprintf(bler_fd,"%f;%d;%d;%d;%d;%f;%u;%u;%u;%u;%u;%u;%u;%u;%u\n", + SNR, + mcs1,mcs2, + eNB->dlsch[0][0]->harq_processes[0]->TBS, + eNB->dlsch[0][1]->harq_processes[0]->TBS, + rate, + errs[0], + round_trials[0], + errs[1], + round_trials[1], + errs[2], + round_trials[2], + errs[3], + round_trials[3], + dci_errors[0]); + } + + if(abstx) { //ABSTRACTION + blerr[0] = (double)errs[0]/(round_trials[0]); + + if(num_rounds>1) { + blerr[1] = (double)errs[1]/(round_trials[1]); + blerr[2] = (double)errs[2]/(round_trials[2]); + blerr[3] = (double)errs[3]/(round_trials[3]); + fprintf(csv_fd,"%e,%e,%e,%e;\n",blerr[0],blerr[1],blerr[2],blerr[3]); + } else { + fprintf(csv_fd,"%e;\n",blerr[0]); + } + } //ABStraction + + if ( (test_perf != 0) && (100 * effective_rate > test_perf )) { + //fprintf(time_meas_fd,"SNR; MCS; TBS; rate; err0; trials0; err1; trials1; err2; trials2; err3; trials3; dci_err\n"); + if ((transmission_mode != 3) && (transmission_mode != 4)) { + fprintf(time_meas_fd,"%f;%d;%d;%f;%u;%u;%u;%u;%u;%u;%u;%u;%u;", + SNR, + mcs1, + eNB->dlsch[0][0]->harq_processes[0]->TBS, + rate, + errs[0], + round_trials[0], + errs[1], + round_trials[1], + errs[2], + round_trials[2], + errs[3], + round_trials[3], + dci_errors[0]); + //fprintf(time_meas_fd,"SNR; MCS; TBS; rate; DL_DECOD_ITER; err0; trials0; err1; trials1; err2; trials2; err3; trials3; PE; dci_err;PE;ND;\n"); + fprintf(time_meas_fd,"%f;%d;%d;%f; %2.1f%%;%f;%f;%u;%u;%u;%u;%u;%u;%u;%u;%e;%e;%e;%e;%u;%u;%e;%f;%f;", + SNR, + mcs1, + eNB->dlsch[0][0]->harq_processes[0]->TBS, + rate*effective_rate, + 100*effective_rate, + rate, + (double)avg_iter/iter_trials, + errs[0], + round_trials[0], + errs[1], + round_trials[1], + errs[2], + round_trials[2], + errs[3], + round_trials[3], + (double)errs[0]/(round_trials[0]), + (double)errs[1]/(round_trials[0]), + (double)errs[2]/(round_trials[0]), + (double)errs[3]/(round_trials[0]), + dci_errors[0], + round_trials[0], + (double)dci_errors[0]/(round_trials[0]), + (1.0*(round_trials[0]-errs[0])+2.0*(round_trials[1]-errs[1])+3.0*(round_trials[2]-errs[2])+4.0*(round_trials[3]-errs[3]))/((double)round_trials[0])/ + (double)eNB->dlsch[0][0]->harq_processes[0]->TBS, + (1.0*(round_trials[0]-errs[0])+2.0*(round_trials[1]-errs[1])+3.0*(round_trials[2]-errs[2])+4.0*(round_trials[3]-errs[3]))/((double)round_trials[0])); + } else { + fprintf(time_meas_fd,"%f;%d;%d;%d;%d;%f;%u;%u;%u;%u;%u;%u;%u;%u;%u;", + SNR, + mcs1,mcs2, + eNB->dlsch[0][0]->harq_processes[0]->TBS, + eNB->dlsch[0][1]->harq_processes[0]->TBS, + rate, + errs[0], + round_trials[0], + errs[1], + round_trials[1], + errs[2], + round_trials[2], + errs[3], + round_trials[3], + dci_errors[0]); + //fprintf(time_meas_fd,"SNR; MCS; TBS; rate; DL_DECOD_ITER; err0; trials0; err1; trials1; err2; trials2; err3; trials3; PE; dci_err;PE;ND;\n"); + fprintf(time_meas_fd,"%f;%d;%d;%d;%d;%f;%2.1f;%f;%f;%u;%u;%u;%u;%u;%u;%u;%u;%e;%e;%e;%e;%u;%u;%e;%f;%f;", + SNR, + mcs1,mcs2, + eNB->dlsch[0][0]->harq_processes[0]->TBS, + eNB->dlsch[0][1]->harq_processes[0]->TBS, + rate*effective_rate, + 100*effective_rate, + rate, + (double)avg_iter/iter_trials, + errs[0], + round_trials[0], + errs[1], + round_trials[1], + errs[2], + round_trials[2], + errs[3], + round_trials[3], + (double)errs[0]/(round_trials[0]), + (double)errs[1]/(round_trials[0]), + (double)errs[2]/(round_trials[0]), + (double)errs[3]/(round_trials[0]), + dci_errors[0], + round_trials[0], + (double)dci_errors[0]/(round_trials[0]), + (1.0*(round_trials[0]-errs[0])+2.0*(round_trials[1]-errs[1])+3.0*(round_trials[2]-errs[2])+4.0*(round_trials[3]-errs[3]))/((double)round_trials[0])/ + (double)eNB->dlsch[0][0]->harq_processes[0]->TBS, + (1.0*(round_trials[0]-errs[0])+2.0*(round_trials[1]-errs[1])+3.0*(round_trials[2]-errs[2])+4.0*(round_trials[3]-errs[3]))/((double)round_trials[0])); + } + + //fprintf(time_meas_fd,"eNB_PROC_TX(%d); OFDM_MOD(%d); DL_MOD(%d); DL_SCR(%d); DL_ENC(%d); UE_PROC_RX(%d); OFDM_DEMOD_CH_EST(%d); RX_PDCCH(%d); CH_COMP_LLR(%d); DL_USCR(%d); DL_DECOD(%d);\n", + fprintf(time_meas_fd,"%d; %d; %d; %d; %d; %d; %d; %d; %d; %d; %d;", + eNB->phy_proc_tx.trials, + eNB->ofdm_mod_stats.trials, + eNB->dlsch_modulation_stats.trials, + eNB->dlsch_scrambling_stats.trials, + eNB->dlsch_encoding_stats.trials, + phy_proc_rx_tot.trials, + UE->ofdm_demod_stats.trials, + UE->dlsch_rx_pdcch_stats.trials, + UE->dlsch_llr_stats.trials, + UE->dlsch_unscrambling_stats.trials, + UE->dlsch_decoding_stats[UE->current_thread_id[subframe]].trials + ); + fprintf(time_meas_fd,"%f;%f;%f;%f;%f;%f;%f;%f;%f;%f;%f;", + get_time_meas_us(&eNB->phy_proc_tx), + get_time_meas_us(&eNB->ofdm_mod_stats), + get_time_meas_us(&eNB->dlsch_modulation_stats), + get_time_meas_us(&eNB->dlsch_scrambling_stats), + get_time_meas_us(&eNB->dlsch_encoding_stats), + get_time_meas_us(&phy_proc_rx_tot), + nsymb*get_time_meas_us(&UE->ofdm_demod_stats), + get_time_meas_us(&UE->dlsch_rx_pdcch_stats), + 3*get_time_meas_us(&UE->dlsch_llr_stats), + get_time_meas_us(&UE->dlsch_unscrambling_stats), + get_time_meas_us(&UE->dlsch_decoding_stats[UE->current_thread_id[subframe]]) + ); + //fprintf(time_meas_fd,"eNB_PROC_TX_STD;eNB_PROC_TX_MAX;eNB_PROC_TX_MIN;eNB_PROC_TX_MED;eNB_PROC_TX_Q1;eNB_PROC_TX_Q3;eNB_PROC_TX_DROPPED;\n"); + fprintf(time_meas_fd,"%f;%f;%f;%f;%f;%f;%d;",squareRoot(&UE->phy_proc_tx), t_tx_max, t_tx_min, median(table_tx), q1(table_tx), q3(table_tx), n_tx_dropped); + //fprintf(time_meas_fd,"IFFT;\n"); + fprintf(time_meas_fd,"%f;%f;%f;%f;", + squareRoot(&eNB->ofdm_mod_stats), + median(table_tx_ifft),q1(table_tx_ifft),q3(table_tx_ifft)); + //fprintf(time_meas_fd,"MOD;\n"); + fprintf(time_meas_fd,"%f;%f;%f;%f;", + squareRoot(&eNB->dlsch_modulation_stats), + median(table_tx_mod), q1(table_tx_mod), q3(table_tx_mod)); + //fprintf(time_meas_fd,"ENC;\n"); + fprintf(time_meas_fd,"%f;%f;%f;%f;", + squareRoot(&eNB->dlsch_encoding_stats), + median(table_tx_enc),q1(table_tx_enc),q3(table_tx_enc)); + //fprintf(time_meas_fd,"eNB_PROC_RX_STD;eNB_PROC_RX_MAX;eNB_PROC_RX_MIN;eNB_PROC_RX_MED;eNB_PROC_RX_Q1;eNB_PROC_RX_Q3;eNB_PROC_RX_DROPPED;\n"); + fprintf(time_meas_fd,"%f;%f;%f;%f;%f;%f;%d;", + squareRoot(&phy_proc_rx_tot), t_rx_max, t_rx_min, + median(table_rx), q1(table_rx), q3(table_rx), n_rx_dropped); + //fprintf(time_meas_fd,"FFT;\n"); + fprintf(time_meas_fd,"%f;%f;%f;%f;", + squareRoot(&UE->ofdm_demod_stats), + median(table_rx_fft), q1(table_rx_fft), q3(table_rx_fft)); + //fprintf(time_meas_fd,"DEMOD;\n"); + fprintf(time_meas_fd,"%f;%f;%f;%f;", + squareRoot(&UE->dlsch_demodulation_stats), + median(table_rx_demod), q1(table_rx_demod), q3(table_rx_demod)); + //fprintf(time_meas_fd,"DEC;\n"); + fprintf(time_meas_fd,"%f;%f;%f;%f\n", + squareRoot(&UE->dlsch_decoding_stats[subframe]), + median(table_rx_dec), q1(table_rx_dec), q3(table_rx_dec)); + printf("[passed] effective rate : %f (%2.1f%%,%f)): log and break \n",rate*effective_rate, 100*effective_rate, rate ); + test_passed = 1; + break; + } else if (test_perf !=0 ) { + printf("[continue] effective rate : %f (%2.1f%%,%f)): increase snr \n",rate*effective_rate, 100*effective_rate, rate); + test_passed = 0; + } + + if (((double)errs[0]/(round_trials[0]))<(10.0/n_frames)) + break; + }// SNR + } //ch_realization + + fclose(bler_fd); + + if (test_perf !=0) + fclose (time_meas_fd); + + //fprintf(tikz_fd,"};\n"); + //fclose(tikz_fd); + + if (input_trch_file==1) + fclose(input_trch_fd); + + if (input_file==1) + fclose(input_fd); + + if(abstx) { // ABSTRACTION + fprintf(csv_fd,"];"); + fclose(csv_fd); + } + + if (uncoded_ber_bit) + free(uncoded_ber_bit); + + uncoded_ber_bit = NULL; + printf("Freeing dlsch structures\n"); + + for (i=0; i<2; i++) { + printf("eNB %d\n",i); + free_eNB_dlsch(eNB->dlsch[0][i]); + printf("UE %d\n",i); + free_ue_dlsch(UE->dlsch[UE->current_thread_id[subframe]][0][i]); + } + + if (test_perf && !test_passed) + return(-1); + else + return(0); +} +/* temporary dummy implem of get_softmodem_optmask, till basic simulators implemented as device */ +uint64_t get_softmodem_optmask(void) { + return 0; +} diff --git a/openair1/SIMULATION/LTE_PHY/ulsim.c b/openair1/SIMULATION/LTE_PHY/ulsim.c index c950d6f4da..37ce3a65d6 100644 --- a/openair1/SIMULATION/LTE_PHY/ulsim.c +++ b/openair1/SIMULATION/LTE_PHY/ulsim.c @@ -729,6 +729,7 @@ int main(int argc, char **argv) { channel_model, N_RB2sampling_rate(eNB->frame_parms.N_RB_UL), N_RB2channel_bandwidth(eNB->frame_parms.N_RB_UL), + 30e-9, forgetting_factor, delay, 0); @@ -1086,7 +1087,7 @@ int main(int argc, char **argv) { if (awgn_flag == 0) { if (UE2eNB->max_Doppler == 0) { multipath_channel(UE2eNB,s_re,s_im,r_re,r_im, - eNB->frame_parms.samples_per_tti,hold_channel); + eNB->frame_parms.samples_per_tti,hold_channel,0); } else { multipath_tv_channel(UE2eNB,s_re,s_im,r_re,r_im, 2*eNB->frame_parms.samples_per_tti,hold_channel); diff --git a/openair1/SIMULATION/NR_PHY/dlschsim.c b/openair1/SIMULATION/NR_PHY/dlschsim.c index 80b26c0bbd..957495181a 100644 --- a/openair1/SIMULATION/NR_PHY/dlschsim.c +++ b/openair1/SIMULATION/NR_PHY/dlschsim.c @@ -37,10 +37,9 @@ #include "PHY/INIT/phy_init.h" #include "PHY/MODULATION/modulation_eNB.h" #include "PHY/MODULATION/modulation_UE.h" -#include "PHY/NR_REFSIG/nr_mod_table.h" #include "PHY/NR_REFSIG/refsig_defs_ue.h" #include "PHY/NR_TRANSPORT/nr_dlsch.h" -#include "PHY/NR_TRANSPORT/nr_transport.h" +#include "PHY/NR_TRANSPORT/nr_transport_proto.h" #include "PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h" #include "SCHED_NR/sched_nr.h" #include "openair1/SIMULATION/TOOLS/sim.h" @@ -59,13 +58,16 @@ double cpuf; uint8_t nfapi_mode = 0; uint16_t NB_UE_INST = 1; - +uint8_t const nr_rv_round_map[4] = {0, 2, 1, 3}; +uint8_t const nr_rv_round_map_ue[4] = {0, 2, 1, 3}; // needed for some functions PHY_VARS_NR_UE *PHY_vars_UE_g[1][1] = { { NULL } }; uint16_t n_rnti = 0x1234; openair0_config_t openair0_cfg[MAX_CARDS]; +void init_downlink_harq_status(NR_DL_UE_HARQ_t *dl_harq) {} + int main(int argc, char **argv) { char c; @@ -112,7 +114,7 @@ int main(int argc, char **argv) uint16_t nb_rb = 50; uint8_t Imcs = 9; uint8_t mcs_table = 0; - + double DS_TDL = .03; cpuf = get_cpu_freq_GHz(); if (load_configmodule(argc, argv, CONFIG_ENABLECMDLINEONLY) == 0) { @@ -335,6 +337,7 @@ int main(int argc, char **argv) gNB2UE = new_channel_desc_scm(n_tx, n_rx, channel_model, 61.44e6, //N_RB2sampling_rate(N_RB_DL), 40e6, //N_RB2channel_bandwidth(N_RB_DL), + DS_TDL, 0, 0, 0); if (gNB2UE == NULL) { @@ -428,7 +431,7 @@ int main(int argc, char **argv) uint8_t is_crnti = 0, llr8_flag = 0; unsigned int TBS = 8424; unsigned int available_bits; - uint8_t nb_re_dmrs = 6; + uint8_t nb_re_dmrs = 6; // No data in dmrs symbol uint16_t length_dmrs = 1; unsigned char mod_order; uint16_t rate; @@ -442,7 +445,7 @@ int main(int argc, char **argv) mod_order = nr_get_Qm_dl(Imcs, mcs_table); rate = nr_get_code_rate_dl(Imcs, mcs_table); available_bits = nr_get_G(nb_rb, nb_symb_sch, nb_re_dmrs, length_dmrs, mod_order, 1); - TBS = nr_compute_tbs(mod_order,rate, nb_rb, nb_symb_sch, nb_re_dmrs*length_dmrs, 0, Nl); + TBS = nr_compute_tbs(mod_order,rate, nb_rb, nb_symb_sch, nb_re_dmrs*length_dmrs, 0, 0, Nl); printf("available bits %u TBS %u mod_order %d\n", available_bits, TBS, mod_order); //dlsch->harq_ids[subframe]= 0; rel15->rbSize = nb_rb; @@ -455,6 +458,7 @@ int main(int argc, char **argv) rel15->dmrsConfigType = NFAPI_NR_DMRS_TYPE1; rel15->dlDmrsSymbPos = 4; rel15->mcsIndex[0] = Imcs; + rel15->numDmrsCdmGrpsNoData = 1; double *modulated_input = malloc16(sizeof(double) * 16 * 68 * 384); // [hna] 16 segments, 68*Zc short *channel_output_fixed = malloc16(sizeof(short) * 16 * 68 * 384); short *channel_output_uncoded = malloc16(sizeof(unsigned short) * 16 * 68 * 384); @@ -475,8 +479,9 @@ int main(int argc, char **argv) harq_process->Qm = mod_order; harq_process->rvidx = rvidx; harq_process->R = rate; - harq_process->dmrsConfigType = 1; + harq_process->dmrsConfigType = NFAPI_NR_DMRS_TYPE1; harq_process->dlDmrsSymbPos = 4; + harq_process->n_dmrs_cdm_groups = 1; printf("harq process ue mcs = %d Qm = %d, symb %d\n", harq_process->mcs, harq_process->Qm, nb_symb_sch); unsigned char *test_input; test_input = (unsigned char *) malloc16(sizeof(unsigned char) * TBS / 8); @@ -496,7 +501,7 @@ int main(int argc, char **argv) //printf("crc32: [0]->0x%08x\n",crc24c(test_input, 32)); // generate signal if (input_fd == NULL) { - nr_dlsch_encoding(test_input, frame, slot, dlsch, frame_parms,NULL,NULL,NULL,NULL,NULL,NULL,NULL); + nr_dlsch_encoding(gNB, test_input, frame, slot, dlsch, frame_parms,NULL,NULL,NULL,NULL,NULL,NULL,NULL); } for (SNR = snr0; SNR < snr1; SNR += snr_step) { diff --git a/openair1/SIMULATION/NR_PHY/dlsim.c b/openair1/SIMULATION/NR_PHY/dlsim.c index 0b51901b05..38400cab51 100644 --- a/openair1/SIMULATION/NR_PHY/dlsim.c +++ b/openair1/SIMULATION/NR_PHY/dlsim.c @@ -28,11 +28,9 @@ #include "common/ran_context.h" #include "common/config/config_userapi.h" #include "common/utils/LOG/log.h" -#include "openair2/LAYER2/NR_MAC_gNB/mac_proto.h" -#include "openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h" -#include "openair2/LAYER2/NR_MAC_UE/mac_defs.h" -#include "openair2/LAYER2/NR_MAC_UE/mac_extern.h" -#include "openair2/LAYER2/NR_MAC_UE/mac_proto.h" +#include "LAYER2/NR_MAC_gNB/nr_mac_gNB.h" +#include "LAYER2/NR_MAC_UE/mac_defs.h" +#include "LAYER2/NR_MAC_UE/mac_extern.h" #include "PHY/defs_gNB.h" #include "PHY/defs_nr_common.h" #include "PHY/defs_nr_UE.h" @@ -40,10 +38,11 @@ #include "PHY/types.h" #include "PHY/INIT/phy_init.h" #include "PHY/MODULATION/modulation_eNB.h" +#include "PHY/MODULATION/nr_modulation.h" #include "PHY/MODULATION/modulation_UE.h" -#include "PHY/NR_REFSIG/nr_mod_table.h" #include "PHY/NR_REFSIG/refsig_defs_ue.h" -#include "PHY/NR_TRANSPORT/nr_transport.h" +#include "PHY/NR_TRANSPORT/nr_dlsch.h" +#include "PHY/NR_TRANSPORT/nr_transport_proto.h" #include "PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h" #include "SCHED_NR/fapi_nr_l1.h" #include "SCHED_NR/sched_nr.h" @@ -55,7 +54,7 @@ #include "LAYER2/NR_MAC_UE/mac_proto.h" //#include "LAYER2/NR_MAC_gNB/mac_proto.h" //#include "openair2/LAYER2/NR_MAC_UE/mac_proto.h" -#include "openair2/LAYER2/NR_MAC_gNB/mac_proto.h" +#include "LAYER2/NR_MAC_gNB/mac_proto.h" #include "NR_asn_constant.h" #include "RRC/NR/MESSAGES/asn1_msg.h" #include "openair1/SIMULATION/RF/rf.h" @@ -125,7 +124,7 @@ int generate_dlsch_header(unsigned char *mac_header, unsigned char *ue_cont_res_id, unsigned char short_padding, unsigned short post_padding){return 0;} -void nr_ip_over_LTE_DRB_preconfiguration(void){} +void nr_DRB_preconfiguration(void){} // needed for some functions openair0_config_t openair0_cfg[MAX_CARDS]; @@ -139,6 +138,12 @@ int main(int argc, char **argv) int i,aa;//,l; double sigma2, sigma2_dB=10, SNR, snr0=-2.0, snr1=2.0; uint8_t snr1set=0; + float roundStats[50]; + float effRate; + //float psnr; + float eff_tp_check = 0.7; + uint8_t snrRun; + uint32_t TBS; int **txdata; double **s_re,**s_im,**r_re,**r_im; //double iqim = 0.0; @@ -154,6 +159,8 @@ int main(int argc, char **argv) int trial, n_trials = 1, n_errors = 0, n_false_positive = 0; //int n_errors2, n_alamouti; uint8_t transmission_mode = 1,n_tx=1,n_rx=1; + uint8_t round; + uint8_t num_rounds = 4; channel_desc_t *gNB2UE; //uint32_t nsymb,tx_lev,tx_lev1 = 0,tx_lev2 = 0; @@ -175,7 +182,7 @@ int main(int argc, char **argv) //unsigned char frame_type = 0; - int frame=0,slot=1; + int frame=1,slot=1; int frame_length_complex_samples; int frame_length_complex_samples_no_prefix; NR_DL_FRAME_PARMS *frame_parms; @@ -186,7 +193,8 @@ int main(int argc, char **argv) int cyclic_prefix_type = NFAPI_CP_NORMAL; int run_initial_sync=0; int do_pdcch_flag=1; - + int pusch_tgt_snrx10 = 200; + int pucch_tgt_snrx10 = 200; int loglvl=OAILOG_INFO; float target_error_rate = 0.01; @@ -205,7 +213,7 @@ int main(int argc, char **argv) FILE *scg_fd=NULL; - while ((c = getopt (argc, argv, "f:hA:pf:g:i:j:n:s:S:t:x:y:z:M:N:F:GR:dPIL:Ea:b:e:m:")) != -1) { + while ((c = getopt (argc, argv, "f:hA:pf:g:i:j:n:s:S:t:x:y:z:M:N:F:GR:dPIL:Ea:b:e:m:w")) != -1) { switch (c) { case 'f': scg_fd = fopen(optarg,"r"); @@ -384,6 +392,14 @@ int main(int argc, char **argv) mu = atoi(optarg); break; + case 't': + eff_tp_check = (float)atoi(optarg)/100; + break; + + case 'w': + output_fd = fopen("txdata.dat", "w+"); + break; + default: case 'h': printf("%s -h(elp) -p(extended_prefix) -N cell_id -f output_filename -F input_filename -g channel_model -n n_frames -t Delayspread -s snr0 -S snr1 -x transmission_mode -y TXant -z RXant -i Intefrence0 -j Interference1 -A interpolation_file -C(alibration offset dB) -N CellId\n", @@ -413,7 +429,9 @@ int main(int argc, char **argv) printf("-c Start symbol for PDSCH (fixed for now)\n"); printf("-j Number of symbols for PDSCH (fixed for now)\n"); printf("-e MSC index\n"); + printf("-t Acceptable effective throughput (in percentage)\n"); printf("-P Print DLSCH performances\n"); + printf("-w Write txdata to binary file (one frame)\n"); exit (-1); break; } @@ -513,9 +531,9 @@ int main(int argc, char **argv) AssertFatal((gNB->if_inst = NR_IF_Module_init(0))!=NULL,"Cannot register interface"); gNB->if_inst->NR_PHY_config_req = nr_phy_config_request; // common configuration - rrc_mac_config_req_gNB(0,0,1,scc,0,0,NULL); + rrc_mac_config_req_gNB(0,0,1,pusch_tgt_snrx10,pucch_tgt_snrx10,scc,0,0,NULL); // UE dedicated configuration - rrc_mac_config_req_gNB(0,0,1,NULL,1,secondaryCellGroup->spCellConfig->reconfigurationWithSync->newUE_Identity,secondaryCellGroup); + rrc_mac_config_req_gNB(0,0,1,pusch_tgt_snrx10,pucch_tgt_snrx10,NULL,1,secondaryCellGroup->spCellConfig->reconfigurationWithSync->newUE_Identity,secondaryCellGroup); phy_init_nr_gNB(gNB,0,0); N_RB_DL = gNB->frame_parms.N_RB_DL; // stub to configure frame_parms @@ -556,6 +574,7 @@ int main(int argc, char **argv) channel_model, fs, bw, + 30e-9, 0, 0, 0); @@ -658,7 +677,7 @@ int main(int argc, char **argv) rrc.carrier.MIB = (uint8_t*) malloc(4); rrc.carrier.sizeof_MIB = do_MIB_NR(&rrc,0); - nr_rrc_mac_config_req_ue(0,0,0,rrc.carrier.mib.message.choice.mib,secondaryCellGroup->spCellConfig); + nr_rrc_mac_config_req_ue(0,0,0,rrc.carrier.mib.message.choice.mib,secondaryCellGroup); nr_dcireq_t dcireq; @@ -679,6 +698,9 @@ int main(int argc, char **argv) nr_ue_phy_config_request(&UE_mac->phy_config); + NR_UE_list_t *UE_list = &RC.nrmac[0]->UE_list; + //NR_COMMON_channels_t *cc = RC.nrmac[0]->common_channels; + snrRun = 0; for (SNR = snr0; SNR < snr1; SNR += .2) { @@ -695,105 +717,22 @@ int main(int argc, char **argv) reset_meas(&gNB->tparity); reset_meas(&gNB->toutput); + clear_pdsch_stats(gNB); + n_errors = 0; + effRate = 0; //n_errors2 = 0; //n_alamouti = 0; errors_scrambling=0; n_false_positive = 0; + if (n_trials== 1) num_rounds = 1; + for (trial = 0; trial < n_trials; trial++) { errors_bit = 0; //multipath channel //multipath_channel(gNB2UE,s_re,s_im,r_re,r_im,frame_length_complex_samples,0); - memset(RC.nrmac[0]->cce_list[1][0],0,MAX_NUM_CCE*sizeof(int)); - clear_nr_nfapi_information(RC.nrmac[0], 0, frame, slot); - if (css_flag == 0) nr_schedule_uss_dlsch_phytest(0,frame,slot,&pucch_sched,&dlsch_config); - else nr_schedule_css_dlsch_phytest(0,frame,slot); - - - Sched_INFO.module_id = 0; - Sched_INFO.CC_id = 0; - Sched_INFO.frame = frame; - Sched_INFO.slot = slot; - Sched_INFO.DL_req = &gNB_mac->DL_req[0]; - Sched_INFO.UL_tti_req = &gNB_mac->UL_tti_req[0]; - Sched_INFO.UL_dci_req = NULL; - Sched_INFO.TX_req = &gNB_mac->TX_req[0]; - nr_schedule_response(&Sched_INFO); - - if (run_initial_sync) - nr_common_signal_procedures(gNB,frame,slot); - else - phy_procedures_gNB_TX(gNB,frame,slot,0); - - int txdataF_offset = (slot%2) * frame_parms->samples_per_slot_wCP; - - if (n_trials==1) { - LOG_M("txsigF0.m","txsF0", gNB->common_vars.txdataF[0],frame_length_complex_samples_no_prefix,1,1); - if (gNB->frame_parms.nb_antennas_tx>1) - LOG_M("txsigF1.m","txsF1", gNB->common_vars.txdataF[1],frame_length_complex_samples_no_prefix,1,1); - } - int tx_offset = frame_parms->get_samples_slot_timestamp(slot,frame_parms,0); - if (n_trials==1) printf("samples_per_slot_wCP = %d\n", frame_parms->samples_per_slot_wCP); - - //TODO: loop over slots - for (aa=0; aaframe_parms.nb_antennas_tx; aa++) { - - if (cyclic_prefix_type == 1) { - PHY_ofdm_mod(&gNB->common_vars.txdataF[aa][txdataF_offset], - &txdata[aa][tx_offset], - frame_parms->ofdm_symbol_size, - 12, - frame_parms->nb_prefix_samples, - CYCLIC_PREFIX); - } else { - nr_normal_prefix_mod(&gNB->common_vars.txdataF[aa][txdataF_offset], - &txdata[aa][tx_offset], - 14, - frame_parms); - } - } - - if (n_trials==1) { - LOG_M("txsig0.m","txs0", txdata[0],frame_length_complex_samples,1,1); - if (gNB->frame_parms.nb_antennas_tx>1) - LOG_M("txsig1.m","txs1", txdata[1],frame_length_complex_samples,1,1); - } - if (output_fd) - fwrite(txdata[0],sizeof(int32_t),frame_length_complex_samples,output_fd); - - int txlev = signal_energy(&txdata[0][frame_parms->get_samples_slot_timestamp(slot,frame_parms,0)+5*frame_parms->ofdm_symbol_size + 4*frame_parms->nb_prefix_samples + frame_parms->nb_prefix_samples0], - frame_parms->ofdm_symbol_size + frame_parms->nb_prefix_samples); - - // if (n_trials==1) printf("txlev %d (%f)\n",txlev,10*log10((double)txlev)); - - for (i=(frame_parms->get_samples_slot_timestamp(slot,frame_parms,0)); - i<(frame_parms->get_samples_slot_timestamp(slot+1,frame_parms,0)); - i++) { - for (aa=0; aanb_antennas_tx; aa++) { - r_re[aa][i] = ((double)(((short *)txdata[aa]))[(i<<1)]); - r_im[aa][i] = ((double)(((short *)txdata[aa]))[(i<<1)+1]); - } - } - - NR_gNB_DLSCH_t *gNB_dlsch = gNB->dlsch[0][0]; - nfapi_nr_dl_tti_pdsch_pdu_rel15_t rel15 = gNB_dlsch->harq_processes[0]->pdsch_pdu.pdsch_pdu_rel15; - - //AWGN - sigma2_dB = 10 * log10((double)txlev * ((double)UE->frame_parms.ofdm_symbol_size/(12*rel15.rbSize))) - SNR; - sigma2 = pow(10, sigma2_dB/10); - if (n_trials==1) printf("sigma2 %f (%f dB), txlev %f (factor %f)\n",sigma2,sigma2_dB,10*log10((double)txlev),(double)(double)UE->frame_parms.ofdm_symbol_size/(12*rel15.rbSize)); - - for (i=frame_parms->get_samples_slot_timestamp(slot,frame_parms,0); - iget_samples_slot_timestamp(slot+1,frame_parms,0); - i++) { - for (aa=0; aanb_antennas_rx; aa++) { - ((short*) UE->common_vars.rxdata[aa])[2*i] = (short) ((r_re[aa][i] + sqrt(sigma2/2)*gaussdouble(0.0,1.0))); - ((short*) UE->common_vars.rxdata[aa])[2*i+1] = (short) ((r_im[aa][i] + sqrt(sigma2/2)*gaussdouble(0.0,1.0))); - } - } - UE->rx_offset=0; UE_proc.frame_rx = frame; UE_proc.nr_tti_rx= slot; @@ -801,43 +740,175 @@ int main(int argc, char **argv) dcireq.frame = frame; dcireq.slot = slot; + + NR_UE_DLSCH_t *dlsch0 = UE->dlsch[UE->current_thread_id[UE_proc.nr_tti_rx]][0][0]; + + int harq_pid = slot; + NR_DL_UE_HARQ_t *UE_harq_process = dlsch0->harq_processes[harq_pid]; + + NR_gNB_DLSCH_t *gNB_dlsch = gNB->dlsch[0][0]; + nfapi_nr_dl_tti_pdsch_pdu_rel15_t *rel15 = &gNB_dlsch->harq_processes[slot]->pdsch_pdu.pdsch_pdu_rel15; - nr_ue_dcireq(&dcireq); //to be replaced with function pointer later - nr_ue_scheduled_response(&scheduled_response); + UE_harq_process->harq_ack.ack = 0; + round = 0; + UE_harq_process->round = round; + UE_harq_process->first_tx = 1; + + while ((roundharq_ack.ack==0)) { + memset(RC.nrmac[0]->cce_list[1][0],0,MAX_NUM_CCE*sizeof(int)); + memset(RC.nrmac[0]->cce_list[1][1],0,MAX_NUM_CCE*sizeof(int)); + clear_nr_nfapi_information(RC.nrmac[0], 0, frame, slot); + + UE_list->UE_sched_ctrl[0].harq_processes[harq_pid].ndi = !(trial&1); + + + UE_list->UE_sched_ctrl[0].harq_processes[harq_pid].round = round; + UE_list->UE_sched_ctrl[0].current_harq_pid = harq_pid; + gNB->dlsch[0][0]->harq_processes[harq_pid]->round = round; - phy_procedures_nrUE_RX(UE, - &UE_proc, - 0, - do_pdcch_flag, - normal_txrx); - - if (UE->dlsch[UE->current_thread_id[slot]][0][0]->last_iteration_cnt >= - UE->dlsch[UE->current_thread_id[slot]][0][0]->max_ldpc_iterations+1) - n_errors++; + if (css_flag == 0) nr_schedule_uss_dlsch_phytest(0,frame,slot,&pucch_sched,&dlsch_config); + else nr_schedule_css_dlsch_phytest(0,frame,slot); + Sched_INFO.module_id = 0; + Sched_INFO.CC_id = 0; + Sched_INFO.frame = frame; + Sched_INFO.slot = slot; + Sched_INFO.DL_req = &gNB_mac->DL_req[0]; + Sched_INFO.UL_tti_req = &gNB_mac->UL_tti_req[0]; + Sched_INFO.UL_dci_req = NULL; + Sched_INFO.TX_req = &gNB_mac->TX_req[0]; + nr_schedule_response(&Sched_INFO); + + if (run_initial_sync) + nr_common_signal_procedures(gNB,frame,slot); + else + phy_procedures_gNB_TX(gNB,frame,slot,0); + + int txdataF_offset = (slot%2) * frame_parms->samples_per_slot_wCP; + + if (n_trials==1) { + LOG_M("txsigF0.m","txsF0", &gNB->common_vars.txdataF[0][txdataF_offset],frame_parms->samples_per_slot_wCP,1,1); + if (gNB->frame_parms.nb_antennas_tx>1) + LOG_M("txsigF1.m","txsF1", &gNB->common_vars.txdataF[1][txdataF_offset],frame_parms->samples_per_slot_wCP,1,1); + } + int tx_offset = frame_parms->get_samples_slot_timestamp(slot,frame_parms,0); + if (n_trials==1) printf("tx_offset %d, txdataF_offset %d \n", tx_offset,txdataF_offset); + + //TODO: loop over slots + for (aa=0; aaframe_parms.nb_antennas_tx; aa++) { + + if (cyclic_prefix_type == 1) { + PHY_ofdm_mod(&gNB->common_vars.txdataF[aa][txdataF_offset], + &txdata[aa][tx_offset], + frame_parms->ofdm_symbol_size, + 12, + frame_parms->nb_prefix_samples, + CYCLIC_PREFIX); + } else {/* + nr_normal_prefix_mod(&gNB->common_vars.txdataF[aa][txdataF_offset], + &txdata[aa][tx_offset], + 14, + frame_parms); + */ + PHY_ofdm_mod(&gNB->common_vars.txdataF[aa][txdataF_offset], + (int*)&txdata[aa][tx_offset], + frame_parms->ofdm_symbol_size, + 1, + frame_parms->nb_prefix_samples0, + CYCLIC_PREFIX); + + apply_nr_rotation(frame_parms, + (int16_t*)&txdata[aa][tx_offset], + slot, + 0, + 1, + frame_parms->ofdm_symbol_size+frame_parms->nb_prefix_samples0); + PHY_ofdm_mod(&gNB->common_vars.txdataF[aa][txdataF_offset+frame_parms->ofdm_symbol_size], + (int*)&txdata[aa][tx_offset+frame_parms->nb_prefix_samples0+frame_parms->ofdm_symbol_size], + frame_parms->ofdm_symbol_size, + 13, + frame_parms->nb_prefix_samples, + CYCLIC_PREFIX); + apply_nr_rotation(frame_parms, + (int16_t*)&txdata[aa][tx_offset+frame_parms->nb_prefix_samples0+frame_parms->ofdm_symbol_size], + slot, + 1, + 13, + frame_parms->ofdm_symbol_size+frame_parms->nb_prefix_samples); + + } + } + + if (n_trials==1) { + LOG_M("txsig0.m","txs0", &txdata[0][tx_offset],frame_parms->get_samples_slot_timestamp(slot,frame_parms,0),1,1); + if (gNB->frame_parms.nb_antennas_tx>1) + LOG_M("txsig1.m","txs1", &txdata[1][tx_offset],frame_parms->get_samples_slot_timestamp(slot,frame_parms,0),1,1); + } + if (output_fd) { + printf("writing txdata to binary file\n"); + fwrite(txdata[0],sizeof(int32_t),frame_length_complex_samples,output_fd); + } + + int txlev = signal_energy(&txdata[0][frame_parms->get_samples_slot_timestamp(slot,frame_parms,0)+5*frame_parms->ofdm_symbol_size + 4*frame_parms->nb_prefix_samples + frame_parms->nb_prefix_samples0], frame_parms->ofdm_symbol_size + frame_parms->nb_prefix_samples); + + // if (n_trials==1) printf("txlev %d (%f)\n",txlev,10*log10((double)txlev)); + + for (i=(frame_parms->get_samples_slot_timestamp(slot,frame_parms,0)); + i<(frame_parms->get_samples_slot_timestamp(slot+1,frame_parms,0)); + i++) { + + for (aa=0; aanb_antennas_tx; aa++) { + r_re[aa][i] = ((double)(((short *)txdata[aa]))[(i<<1)]); + r_im[aa][i] = ((double)(((short *)txdata[aa]))[(i<<1)+1]); + } + } + + //AWGN + sigma2_dB = 10 * log10((double)txlev * ((double)UE->frame_parms.ofdm_symbol_size/(12*rel15->rbSize))) - SNR; + sigma2 = pow(10, sigma2_dB/10); + if (n_trials==1) printf("sigma2 %f (%f dB), txlev %f (factor %f)\n",sigma2,sigma2_dB,10*log10((double)txlev),(double)(double)UE->frame_parms.ofdm_symbol_size/(12*rel15->rbSize)); + + for (i=frame_parms->get_samples_slot_timestamp(slot,frame_parms,0); + iget_samples_slot_timestamp(slot+1,frame_parms,0); + i++) { + + for (aa=0; aanb_antennas_rx; aa++) { + ((short*) UE->common_vars.rxdata[aa])[2*i] = (short) ((r_re[aa][i] + sqrt(sigma2/2)*gaussdouble(0.0,1.0))); + ((short*) UE->common_vars.rxdata[aa])[2*i+1] = (short) ((r_im[aa][i] + sqrt(sigma2/2)*gaussdouble(0.0,1.0))); + } + } + + nr_ue_dcireq(&dcireq); //to be replaced with function pointer later + nr_ue_scheduled_response(&scheduled_response); + + phy_procedures_nrUE_RX(UE, + &UE_proc, + 0, + do_pdcch_flag, + normal_txrx); + + //printf("dlsim round %d ends\n",round); + round++; + } // round //---------------------------------------------------------- //---------------------- count errors ---------------------- //---------------------------------------------------------- - - - NR_UE_DLSCH_t *dlsch0 = UE->dlsch[UE->current_thread_id[UE_proc.nr_tti_rx]][0][0]; - - int harq_pid = dlsch0->current_harq_pid; - NR_DL_UE_HARQ_t *UE_harq_process = dlsch0->harq_processes[harq_pid]; - + if (UE->dlsch[UE->current_thread_id[slot]][0][0]->last_iteration_cnt >= + UE->dlsch[UE->current_thread_id[slot]][0][0]->max_ldpc_iterations+1) + n_errors++; + NR_UE_PDSCH **pdsch_vars = UE->pdsch_vars[UE->current_thread_id[UE_proc.nr_tti_rx]]; int16_t *UE_llr = pdsch_vars[0]->llr[0]; - - uint32_t TBS = rel15.TBSize[0]; + TBS = UE_harq_process->TBS;//rel15->TBSize[0]; uint16_t length_dmrs = 1; - uint16_t nb_rb = rel15.rbSize; - uint8_t nb_re_dmrs = rel15.dmrsConfigType == NFAPI_NR_DMRS_TYPE1 ? 6 : 4; - uint8_t mod_order = rel15.qamModOrder[0]; - uint8_t nb_symb_sch = rel15.NrOfSymbols; + uint16_t nb_rb = rel15->rbSize; + uint8_t nb_re_dmrs = rel15->dmrsConfigType == NFAPI_NR_DMRS_TYPE1 ? 6 : 4; + uint8_t mod_order = rel15->qamModOrder[0]; + uint8_t nb_symb_sch = rel15->NrOfSymbols; - available_bits = nr_get_G(nb_rb, nb_symb_sch, nb_re_dmrs, length_dmrs, mod_order, rel15.nrOfLayers); + available_bits = nr_get_G(nb_rb, nb_symb_sch, nb_re_dmrs, length_dmrs, mod_order, rel15->nrOfLayers); for (i = 0; i < available_bits; i++) { @@ -877,32 +948,21 @@ int main(int argc, char **argv) if (n_trials == 1) printf("errors_bit = %u (trial %d)\n", errors_bit, trial); } - + roundStats[snrRun]+=((float)round); + if (UE_harq_process->harq_ack.ack==1) effRate += ((float)TBS)/round; } // noise trials + roundStats[snrRun]/=((float)n_trials); + effRate /= n_trials; printf("*****************************************\n"); printf("SNR %f, (false positive %f)\n", SNR, (float) n_errors / (float) n_trials); printf("*****************************************\n"); printf("\n"); - printf("SNR %f : n_errors (negative CRC) = %d/%d, Channel BER %e\n", SNR, n_errors, n_trials,(double)errors_scrambling/available_bits/n_trials); + dump_pdsch_stats(gNB); + printf("SNR %f : n_errors (negative CRC) = %d/%d, Avg round %.2f, Channel BER %e, Eff Rate %.4f bits/slot, Eff Throughput %.2f, TBS %d bits/slot\n", SNR, n_errors, n_trials,roundStats[snrRun],(double)errors_scrambling/available_bits/n_trials,effRate,effRate/TBS*100,TBS); printf("\n"); - if (n_trials == 1) { - - LOG_M("rxsig0.m","rxs0", UE->common_vars.rxdata[0], frame_length_complex_samples, 1, 1); - if (UE->frame_parms.nb_antennas_rx>1) - LOG_M("rxsig1.m","rxs1", UE->common_vars.rxdata[1], frame_length_complex_samples, 1, 1); - LOG_M("chestF0.m","chF0",UE->pdsch_vars[0][0]->dl_ch_estimates_ext,N_RB_DL*12*14,1,1); - write_output("rxF_comp.m","rxFc",&UE->pdsch_vars[0][0]->rxdataF_comp0[0][0],N_RB_DL*12*14,1,1); - break; - } - - if ((float)n_errors/(float)n_trials <= target_error_rate) { - printf("PDSCH test OK\n"); - break; - } - if (print_perf==1) { printf("\ngNB TX function statistics (per %d us slot, NPRB %d, mcs %d, TBS %d, Kr %d (Zc %d))\n", 1000>>*scc->ssbSubcarrierSpacing,dlsch_config.rbSize,dlsch_config.mcsIndex[0], @@ -953,8 +1013,36 @@ int main(int argc, char **argv) printStatIndent2(&UE->dlsch_tc_intl2_stats,"intl2+HardDecode+CRC"); */ } + + if (n_trials == 1) { + + LOG_M("rxsig0.m","rxs0", UE->common_vars.rxdata[0], frame_length_complex_samples, 1, 1); + if (UE->frame_parms.nb_antennas_rx>1) + LOG_M("rxsig1.m","rxs1", UE->common_vars.rxdata[1], frame_length_complex_samples, 1, 1); + LOG_M("chestF0.m","chF0",UE->pdsch_vars[0][0]->dl_ch_estimates_ext,N_RB_DL*12*14,1,1); + write_output("rxF_comp.m","rxFc",&UE->pdsch_vars[0][0]->rxdataF_comp0[0][0],N_RB_DL*12*14,1,1); + LOG_M("rxF_llr.m","rxFllr",UE->pdsch_vars[UE->current_thread_id[UE_proc.nr_tti_rx]][0]->llr[0],available_bits,1,0); + break; + } + + //if ((float)n_errors/(float)n_trials <= target_error_rate) { + if (effRate >= (eff_tp_check*TBS)) { + printf("PDSCH test OK\n"); + break; + } + + snrRun++; } // NSR + /*if (n_trials>1) { + printf("HARQ stats:\nSNR\tRounds\n"); + psnr = snr0; + for (uint8_t i=0; iRA_BeamFailureRecoveryConfig; // todo + + int messagePowerOffsetGroupB = 0, messageSizeGroupA, PLThreshold, sizeOfRA_PreamblesGroupA, numberOfRA_Preambles, i, deltaPreamble_Msg3 = 0; + uint8_t noGroupB = 0, s_id, f_id, ul_carrier_id, msg1_FDM, prach_ConfigIndex, SFN_nbr, Msg3_size; + + // NR_RSRP_Range_t rsrp_ThresholdSSB; // todo + + /////////////////////////////////////////////////////////// + //////////* UE Random Access Resource Selection *////////// + /////////////////////////////////////////////////////////// + + // todo: + // - switch initialisation cases + // -- RA initiated by beam failure recovery operation (subclause 5.17 TS 38.321) + // --- SSB selection, set prach_resources->ra_PreambleIndex + // -- RA initiated by PDCCH: ra_preamble_index provided by PDCCH && ra_PreambleIndex != 0b000000 + // --- set PREAMBLE_INDEX to ra_preamble_index + // --- select the SSB signalled by PDCCH + // -- RA initiated for SI request: + // --- SSB selection, set prach_resources->ra_PreambleIndex + + // if (rach_ConfigDedicated) { // This is for network controlled Mobility + // // operation for contention-free RA resources when: + // // - available SSB with SS-RSRP above rsrp-ThresholdSSB: SSB selection + // // - availalbe CSI-RS with CSI-RSRP above rsrp-ThresholdCSI-RS: CSI-RS selection + // prach_resources->ra_PreambleIndex = rach_ConfigDedicated->ra_PreambleIndex; + // return; + // } + + //////////* Contention-based RA preamble selection *////////// + // todo: + // - selection of SSB with SS-RSRP above rsrp-ThresholdSSB else select any SSB + // - todo determine next available PRACH occasion + + // rsrp_ThresholdSSB = *nr_rach_ConfigCommon->rsrp_ThresholdSSB; + + AssertFatal(mac->nr_rach_ConfigCommon != NULL, "[UE %d] FATAL nr_rach_ConfigCommon is NULL !!!\n", mod_id); + + nr_rach_ConfigCommon = mac->nr_rach_ConfigCommon; + + Msg3_size = mac->RA_Msg3_size; + numberOfRA_Preambles = *nr_rach_ConfigCommon->totalNumberOfRA_Preambles; + + if (!nr_rach_ConfigCommon->groupBconfigured) { + noGroupB = 1; + } else { + // RA preambles group B is configured + // - Defining the number of RA preambles in RA Preamble Group A for each SSB */ + sizeOfRA_PreamblesGroupA = nr_rach_ConfigCommon->groupBconfigured->numberOfRA_PreamblesGroupA; + switch (nr_rach_ConfigCommon->groupBconfigured->ra_Msg3SizeGroupA){ + /* - Threshold to determine the groups of RA preambles */ + case 0: + messageSizeGroupA = 56; + break; + case 1: + messageSizeGroupA = 144; + break; + case 2: + messageSizeGroupA = 208; + break; + case 3: + messageSizeGroupA = 256; + break; + case 4: + messageSizeGroupA = 282; + break; + case 5: + messageSizeGroupA = 480; + break; + case 6: + messageSizeGroupA = 640; + break; + case 7: + messageSizeGroupA = 800; + break; + case 8: + messageSizeGroupA = 1000; + break; + case 9: + messageSizeGroupA = 72; + break; + default: + AssertFatal(1 == 0,"Unknown ra_Msg3SizeGroupA %lu\n", nr_rach_ConfigCommon->groupBconfigured->ra_Msg3SizeGroupA); + /* todo cases 10 -15*/ + } + + /* Power offset for preamble selection in dB */ + messagePowerOffsetGroupB = -9999; + switch (nr_rach_ConfigCommon->groupBconfigured->messagePowerOffsetGroupB){ + case 0: + messagePowerOffsetGroupB = -9999; + break; + case 1: + messagePowerOffsetGroupB = 0; + break; + case 2: + messagePowerOffsetGroupB = 5; + break; + case 3: + messagePowerOffsetGroupB = 8; + break; + case 4: + messagePowerOffsetGroupB = 10; + break; + case 5: + messagePowerOffsetGroupB = 12; + break; + case 6: + messagePowerOffsetGroupB = 15; + break; + case 7: + messagePowerOffsetGroupB = 18; + break; + default: + AssertFatal(1 == 0,"Unknown messagePowerOffsetGroupB %lu\n", nr_rach_ConfigCommon->groupBconfigured->messagePowerOffsetGroupB); + } + + // todo Msg3-DeltaPreamble should be provided from higher layers, otherwise is 0 + mac->deltaPreamble_Msg3 = 0; + deltaPreamble_Msg3 = mac->deltaPreamble_Msg3; + } + + PLThreshold = prach_resources->RA_PCMAX - nr_rach_ConfigCommon->rach_ConfigGeneric.preambleReceivedTargetPower - deltaPreamble_Msg3 - messagePowerOffsetGroupB; + + /* Msg3 has not been transmitted yet */ + if (first_Msg3 == 1) { + if (noGroupB == 1) { + // use Group A preamble + prach_resources->ra_PreambleIndex = (taus()) % numberOfRA_Preambles; + mac->RA_usedGroupA = 1; + } else if ((Msg3_size < messageSizeGroupA) && (get_nr_PL(mod_id, CC_id, gNB_id) > PLThreshold)) { + // Group B is configured and RA preamble Group A is used + // - todo add condition on CCCH_sdu_size for initiation by CCCH + prach_resources->ra_PreambleIndex = (taus()) % sizeOfRA_PreamblesGroupA; + mac->RA_usedGroupA = 1; + } else { + // Group B preamble is configured and used + // the first sizeOfRA_PreamblesGroupA RA preambles belong to RA Preambles Group A + // the remaining belong to RA Preambles Group B + prach_resources->ra_PreambleIndex = sizeOfRA_PreamblesGroupA + (taus()) % (numberOfRA_Preambles - sizeOfRA_PreamblesGroupA); + mac->RA_usedGroupA = 0; + } + } else { // Msg3 is being retransmitted + if (mac->RA_usedGroupA == 1 && noGroupB == 1) { + prach_resources->ra_PreambleIndex = (taus()) % numberOfRA_Preambles; + } else if (mac->RA_usedGroupA == 1 && noGroupB == 0){ + prach_resources->ra_PreambleIndex = (taus()) % sizeOfRA_PreamblesGroupA; + } else { + prach_resources->ra_PreambleIndex = sizeOfRA_PreamblesGroupA + (taus()) % (numberOfRA_Preambles - sizeOfRA_PreamblesGroupA); + } + } + + // todo determine next available PRACH occasion + // - if RA initiated for SI request and ra_AssociationPeriodIndex and si-RequestPeriod are configured + // - else if SSB is selected above + // - else if CSI-RS is selected above + + ///////////////////////////////////////////////////////////////////////////// + //////////* Random Access Preamble Transmission (5.1.3 TS 38.321) *////////// + ///////////////////////////////////////////////////////////////////////////// + // todo: + // - condition on notification of suspending power ramping counter from lower layer (5.1.3 TS 38.321) + // - check if SSB or CSI-RS have not changed since the selection in the last RA Preamble tranmission + // - Extend RA_rnti computation (e.g. f_id selection, ul_carrier_id are hardcoded) + + if (mac->RA_PREAMBLE_TRANSMISSION_COUNTER > 1) + mac->RA_PREAMBLE_TRANSMISSION_COUNTER++; + + prach_resources->ra_PREAMBLE_RECEIVED_TARGET_POWER = nr_get_Po_NOMINAL_PUSCH(prach_resources, mod_id, CC_id); + + // RA-RNTI computation (associated to PRACH occasion in which the RA Preamble is transmitted) + // 1) this does not apply to contention-free RA Preamble for beam failure recovery request + // 2) getting star_symb, SFN_nbr from table 6.3.3.2-3 (TDD and FR1 scenario) + + switch (nr_rach_ConfigCommon->rach_ConfigGeneric.msg1_FDM){ // todo this is not used + case 0: + msg1_FDM = 1; + break; + case 1: + msg1_FDM = 2; + break; + case 2: + msg1_FDM = 4; + break; + case 3: + msg1_FDM = 8; + break; + default: + AssertFatal(1 == 0,"Unknown msg1_FDM %lu\n", nr_rach_ConfigCommon->rach_ConfigGeneric.msg1_FDM); + } + + prach_ConfigIndex = nr_rach_ConfigCommon->rach_ConfigGeneric.prach_ConfigurationIndex; + + // ra_RNTI computation + // - todo: this is for TDD FR1 only + // - ul_carrier_id: UL carrier used for RA preamble transmission, hardcoded for NUL carrier + // - f_id: index of the PRACH occasion in the frequency domain + // - s_id is starting symbol of the PRACH occasion [0...14] + // - t_id is the first slot of the PRACH occasion in a system frame [0...80] + + ul_carrier_id = 0; // NUL + f_id = nr_rach_ConfigCommon->rach_ConfigGeneric.msg1_FrequencyStart; + SFN_nbr = table_6_3_3_2_3_prachConfig_Index[prach_ConfigIndex][4]; + s_id = table_6_3_3_2_3_prachConfig_Index[prach_ConfigIndex][5]; + + // Pick the first slot of the PRACH occasion in a system frame + for (i = 0; i < 10; i++){ + if (((SFN_nbr & (1 << i)) >> i) == 1){ + t_id = 2*i; + break; + } + } + prach_resources->ra_RNTI = 1 + s_id + 14 * t_id + 1120 * f_id + 8960 * ul_carrier_id; + mac->ra_rnti = prach_resources->ra_RNTI; + + LOG_D(MAC, "Computed ra_RNTI is %d", prach_resources->ra_RNTI); +} + +// TbD: RA_attempt_number not used +void nr_Msg1_transmitted(module_id_t mod_id, uint8_t CC_id, frame_t frameP, uint8_t gNB_id){ + AssertFatal(CC_id == 0, "Transmission on secondary CCs is not supported yet\n"); + NR_UE_MAC_INST_t *mac = get_mac_inst(mod_id); + mac->ra_state = WAIT_RAR; + // Start contention resolution timer + mac->RA_attempt_number++; +} + +void nr_Msg3_transmitted(module_id_t mod_id, uint8_t CC_id, frame_t frameP, uint8_t gNB_id){ + AssertFatal(CC_id == 0, "Transmission on secondary CCs is not supported yet\n"); + LOG_D(MAC,"[UE %d][RAPROC] Frame %d : Msg3_tx: Starting contention resolution timer\n", mod_id, frameP); + NR_UE_MAC_INST_t *mac = get_mac_inst(mod_id); + // start contention resolution timer + mac->RA_contention_resolution_cnt = 0; + mac->RA_contention_resolution_timer_active = 1; +} + +///////////////////////////////////////////////////////////////////////// +///////* Random Access Preamble Initialization (5.1.1 TS 38.321) */////// +///////////////////////////////////////////////////////////////////////// +/// Handling inizialization by PDCCH order, MAC entity or RRC (TS 38.300) +/// Only one RA procedure is ongoing at any point in time in a MAC entity +/// the RA procedure on a SCell shall only be initiated by PDCCH order + +// WIP +// todo TS 38.321: +// - check if carrier to use is explicitly signalled then do (1) RA CARRIER SELECTION (SUL, NUL) (2) set PCMAX +// - BWP operation (subclause 5.15 TS 38.321) +// - handle initialization by beam failure recovery +// - handle initialization by handover +// - handle transmission on DCCH using PRACH (during handover, or sending SR for example) +// - take into account MAC CEs in size_sdu (currently hardcoded size to 1 MAC subPDU and 1 padding subheader) +// - fix rrc data req logic +// - retrieve TBS +// - add mac_rrc_nr_data_req_ue, etc ... +// - add the backoff condition here if we have it from a previous RA reponse which failed (i.e. backoff indicator) + + diff --git a/openair1/SIMULATION/NR_PHY/nr_unitary_defs.h b/openair1/SIMULATION/NR_PHY/nr_unitary_defs.h index c7a30f826e..7a465e0ea3 100644 --- a/openair1/SIMULATION/NR_PHY/nr_unitary_defs.h +++ b/openair1/SIMULATION/NR_PHY/nr_unitary_defs.h @@ -55,6 +55,24 @@ signed char quantize(double D, double x, unsigned char B) { return ((char) qxd); } + +int8_t +mac_rrc_data_req_ue( + const module_id_t Mod_idP, + const int CC_id, + const frame_t frameP, + const rb_id_t Srb_id, + const uint8_t Nb_tb, + uint8_t *const buffer_pP, + const mac_enb_index_t eNB_indexP, + const uint8_t mbsfn_sync_area + ) { return(0);} + +int oai_nfapi_rach_ind(nfapi_rach_indication_t *rach_ind) {return(0);} +//NR_IF_Module_t *NR_IF_Module_init(int Mod_id){return(NULL);} +int oai_nfapi_ul_config_req(nfapi_ul_config_request_t *ul_config_req) { return(0); } + + void fill_scc(NR_ServingCellConfigCommon_t *scc,uint64_t *ssb_bitmap,int N_RB_DL,int N_RB_UL,int mu_dl,int mu_ul) { *scc->physCellId=0; \ diff --git a/openair1/SIMULATION/NR_PHY/pbchsim.c b/openair1/SIMULATION/NR_PHY/pbchsim.c index 9d14391f71..833b81f853 100644 --- a/openair1/SIMULATION/NR_PHY/pbchsim.c +++ b/openair1/SIMULATION/NR_PHY/pbchsim.c @@ -33,11 +33,10 @@ #include "PHY/defs_nr_UE.h" #include "PHY/defs_gNB.h" #include "PHY/NR_REFSIG/refsig_defs_ue.h" -#include "PHY/NR_REFSIG/nr_mod_table.h" #include "PHY/MODULATION/modulation_eNB.h" #include "PHY/MODULATION/modulation_UE.h" #include "PHY/INIT/phy_init.h" -#include "PHY/NR_TRANSPORT/nr_transport.h" +#include "PHY/NR_TRANSPORT/nr_transport_proto.h" #include "PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h" #include "PHY/NR_UE_ESTIMATION/nr_estimation.h" #include "PHY/phy_vars.h" @@ -60,8 +59,14 @@ uint16_t NB_UE_INST = 1; // needed for some functions openair0_config_t openair0_cfg[MAX_CARDS]; + +uint8_t const nr_rv_round_map[4] = {0, 2, 1, 3}; +uint8_t const nr_rv_round_map_ue[4] = {0, 2, 1, 3}; + uint64_t get_softmodem_optmask(void) {return 0;} +void init_downlink_harq_status(NR_DL_UE_HARQ_t *dl_harq) {} + void nr_phy_config_request_sim_pbchsim(PHY_VARS_gNB *gNB, int N_RB_DL, int N_RB_UL, @@ -103,6 +108,9 @@ void nr_phy_config_request_sim_pbchsim(PHY_VARS_gNB *gNB, gNB_config->carrier_config.dl_bandwidth.value = config_bandwidth(mu, N_RB_DL, fp->nr_band); nr_init_frame_parms(gNB_config, fp); + + init_symbol_rotation(fp,fp->dl_CarrierFreq); + gNB->configured = 1; LOG_I(PHY,"gNB configured\n"); } @@ -466,6 +474,7 @@ int main(int argc, char **argv) channel_model, fs, bw, + 300e-9, 0, 0, 0); @@ -546,10 +555,35 @@ int main(int argc, char **argv) frame_parms->nb_prefix_samples, CYCLIC_PREFIX); } else { - nr_normal_prefix_mod(gNB->common_vars.txdataF[aa], + /* nr_normal_prefix_mod(gNB->common_vars.txdataF[aa], &txdata[aa][frame_parms->get_samples_slot_timestamp(slot,frame_parms,0)], 14, - frame_parms); + frame_parms);*/ + PHY_ofdm_mod(gNB->common_vars.txdataF[aa], + (int*)&txdata[aa][frame_parms->get_samples_slot_timestamp(slot,frame_parms,0)], + frame_parms->ofdm_symbol_size, + 1, + frame_parms->nb_prefix_samples0, + CYCLIC_PREFIX); + + apply_nr_rotation(frame_parms, + (int16_t*)&txdata[aa][frame_parms->get_samples_slot_timestamp(slot,frame_parms,0)], + slot, + 0, + 1, + frame_parms->ofdm_symbol_size+frame_parms->nb_prefix_samples0); + PHY_ofdm_mod(&gNB->common_vars.txdataF[aa][frame_parms->ofdm_symbol_size], + (int*)&txdata[aa][frame_parms->get_samples_slot_timestamp(slot,frame_parms,0)+frame_parms->nb_prefix_samples0+frame_parms->ofdm_symbol_size], + frame_parms->ofdm_symbol_size, + 13, + frame_parms->nb_prefix_samples, + CYCLIC_PREFIX); + apply_nr_rotation(frame_parms, + (int16_t*)&txdata[aa][frame_parms->get_samples_slot_timestamp(slot,frame_parms,0)+frame_parms->nb_prefix_samples0+frame_parms->ofdm_symbol_size], + slot, + 1, + 13, + frame_parms->ofdm_symbol_size+frame_parms->nb_prefix_samples); } } } diff --git a/openair1/SIMULATION/NR_PHY/prachsim.c b/openair1/SIMULATION/NR_PHY/prachsim.c index 2ad89ce897..7d96e70809 100644 --- a/openair1/SIMULATION/NR_PHY/prachsim.c +++ b/openair1/SIMULATION/NR_PHY/prachsim.c @@ -22,6 +22,7 @@ #include #include #include +#include #include "common/config/config_userapi.h" #include "common/utils/LOG/log.h" @@ -35,115 +36,91 @@ #include "SCHED_NR/sched_nr.h" #include "SCHED_NR_UE/phy_frame_config_nr.h" #include "PHY/phy_vars_nr_ue.h" - #include "PHY/NR_REFSIG/refsig_defs_ue.h" -#include "PHY/NR_REFSIG/nr_mod_table.h" #include "PHY/MODULATION/modulation_eNB.h" #include "PHY/MODULATION/modulation_UE.h" #include "PHY/INIT/phy_init.h" -#include "PHY/NR_TRANSPORT/nr_transport.h" +#include "PHY/NR_TRANSPORT/nr_transport_proto.h" +#include "PHY/NR_TRANSPORT/nr_transport_common_proto.h" #include "PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h" +#include "nr_unitary_defs.h" #include "OCG_vars.h" -#include +#define NR_PRACH_DEBUG 1 +#define PRACH_WRITE_OUTPUT_DEBUG 1 PHY_VARS_gNB *gNB; PHY_VARS_NR_UE *UE; RAN_CONTEXT_t RC; RU_t *ru; - double cpuf; - extern uint16_t prach_root_sequence_map0_3[838]; - -void dump_nr_prach_config(NR_DL_FRAME_PARMS *frame_parms,uint8_t subframe); - uint16_t NB_UE_INST=1; -volatile int oai_exit=0; - -void exit_function(const char* file, const char* function, const int line,const char *s) { - const char * msg= s==NULL ? "no comment": s; - printf("Exiting at: %s:%d %s(), %s\n", file, line, function, msg); - exit(-1); -} - - -int8_t nr_ue_get_SR(module_id_t module_idP, int CC_id, frame_t frameP, uint8_t eNB_id, uint16_t rnti, sub_frame_t subframe) { - AssertFatal(1==0,"Shouldn't be here ...\n"); - return 0; -} - -uint8_t nr_ue_get_sdu(module_id_t module_idP, int CC_id, frame_t frameP, - sub_frame_t subframe, uint8_t eNB_index, - uint8_t *ulsch_buffer, uint16_t buflen, uint8_t *access_mode) {return(0);} - -int oai_nfapi_rach_ind(nfapi_rach_indication_t *rach_ind) {return(0);} - openair0_config_t openair0_cfg[MAX_CARDS]; uint8_t nfapi_mode=0; -NR_IF_Module_t *NR_IF_Module_init(int Mod_id){return(NULL);} -int oai_nfapi_ul_config_req(nfapi_ul_config_request_t *ul_config_req) { return(0); } +int sl_ahead = 0; -uint64_t get_softmodem_optmask(void) { - return 0; -} +//void dump_nr_prach_config(NR_DL_FRAME_PARMS *frame_parms,uint8_t subframe); -int main(int argc, char **argv) -{ +/* temporary dummy implem of get_softmodem_optmask, till basic simulators implemented as device */ +uint64_t get_softmodem_optmask(void) {return 0;} +softmodem_params_t *get_softmodem_params(void) {return 0;} + +void pdcp_run (const protocol_ctxt_t *const ctxt_pP) { return;} + +boolean_t pdcp_data_ind(const protocol_ctxt_t *const ctxt_pP, + const srb_flag_t srb_flagP, + const MBMS_flag_t MBMS_flagP, + const rb_id_t rb_idP, + const sdu_size_t sdu_buffer_sizeP, + mem_block_t *const sdu_buffer_pP) {return(false);} + +void nr_DRB_preconfiguration(void){} +void pdcp_layer_init(void) {} +int8_t nr_mac_rrc_data_ind_ue(const module_id_t module_id, const int CC_id, const uint8_t gNB_index, const int8_t channel, const uint8_t* pduP, const sdu_size_t pdu_len) {return 0;} + +int main(int argc, char **argv){ char c; - int i,aa,aarx; - double sigma2, sigma2_dB=0,SNR,snr0=-2.0,snr1=0.0,ue_speed0=0.0,ue_speed1=0.0; - uint8_t snr1set=0; - uint8_t ue_speed1set=0; - int **txdata; - double **s_re,**s_im,**r_re,**r_im; - double iqim=0.0; - int trial; //, ntrials=1; - uint8_t transmission_mode = 1,n_tx=1,n_rx=1; - uint16_t Nid_cell=0; + double sigma2, sigma2_dB = 0, SNR, snr0 = -2.0, snr1 = 0.0, ue_speed0 = 0.0, ue_speed1 = 0.0; + double **s_re, **s_im, **r_re, **r_im, iqim = 0.0, delay_avg = 0, ue_speed = 0, fs, bw; + int i, aa, aarx, **txdata, trial, n_frames = 1, prach_start, rx_prach_start; //, ntrials=1; + int N_RB_UL = 106, delay = 0, NCS_config = 13, rootSequenceIndex = 1, threequarter_fs = 0, mu = 1, fd_occasion = 0, loglvl = OAILOG_INFO, numRA = 0, prachStartSymbol = 0; + uint8_t snr1set = 0, ue_speed1set = 0, transmission_mode = 1, n_tx = 1, n_rx = 1, awgn_flag = 0, msg1_frequencystart = 0, num_prach_fd_occasions = 1, prach_format=0; + uint8_t frame = 1, subframe = 9, slot=19, slot_gNB=19, config_index = 98, prach_sequence_length = 1, num_root_sequences = 16, restrictedSetConfig = 0, N_dur, N_t_slot, start_symbol; + uint16_t Nid_cell = 0, preamble_tx = 0, preamble_delay, format, format0, format1; + uint32_t tx_lev = 10000, prach_errors = 0, samp_count; //,tx_lev_dB; + uint64_t SSB_positions = 0x01, absoluteFrequencyPointA = 640000; + double DS_TDL = .03; - uint8_t awgn_flag=0; - uint8_t hs_flag=0; - int n_frames=1; - channel_desc_t *UE2gNB; - uint32_t tx_lev=0; //,tx_lev_dB; // int8_t interf1=-19,interf2=-19; - NR_DL_FRAME_PARMS *frame_parms; - - SCM_t channel_model=Rayleigh1; - // uint8_t abstraction_flag=0,calibration_flag=0; // double prach_sinr; - int N_RB_UL=273; - uint32_t prach_errors=0; - uint8_t subframe=9; - uint16_t preamble_energy_list[64],preamble_tx=50,preamble_delay_list[64]; - PRACH_RESOURCES_t prach_resources; - //uint8_t prach_fmt; - //int N_ZC; - int delay = 0; - double delay_avg=0; - double ue_speed = 0; - int NCS_config = 13,rootSequenceIndex=0; - int threequarter_fs = 0; - int mu=1; - uint64_t SSB_positions=0x01; + // uint32_t nsymb; + // uint16_t preamble_max, preamble_energy_max; + FILE *input_fd=NULL; + char* input_file=NULL; + int n_bytes=0; - int loglvl=OAILOG_INFO; + NR_DL_FRAME_PARMS *frame_parms; + NR_PRACH_RESOURCES_t prach_resources; + nfapi_nr_prach_config_t *prach_config; + nfapi_nr_prach_pdu_t *prach_pdu; + fapi_nr_prach_config_t *ue_prach_config; + fapi_nr_ul_config_prach_pdu *ue_prach_pdu; + channel_desc_t *UE2gNB; + SCM_t channel_model = Rayleigh1; cpuf = get_cpu_freq_GHz(); - if ( load_configmodule(argc,argv,CONFIG_ENABLECMDLINEONLY) == 0) { exit_fun("[SOFTMODEM] Error, configuration module init failed\n"); } randominit(0); - - while ((c = getopt (argc, argv, "hHaA:Cr:p:g:n:s:S:t:x:y:v:V:z:N:F:d:Z:L:R:E")) != -1) { + while ((c = getopt (argc, argv, "hHaA:Cc:r:p:g:n:s:S:t:x:y:v:V:z:N:F:d:Z:L:R:E")) != -1) { switch (c) { case 'a': printf("Running AWGN simulation\n"); @@ -152,6 +129,14 @@ int main(int argc, char **argv) //ntrials=1; break; + case 'c': + config_index = atoi(optarg); + break; + + case 'r': + msg1_frequencystart = atoi(optarg); + break; + case 'd': delay = atoi(optarg); break; @@ -215,7 +200,7 @@ int main(int argc, char **argv) break; default: - msg("Unsupported channel model!\n"); + printf("Unsupported channel model!\n"); exit(-1); } @@ -231,13 +216,13 @@ int main(int argc, char **argv) case 's': snr0 = atof(optarg); - msg("Setting SNR0 to %f\n",snr0); + printf("Setting SNR0 to %f\n",snr0); break; case 'S': snr1 = atof(optarg); snr1set=1; - msg("Setting SNR1 to %f\n",snr1); + printf("Setting SNR1 to %f\n",snr1); break; case 'p': @@ -263,7 +248,7 @@ int main(int argc, char **argv) case 'H': printf("High-Speed Flag enabled\n"); - hs_flag = 1; + restrictedSetConfig = 1; break; case 'L': @@ -280,7 +265,7 @@ int main(int argc, char **argv) if ((transmission_mode!=1) && (transmission_mode!=2) && (transmission_mode!=6)) { - msg("Unsupported transmission mode %d\n",transmission_mode); + printf("Unsupported transmission mode %d\n",transmission_mode); exit(-1); } @@ -290,7 +275,7 @@ int main(int argc, char **argv) n_tx=atoi(optarg); if ((n_tx==0) || (n_tx>2)) { - msg("Unsupported number of tx antennas %d\n",n_tx); + printf("Unsupported number of tx antennas %d\n",n_tx); exit(-1); } @@ -300,7 +285,7 @@ int main(int argc, char **argv) n_rx=atoi(optarg); if ((n_rx==0) || (n_rx>2)) { - msg("Unsupported number of rx antennas %d\n",n_rx); + printf("Unsupported number of rx antennas %d\n",n_rx); exit(-1); } @@ -315,6 +300,14 @@ int main(int argc, char **argv) break; case 'F': + input_fd = fopen(optarg,"r"); + input_file = optarg; + + if (input_fd==NULL) { + printf("Problem with filename %s\n",optarg); + exit(-1); + } + break; default: @@ -344,20 +337,20 @@ int main(int argc, char **argv) } } - logInit(); + + if (config_index<67) { prach_sequence_length=0; slot = subframe*2; slot_gNB = 1+(subframe*2); } + uint16_t N_ZC; + N_ZC = prach_sequence_length == 0 ? 839 : 139; + printf("Config_index %d, prach_sequence_length %d\n",config_index,prach_sequence_length); + + // Configure log + logInit(); set_glog(loglvl); T_stdout = 1; - SET_LOG_DEBUG(PRACH); - if (snr1set==0) { - if (n_frames==1) - snr1 = snr0+.1; - else - snr1 = snr0+5.0; - } - + // Configure gNB and RU RC.gNB = (PHY_VARS_gNB**) malloc(2*sizeof(PHY_VARS_gNB *)); RC.gNB[0] = malloc(sizeof(PHY_VARS_gNB)); memset(RC.gNB[0],0,sizeof(PHY_VARS_gNB)); @@ -367,90 +360,205 @@ int main(int argc, char **argv) memset(RC.ru[0],0,sizeof(RU_t)); RC.nb_RU = 1; - gNB = RC.gNB[0]; - ru = RC.ru[0]; - - - if (ue_speed1set==0) { - if (n_frames==1) - ue_speed1 = ue_speed0+10; - else - ue_speed1 = ue_speed0+50; - } - - printf("SNR0 %f, SNR1 %f\n",snr0,snr1); - - frame_parms = &gNB->frame_parms; - - + gNB = RC.gNB[0]; + ru = RC.ru[0]; + frame_parms = &gNB->frame_parms; + prach_config = &gNB->gNB_config.prach_config; + prach_pdu = &gNB->prach_vars.list[0].pdu; + frame_parms = &gNB->frame_parms; //to be initialized I suppose (maybe not necessary for PBCH) s_re = malloc(2*sizeof(double*)); s_im = malloc(2*sizeof(double*)); r_re = malloc(2*sizeof(double*)); r_im = malloc(2*sizeof(double*)); - frame_parms = &gNB->frame_parms; //to be initialized I suppose (maybe not necessary for PBCH) - frame_parms->nb_antennas_tx = n_tx; - frame_parms->nb_antennas_rx = n_rx; - frame_parms->N_RB_DL = N_RB_UL; - frame_parms->N_RB_UL = N_RB_UL; - frame_parms->threequarter_fs = threequarter_fs; + frame_parms->nb_antennas_tx = n_tx; + frame_parms->nb_antennas_rx = n_rx; + frame_parms->N_RB_DL = N_RB_UL; + frame_parms->N_RB_UL = N_RB_UL; + frame_parms->threequarter_fs = threequarter_fs; + frame_parms->frame_type = TDD; + frame_parms->freq_range = nr_FR1; + frame_parms->numerology_index = mu; - - nr_phy_config_request_sim(gNB,N_RB_UL,N_RB_UL,mu,Nid_cell,SSB_positions); - - frame_parms->frame_type = TDD; - frame_parms->freq_range = nr_FR1; + nr_phy_config_request_sim(gNB, N_RB_UL, N_RB_UL, mu, Nid_cell, SSB_positions); //nsymb = (frame_parms->Ncp == 0) ? 14 : 12; - printf("FFT Size %d, Extended Prefix %d, Samples per subframe %d,Frame type %s, Frequency Range %s\n",NUMBER_OF_OFDM_CARRIERS, - frame_parms->Ncp,frame_parms->samples_per_subframe,frame_parms->frame_type == FDD ? "FDD" : "TDD", frame_parms->freq_range == nr_FR1 ? "FR1" : "FR2"); + printf("FFT Size %d, Extended Prefix %d, Samples per subframe %d, Frame type %s, Frequency Range %s\n", + NUMBER_OF_OFDM_CARRIERS, + frame_parms->Ncp, + frame_parms->samples_per_subframe, + frame_parms->frame_type == FDD ? "FDD" : "TDD", + frame_parms->freq_range == nr_FR1 ? "FR1" : "FR2"); - ru->nr_frame_parms=frame_parms; - ru->if_south = LOCAL_RF; - ru->nb_tx = n_tx; - ru->nb_rx = n_rx; + ru->nr_frame_parms = frame_parms; + ru->if_south = LOCAL_RF; + ru->nb_tx = n_tx; + ru->nb_rx = n_rx; + gNB->gNB_config.carrier_config.num_tx_ant.value = 1; + gNB->gNB_config.carrier_config.num_rx_ant.value = 1; + gNB->gNB_config.tdd_table.tdd_period.value = 6; + + gNB->gNB_config.prach_config.num_prach_fd_occasions.value = num_prach_fd_occasions; + gNB->gNB_config.prach_config.num_prach_fd_occasions_list = (nfapi_nr_num_prach_fd_occasions_t *) malloc(num_prach_fd_occasions*sizeof(nfapi_nr_num_prach_fd_occasions_t)); + + gNB->proc.slot_rx = slot; + + int ret = get_nr_prach_info_from_index(config_index, + (int)frame, + (int)slot_gNB, + absoluteFrequencyPointA, + mu, + frame_parms->frame_type, + &format, + &start_symbol, + &N_t_slot, + &N_dur); + + if (ret == 0) {printf("No prach in %d.%d, mu %d, config_index %d\n",frame,slot,mu,config_index); exit(-1);} + format0 = format&0xff; // first column of format from table + format1 = (format>>8)&0xff; // second column of format from table + + if (format1 != 0xff) { + switch(format0) { + case 0xa1: + prach_format = 9; + break; + case 0xa2: + prach_format = 10; + break; + case 0xa3: + prach_format = 11; + break; + default: + AssertFatal(1==0, "Only formats A1/B1 A2/B2 A3/B3 are valid for dual format"); + } + } else { + switch(format0) { + case 0xa1: + prach_format = 0; + break; + case 0xa2: + prach_format = 1; + break; + case 0xa3: + prach_format = 2; + break; + case 0xb1: + prach_format = 3; + break; + case 0xb2: + prach_format = 4; + break; + case 0xb3: + prach_format = 5; + break; + case 0xb4: + prach_format = 6; + break; + case 0xc0: + prach_format = 7; + break; + case 0xc2: + prach_format = 8; + break; + case 0: + // long formats are handled @ PHY + break; + case 1: + // long formats are handled @ PHY + break; + case 2: + // long formats are handled @ PHY + break; + case 3: + // long formats are handled @ PHY + break; + default: + AssertFatal(1==0, "Invalid PRACH format"); + } + } + + printf("PRACH format %d\n",prach_format); + + prach_config->num_prach_fd_occasions_list[fd_occasion].prach_root_sequence_index.value = rootSequenceIndex; + prach_config->num_prach_fd_occasions_list[fd_occasion].k1.value = msg1_frequencystart; + prach_config->restricted_set_config.value = restrictedSetConfig; + prach_config->prach_sequence_length.value = prach_sequence_length; + prach_pdu->num_cs = get_NCS(NCS_config, format0, restrictedSetConfig); + prach_config->num_prach_fd_occasions_list[fd_occasion].num_root_sequences.value = 1+(64/(N_ZC/prach_pdu->num_cs)); + prach_pdu->prach_format = prach_format; + + memcpy((void*)&ru->config,(void*)&RC.gNB[0]->gNB_config,sizeof(ru->config)); RC.nb_nr_L1_inst=1; phy_init_nr_gNB(gNB,0,0); nr_phy_init_RU(ru); - set_tdd_config_nr(&gNB->gNB_config, 5000, - 7, 6, - 2, 4); + gNB->common_vars.rxdata = ru->common.rxdata; + set_tdd_config_nr(&gNB->gNB_config, mu, 7, 6, 2, 4); - //configure UE + // Configure UE UE = malloc(sizeof(PHY_VARS_NR_UE)); memset((void*)UE,0,sizeof(PHY_VARS_NR_UE)); PHY_vars_UE_g = malloc(2*sizeof(PHY_VARS_NR_UE**)); PHY_vars_UE_g[0] = malloc(2*sizeof(PHY_VARS_NR_UE*)); PHY_vars_UE_g[0][0] = UE; memcpy(&UE->frame_parms,frame_parms,sizeof(NR_DL_FRAME_PARMS)); - if (init_nr_ue_signal(UE, 1, 0) != 0) - { + UE->nrUE_config.prach_config.num_prach_fd_occasions_list = (fapi_nr_num_prach_fd_occasions_t *) malloc(num_prach_fd_occasions*sizeof(fapi_nr_num_prach_fd_occasions_t)); + + if (init_nr_ue_signal(UE, 1, 0) != 0){ printf("Error at UE NR initialisation\n"); exit(-1); } - txdata = UE->common_vars.txdata; - printf("txdata %p\n",&txdata[0][subframe*frame_parms->samples_per_subframe]); + ue_prach_pdu = &UE->prach_vars[0]->prach_pdu; + ue_prach_config = &UE->nrUE_config.prach_config; + UE->prach_resources[0] = &prach_resources; + txdata = UE->common_vars.txdata; - double fs,bw; + UE->prach_vars[0]->amp = AMP; + ue_prach_pdu->root_seq_id = rootSequenceIndex; + ue_prach_pdu->num_cs = get_NCS(NCS_config, format0, restrictedSetConfig); + ue_prach_pdu->restricted_set = restrictedSetConfig; + ue_prach_pdu->freq_msg1 = msg1_frequencystart; + ue_prach_pdu->prach_format = prach_format; + ue_prach_config->prach_sub_c_spacing = mu; + ue_prach_config->prach_sequence_length = prach_sequence_length; + ue_prach_config->restricted_set_config = restrictedSetConfig; + ue_prach_config->num_prach_fd_occasions_list[fd_occasion].num_root_sequences = prach_config->num_prach_fd_occasions_list[fd_occasion].num_root_sequences.value ; + ue_prach_config->num_prach_fd_occasions_list[fd_occasion].prach_root_sequence_index = rootSequenceIndex; + ue_prach_config->num_prach_fd_occasions_list[fd_occasion].k1 = msg1_frequencystart; + + if (preamble_tx == 99) + preamble_tx = (uint16_t)(taus()&0x3f); + + if (n_frames == 1) + printf("raPreamble %d\n",preamble_tx); + + UE->prach_resources[0]->ra_PreambleIndex = preamble_tx; + UE->prach_resources[0]->init_msg1 = 1; + + // Configure channel + bw = N_RB_UL*(180e3)*(1 << frame_parms->numerology_index); + AssertFatal(bw<=122.88e6,"Illegal channel bandwidth %f (mu %d,N_RB_UL %d)\n", bw, frame_parms->numerology_index, N_RB_UL); + + if (bw <= 30.72e6) + fs = 30.72e6; + else if (bw <= 61.44e6) + fs = 61.44e6; + else if (bw <= 122.88e6) + fs = 122.88e6; - bw = N_RB_UL*(180e3)*(1<frame_parms.numerology_index); - AssertFatal(bw<=122.88e6,"Illegal channel bandwidth %f (mu %d,N_RB_UL %d)\n",bw, gNB->frame_parms.numerology_index,N_RB_UL); - if (bw <= 30.72e6) fs = 30.72e6; - else if (bw <= 61.44e6) fs = 61.44e6; - else if (bw <= 122.88e6) fs = 122.88e6; LOG_I(PHY,"Running with bandwidth %f Hz, fs %f samp/s, FRAME_LENGTH_COMPLEX_SAMPLES %d\n",bw,fs,FRAME_LENGTH_COMPLEX_SAMPLES); - UE2gNB = new_channel_desc_scm(UE->frame_parms.nb_antennas_tx, gNB->frame_parms.nb_antennas_rx, channel_model, - fs, - bw, + fs, + bw, + DS_TDL, 0.0, delay, 0); @@ -473,97 +581,80 @@ int main(int argc, char **argv) bzero(r_im[i],FRAME_LENGTH_COMPLEX_SAMPLES*sizeof(double)); } - UE->frame_parms.prach_config_common.rootSequenceIndex=rootSequenceIndex; - UE->frame_parms.prach_config_common.prach_ConfigInfo.prach_ConfigIndex=98; - UE->frame_parms.prach_config_common.prach_ConfigInfo.zeroCorrelationZoneConfig=NCS_config; - UE->frame_parms.prach_config_common.prach_ConfigInfo.highSpeedFlag=hs_flag; - UE->frame_parms.prach_config_common.prach_ConfigInfo.restrictedSetConfig=0; - UE->frame_parms.prach_config_common.prach_ConfigInfo.msg1_frequencystart=0; + // compute PRACH sequence + compute_nr_prach_seq(prach_config->prach_sequence_length.value, + prach_config->num_prach_fd_occasions_list[fd_occasion].num_root_sequences.value, + prach_config->num_prach_fd_occasions_list[fd_occasion].prach_root_sequence_index.value, + gNB->X_u); - - gNB->frame_parms.prach_config_common.rootSequenceIndex=rootSequenceIndex; - gNB->frame_parms.prach_config_common.prach_ConfigInfo.prach_ConfigIndex=98; - gNB->frame_parms.prach_config_common.prach_ConfigInfo.zeroCorrelationZoneConfig=NCS_config; - gNB->frame_parms.prach_config_common.prach_ConfigInfo.highSpeedFlag=hs_flag; - gNB->frame_parms.prach_config_common.prach_ConfigInfo.restrictedSetConfig=0; - gNB->frame_parms.prach_config_common.prach_ConfigInfo.msg1_frequencystart=0; - - gNB->proc.slot_rx = subframe<<1; - - gNB->common_vars.rxdata = ru->common.rxdata; - - - compute_nr_prach_seq(gNB->frame_parms.prach_config_common.rootSequenceIndex, - gNB->frame_parms.prach_config_common.prach_ConfigInfo.prach_ConfigIndex, - gNB->frame_parms.prach_config_common.prach_ConfigInfo.zeroCorrelationZoneConfig, - gNB->frame_parms.prach_config_common.prach_ConfigInfo.highSpeedFlag, - gNB->frame_parms.frame_type, - gNB->frame_parms.freq_range, - gNB->X_u); - - compute_nr_prach_seq(UE->frame_parms.prach_config_common.rootSequenceIndex, - UE->frame_parms.prach_config_common.prach_ConfigInfo.prach_ConfigIndex, - UE->frame_parms.prach_config_common.prach_ConfigInfo.zeroCorrelationZoneConfig, - UE->frame_parms.prach_config_common.prach_ConfigInfo.highSpeedFlag, - UE->frame_parms.frame_type, - UE->frame_parms.freq_range, - UE->X_u); - - - - UE->prach_vars[0]->amp = AMP; - - UE->prach_resources[0] = &prach_resources; - - if (preamble_tx == 99) - preamble_tx = (uint16_t)(taus()&0x3f); - - if (n_frames == 1) - printf("raPreamble %d\n",preamble_tx); - - UE->prach_resources[0]->ra_PreambleIndex = preamble_tx; - UE->prach_resources[0]->ra_TDD_map_index = 0; + compute_nr_prach_seq(ue_prach_config->prach_sequence_length, + ue_prach_config->num_prach_fd_occasions_list[fd_occasion].num_root_sequences, + ue_prach_config->num_prach_fd_occasions_list[fd_occasion].prach_root_sequence_index, + UE->X_u); /*tx_lev = generate_nr_prach(UE, 0, //gNB_id, - subframe, - 0); //Nf */ //commented for testing purpose + subframe); */ //commented for testing purpose UE_nr_rxtx_proc_t proc={0}; - nr_ue_prach_procedures(UE,&proc,0,0,0); - + proc.frame_tx = frame; + proc.nr_tti_tx = slot; + nr_ue_prach_procedures(UE,&proc,0,0); /* tx_lev_dB not used later, no need to set */ //tx_lev_dB = (unsigned int) dB_fixed(tx_lev); - LOG_M("txsig0.m","txs0", &txdata[0][subframe*frame_parms->samples_per_subframe],frame_parms->samples_per_subframe,1,1); - //LOG_M("txsig1.m","txs1", txdata[1],FRAME_LENGTH_COMPLEX_SAMPLES,1,1); + prach_start = subframe*frame_parms->samples_per_subframe; + + #ifdef NR_PRACH_DEBUG + LOG_M("txsig0.m", "txs0", &txdata[0][subframe*frame_parms->samples_per_subframe], frame_parms->samples_per_subframe, 1, 1); + LOG_M("txsig0_frame.m","txs0", txdata[0],frame_parms->samples_per_frame,1,1); + #endif // multipath channel - dump_nr_prach_config(&gNB->frame_parms,subframe); + // dump_nr_prach_config(&gNB->frame_parms,subframe); - for (i=0; i<2*frame_parms->samples_per_subframe; i++) { + for (i = 0; i < frame_parms->samples_per_subframe<<1; i++) { for (aa=0; aa<1; aa++) { if (awgn_flag == 0) { - s_re[aa][i] = ((double)(((short *)&txdata[aa][subframe*frame_parms->samples_per_subframe]))[(i<<1)]); - s_im[aa][i] = ((double)(((short *)&txdata[aa][subframe*frame_parms->samples_per_subframe]))[(i<<1)+1]); + s_re[aa][i] = ((double)(((short *)&txdata[aa][prach_start]))[(i<<1)]); + s_im[aa][i] = ((double)(((short *)&txdata[aa][prach_start]))[(i<<1)+1]); } else { for (aarx=0; aarxframe_parms.nb_antennas_rx; aarx++) { if (aa==0) { - r_re[aarx][i] = ((double)(((short *)&txdata[aa][subframe*frame_parms->samples_per_subframe]))[(i<<1)]); - r_im[aarx][i] = ((double)(((short *)&txdata[aa][subframe*frame_parms->samples_per_subframe]))[(i<<1)+1]); + r_re[aarx][i] = ((double)(((short *)&txdata[aa][prach_start]))[(i<<1)]); + r_im[aarx][i] = ((double)(((short *)&txdata[aa][prach_start]))[(i<<1)+1]); } else { - r_re[aarx][i] += ((double)(((short *)&txdata[aa][subframe*frame_parms->samples_per_subframe]))[(i<<1)]); - r_im[aarx][i] += ((double)(((short *)&txdata[aa][subframe*frame_parms->samples_per_subframe]))[(i<<1)+1]); + r_re[aarx][i] += ((double)(((short *)&txdata[aa][prach_start]))[(i<<1)]); + r_im[aarx][i] += ((double)(((short *)&txdata[aa][prach_start]))[(i<<1)+1]); } } } } } + if (snr1set == 0) { + if (n_frames == 1) + snr1 = snr0 + .1; + else + snr1 = snr0 + 5.0; + } + + printf("SNR0 %f, SNR1 %f\n", snr0, snr1); + + if (ue_speed1set == 0) { + if (n_frames == 1) + ue_speed1 = ue_speed0 + 10; + else + ue_speed1 = ue_speed0 + 50; + } + + rx_prach_start = subframe*frame_parms->samples_per_subframe; + if (n_frames==1) printf("slot %d, rx_prach_start %d\n",slot,rx_prach_start); + uint16_t preamble_rx, preamble_energy; - for (SNR=snr0; SNRsamples_per_subframe,0); + multipath_tv_channel(UE2gNB, s_re, s_im, r_re, r_im, frame_parms->samples_per_tti<<1, 0); } if (n_frames==1) { @@ -594,55 +684,66 @@ int main(int argc, char **argv) 10*log10(tx_lev)); } - for (i=0; isamples_per_subframe; i++) { - for (aa=0; aaframe_parms.nb_antennas_rx; aa++) { - - ((short*) &gNB->common_vars.rxdata[aa][subframe*(frame_parms->samples_per_subframe)])[2*i] = (short) (.167*(r_re[aa][i] +sqrt(sigma2/2)*gaussdouble(0.0,1.0))); - ((short*) &gNB->common_vars.rxdata[aa][subframe*(frame_parms->samples_per_subframe)])[2*i+1] = (short) (.167*(r_im[aa][i] + (iqim*r_re[aa][i]) + sqrt(sigma2/2)*gaussdouble(0.0,1.0))); + for (i = 0; i< frame_parms->samples_per_subframe; i++) { + for (aa = 0; aa < frame_parms->nb_antennas_rx; aa++) { + ((short*) &ru->common.rxdata[aa][rx_prach_start])[2*i] = (short) (.167*(r_re[aa][i] +sqrt(sigma2/2)*gaussdouble(0.0,1.0))); + ((short*) &ru->common.rxdata[aa][rx_prach_start])[2*i+1] = (short) (.167*(r_im[aa][i] + (iqim*r_re[aa][i]) + sqrt(sigma2/2)*gaussdouble(0.0,1.0))); } } - uint16_t preamble_rx; - rx_nr_prach_ru(ru, - 0, - subframe); - gNB->prach_vars.rxsigF = ru->prach_rxsigF; + } else { + n_bytes = fread(&ru->common.rxdata[0][rx_prach_start],sizeof(int32_t),frame_parms->samples_per_subframe,input_fd); + printf("fread %d bytes from file %s\n",n_bytes,input_file); + if (n_bytes!=frame_parms->samples_per_subframe) { + printf("expected %d bytes\n",frame_parms->samples_per_subframe); + exit(-1); + } + } - rx_nr_prach(gNB, - 0, - subframe, - &preamble_rx, - preamble_energy_list, - preamble_delay_list); - - if (preamble_rx!=preamble_tx) + + rx_nr_prach_ru(ru, prach_format, numRA, prachStartSymbol, frame, slot); + + gNB->prach_vars.rxsigF = ru->prach_rxsigF; + if (n_frames == 1) printf("ncs %d,num_seq %d\n",prach_pdu->num_cs, prach_config->num_prach_fd_occasions_list[fd_occasion].num_root_sequences.value); + rx_nr_prach(gNB, prach_pdu, frame, subframe, &preamble_rx, &preamble_energy, &preamble_delay); + + // printf(" preamble_energy %d preamble_rx %d preamble_tx %d \n", preamble_energy, preamble_rx, preamble_tx); + + if (preamble_rx != preamble_tx) prach_errors++; - else { - delay_avg += (double)preamble_delay_list[preamble_tx]; - } + else + delay_avg += (double)preamble_delay; + + N_ZC = (prach_sequence_length) ? 139 : 839; if (n_frames==1) { - printf("preamble %d (tx %d) : energy %d, delay %d\n",preamble_rx,preamble_tx,preamble_energy_list[0],preamble_delay_list[0]); - - - LOG_M("prach0.m","prach0", &txdata[0][subframe*frame_parms->samples_per_subframe],frame_parms->samples_per_subframe,1,1); - LOG_M("prachF0.m","prachF0", &gNB->prach_vars.prachF[0],24576,1,1); - LOG_M("rxsig0.m","rxs0", - &gNB->common_vars.rxdata[0][subframe*frame_parms->samples_per_subframe], - frame_parms->samples_per_subframe,1,1); - LOG_M("rxsigF0.m","rxsF0", gNB->prach_vars.rxsigF[0],839*4,1,1); - LOG_M("prach_preamble.m","prachp",&gNB->X_u[0],839,1,1); + printf("preamble %d (tx %d) : energy %d, delay %d\n",preamble_rx,preamble_tx,preamble_energy,preamble_delay); + #ifdef NR_PRACH_DEBUG + LOG_M("prach0.m","prach0", &txdata[0][prach_start], frame_parms->samples_per_subframe, 1, 1); + LOG_M("prachF0.m","prachF0", &gNB->prach_vars.prachF[0], N_ZC, 1, 1); + LOG_M("rxsig0.m","rxs0", &gNB->common_vars.rxdata[0][subframe*frame_parms->samples_per_subframe], frame_parms->samples_per_subframe, 1, 1); + LOG_M("ru_rxsig0.m","rxs0", &ru->common.rxdata[0][subframe*frame_parms->samples_per_subframe], frame_parms->samples_per_subframe, 1, 1); + LOG_M("rxsigF0.m","rxsF0", gNB->prach_vars.rxsigF[0], N_ZC, 1, 1); + LOG_M("prach_preamble.m","prachp", &gNB->X_u[0], N_ZC, 1, 1); + LOG_M("ue_prach_preamble.m","prachp", &UE->X_u[0], N_ZC, 1, 1); + #endif } } - printf("SNR %f dB, UE Speed %f km/h: errors %u/%d (delay %f)\n",SNR,ue_speed,prach_errors,n_frames,delay_avg/(double)(n_frames-prach_errors)); - //printf("(%f,%f)\n",ue_speed,(double)prach_errors/(double)n_frames); + printf("SNR %f dB, UE Speed %f km/h: errors %d/%d (delay %f)\n", SNR, ue_speed, prach_errors, n_frames, delay_avg/(double)(n_frames-prach_errors)); + if (input_fd) + break; + if (prach_errors) + break; + } // UE Speed loop - - //printf("SNR %f dB, UE Speed %f km/h: errors %d/%d (delay %f)\n",SNR,ue_speed,prach_errors,n_frames,delay_avg/(double)(n_frames-prach_errors)); - // printf("(%f,%f)\n",SNR,(double)prach_errors/(double)n_frames); + if (!prach_errors) { + printf("PRACH test OK\n"); + break; + } + if (input_fd) + break; } //SNR loop - for (i=0; i<2; i++) { free(s_re[i]); free(s_im[i]); @@ -655,17 +756,7 @@ int main(int argc, char **argv) free(r_re); free(r_im); + if (input_fd) fclose(input_fd); return(0); - } - - - -/* - for (i=1;i<4;i++) - memcpy((void *)&PHY_vars->tx_vars[0].TX_DMA_BUFFER[i*12*OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES_NO_PREFIX*2], - (void *)&PHY_vars->tx_vars[0].TX_DMA_BUFFER[0], - 12*OFDM_SYMBOL_SIZE_SAMPLES_NO_PREFIX*2); -*/ - diff --git a/openair1/SIMULATION/NR_PHY/pucchsim.c b/openair1/SIMULATION/NR_PHY/pucchsim.c index a754df4763..c14a3d7198 100644 --- a/openair1/SIMULATION/NR_PHY/pucchsim.c +++ b/openair1/SIMULATION/NR_PHY/pucchsim.c @@ -33,11 +33,11 @@ #include "PHY/defs_nr_UE.h" #include "PHY/defs_gNB.h" #include "PHY/NR_REFSIG/refsig_defs_ue.h" -#include "PHY/NR_REFSIG/nr_mod_table.h" #include "PHY/MODULATION/modulation_eNB.h" #include "PHY/MODULATION/modulation_UE.h" +#include "PHY/NR_ESTIMATION/nr_ul_estimation.h" #include "PHY/INIT/phy_init.h" -#include "PHY/NR_TRANSPORT/nr_transport.h" +#include "PHY/NR_TRANSPORT/nr_transport_proto.h" #include "PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h" #include "PHY/NR_UE_TRANSPORT/pucch_nr.h" #include "SCHED_NR/sched_nr.h" @@ -55,10 +55,14 @@ int32_t uplink_frequency_offset[MAX_NUM_CCs][4]; double cpuf; uint8_t nfapi_mode = 0; uint16_t NB_UE_INST = 1; +uint8_t const nr_rv_round_map[4] = {0, 2, 1, 3}; +uint8_t const nr_rv_round_map_ue[4] = {0, 2, 1, 3}; // needed for some functions PHY_VARS_NR_UE * PHY_vars_UE_g[1][1]={{NULL}}; +void init_downlink_harq_status(NR_DL_UE_HARQ_t *dl_harq) {} + int main(int argc, char **argv) { char c; @@ -76,15 +80,15 @@ int main(int argc, char **argv) //int freq_offset; //int subframe_offset; //char fname[40], vname[40]; - int trial,n_trials=100,n_errors=0,ack_nack_errors=0; + int trial,n_trials=100,n_errors=0,ack_nack_errors=0,sr_errors=0; uint8_t transmission_mode = 1,n_tx=1,n_rx=1; uint16_t Nid_cell=0; uint64_t SSB_positions=0x01; - channel_desc_t *gNB2UE; + channel_desc_t *UE2gNB; int format=0; //uint8_t extended_prefix_flag=0; FILE *input_fd=NULL; - uint8_t nacktoack_flag=0; + //uint8_t nacktoack_flag=0; int16_t amp=0x7FFF; int nr_tti_tx=0; uint64_t actual_payload=0,payload_received; @@ -96,6 +100,8 @@ int main(int argc, char **argv) uint16_t nrofPRB=2; uint8_t timeDomainOCC=0; SCM_t channel_model=AWGN;//Rayleigh1_anticorr; + + double DS_TDL = .03; int N_RB_DL=273,mu=1; float target_error_rate=0.001; @@ -158,6 +164,20 @@ int main(int argc, char **argv) case 'G': channel_model=ETU; break; + case 'H': + channel_model = TDL_C; + DS_TDL = .030; // 30 ns + break; + + case 'I': + channel_model = TDL_C; + DS_TDL = .3; // 300ns + break; + + case 'J': + channel_model=TDL_D; + DS_TDL = .03; + break; default: printf("Unsupported channel model!\n"); @@ -283,7 +303,7 @@ int main(int argc, char **argv) actual_payload=atoi(optarg); break; case 'T': - nacktoack_flag=(uint8_t)atoi(optarg); + //nacktoack_flag=(uint8_t)atoi(optarg); target_error_rate=0.001; break; default: @@ -336,7 +356,7 @@ int main(int argc, char **argv) } AssertFatal(((format < 2)&&(nr_bit<3)&&(actual_payload<4)) || - ((format == 2)&&(nr_bit>2)&&(nr_bit<12)),"illegal combination format %d, nr_bit %d\n", + ((format == 2)&&(nr_bit>2)&&(nr_bit<65)),"illegal combination format %d, nr_bit %d\n", format,nr_bit); actual_payload &= ((1<pucch_config_common_nr->pucch_GroupHopping; uint32_t hopping_id=UE->pucch_config_common_nr->hoppingId; uint32_t dmrs_scrambling_id = 0, data_scrambling_id=0; + //t_nrPolar_params *currentPtr; + + int shift = 0; + if(format==0){ - // for now we are not considering SR just HARQ-ACK + if (sr_flag) + shift = 1< 11) gNB->uci_polarParams = nr_polar_params(2, nr_bit, nrofPRB, 1, NULL); + for(SNR=snr0;SNR<=snr1;SNR=SNR+1){ ack_nack_errors=0; + sr_errors=0; n_errors = 0; for (trial=0; trialofdm_symbol_size*sizeof(int)); if(format==0){ - nr_generate_pucch0(UE,txdataF,frame_parms,UE->pucch_config_dedicated,amp,nr_tti_tx,m0,mcs,nrofSymbols,startingSymbolIndex,startingPRB); + nr_generate_pucch0(UE,txdataF,frame_parms,PUCCH_GroupHopping,hopping_id,amp,nr_tti_tx,m0,mcs,nrofSymbols,startingSymbolIndex,startingPRB); } else if (format == 1){ nr_generate_pucch1(UE,txdataF,frame_parms,UE->pucch_config_dedicated,actual_payload,amp,nr_tti_tx,m0,nrofSymbols,startingSymbolIndex,startingPRB,startingPRB_intraSlotHopping,0,nr_bit); @@ -498,7 +525,16 @@ int main(int argc, char **argv) } int rxlev = signal_energy(&rxdataF[aa][startingSymbolIndex*frame_parms->ofdm_symbol_size], frame_parms->ofdm_symbol_size); - // printf("rxlev %d (%d dB), sigma2 %f dB, SNR %f, TX %f\n",rxlev,dB_fixed(rxlev),sigma2_dB,SNR,10*log10((double)txlev*UE->frame_parms.ofdm_symbol_size/12)); + + // noise measurement + gNB->ulmask_symb = startingSymbolIndex; + for (int rb=0; rbrb_mask_ul[rb2>>5] |= (1<<(rb2&31)); + } + gNB_I0_measurements(gNB); + + if (n_trials==1) printf("rxlev %d (%d dB), sigma2 %f dB, SNR %f, TX %f\n",rxlev,dB_fixed(rxlev),sigma2_dB,SNR,10*log10((double)txlev*UE->frame_parms.ofdm_symbol_size/12)); if(format==0){ nfapi_nr_uci_pucch_pdu_format_0_1_t uci_pdu; nfapi_nr_pucch_pdu_t pucch_pdu; @@ -506,6 +542,8 @@ int main(int argc, char **argv) pucch_pdu.group_hop_flag = PUCCH_GroupHopping&1; pucch_pdu.sequence_hop_flag = (PUCCH_GroupHopping>>1)&1; pucch_pdu.bit_len_harq = nr_bit; + pucch_pdu.bit_len_csi_part1 = 0; + pucch_pdu.bit_len_csi_part2 = 0; pucch_pdu.sr_flag = sr_flag; pucch_pdu.nr_of_symbols = nrofSymbols; pucch_pdu.hopping_id = hopping_id; @@ -513,15 +551,23 @@ int main(int argc, char **argv) pucch_pdu.start_symbol_index = startingSymbolIndex; pucch_pdu.prb_start = startingPRB; nr_decode_pucch0(gNB,nr_tti_tx,&uci_pdu,&pucch_pdu); - if(nr_bit==1) - ack_nack_errors+=(actual_payload^uci_pdu.harq->harq_list[0].harq_value); - else - ack_nack_errors+=(((actual_payload&1)^uci_pdu.harq->harq_list[0].harq_value)+((actual_payload>>1)^uci_pdu.harq->harq_list[1].harq_value)); - free(uci_pdu.harq->harq_list); + if(sr_flag==1){ + if (uci_pdu.sr->sr_indication == 0 || uci_pdu.sr->sr_confidence_level == 1) + sr_errors+=1; + } + if(nr_bit>0){ + if(nr_bit==1) + ack_nack_errors+=(actual_payload^uci_pdu.harq->harq_list[0].harq_value); + else + ack_nack_errors+=(((actual_payload&1)^uci_pdu.harq->harq_list[0].harq_value)+((actual_payload>>1)^uci_pdu.harq->harq_list[1].harq_value)); + free(uci_pdu.harq->harq_list); + } } else if (format==1) { - - nr_decode_pucch1(rxdataF,PUCCH_GroupHopping,hopping_id,&(payload_received),frame_parms,amp,nr_tti_tx,m0,nrofSymbols,startingSymbolIndex,startingPRB,startingPRB_intraSlotHopping,timeDomainOCC,nr_bit); + nr_decode_pucch1(rxdataF,PUCCH_GroupHopping,hopping_id, + &(payload_received),frame_parms,amp,nr_tti_tx, + m0,nrofSymbols,startingSymbolIndex,startingPRB, + startingPRB_intraSlotHopping,timeDomainOCC,nr_bit); if(nr_bit==1) ack_nack_errors+=((actual_payload^payload_received)&1); else @@ -534,7 +580,9 @@ int main(int argc, char **argv) pucch_pdu.subcarrier_spacing = 1; pucch_pdu.group_hop_flag = PUCCH_GroupHopping&1; pucch_pdu.sequence_hop_flag = (PUCCH_GroupHopping>>1)&1; - pucch_pdu.bit_len_harq = nr_bit; + pucch_pdu.bit_len_csi_part1 = nr_bit; + pucch_pdu.bit_len_harq = 0; + pucch_pdu.bit_len_csi_part2 = 0; pucch_pdu.sr_flag = 0; pucch_pdu.nr_of_symbols = nrofSymbols; pucch_pdu.hopping_id = hopping_id; @@ -545,20 +593,24 @@ int main(int argc, char **argv) pucch_pdu.dmrs_scrambling_id = dmrs_scrambling_id; pucch_pdu.data_scrambling_id = data_scrambling_id; nr_decode_pucch2(gNB,nr_tti_tx,&uci_pdu,&pucch_pdu); - int harq_bytes=pucch_pdu.bit_len_harq>>3; - if ((pucch_pdu.bit_len_harq&7) > 0) harq_bytes++; - for (int i=0;i>3; + if ((pucch_pdu.bit_len_csi_part1&7) > 0) csi_part1_bytes++; + for (int i=0;i>1)+(((actual_payload^payload_received)&4)>>2)+n_errors; } - printf("SNR=%f, n_trials=%d, n_bit_errors=%d\n",SNR,n_trials,ack_nack_errors); - if((float)ack_nack_errors/(float)(n_trials)<=target_error_rate){ + if (sr_flag == 1) + printf("SR: SNR=%f, n_trials=%d, n_bit_errors=%d\n",SNR,n_trials,sr_errors); + if(nr_bit > 0) + printf("ACK/NACK: SNR=%f, n_trials=%d, n_bit_errors=%d\n",SNR,n_trials,ack_nack_errors); + if((float)(ack_nack_errors+sr_errors)/(float)(n_trials)<=target_error_rate){ printf("PUCCH test OK\n"); break; } diff --git a/openair1/SIMULATION/NR_PHY/ulschsim.c b/openair1/SIMULATION/NR_PHY/ulschsim.c index 5881b21b5f..f6d33c1d4b 100644 --- a/openair1/SIMULATION/NR_PHY/ulschsim.c +++ b/openair1/SIMULATION/NR_PHY/ulschsim.c @@ -34,10 +34,9 @@ #include "PHY/defs_gNB.h" #include "PHY/INIT/phy_init.h" #include "PHY/NR_REFSIG/refsig_defs_ue.h" -#include "PHY/NR_REFSIG/nr_mod_table.h" #include "PHY/MODULATION/modulation_eNB.h" #include "PHY/MODULATION/modulation_UE.h" -#include "PHY/NR_TRANSPORT/nr_transport.h" +#include "PHY/NR_TRANSPORT/nr_transport_proto.h" #include "PHY/NR_TRANSPORT/nr_dlsch.h" #include "PHY/NR_TRANSPORT/nr_ulsch.h" #include "PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h" @@ -54,6 +53,11 @@ PHY_VARS_NR_UE *UE; RAN_CONTEXT_t RC; int32_t uplink_frequency_offset[MAX_NUM_CCs][4]; +void init_downlink_harq_status(NR_DL_UE_HARQ_t *dl_harq) {} + +uint8_t const nr_rv_round_map[4] = {0, 2, 1, 3}; +uint8_t const nr_rv_round_map_ue[4] = {0, 2, 1, 3}; + double cpuf; uint8_t nfapi_mode = 0; uint16_t NB_UE_INST = 1; @@ -95,6 +99,8 @@ int main(int argc, char **argv) uint16_t nb_rb = 50; uint8_t Imcs = 9; + double DS_TDL = .03; + cpuf = get_cpu_freq_GHz(); if (load_configmodule(argc, argv, CONFIG_ENABLECMDLINEONLY) == 0) { @@ -314,13 +320,12 @@ int main(int argc, char **argv) snr1 = snr0 + 10; gNB2UE = new_channel_desc_scm(n_tx, - n_rx, - channel_model, + n_rx, + channel_model, 61.44e6, //N_RB2sampling_rate(N_RB_DL), 40e6, //N_RB2channel_bandwidth(N_RB_DL), - 0, - 0, - 0); + DS_TDL, + 0,0,0); if (gNB2UE == NULL) { printf("Problem generating channel model. Exiting.\n"); @@ -391,7 +396,7 @@ int main(int argc, char **argv) mod_order = nr_get_Qm_ul(Imcs, 0); code_rate = nr_get_code_rate_ul(Imcs, 0); available_bits = nr_get_G(nb_rb, nb_symb_sch, nb_re_dmrs, length_dmrs, mod_order, 1); - TBS = nr_compute_tbs(mod_order,code_rate, nb_rb, nb_symb_sch, nb_re_dmrs*length_dmrs, 0, Nl); + TBS = nr_compute_tbs(mod_order,code_rate, nb_rb, nb_symb_sch, nb_re_dmrs*length_dmrs, 0, 0, Nl); printf("\nAvailable bits %u TBS %u mod_order %d\n", available_bits, TBS, mod_order); diff --git a/openair1/SIMULATION/NR_PHY/ulsim.c b/openair1/SIMULATION/NR_PHY/ulsim.c index 4e3790bce6..ef7a669bc4 100644 --- a/openair1/SIMULATION/NR_PHY/ulsim.c +++ b/openair1/SIMULATION/NR_PHY/ulsim.c @@ -37,15 +37,14 @@ #include "PHY/MODULATION/modulation_UE.h" #include "PHY/MODULATION/nr_modulation.h" #include "PHY/NR_REFSIG/dmrs_nr.h" -#include "PHY/NR_REFSIG/nr_mod_table.h" #include "PHY/NR_REFSIG/refsig_defs_ue.h" #include "PHY/NR_TRANSPORT/nr_dlsch.h" #include "PHY/NR_TRANSPORT/nr_sch_dmrs.h" -#include "PHY/NR_TRANSPORT/nr_transport.h" #include "PHY/NR_TRANSPORT/nr_transport_proto.h" #include "PHY/NR_TRANSPORT/nr_ulsch.h" #include "PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h" #include "PHY/TOOLS/tools_defs.h" +#include "SCHED_NR/fapi_nr_l1.h" #include "SCHED_NR/sched_nr.h" #include "SCHED_NR_UE/defs.h" #include "SCHED_NR_UE/fapi_nr_ue_l1.h" @@ -53,10 +52,12 @@ #include "openair1/SIMULATION/RF/rf.h" #include "openair1/SIMULATION/NR_PHY/nr_unitary_defs.h" #include "openair2/RRC/NR/MESSAGES/asn1_msg.h" +//#include "openair1/SIMULATION/NR_PHY/nr_dummy_functions.c" #include "openair2/LAYER2/NR_MAC_UE/mac_proto.h" #include "openair2/LAYER2/NR_MAC_gNB/mac_proto.h" #define inMicroS(a) (((double)(a))/(cpu_freq_GHz*1000.0)) #include "SIMULATION/LTE_PHY/common_sim.h" + //#define DEBUG_ULSIM PHY_VARS_gNB *gNB; @@ -95,13 +96,20 @@ boolean_t pdcp_data_ind( ) { return(false);} void pdcp_run (const protocol_ctxt_t *const ctxt_pP) { return;} -void nr_ip_over_LTE_DRB_preconfiguration(void){} +void nr_DRB_preconfiguration(void){} int rrc_init_nr_global_param(void){return(0);} // needed for some functions uint16_t n_rnti = 0x1234; openair0_config_t openair0_cfg[MAX_CARDS]; +//const uint8_t nr_rv_round_map[4] = {0, 2, 1, 3}; + +channel_desc_t *UE2gNB[NUMBER_OF_UE_MAX][NUMBER_OF_gNB_MAX]; +double s_re0[122880],s_im0[122880],r_re0[122880],r_im0[122880]; +double s_re1[122880],s_im1[122880],r_re1[122880],r_im1[122880]; +double r_re2[122880],r_im2[122880]; +double r_re3[122880],r_im3[122880]; int main(int argc, char **argv) { @@ -109,30 +117,37 @@ int main(int argc, char **argv) int i; double SNR, snr0 = -2.0, snr1 = 2.0; double sigma, sigma_dB; - double snr_step = 1; + double snr_step = .2; uint8_t snr1set = 0; - int slot = 0, frame = 0; + int slot = 8, frame = 1; FILE *output_fd = NULL; + double *s_re[2]= {s_re0,s_re1}; + double *s_im[2]= {s_im0,s_im1}; + double *r_re[4]= {r_re0,r_re1,r_re2,r_re3}; + double *r_im[4]= {r_im0,r_im1,r_im2,r_im3}; //uint8_t write_output_file = 0; - int trial, n_trials = 1, n_errors = 0, n_false_positive = 0, delay = 0; + int trial, n_trials = 1, n_false_positive = 0, delay = 0; + double maxDoppler = 0.0; uint8_t n_tx = 1, n_rx = 1; //uint8_t transmission_mode = 1; - uint16_t Nid_cell = 0; - channel_desc_t *gNB2UE; + //uint16_t Nid_cell = 0; + channel_desc_t *UE2gNB; uint8_t extended_prefix_flag = 0; //int8_t interf1 = -21, interf2 = -21; FILE *input_fd = NULL; SCM_t channel_model = AWGN; //Rayleigh1_anticorr; uint16_t N_RB_DL = 106, N_RB_UL = 106, mu = 1; + double tx_gain=1.0; + double N0=30; + //unsigned char frame_type = 0; - int frame_length_complex_samples,frame_length_complex_samples_no_prefix; NR_DL_FRAME_PARMS *frame_parms; - int loglvl = OAILOG_WARNING; - uint64_t SSB_positions=0x01; + int loglvl = OAILOG_INFO; + //uint64_t SSB_positions=0x01; uint16_t nb_symb_sch = 12; - int start_symbol = 2; + int start_symbol = 0; uint16_t nb_rb = 50; - uint8_t Imcs = 9; + int Imcs = 9; uint8_t precod_nbr_layers = 1; int gNB_id = 0; int ap; @@ -144,12 +159,22 @@ int main(int argc, char **argv) float target_error_rate = 0.01; int print_perf = 0; cpuf = get_cpu_freq_GHz(); - + int msg3_flag = 0; + int rv_index = 0; + float roundStats[50]; + float effRate; + //float eff_tp_check = 0.7; + uint8_t snrRun; UE_nr_rxtx_proc_t UE_proc; FILE *scg_fd=NULL; + int file_offset = 0; - + double DS_TDL = .03; + int pusch_tgt_snrx10 = 200; + int pucch_tgt_snrx10 = 200; + int ibwps=24; + int ibwp_rboffset=41; if ( load_configmodule(argc,argv,CONFIG_ENABLECMDLINEONLY) == 0 ) { exit_fun("[NR_ULSIM] Error, configuration module init failed\n"); } @@ -157,221 +182,293 @@ int main(int argc, char **argv) //logInit(); randominit(0); - while ((c = getopt(argc, argv, "d:f:g:h:i:j:l:m:n:p:r:s:y:z:F:M:N:PR:S:L:")) != -1) { + while ((c = getopt(argc, argv, "a:b:c:d:ef:g:h:i:j:kl:m:n:p:r:s:y:z:F:M:N:PR:S:L:G:H:")) != -1) { + printf("handling optarg %c\n",c); switch (c) { /*case 'd': frame_type = 1; break;*/ - case 'd': - delay = atoi(optarg); - break; + case 'a': + start_symbol = atoi(optarg); + AssertFatal(start_symbol >= 0 && start_symbol < 13,"start_symbol %d is not in 0..12\n",start_symbol); + break; - case 'f': - scg_fd = fopen(optarg, "r"); + case 'b': + nb_symb_sch = atoi(optarg); + AssertFatal(nb_symb_sch > 0 && nb_symb_sch < 15,"start_symbol %d is not in 1..14\n",nb_symb_sch); + break; + case 'c': + n_rnti = atoi(optarg); + AssertFatal(n_rnti > 0 && n_rnti<=65535,"Illegal n_rnti %x\n",n_rnti); + break; - if (scg_fd == NULL) { - printf("Error opening %s\n", optarg); - exit(-1); - } + case 'd': + delay = atoi(optarg); + break; + + case 'e': + msg3_flag = 1; + break; + + case 'f': + scg_fd = fopen(optarg, "r"); + + if (scg_fd == NULL) { + printf("Error opening %s\n", optarg); + exit(-1); + } - break; + break; + + case 'g': + switch ((char) *optarg) { + case 'A': + channel_model = SCM_A; + break; + + case 'B': + channel_model = SCM_B; + break; + + case 'C': + channel_model = SCM_C; + break; + + case 'D': + channel_model = SCM_D; + break; + + case 'E': + channel_model = EPA; + break; + + case 'F': + channel_model = EVA; + break; + + case 'G': + channel_model = ETU; + break; - case 'g': - switch ((char) *optarg) { - case 'A': - channel_model = SCM_A; - break; - - case 'B': - channel_model = SCM_B; - break; - - case 'C': - channel_model = SCM_C; - break; - - case 'D': - channel_model = SCM_D; - break; - - case 'E': - channel_model = EPA; - break; - - case 'F': - channel_model = EVA; - break; - - case 'G': - channel_model = ETU; - break; - - default: - printf("Unsupported channel model!\n"); - exit(-1); - } - + case 'H': + channel_model = TDL_C; + DS_TDL = .030; // 30 ns + break; + + case 'I': + channel_model = TDL_C; + DS_TDL = .3; // 300ns break; + + case 'J': + channel_model=TDL_D; + DS_TDL = .03; + break; + default: + printf("Unsupported channel model!\n"); + exit(-1); + } + + break; + /*case 'i': interf1 = atoi(optarg); break; - - case 'j': + + case 'j': interf2 = atoi(optarg); break;*/ - case 'l': - nb_symb_sch = atoi(optarg); - break; + case 'k': + printf("Setting threequarter_fs_flag\n"); + openair0_cfg[0].threequarter_fs= 1; + break; - case 'm': - Imcs = atoi(optarg); - break; - - case 'n': - n_trials = atoi(optarg); - break; - - case 'p': - extended_prefix_flag = 1; - break; - - case 'r': - nb_rb = atoi(optarg); - break; - - case 's': - snr0 = atof(optarg); - printf("Setting SNR0 to %f\n", snr0); - break; + case 'l': + nb_symb_sch = atoi(optarg); + break; + + case 'm': + Imcs = atoi(optarg); + break; + + case 'n': + n_trials = atoi(optarg); + break; + + case 'p': + extended_prefix_flag = 1; + break; + + case 'r': + nb_rb = atoi(optarg); + break; + + case 's': + snr0 = atof(optarg); + printf("Setting SNR0 to %f\n", snr0); + break; +/* + case 't': + eff_tp_check = (float)atoi(optarg)/100; + break; +*/ /* - case 'r': - ricean_factor = pow(10,-.1*atof(optarg)); - if (ricean_factor>1) { - printf("Ricean factor must be between 0 and 1\n"); - exit(-1); - } - break; - */ - + case 'r': + ricean_factor = pow(10,-.1*atof(optarg)); + if (ricean_factor>1) { + printf("Ricean factor must be between 0 and 1\n"); + exit(-1); + } + break; + */ + /*case 'x': transmission_mode = atoi(optarg); break;*/ + + case 'y': + n_tx = atoi(optarg); + + if ((n_tx == 0) || (n_tx > 2)) { + printf("Unsupported number of tx antennas %d\n", n_tx); + exit(-1); + } + + break; + + case 'z': + n_rx = atoi(optarg); + + if ((n_rx == 0) || (n_rx > 2)) { + printf("Unsupported number of rx antennas %d\n", n_rx); + exit(-1); + } + + break; + + case 'F': + input_fd = fopen(optarg, "r"); + + if (input_fd == NULL) { + printf("Problem with filename %s\n", optarg); + exit(-1); + } + + break; + + case 'M': + // SSB_positions = atoi(optarg); + break; + + case 'N': + // Nid_cell = atoi(optarg); + break; + + case 'R': + N_RB_DL = atoi(optarg); + N_RB_UL = N_RB_DL; + break; + + case 'S': + snr1 = atof(optarg); + snr1set = 1; + printf("Setting SNR1 to %f\n", snr1); + break; + + case 'P': + print_perf=1; + opp_enabled=1; + break; + + case 'L': + loglvl = atoi(optarg); + break; - case 'y': - n_tx = atoi(optarg); + case 'G': + file_offset = atoi(optarg); + break; - if ((n_tx == 0) || (n_tx > 2)) { - printf("Unsupported number of tx antennas %d\n", n_tx); - exit(-1); - } + case 'H': + slot = atoi(optarg); + break; + + default: + case 'h': + printf("%s -h(elp) -p(extended_prefix) -N cell_id -f output_filename -F input_filename -g channel_model -n n_frames -t Delayspread -s snr0 -S snr1 -x transmission_mode -y TXant -z RXant -i Intefrence0 -j Interference1 -A interpolation_file -C(alibration offset dB) -N CellId\n", argv[0]); + //printf("-d Use TDD\n"); + printf("-d Introduce delay in terms of number of samples\n"); + printf("-f Number of frames to simulate\n"); + printf("-g [A,B,C,D,E,F,G] Use 3GPP SCM (A,B,C,D) or 36-101 (E-EPA,F-EVA,G-ETU) models (ignores delay spread and Ricean factor)\n"); + printf("-h This message\n"); + //printf("-i Relative strength of first intefering eNB (in dB) - cell_id mod 3 = 1\n"); + //printf("-j Relative strength of second intefering eNB (in dB) - cell_id mod 3 = 2\n"); + printf("-s Starting SNR, runs from SNR0 to SNR0 + 10 dB if ending SNR isn't given\n"); + printf("-m MCS value\n"); + printf("-n Number of trials to simulate\n"); + printf("-p Use extended prefix mode\n"); + printf("-t Delay spread for multipath channel\n"); + //printf("-x Transmission mode (1,2,6 for the moment)\n"); + printf("-y Number of TX antennas used in eNB\n"); + printf("-z Number of RX antennas used in UE\n"); + printf("-A Interpolation_filname Run with Abstraction to generate Scatter plot using interpolation polynomial in file\n"); + //printf("-C Generate Calibration information for Abstraction (effective SNR adjustment to remove Pe bias w.r.t. AWGN)\n"); + printf("-F Input filename (.txt format) for RX conformance testing\n"); + printf("-G raw file containing RRC configuration (generated by gNB)\n"); + printf("-M Multiple SSB positions in burst\n"); + printf("-N Nid_cell\n"); + printf("-O oversampling factor (1,2,4,8,16)\n"); + printf("-R N_RB_DL\n"); + printf("-t Acceptable effective throughput (in percentage)\n"); + printf("-S Ending SNR, runs from SNR0 to SNR1\n"); + printf("-P Print ULSCH performances\n"); + exit(-1); + break; - break; - - case 'z': - n_rx = atoi(optarg); - - if ((n_rx == 0) || (n_rx > 2)) { - printf("Unsupported number of rx antennas %d\n", n_rx); - exit(-1); - } - - break; - - case 'F': - input_fd = fopen(optarg, "r"); - - if (input_fd == NULL) { - printf("Problem with filename %s\n", optarg); - exit(-1); - } - - break; - - case 'M': - SSB_positions = atoi(optarg); - break; - - case 'N': - Nid_cell = atoi(optarg); - break; - - case 'R': - N_RB_DL = atoi(optarg); - N_RB_UL = N_RB_DL; - break; - - case 'S': - snr1 = atof(optarg); - snr1set = 1; - printf("Setting SNR1 to %f\n", snr1); - break; - - case 'P': - print_perf=1; - opp_enabled=1; - break; - - case 'L': - loglvl = atoi(optarg); - break; - - default: - case 'h': - printf("%s -h(elp) -p(extended_prefix) -N cell_id -f output_filename -F input_filename -g channel_model -n n_frames -t Delayspread -s snr0 -S snr1 -x transmission_mode -y TXant -z RXant -i Intefrence0 -j Interference1 -A interpolation_file -C(alibration offset dB) -N CellId\n", argv[0]); - //printf("-d Use TDD\n"); - printf("-d Introduce delay in terms of number of samples\n"); - printf("-f Number of frames to simulate\n"); - printf("-g [A,B,C,D,E,F,G] Use 3GPP SCM (A,B,C,D) or 36-101 (E-EPA,F-EVA,G-ETU) models (ignores delay spread and Ricean factor)\n"); - printf("-h This message\n"); - //printf("-i Relative strength of first intefering eNB (in dB) - cell_id mod 3 = 1\n"); - //printf("-j Relative strength of second intefering eNB (in dB) - cell_id mod 3 = 2\n"); - printf("-s Starting SNR, runs from SNR0 to SNR0 + 10 dB if ending SNR isn't given\n"); - printf("-m MCS value\n"); - printf("-n Number of trials to simulate\n"); - printf("-p Use extended prefix mode\n"); - printf("-t Delay spread for multipath channel\n"); - //printf("-x Transmission mode (1,2,6 for the moment)\n"); - printf("-y Number of TX antennas used in eNB\n"); - printf("-z Number of RX antennas used in UE\n"); - printf("-A Interpolation_filname Run with Abstraction to generate Scatter plot using interpolation polynomial in file\n"); - //printf("-C Generate Calibration information for Abstraction (effective SNR adjustment to remove Pe bias w.r.t. AWGN)\n"); - printf("-F Input filename (.txt format) for RX conformance testing\n"); - printf("-G raw file containing RRC configuration (generated by gNB)\n"); - printf("-M Multiple SSB positions in burst\n"); - printf("-N Nid_cell\n"); - printf("-O oversampling factor (1,2,4,8,16)\n"); - printf("-R N_RB_DL\n"); - printf("-S Ending SNR, runs from SNR0 to SNR1\n"); - printf("-P Print ULSCH performances\n"); - exit(-1); - break; } } - + logInit(); set_glog(loglvl); T_stdout = 1; get_softmodem_params()->phy_test = 1; - + get_softmodem_params()->do_ra = 0; + get_softmodem_params()->usim_test = 1; + + if (snr1set == 0) snr1 = snr0 + 10; + double sampling_frequency; + double bandwidth; - gNB2UE = new_channel_desc_scm(n_tx, n_rx, channel_model, - 61.44e6, //N_RB2sampling_rate(N_RB_DL), - 40e6, //N_RB2channel_bandwidth(N_RB_DL), + if (N_RB_UL >= 217) sampling_frequency = 122.88; + else if (N_RB_UL >= 106) sampling_frequency = 61.44; + else { printf("Need at least 106 PRBs\b"); exit(-1); } + if (N_RB_UL == 273) bandwidth = 100; + else if (N_RB_UL == 217) bandwidth = 80; + else if (N_RB_UL == 106) bandwidth = 40; + else { printf("Add N_RB_UL %d\n",N_RB_UL); exit(-1); } + + if (openair0_cfg[0].threequarter_fs == 1) sampling_frequency*=.75; + + UE2gNB = new_channel_desc_scm(n_tx, n_rx, channel_model, + sampling_frequency, + bandwidth, + DS_TDL, 0, 0, 0); - if (gNB2UE == NULL) { + if (UE2gNB == NULL) { printf("Problem generating channel model. Exiting.\n"); exit(-1); } + UE2gNB->max_Doppler = maxDoppler; + RC.gNB = (PHY_VARS_gNB **) malloc(sizeof(PHY_VARS_gNB *)); RC.gNB[0] = malloc(sizeof(PHY_VARS_gNB)); gNB = RC.gNB[0]; @@ -383,12 +480,15 @@ int main(int argc, char **argv) gNB->UL_INFO.rx_ind.number_of_pdus = 0; gNB->UL_INFO.crc_ind.number_crcs = 0; frame_parms = &gNB->frame_parms; //to be initialized I suppose (maybe not necessary for PBCH) + + frame_parms->nb_antennas_tx = n_tx; frame_parms->nb_antennas_rx = n_rx; frame_parms->N_RB_DL = N_RB_DL; frame_parms->N_RB_UL = N_RB_UL; frame_parms->Ncp = extended_prefix_flag ? EXTENDED : NORMAL; + RC.nb_nr_macrlc_inst = 1; RC.nb_nr_mac_CC = (int*)malloc(RC.nb_nr_macrlc_inst*sizeof(int)); for (i = 0; i < RC.nb_nr_macrlc_inst; i++) @@ -417,20 +517,22 @@ int main(int argc, char **argv) xer_fprint(stdout, &asn_DEF_NR_CellGroupConfig, (const void*)secondaryCellGroup); AssertFatal((gNB->if_inst = NR_IF_Module_init(0))!=NULL,"Cannot register interface"); + gNB->if_inst->NR_PHY_config_req = nr_phy_config_request; // common configuration - rrc_mac_config_req_gNB(0,0,1,scc,0,0,NULL); + rrc_mac_config_req_gNB(0,0,1,pusch_tgt_snrx10,pucch_tgt_snrx10,scc,0,0,NULL); // UE dedicated configuration - rrc_mac_config_req_gNB(0,0,1,NULL,1,secondaryCellGroup->spCellConfig->reconfigurationWithSync->newUE_Identity,secondaryCellGroup); + rrc_mac_config_req_gNB(0,0,1,pusch_tgt_snrx10,pucch_tgt_snrx10,NULL,1,secondaryCellGroup->spCellConfig->reconfigurationWithSync->newUE_Identity,secondaryCellGroup); phy_init_nr_gNB(gNB,0,0); N_RB_DL = gNB->frame_parms.N_RB_DL; + + NR_BWP_Uplink_t *ubwp=secondaryCellGroup->spCellConfig->spCellConfigDedicated->uplinkConfig->uplinkBWP_ToAddModList->list.array[0]; + //crcTableInit(); //nr_phy_config_request_sim(gNB, N_RB_DL, N_RB_UL, mu, Nid_cell, SSB_positions); - frame_length_complex_samples = frame_parms->samples_per_subframe; - frame_length_complex_samples_no_prefix = frame_parms->samples_per_subframe_wCP; //configure UE UE = malloc(sizeof(PHY_VARS_NR_UE)); @@ -478,7 +580,7 @@ int main(int argc, char **argv) rrc.carrier.MIB = (uint8_t*) malloc(4); rrc.carrier.sizeof_MIB = do_MIB_NR(&rrc,0); - nr_rrc_mac_config_req_ue(0,0,0,rrc.carrier.mib.message.choice.mib,secondaryCellGroup->spCellConfig); + nr_rrc_mac_config_req_ue(0,0,0,rrc.carrier.mib.message.choice.mib,secondaryCellGroup); nr_ue_phy_config_request(&UE_mac->phy_config); @@ -487,7 +589,11 @@ int main(int argc, char **argv) NR_gNB_ULSCH_t *ulsch_gNB = gNB->ulsch[UE_id][0]; //nfapi_nr_ul_config_ulsch_pdu *rel15_ul = &ulsch_gNB->harq_processes[harq_pid]->ulsch_pdu; - nfapi_nr_ul_tti_request_t *UL_tti_req = &gNB->UL_tti_req; + nfapi_nr_ul_tti_request_t *UL_tti_req = malloc(sizeof(*UL_tti_req)); + NR_Sched_Rsp_t *Sched_INFO = malloc(sizeof(*Sched_INFO)); + memset((void*)Sched_INFO,0,sizeof(*Sched_INFO)); + Sched_INFO->UL_tti_req=UL_tti_req; + nfapi_nr_pusch_pdu_t *pusch_pdu = &UL_tti_req->pdus_list[0].pusch_pdu; NR_UE_ULSCH_t **ulsch_ue = UE->ulsch[0][0]; @@ -495,7 +601,7 @@ int main(int argc, char **argv) unsigned char *estimated_output_bit; unsigned char *test_input_bit; uint32_t errors_decoding = 0; - uint32_t errors_scrambling = 0; + test_input_bit = (unsigned char *) malloc16(sizeof(unsigned char) * 16 * 68 * 384); estimated_output_bit = (unsigned char *) malloc16(sizeof(unsigned char) * 16 * 68 * 384); @@ -516,12 +622,16 @@ int main(int argc, char **argv) uint16_t n_rb1 = 75; uint8_t mcs_table = 0; uint16_t pdu_bit_map = PUSCH_PDU_BITMAP_PUSCH_DATA; // | PUSCH_PDU_BITMAP_PUSCH_PTRS; + uint8_t max_rounds = 4; + uint8_t crc_status = 0; uint8_t length_dmrs = pusch_len1; // [hna] remove dmrs struct uint16_t l_prime_mask = get_l_prime(nb_symb_sch, typeB, pusch_dmrs_pos0, length_dmrs); // [hna] remove dmrs struct uint8_t ptrs_time_density = get_L_ptrs(ptrs_mcs1, ptrs_mcs2, ptrs_mcs3, Imcs, mcs_table); uint8_t ptrs_freq_density = get_K_ptrs(n_rb0, n_rb1, nb_rb); + if (input_fd != NULL) max_rounds=1; + if(1<= nb_symb_sch) pdu_bit_map &= ~PUSCH_PDU_BITMAP_PUSCH_PTRS; // disable PUSCH PTRS @@ -534,10 +644,72 @@ int main(int argc, char **argv) printf("\n"); - for (SNR = snr0; SNR < snr1; SNR += snr_step) { + //for (int i=0;i<16;i++) printf("%f\n",gaussdouble(0.0,1.0)); + snrRun = 0; + int n_errs = 0; - varArray_t *table_rx=initVarArray(1000,sizeof(double)); + int slot_offset = frame_parms->get_samples_slot_timestamp(slot,frame_parms,0); + int slot_length = slot_offset - frame_parms->get_samples_slot_timestamp(slot-1,frame_parms,0); + + if (input_fd != NULL) { + AssertFatal(frame_parms->nb_antennas_rx == 1, "nb_ant != 1\n"); + // 800 samples is N_TA_OFFSET for FR1 @ 30.72 Ms/s, + AssertFatal(frame_parms->subcarrier_spacing==30000,"only 30 kHz for file input for now (%d)\n",frame_parms->subcarrier_spacing); + + fseek(input_fd,file_offset*((slot_length<<2)+4000+16),SEEK_SET); + fread((void*)&n_rnti,sizeof(int16_t),1,input_fd); + printf("rnti %x\n",n_rnti); + fread((void*)&nb_rb,sizeof(int16_t),1,input_fd); + printf("nb_rb %d\n",nb_rb); + int16_t dummy; + fread((void*)&start_rb,sizeof(int16_t),1,input_fd); + //fread((void*)&dummy,sizeof(int16_t),1,input_fd); + printf("rb_start %d\n",start_rb); + fread((void*)&nb_symb_sch,sizeof(int16_t),1,input_fd); + //fread((void*)&dummy,sizeof(int16_t),1,input_fd); + printf("nb_symb_sch %d\n",nb_symb_sch); + fread((void*)&start_symbol,sizeof(int16_t),1,input_fd); + printf("start_symbol %d\n",start_symbol); + fread((void*)&Imcs,sizeof(int16_t),1,input_fd); + printf("mcs %d\n",Imcs); + fread((void*)&rv_index,sizeof(int16_t),1,input_fd); + printf("rv_index %d\n",rv_index); + // fread((void*)&harq_pid,sizeof(int16_t),1,input_fd); + fread((void*)&dummy,sizeof(int16_t),1,input_fd); + printf("harq_pid %d\n",harq_pid); + fread((void*)&gNB->common_vars.rxdata[0][slot_offset-delay], + sizeof(int16_t), + slot_length<<1, + input_fd); + for (int i=0;i<16;i+=2) printf("slot_offset %d : %d,%d\n", + slot_offset, + ((int16_t*)&gNB->common_vars.rxdata[0][slot_offset])[i], + ((int16_t*)&gNB->common_vars.rxdata[0][slot_offset])[1+i]); + } + + for (SNR = snr0; SNR < snr1; SNR += snr_step) { + varArray_t *table_rx=initVarArray(1000,sizeof(double)); + int error_flag = 0; + n_false_positive = 0; + effRate = 0; + int n_errors[4] = {0,0,0,0};; + int round_trials[4]={0,0,0,0}; + uint32_t errors_scrambling[4] = {0,0,0,0}; + + clear_pusch_stats(gNB); + for (trial = 0; trial < n_trials; trial++) { + uint8_t round = 0; + + crc_status = 1; + errors_decoding = 0; + memset((void*)roundStats,0,50*sizeof(roundStats[0])); + while (roundharq_processes[harq_pid]->round = round; + gNB->ulsch[0][0]->harq_processes[harq_pid]->round = round; + rv_index = nr_rv_round_map[round]; reset_meas(&gNB->phy_proc_rx); + reset_meas(&gNB->rx_pusch_stats); reset_meas(&gNB->ulsch_decoding_stats); reset_meas(&gNB->ulsch_deinterleaving_stats); reset_meas(&gNB->ulsch_rate_unmatching_stats); @@ -545,6 +717,7 @@ int main(int argc, char **argv) reset_meas(&gNB->ulsch_unscrambling_stats); reset_meas(&gNB->ulsch_channel_estimation_stats); reset_meas(&gNB->ulsch_llr_stats); + reset_meas(&gNB->ulsch_mrc_stats); reset_meas(&gNB->ulsch_channel_compensation_stats); reset_meas(&gNB->ulsch_rbs_extraction_stats); @@ -575,19 +748,40 @@ int main(int argc, char **argv) UL_tti_req->pdus_list[0].pdu_size = sizeof(nfapi_nr_pusch_pdu_t); memset(pusch_pdu,0,sizeof(nfapi_nr_pusch_pdu_t)); + int abwp_size = NRRIV2BW(ubwp->bwp_Common->genericParameters.locationAndBandwidth,275); + int abwp_start = NRRIV2PRBOFFSET(ubwp->bwp_Common->genericParameters.locationAndBandwidth,275); + int ibwp_size = ibwps; + int ibwp_start = ibwp_rboffset; + if (msg3_flag == 1) { + if ((ibwp_start < abwp_start) || (ibwp_size > abwp_size)) + pusch_pdu->bwp_start = abwp_start; + else + pusch_pdu->bwp_start = ibwp_start; + pusch_pdu->bwp_size = ibwp_size; + start_rb = (ibwp_start - abwp_start); + printf("msg3: ibwp_size %d, abwp_size %d, ibwp_start %d, abwp_start %d\n", + ibwp_size,abwp_size,ibwp_start,abwp_start); + } + else { + pusch_pdu->bwp_start = abwp_start; + pusch_pdu->bwp_size = abwp_size; + } + pusch_pdu->pdu_bit_map = pdu_bit_map; pusch_pdu->rnti = n_rnti; pusch_pdu->mcs_index = Imcs; pusch_pdu->mcs_table = mcs_table; pusch_pdu->target_code_rate = code_rate; pusch_pdu->qam_mod_order = mod_order; - pusch_pdu->transform_precoding = 0; - pusch_pdu->data_scrambling_id = 0; + pusch_pdu->transform_precoding = 1; + pusch_pdu->data_scrambling_id = *scc->physCellId; pusch_pdu->nrOfLayers = 1; pusch_pdu->ul_dmrs_symb_pos = l_prime_mask << start_symbol; pusch_pdu->dmrs_config_type = 0; - pusch_pdu->ul_dmrs_scrambling_id = 0; + pusch_pdu->ul_dmrs_scrambling_id = *scc->physCellId; pusch_pdu->scid = 0; + pusch_pdu->dmrs_ports = 1; + pusch_pdu->num_dmrs_cdm_grps_no_data = msg3_flag == 0 ? 1 : 2; pusch_pdu->resource_alloc = 1; pusch_pdu->rb_start = start_rb; pusch_pdu->rb_size = nb_rb; @@ -596,15 +790,18 @@ int main(int argc, char **argv) pusch_pdu->uplink_frequency_shift_7p5khz = 0; pusch_pdu->start_symbol_index = start_symbol; pusch_pdu->nr_of_symbols = nb_symb_sch; - pusch_pdu->pusch_data.rv_index = 0; + pusch_pdu->pusch_data.rv_index = rv_index; pusch_pdu->pusch_data.harq_process_id = 0; - pusch_pdu->pusch_data.new_data_indicator = 0; + pusch_pdu->pusch_data.new_data_indicator = trial & 0x1; pusch_pdu->pusch_data.num_cb = 0; pusch_pdu->pusch_ptrs.ptrs_time_density = ptrs_time_density; pusch_pdu->pusch_ptrs.ptrs_freq_density = ptrs_freq_density; pusch_pdu->pusch_ptrs.ptrs_ports_list = (nfapi_nr_ptrs_ports_t *) malloc(2*sizeof(nfapi_nr_ptrs_ports_t)); pusch_pdu->pusch_ptrs.ptrs_ports_list[0].ptrs_re_offset = 0; + // prepare ULSCH/PUSCH reception + nr_schedule_response(Sched_INFO); + // --------- setting parameters for UE -------- scheduled_response.module_id = 0; @@ -613,7 +810,8 @@ int main(int argc, char **argv) scheduled_response.slot = slot; scheduled_response.dl_config = NULL; scheduled_response.ul_config = &ul_config; - scheduled_response.dl_config = NULL; + scheduled_response.tx_request = (fapi_nr_tx_request_t *) malloc(sizeof(fapi_nr_tx_request_t)); + scheduled_response.tx_request->tx_request_body = (fapi_nr_tx_request_body_t *) malloc(sizeof(fapi_nr_tx_request_body_t)); ul_config.slot = slot; ul_config.number_pdus = 1; @@ -628,8 +826,9 @@ int main(int argc, char **argv) ul_config.ul_config_list[0].pusch_config_pdu.dmrs_config_type = 0; ul_config.ul_config_list[0].pusch_config_pdu.mcs_index = Imcs; ul_config.ul_config_list[0].pusch_config_pdu.mcs_table = mcs_table; - ul_config.ul_config_list[0].pusch_config_pdu.pusch_data.new_data_indicator = 0; - ul_config.ul_config_list[0].pusch_config_pdu.pusch_data.rv_index = 0; + ul_config.ul_config_list[0].pusch_config_pdu.num_dmrs_cdm_grps_no_data = 1; + ul_config.ul_config_list[0].pusch_config_pdu.pusch_data.new_data_indicator = trial & 0x1; + ul_config.ul_config_list[0].pusch_config_pdu.pusch_data.rv_index = rv_index; ul_config.ul_config_list[0].pusch_config_pdu.nrOfLayers = precod_nbr_layers; ul_config.ul_config_list[0].pusch_config_pdu.pusch_data.harq_process_id = harq_pid; ul_config.ul_config_list[0].pusch_config_pdu.pusch_ptrs.ptrs_time_density = ptrs_time_density; @@ -639,148 +838,238 @@ int main(int argc, char **argv) //there are plenty of other parameters that we don't seem to be using for now. e.g. ul_config.ul_config_list[0].pusch_config_pdu.absolute_delta_PUSCH = 0; - nb_re_dmrs = ((ul_config.ul_config_list[0].pusch_config_pdu.dmrs_config_type == pusch_dmrs_type1) ? 6 : 4); - available_bits = nr_get_G(nb_rb, nb_symb_sch, nb_re_dmrs, number_dmrs_symbols, mod_order, 1); - TBS = nr_compute_tbs(mod_order, code_rate, nb_rb, nb_symb_sch, nb_re_dmrs * number_dmrs_symbols, 0, precod_nbr_layers); + nb_re_dmrs = ((ul_config.ul_config_list[0].pusch_config_pdu.dmrs_config_type == pusch_dmrs_type1) ? 6 : 4); + available_bits = nr_get_G(nb_rb, nb_symb_sch, nb_re_dmrs, number_dmrs_symbols, mod_order, 1); + TBS = nr_compute_tbs(mod_order, code_rate, nb_rb, nb_symb_sch, nb_re_dmrs * number_dmrs_symbols, 0, 0, precod_nbr_layers); pusch_pdu->pusch_data.tb_size = TBS>>3; ul_config.ul_config_list[0].pusch_config_pdu.pusch_data.tb_size = TBS; - // set FAPI parameters for UE, put them in the scheduled response and call - nr_ue_scheduled_response(&scheduled_response); - /////////////////////////phy_procedures_nr_ue_TX/////////////////////// - /////////// + nr_fill_ulsch(gNB,frame,slot,pusch_pdu); - phy_procedures_nrUE_TX(UE, &UE_proc, gNB_id, 0); + for (int i=0;i<(TBS>>3);i++) ulsch_ue[0]->harq_processes[harq_pid]->a[i]=i&0xff; + double scale = 1; - if (n_trials==1) - LOG_M("txsig0.m","txs0", UE->common_vars.txdata[0],frame_length_complex_samples,1,1); + if (input_fd == NULL) { - /////////// - //////////////////////////////////////////////////// - tx_offset = frame_parms->get_samples_slot_timestamp(slot,frame_parms,0); + // set FAPI parameters for UE, put them in the scheduled response and call + nr_ue_scheduled_response(&scheduled_response); + + + /////////////////////////phy_procedures_nr_ue_TX/////////////////////// + /////////// + + phy_procedures_nrUE_TX(UE, &UE_proc, gNB_id, 0); + + + if (n_trials==1) { + LOG_M("txsig0.m","txs0", UE->common_vars.txdata[0],frame_parms->samples_per_subframe*10,1,1); + LOG_M("txsig0F.m","txs0F", UE->common_vars.txdataF[0],frame_parms->ofdm_symbol_size*14,1,1); + } + /////////// + //////////////////////////////////////////////////// + tx_offset = frame_parms->get_samples_slot_timestamp(slot,frame_parms,0); + + txlev = signal_energy(&UE->common_vars.txdata[0][tx_offset + 5*frame_parms->ofdm_symbol_size + 4*frame_parms->nb_prefix_samples + frame_parms->nb_prefix_samples0], + frame_parms->ofdm_symbol_size + frame_parms->nb_prefix_samples); + + txlev_float = (double)txlev/scale; // output of signal_energy is fixed point representation + + + } + else n_trials = 1; - txlev = signal_energy_amp_shift(&UE->common_vars.txdata[0][tx_offset + 5*frame_parms->ofdm_symbol_size + 4*frame_parms->nb_prefix_samples + frame_parms->nb_prefix_samples0], - frame_parms->ofdm_symbol_size + frame_parms->nb_prefix_samples); + if (input_fd == NULL ) { - txlev_float = (double)txlev/(double)AMP; // output of signal_energy is fixed point representation + sigma_dB = N0; + sigma = pow(10,sigma_dB/10); - n_errors = 0; - n_false_positive = 0; + tx_gain = sqrt(pow(10.0,.1*(N0+SNR))/txlev_float); + if(n_trials==1) printf("txlev_float %f, sigma_dB %f, tx_gain %f tx_offset %d, slot_offset %d\n",10*log10(txlev_float),sigma_dB,tx_gain,tx_offset,slot_offset); - //AWGN - sigma_dB = 10*log10(txlev_float)-SNR; - sigma = pow(10,sigma_dB/10); + for (i=0; icommon_vars.txdata[aa][slot_offset]))[(i<<1)]); + s_im[aa][i] = ((double)(((short *)&UE->common_vars.txdata[aa][slot_offset]))[(i<<1)+1]); + } + } + - for (trial = 0; trial < n_trials; trial++) { + if (UE2gNB->max_Doppler == 0) { + multipath_channel(UE2gNB,s_re,s_im,r_re,r_im, + slot_length,0,(n_trials==1)?1:0); + } else { + multipath_tv_channel(UE2gNB,s_re,s_im,r_re,r_im, + 2*slot_length,0); + } + for (i=0; inb_antennas_rx; ap++) { + ((int16_t*) &gNB->common_vars.rxdata[ap][slot_offset])[(2*i) + (delay*2)] = (int16_t)((tx_gain*r_re[ap][i]) + (sqrt(sigma/2)*gaussdouble(0.0,1.0))); // convert to fixed point + ((int16_t*) &gNB->common_vars.rxdata[ap][slot_offset])[(2*i)+1 + (delay*2)] = (int16_t)((tx_gain*r_im[ap][i]) + (sqrt(sigma/2)*gaussdouble(0.0,1.0))); + } + } + + } - errors_scrambling = 0; - errors_decoding = 0; - - //---------------------------------------------------------- - //------------------------ add noise ----------------------- - //---------------------------------------------------------- - for (i=0; inb_antennas_rx; ap++) { - ((short*) gNB->common_vars.rxdata[ap])[(2*i) + (delay*2)] = (((int16_t *)UE->common_vars.txdata[ap])[(i<<1)]) + (int16_t)(sqrt(sigma/2)*gaussdouble(0.0,1.0)*(double)AMP); // convert to fixed point - ((short*) gNB->common_vars.rxdata[ap])[2*i+1 + (delay*2)] = (((int16_t *)UE->common_vars.txdata[ap])[(i<<1)+1]) + (int16_t)(sqrt(sigma/2)*gaussdouble(0.0,1.0)*(double)AMP); - } - } - //////////////////////////////////////////////////////////// - - //---------------------------------------------------------- - //------------------- gNB phy procedures ------------------- - //---------------------------------------------------------- - gNB->UL_INFO.rx_ind.number_of_pdus = 0; - gNB->UL_INFO.crc_ind.number_crcs = 0; + //////////////////////////////////////////////////////////// + + //---------------------------------------------------------- + //------------------- gNB phy procedures ------------------- + //---------------------------------------------------------- + gNB->UL_INFO.rx_ind.number_of_pdus = 0; + gNB->UL_INFO.crc_ind.number_crcs = 0; start_meas(&gNB->phy_proc_rx); phy_procedures_gNB_common_RX(gNB, frame, slot); - if (n_trials==1) - LOG_M("rxsigF0.m","rxsF0",gNB->common_vars.rxdataF[0],frame_length_complex_samples_no_prefix,1,1); - phy_procedures_gNB_uespec_RX(gNB, frame, slot); + + if (n_trials==1 && round==0) { + LOG_M("rxsig0.m","rx0",&gNB->common_vars.rxdata[0][slot_offset],slot_length,1,1); + + LOG_M("rxsigF0.m","rxsF0",gNB->common_vars.rxdataF[0]+start_symbol*frame_parms->ofdm_symbol_size,nb_symb_sch*frame_parms->ofdm_symbol_size,1,1); + + } + + + if (n_trials == 1 && round==0) { +#ifdef __AVX2__ + int off = ((nb_rb&1) == 1)? 4:0; +#else + int off = 0; +#endif + + LOG_M("rxsigF0_ext.m","rxsF0_ext", + &gNB->pusch_vars[0]->rxdataF_ext[0][start_symbol*NR_NB_SC_PER_RB * pusch_pdu->rb_size],nb_symb_sch*(off+(NR_NB_SC_PER_RB * pusch_pdu->rb_size)),1,1); + LOG_M("chestF0.m","chF0", + &gNB->pusch_vars[0]->ul_ch_estimates[0][start_symbol*frame_parms->ofdm_symbol_size],frame_parms->ofdm_symbol_size,1,1); + LOG_M("chestF0_ext.m","chF0_ext", + &gNB->pusch_vars[0]->ul_ch_estimates_ext[0][(start_symbol+1)*(off+(NR_NB_SC_PER_RB * pusch_pdu->rb_size))], + (nb_symb_sch-1)*(off+(NR_NB_SC_PER_RB * pusch_pdu->rb_size)),1,1); + LOG_M("rxsigF0_comp.m","rxsF0_comp", + &gNB->pusch_vars[0]->rxdataF_comp[0][start_symbol*(off+(NR_NB_SC_PER_RB * pusch_pdu->rb_size))],nb_symb_sch*(off+(NR_NB_SC_PER_RB * pusch_pdu->rb_size)),1,1); + LOG_M("rxsigF0_llr.m","rxsF0_llr", + &gNB->pusch_vars[0]->llr[0],(nb_symb_sch-1)*NR_NB_SC_PER_RB * pusch_pdu->rb_size * mod_order,1,0); + } start_meas(&gNB->phy_proc_rx); //////////////////////////////////////////////////////////// - + if (gNB->ulsch[0][0]->last_iteration_cnt >= - gNB->ulsch[0][0]->max_ldpc_iterations+1) - n_errors++; + gNB->ulsch[0][0]->max_ldpc_iterations+1) { + error_flag = 1; + n_errors[round]++; + crc_status = 1; + } else { + crc_status = 0; + } + if(n_trials==1) printf("end of round %d rv_index %d\n",round, rv_index); + for (i = 0; i < available_bits; i++) { + + if(((ulsch_ue[0]->g[i] == 0) && (gNB->pusch_vars[UE_id]->llr[i] <= 0)) || + ((ulsch_ue[0]->g[i] == 1) && (gNB->pusch_vars[UE_id]->llr[i] >= 0))) + { + /*if(errors_scrambling == 0) + printf("\x1B[34m" "[frame %d][trial %d]\t1st bit in error in unscrambling = %d\n" "\x1B[0m", frame, trial, i);*/ + errors_scrambling[round]++; + } + } + round++; + + } // round + //---------------------------------------------------------- //----------------- count and print errors ----------------- //---------------------------------------------------------- - for (i = 0; i < available_bits; i++) { - if(((ulsch_ue[0]->g[i] == 0) && (gNB->pusch_vars[UE_id]->llr[i] <= 0)) || - ((ulsch_ue[0]->g[i] == 1) && (gNB->pusch_vars[UE_id]->llr[i] >= 0))) - { - /*if(errors_scrambling == 0) - printf("\x1B[34m" "[frame %d][trial %d]\t1st bit in error in unscrambling = %d\n" "\x1B[0m", frame, trial, i);*/ - errors_scrambling++; - } - } - - if (errors_scrambling > 0) { - if (n_trials==1) - printf("\x1B[31m""[frame %d][trial %d]\tnumber of errors in unscrambling = %u\n" "\x1B[0m", frame, trial, errors_scrambling); - } - - for (i = 0; i < TBS; i++) { - - estimated_output_bit[i] = (ulsch_gNB->harq_processes[harq_pid]->b[i/8] & (1 << (i & 7))) >> (i & 7); - test_input_bit[i] = (ulsch_ue[0]->harq_processes[harq_pid]->b[i/8] & (1 << (i & 7))) >> (i & 7); - - if (estimated_output_bit[i] != test_input_bit[i]) { - /*if(errors_decoding == 0) - printf("\x1B[34m""[frame %d][trial %d]\t1st bit in error in decoding = %d\n" "\x1B[0m", frame, trial, i);*/ - errors_decoding++; - } - } - - if (errors_decoding > 0) { - n_false_positive++; - if (n_trials==1) - printf("\x1B[31m""[frame %d][trial %d]\tnumber of errors in decoding = %u\n" "\x1B[0m", frame, trial, errors_decoding); - } - - } // trial loop - - printf("*****************************************\n"); - printf("SNR %f: n_errors (negative CRC) = %d/%d, false_positive %d/%d, errors_scrambling %u/%d\n", SNR, n_errors, n_trials, n_false_positive, n_trials, errors_scrambling, n_trials); - printf("\n"); - printf("SNR %f: Channel BLER %e, Channel BER %e\n", SNR,(double)n_errors/n_trials,(double)errors_scrambling/available_bits/n_trials); - printf("*****************************************\n"); - printf("\n"); - - if (print_perf==1) { - printDistribution(&gNB->phy_proc_rx,table_rx,"Total PHY proc rx"); - printStatIndent(&gNB->ulsch_channel_estimation_stats,"ULSCH channel estimation time"); - printStatIndent(&gNB->ulsch_rbs_extraction_stats,"ULSCH rbs extraction time"); - printStatIndent(&gNB->ulsch_channel_compensation_stats,"ULSCH channel compensation time"); - printStatIndent(&gNB->ulsch_llr_stats,"ULSCH llr computation"); - printStatIndent(&gNB->ulsch_unscrambling_stats,"ULSCH unscrambling"); - printStatIndent(&gNB->ulsch_decoding_stats,"ULSCH total decoding time"); - printStatIndent2(&gNB->ulsch_deinterleaving_stats,"ULSCH deinterleaving"); - printStatIndent2(&gNB->ulsch_rate_unmatching_stats,"ULSCH rate matching rx"); - printStatIndent2(&gNB->ulsch_ldpc_decoding_stats,"ULSCH ldpc decoding"); - printf("\n"); - } - - if(n_trials==1) - break; - - if ((float)n_errors/(float)n_trials <= target_error_rate) { - printf("*************\n"); - printf("PUSCH test OK\n"); - printf("*************\n"); - break; - } + + if (n_trials == 1 && errors_scrambling[0] > 0) { + printf("\x1B[31m""[frame %d][trial %d]\tnumber of errors in unscrambling = %u\n" "\x1B[0m", frame, trial, errors_scrambling[0]); + } + + for (i = 0; i < TBS; i++) { - } // SNR loop + estimated_output_bit[i] = (ulsch_gNB->harq_processes[harq_pid]->b[i/8] & (1 << (i & 7))) >> (i & 7); + test_input_bit[i] = (ulsch_ue[0]->harq_processes[harq_pid]->b[i/8] & (1 << (i & 7))) >> (i & 7); + + if (estimated_output_bit[i] != test_input_bit[i]) { + /*if(errors_decoding == 0) + printf("\x1B[34m""[frame %d][trial %d]\t1st bit in error in decoding = %d\n" "\x1B[0m", frame, trial, i);*/ + errors_decoding++; + } + } + if (n_trials == 1) { + for (int r=0;rharq_processes[harq_pid]->C;r++) + for (int i=0;iharq_processes[harq_pid]->K>>3;i++) { + /*if ((ulsch_ue[0]->harq_processes[harq_pid]->c[r][i]^ulsch_gNB->harq_processes[harq_pid]->c[r][i]) != 0) printf("************"); + printf("r %d: in[%d] %x, out[%d] %x (%x)\n",r, + i,ulsch_ue[0]->harq_processes[harq_pid]->c[r][i], + i,ulsch_gNB->harq_processes[harq_pid]->c[r][i], + ulsch_ue[0]->harq_processes[harq_pid]->c[r][i]^ulsch_gNB->harq_processes[harq_pid]->c[r][i]);*/ + } + } + if (errors_decoding > 0 && error_flag == 0) { + n_false_positive++; + if (n_trials==1) + printf("\x1B[31m""[frame %d][trial %d]\tnumber of errors in decoding = %u\n" "\x1B[0m", frame, trial, errors_decoding); + } + roundStats[snrRun] += ((float)round); + if (!crc_status) effRate += ((float)TBS)/round; + } // trial loop + + roundStats[snrRun]/=((float)n_trials); + effRate /= n_trials; + + printf("*****************************************\n"); + printf("SNR %f: n_errors (%d/%d,%d/%d,%d/%d,%d/%d) (negative CRC), false_positive %d/%d, errors_scrambling (%u/%u,%u/%u,%u/%u,%u/%u\n", SNR, n_errors[0], round_trials[0],n_errors[1], round_trials[1],n_errors[2], round_trials[2],n_errors[3], round_trials[3], n_false_positive, n_trials, errors_scrambling[0],available_bits*n_trials,errors_scrambling[1],available_bits*n_trials,errors_scrambling[2],available_bits*n_trials,errors_scrambling[3],available_bits*n_trials); + printf("\n"); + printf("SNR %f: Channel BLER (%e,%e,%e,%e), Channel BER (%e,%e,%e,%e) Avg round %.2f, Eff Rate %.4f bits/slot, Eff Throughput %.2f, TBS %u bits/slot\n", + SNR, + (double)n_errors[0]/round_trials[0], + (double)n_errors[1]/round_trials[0], + (double)n_errors[2]/round_trials[0], + (double)n_errors[3]/round_trials[0], + (double)errors_scrambling[0]/available_bits/round_trials[0], + (double)errors_scrambling[1]/available_bits/round_trials[0], + (double)errors_scrambling[2]/available_bits/round_trials[0], + (double)errors_scrambling[3]/available_bits/round_trials[0], + roundStats[snrRun],effRate,effRate/TBS*100,TBS); + dump_pusch_stats(gNB); + + printf("*****************************************\n"); + printf("\n"); + + if (print_perf==1) { + printDistribution(&gNB->phy_proc_rx,table_rx,"Total PHY proc rx"); + printStatIndent(&gNB->rx_pusch_stats,"RX PUSCH time"); + printStatIndent2(&gNB->ulsch_channel_estimation_stats,"ULSCH channel estimation time"); + printStatIndent2(&gNB->ulsch_rbs_extraction_stats,"ULSCH rbs extraction time"); + printStatIndent2(&gNB->ulsch_channel_compensation_stats,"ULSCH channel compensation time"); + printStatIndent2(&gNB->ulsch_mrc_stats,"ULSCH mrc computation"); + printStatIndent2(&gNB->ulsch_llr_stats,"ULSCH llr computation"); + printStatIndent(&gNB->ulsch_unscrambling_stats,"ULSCH unscrambling"); + printStatIndent(&gNB->ulsch_decoding_stats,"ULSCH total decoding time"); + printStatIndent2(&gNB->ulsch_deinterleaving_stats,"ULSCH deinterleaving"); + printStatIndent2(&gNB->ulsch_rate_unmatching_stats,"ULSCH rate matching rx"); + printStatIndent2(&gNB->ulsch_ldpc_decoding_stats,"ULSCH ldpc decoding"); + printf("\n"); + } + + if(n_trials==1) + break; + + if ((float)n_errors[0]/(float)n_trials <= target_error_rate) { + printf("*************\n"); + printf("PUSCH test OK\n"); + printf("*************\n"); + break; + } + + snrRun++; + n_errs = n_errors[0]; + } // SNR loop printf("\n"); free(test_input_bit); @@ -795,5 +1084,5 @@ int main(int argc, char **argv) if (scg_fd) fclose(scg_fd); - return (n_errors); + return (n_errs); } diff --git a/openair1/SIMULATION/NR_UE_PHY/unit_tests/src/dummy_functions.c b/openair1/SIMULATION/NR_UE_PHY/unit_tests/src/dummy_functions.c index a93f0d48f3..cc8c62a36d 100644 --- a/openair1/SIMULATION/NR_UE_PHY/unit_tests/src/dummy_functions.c +++ b/openair1/SIMULATION/NR_UE_PHY/unit_tests/src/dummy_functions.c @@ -115,6 +115,11 @@ int ue_query_mch(module_id_t Mod_id, uint8_t CC_id, uint32_t frame, sub_frame_t subframe, uint8_t eNB_index, uint8_t * sync_area, uint8_t * mcch_active){ return(0);} + +int ue_query_mch_fembms(module_id_t Mod_id, uint8_t CC_id, uint32_t frame, + sub_frame_t subframe, uint8_t eNB_index, + uint8_t * sync_area, uint8_t * mcch_active){ return(0);} + void dl_phy_sync_success(module_id_t module_idP, frame_t frameP, unsigned char eNB_index, uint8_t first_sync){} diff --git a/openair1/SIMULATION/TOOLS/channel_sim.c b/openair1/SIMULATION/TOOLS/channel_sim.c index c5628fbcef..81949f40e6 100644 --- a/openair1/SIMULATION/TOOLS/channel_sim.c +++ b/openair1/SIMULATION/TOOLS/channel_sim.c @@ -180,7 +180,7 @@ void do_DL_sig(sim_t *sim, //RU2UE[eNB_id][UE_id]->path_loss_dB = 0; multipath_channel(sim->RU2UE[ru_id][UE_id][CC_id],s_re,s_im,r_re0,r_im0, - length,hold_channel); + length,hold_channel,0); #ifdef DEBUG_SIM rx_pwr = signal_energy_fp2(sim->RU2UE[ru_id][UE_id][CC_id]->ch[0], sim->RU2UE[ru_id][UE_id][CC_id]->channel_length)*sim->RU2UE[ru_id][UE_id][CC_id]->channel_length; @@ -394,7 +394,7 @@ void do_UL_sig(sim_t *sim, multipath_channel(sim->UE2RU[UE_id][ru_id][CC_id],s_re,s_im,r_re0,r_im0, - frame_parms->samples_per_tti,hold_channel); + frame_parms->samples_per_tti,hold_channel,0); rx_pwr = signal_energy_fp2(sim->UE2RU[UE_id][ru_id][CC_id]->ch[0], diff --git a/openair1/SIMULATION/TOOLS/multipath_channel.c b/openair1/SIMULATION/TOOLS/multipath_channel.c index 70227c8e8d..683526a8f0 100644 --- a/openair1/SIMULATION/TOOLS/multipath_channel.c +++ b/openair1/SIMULATION/TOOLS/multipath_channel.c @@ -44,7 +44,8 @@ void multipath_channel(channel_desc_t *desc, double rx_sig_re[2][30720*2], double rx_sig_im[2][30720*2], uint32_t length, - uint8_t keep_channel) + uint8_t keep_channel, + int log_channel) { int i,ii,j,l; @@ -150,7 +151,8 @@ void multipath_channel(channel_desc_t *desc, double *rx_sig_re[2], double *rx_sig_im[2], uint32_t length, - uint8_t keep_channel) + uint8_t keep_channel, + int log_channel) { int i,ii,j,l; @@ -196,16 +198,21 @@ void multipath_channel(channel_desc_t *desc, rx_tmp.x += (tx.x * desc->ch[ii+(j*desc->nb_rx)][l].x) - (tx.y * desc->ch[ii+(j*desc->nb_rx)][l].y); rx_tmp.y += (tx.y * desc->ch[ii+(j*desc->nb_rx)][l].x) + (tx.x * desc->ch[ii+(j*desc->nb_rx)][l].y); + if (i==0 && log_channel == 1) { + printf("channel[%d][%d][%d] = %f dB (%e,%e)\n",ii,j,l,10*log10(pow(desc->ch[ii+(j*desc->nb_rx)][l].x,2.0)+pow(desc->ch[ii+(j*desc->nb_rx)][l].y,2.0)), + desc->ch[ii+(j*desc->nb_rx)][l].x, + desc->ch[ii+(j*desc->nb_rx)][l].y); + } } //l } // j rx_sig_re[ii][i+dd] = rx_tmp.x*path_loss; rx_sig_im[ii][i+dd] = rx_tmp.y*path_loss; - /* - if ((ii==0)&&((i%32)==0)) { - printf("%p %p %f,%f => %e,%e\n",rx_sig_re[ii],rx_sig_im[ii],rx_tmp.x,rx_tmp.y,rx_sig_re[ii][i-dd],rx_sig_im[ii][i-dd]); - } - */ + + /* if ((ii==0)&&((i%32)==0)) { + printf("%p %p %f,%f => %e,%e\n",rx_sig_re[ii],rx_sig_im[ii],rx_tmp.x,rx_tmp.y,rx_sig_re[ii][i-dd],rx_sig_im[ii][i-dd]); + }*/ + //rx_sig_re[ii][i] = sqrt(.5)*(tx_sig_re[0][i] + tx_sig_re[1][i]); //rx_sig_im[ii][i] = sqrt(.5)*(tx_sig_im[0][i] + tx_sig_im[1][i]); diff --git a/openair1/SIMULATION/TOOLS/multipath_tv_channel.c b/openair1/SIMULATION/TOOLS/multipath_tv_channel.c index f4835570bf..d344992586 100644 --- a/openair1/SIMULATION/TOOLS/multipath_tv_channel.c +++ b/openair1/SIMULATION/TOOLS/multipath_tv_channel.c @@ -27,18 +27,20 @@ #include "SIMULATION/RF/rf.h" #include -void tv_channel(channel_desc_t *desc,double complex ***H,uint16_t length); +void tv_channel(channel_desc_t *desc,double complex ***H,uint32_t length); double frand_a_b(double a, double b); -void tv_conv(double complex **h, double complex *x, double complex *y, uint16_t nb_samples, uint8_t nb_taps, int delay); +void tv_conv(double complex **h, double complex *x, double complex *y, uint32_t nb_samples, uint8_t nb_taps, int delay); void multipath_tv_channel(channel_desc_t *desc, double **tx_sig_re, double **tx_sig_im, double **rx_sig_re, double **rx_sig_im, - uint16_t length, - uint8_t keep_channel) { - double complex **tx,**rx,* **H_t,*rx_temp; //, *tv_H_t; + uint32_t length, + uint8_t keep_channel) +{ + + double complex **tx,**rx,***H_t,*rx_temp;//, *tv_H_t; double path_loss = pow(10,desc->path_loss_dB/20); int i,j,k,dd; dd = abs(desc->channel_offset); @@ -126,7 +128,8 @@ void multipath_tv_channel(channel_desc_t *desc, } //TODO: make phi_rad a parameter of this function -void tv_channel(channel_desc_t *desc,double complex ***H,uint16_t length) { +void tv_channel(channel_desc_t *desc,double complex ***H,uint32_t length){ + int i,j,p,l,k; double *alpha,*phi_rad,pi=acos(-1),*w_Hz; alpha = (double *)calloc(desc->nb_paths,sizeof(double)); @@ -193,7 +196,8 @@ void tv_channel(channel_desc_t *desc,double complex ***H,uint16_t length) { } // time varying convolution -void tv_conv(double complex **h, double complex *x, double complex *y, uint16_t nb_samples, uint8_t nb_taps, int dd) { +void tv_conv(double complex **h, double complex *x, double complex *y, uint32_t nb_samples, uint8_t nb_taps, int dd){ + int i,j; for(i=0; i<((int)nb_samples-dd); i++) { diff --git a/openair1/SIMULATION/TOOLS/random_channel.c b/openair1/SIMULATION/TOOLS/random_channel.c index 41d8551e75..8c063fadc0 100644 --- a/openair1/SIMULATION/TOOLS/random_channel.c +++ b/openair1/SIMULATION/TOOLS/random_channel.c @@ -45,8 +45,12 @@ static mapping channelmod_names[] = { }; static int channelmod_show_cmd(char *buff, int debug, telnet_printfunc_t prnt); +static int channelmod_modify_cmd(char *buff, int debug, telnet_printfunc_t prnt); +static int channelmod_print_help(char *buff, int debug, telnet_printfunc_t prnt); static telnetshell_cmddef_t channelmod_cmdarray[] = { - {"show","",channelmod_show_cmd}, + {"help","",channelmod_print_help}, + {"show","",channelmod_show_cmd}, + {"modify"," ",channelmod_modify_cmd}, {"","",NULL}, }; @@ -56,14 +60,15 @@ static telnetshell_vardef_t channelmod_vardef[] = { static double snr_dB=25; static double sinr_dB=0; - +static unsigned int max_chan; +static channel_desc_t** defined_channels; void fill_channel_desc(channel_desc_t *chan_desc, uint8_t nb_tx, uint8_t nb_rx, uint8_t nb_taps, uint8_t channel_length, double *amps, - double *delays, + double *delays, struct complex **R_sqrt, double Td, double sampling_rate, @@ -88,6 +93,7 @@ void fill_channel_desc(channel_desc_t *chan_desc, if (delays==NULL) { chan_desc->delays = (double *) malloc(nb_taps*sizeof(double)); + chan_desc->free_flags=chan_desc->free_flags|CHANMODEL_FREE_DELAY ; delta_tau = Td/nb_taps; for (i=0; iR_sqrt = (struct complex **) calloc(nb_taps,sizeof(struct complex *)); - + chan_desc->free_flags=chan_desc->free_flags|CHANMODEL_FREE_RSQRT_NTAPS ; for (i = 0; iR_sqrt[i] = (struct complex *) calloc(nb_tx*nb_rx*nb_tx*nb_rx,sizeof(struct complex)); - + chan_desc->R_sqrt[i] = (struct complex *) calloc(nb_tx*nb_rx*nb_tx*nb_rx,sizeof(struct complex)); for (j = 0; jR_sqrt[i][j].x = 1.0; chan_desc->R_sqrt[i][j].y = 0.0; @@ -140,7 +145,7 @@ void fill_channel_desc(channel_desc_t *chan_desc, } } else { chan_desc->R_sqrt = (struct complex **) calloc(nb_taps,sizeof(struct complex *)); - + for (i = 0; iR_sqrt[i] = (struct complex*) calloc(nb_tx*nb_rx*nb_tx*nb_rx,sizeof(struct complex)); //chan_desc->R_sqrt = (struct complex*)&R_sqrt[i][0]; @@ -170,9 +175,226 @@ void fill_channel_desc(channel_desc_t *chan_desc, double mbsfn_delays[] = {0,.03,.15,.31,.37,1.09,12.490,12.52,12.64,12.80,12.86,13.58,27.49,27.52,27.64,27.80,27.86,28.58}; double mbsfn_amps_dB[] = {0,-1.5,-1.4,-3.6,-0.6,-7.0,-10,-11.5,-11.4,-13.6,-10.6,-17.0,-20,-21.5,-21.4,-23.6,-20.6,-27}; -double scm_c_delays[] = {0, 0.0125, 0.0250, 0.3625, 0.3750, 0.3875, 0.2500, 0.2625, 0.2750, 1.0375, 1.0500, 1.0625, 2.7250, 2.7375, 2.7500, 4.6000, 4.6125, 4.6250}; +double scm_c_delays[] = {0, 0.0125, 0.0250, 0.3625, 0.3750, 0.3875, 0.2500, 0.2625, 0.2750, 1.0375, 1.0500, 1.0625, 2.7250, 2.7375, 2.7500, 4.6000, 4.6125, 4.6250}; double scm_c_amps_dB[] = {0.00, -2.22, -3.98, -1.86, -4.08, -5.84, -1.08, -3.30, -5.06, -9.08, -11.30, -13.06, -15.14, -17.36, -19.12, -20.64, -22.85, -24.62}; +double tdl_a_delays[] = {0.0000, + 0.3819, + 0.4025, + 0.5868, + 0.4610, + 0.5375, + 0.6708, + 0.5750, + 0.7618, + 1.5375, + 1.8978, + 2.2242, + 2.1718, + 2.4942, + 2.5119, + 3.0582, + 4.0810, + 4.4579, + 4.5695, + 4.7966, + 5.0066, + 5.3043, + 9.6586}; +double tdl_a_amps_dB[] = {-13.4, + 0, + -2.2, + -4, + -6, + -8.2, + -9.9, + -10.5, + -7.5, + -15.9, + -6.6, + -16.7, + -12.4, + -15.2, + -10.8, + -11.3, + -12.7, + -16.2, + -18.3, + -18.9, + -16.6, + -19.9, + -29.7}; +#define TDL_A_PATHS 23 + +double tdl_b_delays[] = {0.0000, + 0.1072, + 0.2155, + 0.2095, + 0.2870, + 0.2986, + 0.3752, + 0.5055, + 0.3681, + 0.3697, + 0.5700, + 0.5283, + 1.1021, + 1.2756, + 1.5474, + 1.7842, + 2.0169, + 2.8294, + 3.0219, + 3.6187, + 4.1067, + 4.2790, + 4.7834}; + +double tdl_b_amps_dB[] = {0, + -2.2, + -4, + -3.2, + -9.8, + -1.2, + -3.4, + -5.2, + -7.6, + -3, + -8.9, + -9, + -4.8, + -5.7, + -7.5, + -1.9, + -7.6, + -12.2, + -9.8, + -11.4, + -14.9, + -9.2, + -11.3}; +#define TDL_B_PATHS 23 + +double tdl_c_delays[] = {0, + 0.2099, + 0.2219, + 0.2329, + 0.2176, + 0.6366, + 0.6448, + 0.6560, + 0.6584, + 0.7935, + 0.8213, + 0.9336, + 1.2285, + 1.3083, + 2.1704, + 2.7105, + 4.2589, + 4.6003, + 5.4902, + 5.6077, + 6.3065, + 6.6374, + 7.0427, + 8.6523}; + +double tdl_c_amps_dB[] = {-4.4, + -1.2, + -3.5, + -5.2, + -2.5, + 0, + -2.2, + -3.9, + -7.4, + -7.1, + -10.7, + -11.1, + -5.1, + -6.8, + -8.7, + -13.2, + -13.9, + -13.9, + -15.8, + -17.1, + -16, + -15.7, + -21.6, + -22.8}; +#define TDL_C_PATHS 24 + +double tdl_d_delays[] = {//0, + 0, + 0.035, + 0.612, + 1.363, + 1.405, + 1.804, + 2.596, + 1.775, + 4.042, + 7.937, + 9.424, + 9.708, + 12.525}; + +double tdl_d_amps_dB[] = {//-0.2, +//-13.5, + -.00147, + -18.8, + -21, + -22.8, + -17.9, + -20.1, + -21.9, + -22.9, + -27.8, + -23.6, + -24.8, + -30.0, + -27.7}; + +#define TDL_D_PATHS 13 +#define TDL_D_RICEAN_FACTOR .046774 + +double tdl_e_delays[] = {0, + 0.5133, + 0.5440, + 0.5630, + 0.5440, + 0.7112, + 1.9092, + 1.9293, + 1.9589, + 2.6426, + 3.7136, + 5.4524, + 12.0034, + 20.6519}; + +double tdl_e_amps_dB[] = {//-0.03, + //-22.03, + -.00433, + -15.8, + -18.1, + -19.8, + -22.9, + -22.4, + -18.6, + -20.8, + -22.6, + -22.3, + -25.6, + -20.2, + -29.8, + -29.2}; + +#define TDL_E_PATHS 14 +#define TDL_E_RICEAN_FACTOR 0.0063096 + double epa_delays[] = { 0,.03,.07,.09,.11,.19,.41}; double epa_amps_dB[] = {0.0,-1.0,-2.0,-3.0,-8.0,-17.2,-20.8}; @@ -277,14 +499,28 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx, SCM_t channel_model, double sampling_rate, double channel_bandwidth, + double DS_TDL, double forgetting_factor, int32_t channel_offset, double path_loss_dB) { - channel_desc_t *chan_desc = (channel_desc_t *)malloc(sizeof(channel_desc_t)); + channel_desc_t *chan_desc = (channel_desc_t *)calloc(1,sizeof(channel_desc_t)); + for(int i=0; ichan_idx=i; + break; + } + else { + AssertFatal(i<(max_chan-1), + "No more channel descriptors available, increase channelmod.max_chan parameter above %u\n",max_chan); + } + } uint16_t i,j; double sum_amps; double aoa,ricean_factor,Td,maxDoppler; + int channel_length,nb_taps; + chan_desc->modelid = channel_model; chan_desc->nb_tx = nb_tx; chan_desc->nb_rx = nb_rx; chan_desc->sampling_rate = sampling_rate; @@ -296,6 +532,11 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx, chan_desc->ip = 0.0; LOG_I(OCM,"Channel Model (inside of new_channel_desc_scm)=%d\n\n", channel_model); + int tdl_paths=0; + double tdl_ricean_factor = 1; + double *tdl_amps_dB; + double *tdl_delays; + switch (channel_model) { case SCM_A: LOG_W(OCM,"channel model not yet supported\n"); @@ -313,7 +554,7 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx, chan_desc->channel_length = (int) (2*chan_desc->sampling_rate*chan_desc->Td + 1 + 2/(M_PI*M_PI)*log(4*M_PI*chan_desc->sampling_rate*chan_desc->Td)); sum_amps = 0; chan_desc->amps = (double *) malloc(chan_desc->nb_taps*sizeof(double)); - + chan_desc->free_flags=chan_desc->free_flags|CHANMODEL_FREE_AMPS ; for (i = 0; inb_taps; i++) { chan_desc->amps[i] = pow(10,.1*scm_c_amps_dB[i]); sum_amps += chan_desc->amps[i]; @@ -351,9 +592,10 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx, for (i = 0; i<6; i++) chan_desc->R_sqrt[i] = (struct complex *) &R12_sqrt[i][0]; } else { + chan_desc->free_flags=chan_desc->free_flags|CHANMODEL_FREE_RSQRT_6 ; for (i = 0; i<6; i++) { chan_desc->R_sqrt[i] = (struct complex *) malloc(nb_tx*nb_rx*nb_tx*nb_rx * sizeof(struct complex)); - + for (j = 0; jR_sqrt[i][j].x = 1.0; chan_desc->R_sqrt[i][j].y = 0.0; @@ -372,7 +614,7 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx, chan_desc->channel_length = (int) (2*chan_desc->sampling_rate*chan_desc->Td + 1 + 2/(M_PI*M_PI)*log(4*M_PI*chan_desc->sampling_rate*chan_desc->Td)); sum_amps = 0; chan_desc->amps = (double *) malloc(chan_desc->nb_taps*sizeof(double)); - + chan_desc->free_flags=chan_desc->free_flags|CHANMODEL_FREE_AMPS ; for (i = 0; inb_taps; i++) { chan_desc->amps[i] = pow(10,.1*scm_c_amps_dB[i]); sum_amps += chan_desc->amps[i]; @@ -410,6 +652,7 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx, for (i = 0; i<6; i++) chan_desc->R_sqrt[i] = (struct complex *) &R12_sqrt[i][0]; } else { + chan_desc->free_flags=chan_desc->free_flags|CHANMODEL_FREE_RSQRT_6 ; for (i = 0; i<6; i++) { chan_desc->R_sqrt[i] = (struct complex *) malloc(nb_tx*nb_rx*nb_tx*nb_rx * sizeof(struct complex)); @@ -423,6 +666,100 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx, } break; + + case TDL_A: + case TDL_B: + case TDL_C: + case TDL_D: + case TDL_E: + if (channel_model == TDL_A) { + tdl_paths=TDL_A_PATHS; + tdl_delays=tdl_a_delays; + tdl_amps_dB=tdl_a_amps_dB; + }else if (channel_model == TDL_B) { + tdl_paths=TDL_B_PATHS; + tdl_delays=tdl_b_delays; + tdl_amps_dB=tdl_b_amps_dB; + } + else if (channel_model == TDL_C) { + tdl_paths=TDL_C_PATHS; + tdl_delays=tdl_c_delays; + tdl_amps_dB=tdl_c_amps_dB; + printf("Initializing TDL_C channel with %d paths\n",TDL_C_PATHS); + } else if (channel_model == TDL_D) { + tdl_paths=TDL_D_PATHS; + tdl_delays=tdl_d_delays; + tdl_amps_dB=tdl_d_amps_dB; + tdl_ricean_factor = TDL_D_RICEAN_FACTOR; + } else if (channel_model == TDL_E) { + tdl_paths=TDL_E_PATHS-1; + tdl_delays=tdl_e_delays+1; + tdl_amps_dB=tdl_e_amps_dB; + tdl_ricean_factor = TDL_E_RICEAN_FACTOR; + } + + int tdl_pathsby3 = tdl_paths/3; + if ((tdl_paths%3)>0) tdl_pathsby3++; + + chan_desc->nb_taps = tdl_paths; + chan_desc->Td = tdl_delays[tdl_paths-1]*DS_TDL; + printf("last path (%d) at %f * %e = %e\n",tdl_paths-1,tdl_delays[tdl_paths-1],DS_TDL,chan_desc->Td); + chan_desc->channel_length = (int) (2*chan_desc->sampling_rate*chan_desc->Td + 1 + 2/(M_PI*M_PI)*log(4*M_PI*chan_desc->sampling_rate*chan_desc->Td)); + printf("TDL : %f Ms/s, nb_taps %d, Td %e, channel_length %d\n",chan_desc->sampling_rate,tdl_paths,chan_desc->Td,chan_desc->channel_length); + sum_amps = 0; + chan_desc->amps = (double *) malloc(chan_desc->nb_taps*sizeof(double)); + + for (i = 0; inb_taps; i++) { + chan_desc->amps[i] = pow(10,.1*tdl_amps_dB[i]); + sum_amps += chan_desc->amps[i]; + } + + for (i = 0; inb_taps; i++) { + chan_desc->amps[i] /= sum_amps; + tdl_delays[i] *= DS_TDL; + } + chan_desc->delays = tdl_delays; + chan_desc->ricean_factor = tdl_ricean_factor; + chan_desc->aoa = 0; + chan_desc->random_aoa = 0; + chan_desc->ch = (struct complex **) malloc(nb_tx*nb_rx*sizeof(struct complex *)); + chan_desc->chF = (struct complex **) malloc(nb_tx*nb_rx*sizeof(struct complex *)); + chan_desc->a = (struct complex **) malloc(chan_desc->nb_taps*sizeof(struct complex *)); + + for (i = 0; ich[i] = (struct complex *) malloc(chan_desc->channel_length * sizeof(struct complex)); + + for (i = 0; ichF[i] = (struct complex *) malloc(1200 * sizeof(struct complex)); + + for (i = 0; inb_taps; i++) + chan_desc->a[i] = (struct complex *) malloc(nb_tx*nb_rx * sizeof(struct complex)); + + chan_desc->R_sqrt = (struct complex **) malloc(6*sizeof(struct complex **)); + + if (nb_tx==2 && nb_rx==2) { + for (i = 0; i<(tdl_pathsby3); i++) + chan_desc->R_sqrt[i] = (struct complex *) &R22_sqrt[i][0]; + } else if (nb_tx==2 && nb_rx==1) { + for (i = 0; i<(tdl_pathsby3); i++) + chan_desc->R_sqrt[i] = (struct complex *) &R21_sqrt[i][0]; + } else if (nb_tx==1 && nb_rx==2) { + for (i = 0; i<(tdl_pathsby3); i++) + chan_desc->R_sqrt[i] = (struct complex *) &R12_sqrt[i][0]; + } else { + for (i = 0; i<(tdl_pathsby3); i++) { + chan_desc->R_sqrt[i] = (struct complex *) malloc(nb_tx*nb_rx*nb_tx*nb_rx * sizeof(struct complex)); + + for (j = 0; jR_sqrt[i][j].x = 1.0; + chan_desc->R_sqrt[i][j].y = 0.0; + } + + LOG_W(OCM,"correlation matrix not implemented for nb_tx==%d and nb_rx==%d, using identity\n", nb_tx, nb_rx); + } + } + + break; case EPA: chan_desc->nb_taps = 7; @@ -430,7 +767,7 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx, chan_desc->channel_length = (int) (2*chan_desc->sampling_rate*chan_desc->Td + 1 + 2/(M_PI*M_PI)*log(4*M_PI*chan_desc->sampling_rate*chan_desc->Td)); sum_amps = 0; chan_desc->amps = (double *) malloc(chan_desc->nb_taps*sizeof(double)); - + chan_desc->free_flags=chan_desc->free_flags|CHANMODEL_FREE_AMPS ; for (i = 0; inb_taps; i++) { chan_desc->amps[i] = pow(10,.1*epa_amps_dB[i]); sum_amps += chan_desc->amps[i]; @@ -449,7 +786,7 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx, for (i = 0; ich[i] = (struct complex *) malloc(chan_desc->channel_length * sizeof(struct complex)); - + for (i = 0; ichF[i] = (struct complex *) malloc(1200 * sizeof(struct complex)); @@ -463,7 +800,7 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx, chan_desc->R_sqrt[i] = (struct complex *) &R22_sqrt[i][0]; } else { chan_desc->R_sqrt = (struct complex **) malloc(6*sizeof(struct complex **)); - + chan_desc->free_flags=chan_desc->free_flags|CHANMODEL_FREE_RSQRT_6 ; for (i = 0; i<6; i++) { chan_desc->R_sqrt[i] = (struct complex *) malloc(nb_tx*nb_rx*nb_tx*nb_rx * sizeof(struct complex)); @@ -484,7 +821,7 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx, chan_desc->channel_length = (int) (2*chan_desc->sampling_rate*chan_desc->Td + 1 + 2/(M_PI*M_PI)*log(4*M_PI*chan_desc->sampling_rate*chan_desc->Td)); sum_amps = 0; chan_desc->amps = (double *) malloc(chan_desc->nb_taps*sizeof(double)); - + chan_desc->free_flags=chan_desc->free_flags|CHANMODEL_FREE_AMPS ; for (i = 0; inb_taps; i++) { chan_desc->amps[i] = pow(10,.1*epa_amps_dB[i]); sum_amps += chan_desc->amps[i]; @@ -530,7 +867,7 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx, LOG_W(OCM,"correlation matrix only implemented for nb_tx==2 and nb_rx==2, using identity\n"); } }*/ - break; + break; case EPA_high: chan_desc->nb_taps = 7; @@ -538,7 +875,7 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx, chan_desc->channel_length = (int) (2*chan_desc->sampling_rate*chan_desc->Td + 1 + 2/(M_PI*M_PI)*log(4*M_PI*chan_desc->sampling_rate*chan_desc->Td)); sum_amps = 0; chan_desc->amps = (double *) malloc(chan_desc->nb_taps*sizeof(double)); - + chan_desc->free_flags=chan_desc->free_flags|CHANMODEL_FREE_AMPS ; for (i = 0; inb_taps; i++) { chan_desc->amps[i] = pow(10,.1*epa_amps_dB[i]); sum_amps += chan_desc->amps[i]; @@ -592,7 +929,7 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx, chan_desc->channel_length = (int) (2*chan_desc->sampling_rate*chan_desc->Td + 1 + 2/(M_PI*M_PI)*log(4*M_PI*chan_desc->sampling_rate*chan_desc->Td)); sum_amps = 0; chan_desc->amps = (double *) malloc(chan_desc->nb_taps*sizeof(double)); - + chan_desc->free_flags=chan_desc->free_flags|CHANMODEL_FREE_AMPS ; for (i = 0; inb_taps; i++) { chan_desc->amps[i] = pow(10,.1*epa_amps_dB[i]); sum_amps += chan_desc->amps[i]; @@ -646,7 +983,7 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx, chan_desc->channel_length = (int) (2*chan_desc->sampling_rate*chan_desc->Td + 1 + 2/(M_PI*M_PI)*log(4*M_PI*chan_desc->sampling_rate*chan_desc->Td)); sum_amps = 0; chan_desc->amps = (double *) malloc(chan_desc->nb_taps*sizeof(double)); - + chan_desc->free_flags=chan_desc->free_flags|CHANMODEL_FREE_AMPS ; for (i = 0; inb_taps; i++) { chan_desc->amps[i] = pow(10,.1*eva_amps_dB[i]); sum_amps += chan_desc->amps[i]; @@ -679,8 +1016,8 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx, chan_desc->R_sqrt[i] = (struct complex *) &R22_sqrt[i][0]; } else { chan_desc->R_sqrt = (struct complex **) malloc(6*sizeof(struct complex **)); - - for (i = 0; i<6; i++) { + chan_desc->free_flags=chan_desc->free_flags|CHANMODEL_FREE_RSQRT_6 ; + for (i = 0; i<6; i++) { chan_desc->R_sqrt[i] = (struct complex *) malloc(nb_tx*nb_rx*nb_tx*nb_rx * sizeof(struct complex)); for (j = 0; jchannel_length = (int) (2*chan_desc->sampling_rate*chan_desc->Td + 1 + 2/(M_PI*M_PI)*log(4*M_PI*chan_desc->sampling_rate*chan_desc->Td)); sum_amps = 0; chan_desc->amps = (double *) malloc(chan_desc->nb_taps*sizeof(double)); - + chan_desc->free_flags=chan_desc->free_flags|CHANMODEL_FREE_AMPS ; for (i = 0; inb_taps; i++) { chan_desc->amps[i] = pow(10,.1*etu_amps_dB[i]); sum_amps += chan_desc->amps[i]; @@ -733,7 +1070,7 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx, chan_desc->R_sqrt[i] = (struct complex *) &R22_sqrt[i][0]; } else { chan_desc->R_sqrt = (struct complex **) malloc(6*sizeof(struct complex **)); - + chan_desc->free_flags=chan_desc->free_flags|CHANMODEL_FREE_RSQRT_6 ; for (i = 0; i<6; i++) { chan_desc->R_sqrt[i] = (struct complex *) malloc(nb_tx*nb_rx*nb_tx*nb_rx * sizeof(struct complex)); @@ -754,7 +1091,7 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx, chan_desc->channel_length = (int) (2*chan_desc->sampling_rate*chan_desc->Td + 1 + 2/(M_PI*M_PI)*log(4*M_PI*chan_desc->sampling_rate*chan_desc->Td)); sum_amps = 0; chan_desc->amps = (double *) malloc(chan_desc->nb_taps*sizeof(double)); - + chan_desc->free_flags=chan_desc->free_flags|CHANMODEL_FREE_AMPS ; for (i = 0; inb_taps; i++) { chan_desc->amps[i] = pow(10,.1*mbsfn_amps_dB[i]); sum_amps += chan_desc->amps[i]; @@ -781,7 +1118,7 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx, chan_desc->a[i] = (struct complex *) malloc(nb_tx*nb_rx * sizeof(struct complex)); chan_desc->R_sqrt = (struct complex **) malloc(6*sizeof(struct complex *)); - + chan_desc->free_flags=chan_desc->free_flags|CHANMODEL_FREE_RSQRT_6; for (i = 0; i<6; i++) { chan_desc->R_sqrt[i] = (struct complex *) malloc(nb_tx*nb_rx*nb_tx*nb_rx * sizeof(struct complex)); @@ -1292,10 +1629,37 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx, chan_desc->nb_paths = 10; return(chan_desc); } - + void free_channel_desc_scm(channel_desc_t *ch) { // Must be made cleanly, a lot of leaks... - free(ch); + defined_channels[ch->chan_idx]=NULL; + if(ch->free_flags&CHANMODEL_FREE_AMPS) + free(ch->amps); + for (int i = 0; inb_tx*ch->nb_rx; i++) { + free(ch->ch[i]); + free(ch->chF[i]); + } + + for (int i = 0; inb_taps; i++) { + free(ch->a[i]); + } + if(ch->free_flags&CHANMODEL_FREE_DELAY) + free(ch->delays); + if(ch->free_flags&CHANMODEL_FREE_RSQRT_6) + for (int i = 0; i<6; i++) + free(ch->R_sqrt[i]); + if(ch->free_flags&CHANMODEL_FREE_RSQRT_NTAPS) + for (int i = 0; inb_taps;i++) + free(ch->R_sqrt[i]); + free(ch->R_sqrt); + free(ch->ch); + free(ch->chF); + free(ch->a); + free(ch); +} + +void set_channeldesc_owner(channel_desc_t *cdesc, uint32_t module_id) { + cdesc->module_id=module_id; } int random_channel(channel_desc_t *desc, uint8_t abstraction_flag) { @@ -1408,23 +1772,22 @@ int random_channel(channel_desc_t *desc, uint8_t abstraction_flag) { desc->ch[aarx+(aatx*desc->nb_rx)][k].y = 0.0; for (l=0; lnb_taps; l++) { - if ((k - (desc->delays[l]*desc->sampling_rate) - NB_SAMPLES_CHANNEL_OFFSET) == 0) + if ((k - (desc->delays[l]*desc->sampling_rate) - desc->channel_offset) == 0) s = 1.0; else - s = sin(M_PI*(k - (desc->delays[l]*desc->sampling_rate) - NB_SAMPLES_CHANNEL_OFFSET))/ - (M_PI*(k - (desc->delays[l]*desc->sampling_rate) - NB_SAMPLES_CHANNEL_OFFSET)); + s = sin(M_PI*(k - (desc->delays[l]*desc->sampling_rate) - desc->channel_offset))/ + (M_PI*(k - (desc->delays[l]*desc->sampling_rate) - desc->channel_offset)); desc->ch[aarx+(aatx*desc->nb_rx)][k].x += s*desc->a[l][aarx+(aatx*desc->nb_rx)].x; desc->ch[aarx+(aatx*desc->nb_rx)][k].y += s*desc->a[l][aarx+(aatx*desc->nb_rx)].y; - // printf("l %d : desc->ch.x %f\n",l,desc->a[l][aarx+(aatx*desc->nb_rx)].x); + // printf("l %d : desc->ch.x %f, s %e, delay %f\n",l,desc->a[l][aarx+(aatx*desc->nb_rx)].x,s,desc->delays[l]); } //nb_taps #ifdef DEBUG_CH - k=0; - printf("(%d,%d,%d)->(%f,%f)\n",k,aarx,aatx,desc->ch[aarx+(aatx*desc->nb_rx)][k].x,desc->ch[aarx+(aatx*desc->nb_rx)][k].y); + printf("(%d,%d,%d)->(%e,%e)\n",k,aarx,aatx,desc->ch[aarx+(aatx*desc->nb_rx)][k].x,desc->ch[aarx+(aatx*desc->nb_rx)][k].y); #endif - } - } //channel_length + } //channel_length + } } //aatx } //aarx @@ -1436,7 +1799,7 @@ int random_channel(channel_desc_t *desc, uint8_t abstraction_flag) { return (0); } - + double N_RB2sampling_rate(uint16_t N_RB) { double sampling_rate; @@ -1488,22 +1851,125 @@ double N_RB2channel_bandwidth(uint16_t N_RB) { LOG_E(PHY,"Unknown N_PRB\n"); return(-1); } - return(channel_bandwidth); +} + + +static int channelmod_print_help(char *buff, int debug, telnet_printfunc_t prnt ) { + prnt("channelmod commands can be used to display or modify channel models parameters\n"); + prnt("channelmod show predef: display predefined model algorithms available in oai\n"); + prnt("channelmod show current: display the currently used models in the running executable\n"); + prnt("channelmod modify : set the specified parameters in a current model to the given value\n"); + prnt(" specifies the model, the show current model command can be used to list the current models indexes\n"); + prnt(" can be one of \"riceanf\", \"aoa\", \"randaoa\", \"ploss\", \"offset\", \"forgetf\"\n"); + return CMDSTATUS_FOUND; } + +static void display_channelmodel(channel_desc_t *cd,int debug, telnet_printfunc_t prnt) { + char *module_id_str[]=MODULEID_STR_INIT; + if (cd->module_id != 0) { + prnt("model owner: %s\n",module_id_str[cd->module_id]); + } + prnt("nb_tx: %i nb_rx: %i taps: %i bandwidth: %lf sampling: %lf\n",cd->nb_tx, cd->nb_rx, cd->nb_taps, cd->channel_bandwidth, cd->sampling_rate); + prnt("channel length: %i Max path delay: %lf ricean fact.: %lf angle of arrival: %lf (randomized:%s)\n", + cd->channel_length, cd->Td, cd->ricean_factor, cd->aoa, (cd->random_aoa?"Yes":"No")); + prnt("max Doppler: %lf path loss: %lf rchannel offset: %i forget factor; %lf\n", + cd->max_Doppler, cd->path_loss_dB, cd->channel_offset, cd->forgetting_factor); + prnt("Initial phase: %lf nb_path: %i \n", + cd->ip, cd->nb_paths); + for (int i=0; inb_taps ; i++) { + prnt("taps: %i lin. ampli. : %lf delay: %lf \n",i,cd->amps[i], cd->delays[i]); + } +} + + static int channelmod_show_cmd(char *buff, int debug, telnet_printfunc_t prnt) { - for(int i=0; channelmod_names[i].name != NULL ; i++) { - prnt(" %i %s\n", i, map_int_to_str(channelmod_names,i )); - } + char *subcmd=NULL; + int s = sscanf(buff,"%ms\n",&subcmd); - return 0; + if (s>0) { + if ( strcmp(subcmd,"predef") == 0) { + for (int i=0; channelmod_names[i].name != NULL ; i++) { + prnt(" %i %s\n", i, map_int_to_str(channelmod_names,i )); + } + } else if ( strcmp(subcmd,"current") == 0) { + for (int i=0; i < max_chan ; i++) { + if (defined_channels[i] != NULL) { + prnt("model %i %s: \n----------------\n", i, map_int_to_str(channelmod_names,defined_channels[i]->modelid)); + display_channelmodel(defined_channels[i],debug,prnt); + } + } + } else { + channelmod_print_help(buff, debug, prnt); + } + free(subcmd); + } + return CMDSTATUS_FOUND; } -int modelid_fromname(char *modelname) { - int modelid=map_str_to_int(channelmod_names,modelname); - AssertFatal(modelid>0, - "random_channel.c: Error channel model %s unknown\n",modelname); + + +static int channelmod_modify_cmd(char *buff, int debug, telnet_printfunc_t prnt) { + char *param=NULL, *value=NULL; + int cd_id= -1; + int s = sscanf(buff,"%i %ms %ms \n",&cd_id,¶m, &value); + if (cd_id<0 || cd_id >= max_chan) { + prnt("ERROR, %i: Channel model id outof range (0-%i)\n",cd_id,max_chan-1); + return CMDSTATUS_FOUND; + } + if (defined_channels[cd_id]==NULL) { + prnt("ERROR, %i: Channel model has not been set\n",cd_id); + return CMDSTATUS_FOUND; + } + + if (s==3) { + if ( strcmp(param,"riceanf") == 0) { + double dbl = atof(value); + if (dbl <0 || dbl > 1) + prnt("ERROR: ricean factor range: 0 to 1, %lf is outof range\n",dbl); + else + defined_channels[cd_id]->ricean_factor=dbl; + } else if ( strcmp(param,"aoa") == 0) { + double dbl = atof(value); + if (dbl <0 || dbl >6.28) + prnt("ERROR: angle of arrival range: 0 to 2*Pi, %lf is outof range\n",dbl); + else + defined_channels[cd_id]->aoa=dbl; + } else if ( strcmp(param,"randaoa") == 0) { + int i = atoi(value); + if (i!=0 && i!=1) + prnt("ERROR: randaoa is a boolean, must be 0 or 1\n"); + else + defined_channels[cd_id]->random_aoa=i; + } else if ( strcmp(param,"ploss") == 0) { + double dbl = atof(value); + defined_channels[cd_id]->path_loss_dB=dbl; + } else if ( strcmp(param,"offset") == 0) { + int i = atoi(value); + defined_channels[cd_id]->channel_offset=i; + } else if ( strcmp(param,"forgetf") == 0) { + double dbl = atof(value); + if (dbl <0 || dbl > 1) + prnt("ERROR: forgetting factor range: 0 to 1 (disable variation), %lf is outof range\n",dbl); + else + defined_channels[cd_id]->forgetting_factor=dbl; + } else { + prnt("ERROR: %s, unknown channel parameter\n",param); + return CMDSTATUS_FOUND; + } + display_channelmodel(defined_channels[cd_id],debug,prnt); + free(param); + free(value); + random_channel(defined_channels[cd_id],false); + } + return CMDSTATUS_FOUND; +} + +int modelid_fromname(char *modelname) { + int modelid=map_str_to_int(channelmod_names,modelname); + if (modelid < 0) + LOG_E(OCM,"random_channel.c: Error channel model %s unknown\n",modelname); return modelid; } @@ -1519,6 +1985,9 @@ void init_channelmod(void) { paramdef_t channelmod_params[] = CHANNELMOD_PARAMS_DESC; int ret = config_get( channelmod_params,sizeof(channelmod_params)/sizeof(paramdef_t),CHANNELMOD_SECTION); AssertFatal(ret >= 0, "configuration couldn't be performed"); + defined_channels=calloc(max_chan,sizeof( channel_desc_t*)); + AssertFatal(defined_channels!=NULL, "couldn't allocate %u channel descriptors\n",max_chan); + /* look for telnet server, if it is loaded, add the channel modeling commands to it */ add_telnetcmd_func_t addcmd = (add_telnetcmd_func_t)get_shlibmodule_fptr("telnetsrv", TELNET_ADDCMD_FNAME); diff --git a/openair1/SIMULATION/TOOLS/sim.h b/openair1/SIMULATION/TOOLS/sim.h index 0bc5975d99..2f5ab99b41 100644 --- a/openair1/SIMULATION/TOOLS/sim.h +++ b/openair1/SIMULATION/TOOLS/sim.h @@ -40,6 +40,16 @@ The present clause specifies several numerical functions for testing of digital #define NB_SAMPLES_CHANNEL_OFFSET 4 +typedef enum { + UNSPECIFIED_MODID=0, + RFSIMU_MODULEID=1 +} channelmod_moduleid_t; +#define MODULEID_STR_INIT {"","rfsimulator"} + +#define CHANMODEL_FREE_DELAY 1<<0 +#define CHANMODEL_FREE_RSQRT_6 1<<1 +#define CHANMODEL_FREE_RSQRT_NTAPS 1<<2 +#define CHANMODEL_FREE_AMPS 1<<3 typedef struct { ///Number of tx antennas uint8_t nb_tx; @@ -92,6 +102,14 @@ typedef struct { time_stats_t interp_time; time_stats_t interp_freq; time_stats_t convolution; + /// index in the channel descriptors array + unsigned int chan_idx; + /// id of the channel modeling algorithm + int modelid; + /// identifies channel descriptor owner (the module which created this descriptor) + channelmod_moduleid_t module_id; + /// flags to properly trigger memory free + unsigned int free_flags; } channel_desc_t; typedef struct { @@ -160,6 +178,11 @@ typedef enum { EVA, ETU, MBSFN, + TDL_A, + TDL_B, + TDL_C, + TDL_D, + TDL_E, Rayleigh8, Rayleigh1, Rayleigh1_800, @@ -190,6 +213,11 @@ typedef enum { {"EVA",EVA},\ {"ETU",ETU},\ {"MBSFN",MBSFN},\ + {"TDL_A",TDL_A},\ + {"TDL_B",TDL_B},\ + {"TDL_C",TDL_C},\ + {"TDL_D",TDL_D},\ + {"TDL_E",TDL_E},\ {"Rayleigh8",Rayleigh8},\ {"Rayleigh1",Rayleigh1},\ {"Rayleigh1_800",Rayleigh1_800},\ @@ -214,8 +242,9 @@ typedef enum { #define CONFIG_HLP_SNR "Set average SNR in dB (for --siml1 option)\n" #define CHANNELMOD_SECTION "channelmod" #define CHANNELMOD_PARAMS_DESC { \ - {"s" , CONFIG_HLP_SNR, PARAMFLAG_CMDLINE_NOPREFIXENABLED, dblptr:&snr_dB , defdblval:25, TYPE_DOUBLE, 0},\ - {"sinr_dB", NULL , 0 , dblptr:&sinr_dB, defdblval:0 , TYPE_DOUBLE, 0},\ + {"s" , CONFIG_HLP_SNR, PARAMFLAG_CMDLINE_NOPREFIXENABLED, dblptr:&snr_dB, defdblval:25, TYPE_DOUBLE, 0},\ + {"sinr_dB", NULL, 0 , dblptr:&sinr_dB, defdblval:0 , TYPE_DOUBLE, 0},\ + {"max_chan, CONFIG_HLP_MAX_CHAN", 0, uptr:&max_chan, defintval:10, TYPE_UINT, 0},\ } #include "platform_constants.h" @@ -243,39 +272,27 @@ typedef struct { } sim_t; -/** -\brief This routine initializes a new channel descriptor -\param nb_tx Number of TX antennas -\param nb_rx Number of RX antennas -\param nb_taps Number of taps -\param channel_length Length of the interpolated channel impulse response -\param amps Linear amplitudes of the taps (length(amps)=channel_length). The values should sum up to 1. -\param delays Delays of the taps. If delays==NULL the taps are assumed to be spaced equidistantly between 0 and t_max. -\param R_sqrt Channel correlation matrix. If R_sqrt==NULL, no channel correlation is applied. -\param Td Maximum path delay in mus. -\param BW Channel bandwidth in MHz. -\param ricean_factor Ricean factor applied to all taps. -\param aoa Anlge of arrival -\param forgetting_factor This parameter (0...1) allows for simple 1st order temporal variation -\param max_Doppler This is the maximum Doppler frequency for Jakes' Model -\param channel_offset This is a time delay to apply to channel -\param path_loss_dB This is the path loss in dB -\param random_aoa If set to 1, AoA of ricean component is randomized -*/ - -//channel_desc_t *new_channel_desc(uint8_t nb_tx,uint8_t nb_rx, uint8_t nb_taps, uint8_t channel_length, double *amps, double* delays, struct complex** R_sqrt, double Td, double BW, double ricean_factor, double aoa, double forgetting_factor, double max_Doppler, int32_t channel_offset, double path_loss_dB,uint8_t random_aoa); - channel_desc_t *new_channel_desc_scm(uint8_t nb_tx, uint8_t nb_rx, SCM_t channel_model, - double sampling_rate, + double sampling_rate, double channel_bandwidth, + double TDL_DS, double forgetting_factor, int32_t channel_offset, double path_loss_dB); +/** +\brief free memory allocated for a model descriptor +\param ch points to the model, which cannot be used after calling this fuction +*/ +void free_channel_desc_scm(channel_desc_t *ch); - - +/** +\brief This set the ownerid of a model descriptor, can be later used to check what module created a channel model +\param cdesc points to the model descriptor +\param module_id identifies the channel model. should be define as a macro in simu.h +*/ +void set_channeldesc_owner(channel_desc_t *cdesc, channelmod_moduleid_t module_id); /** \fn void random_channel(channel_desc_t *desc) \brief This routine generates a random channel response (time domain) according to a tapped delay line model. \param desc Pointer to the channel descriptor @@ -288,7 +305,8 @@ int random_channel(channel_desc_t *desc, uint8_t abstraction_flag); double rx_sig_re[2], double rx_sig_im[2], uint32_t length, - uint8_t keep_channel) + uint8_t keep_channel, + int log_channel) \brief This function generates and applys a random frequency selective random channel model. @param desc Pointer to channel descriptor @@ -298,6 +316,7 @@ int random_channel(channel_desc_t *desc, uint8_t abstraction_flag); @param rx_sig_im output signal (imaginary component) @param length Length of input signal @param keep_channel Set to 1 to keep channel constant for null-B/F +@param log_channel=1 make channel coefficients come out for first sample of input */ void multipath_channel(channel_desc_t *desc, @@ -306,7 +325,8 @@ void multipath_channel(channel_desc_t *desc, double *rx_sig_re[2], double *rx_sig_im[2], uint32_t length, - uint8_t keep_channel); + uint8_t keep_channel, + int log_channel); /* \fn double compute_pbch_sinr(channel_desc_t *desc, channel_desc_t *desc_i1, @@ -426,21 +446,12 @@ void multipath_tv_channel(channel_desc_t *desc, double **tx_sig_im, double **rx_sig_re, double **rx_sig_im, - uint16_t length, + uint32_t length, uint8_t keep_channel); /**@} */ /**@} */ -void rxAddInput( struct complex16 *input_sig, - struct complex16 *after_channel_sig, - int rxAnt, - channel_desc_t *channelDesc, - int nbSamples, - uint64_t TS, - uint32_t CirSize - ); - int modelid_fromname(char *modelname); double channelmod_get_snr_dB(void); double channelmod_get_sinr_dB(void); diff --git a/openair1/SIMULATION/TOOLS/taus.c b/openair1/SIMULATION/TOOLS/taus.c index 5fe0ce4d78..cdd4aebec3 100644 --- a/openair1/SIMULATION/TOOLS/taus.c +++ b/openair1/SIMULATION/TOOLS/taus.c @@ -21,7 +21,8 @@ #include #include -#include "SIMULATION/TOOLS/sim.h" +//#include "SIMULATION/TOOLS/sim.h" + unsigned int s0, s1, s2, b; diff --git a/openair2/COMMON/m2ap_messages_def.h b/openair2/COMMON/m2ap_messages_def.h index adad70c9cc..743ca126fb 100644 --- a/openair2/COMMON/m2ap_messages_def.h +++ b/openair2/COMMON/m2ap_messages_def.h @@ -50,6 +50,7 @@ MESSAGE_DEF(M2AP_DEREGISTERED_ENB_IND , MESSAGE_PRIORITY_MED, m2ap_der /* M2AP -> SCTP */ MESSAGE_DEF(M2AP_MCE_SCTP_REQ , MESSAGE_PRIORITY_MED, m2ap_mce_sctp_req_t , m2ap_mce_sctp_req) +MESSAGE_DEF(M2AP_ENB_SCTP_REQ , MESSAGE_PRIORITY_MED, m2ap_enb_sctp_req_t , m2ap_enb_sctp_req) //MESSAGE_DEF(M2AP_ENB_SCTP_REQ , MESSAGE_PRIORITY_MED, m2ap_enb_setup_req_t , f1ap_enb_setup_req) /* eNB_DU application layer -> M2AP messages or CU M2AP -> RRC*/ diff --git a/openair2/COMMON/m2ap_messages_types.h b/openair2/COMMON/m2ap_messages_types.h index 501414f296..c70c50fc64 100644 --- a/openair2/COMMON/m2ap_messages_types.h +++ b/openair2/COMMON/m2ap_messages_types.h @@ -480,7 +480,7 @@ typedef struct m2ap_mbms_scheduling_information_s { uint8_t common_sf_allocation_period; uint8_t mbms_area_id; struct{ - uint8_t allocated_sf_end; + uint16_t allocated_sf_end; uint8_t data_mcs; uint8_t mch_scheduling_period; struct{ @@ -533,6 +533,15 @@ typedef struct m2ap_mce_sctp_req_s { uint32_t mce_port_for_M2C; }m2ap_mce_sctp_req_t; +typedef struct m2ap_enb_sctp_req_s { + /* The local MCE IP address to bind */ + net_ip_address_t enb_m2_ip_address; + + /* eNB port for M2C*/ + uint32_t enb_port_for_M2C; +}m2ap_enb_sctp_req_t; + + typedef struct m2ap_mbms_scheduling_information_resp_s { } m2ap_mbms_scheduling_information_resp_t; typedef struct m2ap_session_start_req_s { diff --git a/openair2/COMMON/platform_constants.h b/openair2/COMMON/platform_constants.h index 1eb58b16b2..af364437b8 100644 --- a/openair2/COMMON/platform_constants.h +++ b/openair2/COMMON/platform_constants.h @@ -101,8 +101,10 @@ #define NUMBER_OF_NR_DLSCH_MAX 2//16 #define NUMBER_OF_NR_ULSCH_MAX 2//16 +#define NUMBER_OF_NR_SCH_STATS_MAX 16 +#define NUMBER_OF_NR_PUCCH_MAX 16 #define NUMBER_OF_NR_SR_MAX 16 - +#define NUMBER_OF_NR_PDCCH_MAX 16 #define MAX_MANAGED_ENB_PER_MOBILE 2 #define MAX_MANAGED_GNB_PER_MOBILE 2 diff --git a/openair2/COMMON/rrc_messages_types.h b/openair2/COMMON/rrc_messages_types.h index 7582de65ba..0b143fe07e 100644 --- a/openair2/COMMON/rrc_messages_types.h +++ b/openair2/COMMON/rrc_messages_types.h @@ -403,8 +403,10 @@ typedef struct NRRrcConfigurationReq_s { uint16_t mnc[PLMN_LIST_MAX_SIZE]; uint8_t mnc_digit_length[PLMN_LIST_MAX_SIZE]; NR_ServingCellConfigCommon_t *scc; - int ssb_SubcarrierOffset; - int pdsch_AntennaPorts; + int ssb_SubcarrierOffset; + int pdsch_AntennaPorts; + int pusch_TargetSNRx10; + int pucch_TargetSNRx10; } gNB_RrcConfigurationReq; diff --git a/openair2/COMMON/s1ap_messages_def.h b/openair2/COMMON/s1ap_messages_def.h index 57201721ce..5e5794fc55 100644 --- a/openair2/COMMON/s1ap_messages_def.h +++ b/openair2/COMMON/s1ap_messages_def.h @@ -66,6 +66,7 @@ MESSAGE_DEF(S1AP_E_RAB_MODIFY_RESP , MESSAGE_PRIORITY_MED, s1ap_e_rab_m MESSAGE_DEF(S1AP_E_RAB_RELEASE_RESPONSE , MESSAGE_PRIORITY_MED, s1ap_e_rab_release_resp_t , s1ap_e_rab_release_resp) MESSAGE_DEF(S1AP_PATH_SWITCH_REQ , MESSAGE_PRIORITY_MED, s1ap_path_switch_req_t , s1ap_path_switch_req) MESSAGE_DEF(S1AP_PATH_SWITCH_REQ_ACK , MESSAGE_PRIORITY_MED, s1ap_path_switch_req_ack_t , s1ap_path_switch_req_ack) +MESSAGE_DEF(S1AP_E_RAB_MODIFICATION_IND , MESSAGE_PRIORITY_MED, s1ap_e_rab_modification_ind_t , s1ap_e_rab_modification_ind) /* S1AP -> RRC messages */ MESSAGE_DEF(S1AP_DOWNLINK_NAS , MESSAGE_PRIORITY_MED, s1ap_downlink_nas_t , s1ap_downlink_nas ) diff --git a/openair2/COMMON/s1ap_messages_types.h b/openair2/COMMON/s1ap_messages_types.h index 8e13e35d65..befab4ebdf 100644 --- a/openair2/COMMON/s1ap_messages_types.h +++ b/openair2/COMMON/s1ap_messages_types.h @@ -45,6 +45,7 @@ #define S1AP_E_RAB_MODIFY_RESP(mSGpTR) (mSGpTR)->ittiMsg.s1ap_e_rab_modify_resp #define S1AP_PATH_SWITCH_REQ(mSGpTR) (mSGpTR)->ittiMsg.s1ap_path_switch_req #define S1AP_PATH_SWITCH_REQ_ACK(mSGpTR) (mSGpTR)->ittiMsg.s1ap_path_switch_req_ack +#define S1AP_E_RAB_MODIFICATION_IND(mSGpTR) (mSGpTR)->ittiMsg.s1ap_e_rab_modification_ind #define S1AP_DOWNLINK_NAS(mSGpTR) (mSGpTR)->ittiMsg.s1ap_downlink_nas #define S1AP_INITIAL_CONTEXT_SETUP_REQ(mSGpTR) (mSGpTR)->ittiMsg.s1ap_initial_context_setup_req @@ -277,12 +278,26 @@ typedef struct e_rab_tobe_added_s { uint8_t drb_ID; /* The transport layer address for the IP packets */ - transport_layer_addr_t eNB_addr; + transport_layer_addr_t sgw_addr; /* S-GW Tunnel endpoint identifier */ uint32_t gtp_teid; } e_rab_tobe_added_t; +typedef struct e_rab_admitted_tobe_added_s { + /* Unique e_rab_id for the UE. */ + uint8_t e_rab_id; + + /* Unique drb_ID for the UE. */ + uint8_t drb_ID; + + /* The transport layer address for the IP packets */ + transport_layer_addr_t gnb_addr; + + /* S-GW Tunnel endpoint identifier */ + uint32_t gtp_teid; +} e_rab_admitted_tobe_added_t; + typedef struct e_rab_tobeswitched_s { @@ -642,6 +657,27 @@ typedef struct s1ap_path_switch_req_ack_s { } s1ap_path_switch_req_ack_t; +typedef struct s1ap_e_rab_modification_ind_s { + + unsigned eNB_ue_s1ap_id:24; + + /* MME UE id */ + uint32_t mme_ue_s1ap_id; + + /* Number of e_rab setup-ed in the list */ + uint8_t nb_of_e_rabs_tobemodified; + + uint8_t nb_of_e_rabs_nottobemodified; + + /* list of e_rab setup-ed by RRC layers */ + e_rab_setup_t e_rabs_tobemodified[S1AP_MAX_E_RAB]; + + e_rab_setup_t e_rabs_nottobemodified[S1AP_MAX_E_RAB]; + + uint16_t ue_initial_id; + +} s1ap_e_rab_modification_ind_t; + // S1AP --> RRC messages typedef struct s1ap_ue_release_command_s { diff --git a/openair2/COMMON/x2ap_messages_types.h b/openair2/COMMON/x2ap_messages_types.h index ed3470a7d6..f0743e60a5 100644 --- a/openair2/COMMON/x2ap_messages_types.h +++ b/openair2/COMMON/x2ap_messages_types.h @@ -315,7 +315,7 @@ typedef struct x2ap_senb_addition_req_ack_s { typedef struct x2ap_ENDC_sgnb_addition_req_s { int ue_x2_id; - + LTE_PhysCellId_t target_physCellId; /* used for RRC->X2AP in source eNB */ int rnti; @@ -363,7 +363,7 @@ typedef struct x2ap_ENDC_sgnb_addition_req_ACK_s { uint8_t nb_e_rabs_admitted_tobeadded; /* list of e_rab to be added by RRC layers */ - e_rab_tobe_added_t e_rabs_admitted_tobeadded[S1AP_MAX_E_RAB]; + e_rab_admitted_tobe_added_t e_rabs_admitted_tobeadded[S1AP_MAX_E_RAB]; /* list of e_rab to be setup by RRC layers */ e_rab_t e_rab_param[S1AP_MAX_E_RAB]; @@ -386,6 +386,7 @@ typedef struct x2ap_ENDC_reconf_complete_s { int MeNB_ue_x2_id; int SgNB_ue_x2_id; + LTE_PhysCellId_t target_physCellId; x2ap_sgNB_reconf_response_information_t reconf_response; diff --git a/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac.c b/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac.c index 975ac4e96f..f1daacbb65 100644 --- a/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac.c +++ b/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac.c @@ -49,18 +49,13 @@ struct lfds700_misc_prng_state ps[NUM_MAX_ENB]; struct lfds700_ringbuffer_element *dl_mac_config_array[NUM_MAX_ENB]; struct lfds700_ringbuffer_state ringbuffer_state[NUM_MAX_ENB]; -/* the slice config as kept in the underlying system */ -Protocol__FlexSliceConfig *slice_config[MAX_NUM_SLICES]; -/* a structure that keeps updates which will be reflected in slice_config later */ -Protocol__FlexSliceConfig *sc_update[MAX_NUM_SLICES]; -/* indicates whether sc_update contains new data */ -int perform_slice_config_update_count = 1; -/* queue of incoming new UE<>slice association commands */ -Protocol__FlexUeConfig *ue_slice_assoc_update[MAX_NUM_SLICES]; -int n_ue_slice_assoc_updates = 0; -/* mutex for sc_update: do not receive new config and write it at the same time */ -pthread_mutex_t sc_update_mtx = PTHREAD_MUTEX_INITIALIZER; +/* Ringbuffer-related to slice configuration */ +struct lfds700_ringbuffer_element *slice_config_array[NUM_MAX_ENB]; +struct lfds700_ringbuffer_state slice_config_ringbuffer_state[NUM_MAX_ENB]; +/* Ringbuffer-related to slice configuration */ +struct lfds700_ringbuffer_element *ue_assoc_array[NUM_MAX_ENB]; +struct lfds700_ringbuffer_state ue_assoc_ringbuffer_state[NUM_MAX_ENB]; int flexran_agent_mac_stats_reply_ue(mid_t mod_id, Protocol__FlexUeStatsReport **ue_report, @@ -1354,6 +1349,33 @@ void flexran_agent_init_mac_agent(mid_t mod_id) { AssertFatal(i == 0, "posix_memalign(): could not allocate aligned memory for lfds library\n"); lfds700_ringbuffer_init_valid_on_current_logical_core(&ringbuffer_state[mod_id], dl_mac_config_array[mod_id], num_elements, &ps[mod_id], NULL); + + struct lfds700_misc_prng_state scrng; + i = posix_memalign((void **) &slice_config_array[mod_id], + LFDS700_PAL_ATOMIC_ISOLATION_IN_BYTES, + sizeof(struct lfds700_ringbuffer_element) * num_elements); + AssertFatal(i == 0, + "posix_memalign(): could not allocate aligned memory\n"); + lfds700_ringbuffer_init_valid_on_current_logical_core( + &slice_config_ringbuffer_state[mod_id], + slice_config_array[mod_id], + num_elements, + &scrng, + NULL); + + struct lfds700_misc_prng_state uarng; + i = posix_memalign((void **) &ue_assoc_array[mod_id], + LFDS700_PAL_ATOMIC_ISOLATION_IN_BYTES, + sizeof(struct lfds700_ringbuffer_element) * num_elements); + AssertFatal(i == 0, + "posix_memalign(): could not allocate aligned memory\n"); + lfds700_ringbuffer_init_valid_on_current_logical_core( + &ue_assoc_ringbuffer_state[mod_id], + ue_assoc_array[mod_id], + num_elements, + &uarng, + NULL); + for (i = 0; i < MAX_MOBILES_PER_ENB; i++) { for (j = 0; j < 8; j++) { if (RC.mac && RC.mac[mod_id]) @@ -1465,9 +1487,74 @@ void flexran_agent_fill_mac_cell_config(mid_t mod_id, uint8_t cc_id, conf->si_config->has_sfn = 1; } - /* get a pointer to the config which is maintained in the agent throughout - * its lifetime */ - conf->slice_config = flexran_agent_get_slice_config(mod_id); + conf->slice_config = malloc(sizeof(Protocol__FlexSliceConfig)); + if (conf->slice_config) { + protocol__flex_slice_config__init(conf->slice_config); + Protocol__FlexSliceConfig *sc = conf->slice_config; + + sc->dl = malloc(sizeof(Protocol__FlexSliceDlUlConfig)); + DevAssert(sc->dl); + protocol__flex_slice_dl_ul_config__init(sc->dl); + sc->dl->algorithm = flexran_get_dl_slice_algo(mod_id); + sc->dl->has_algorithm = 1; + sc->dl->n_slices = flexran_get_num_dl_slices(mod_id); + if (sc->dl->n_slices > 0) { + sc->dl->slices = calloc(sc->dl->n_slices, sizeof(Protocol__FlexSlice *)); + DevAssert(sc->dl->slices); + for (int i = 0; i < sc->dl->n_slices; ++i) { + sc->dl->slices[i] = malloc(sizeof(Protocol__FlexSlice)); + DevAssert(sc->dl->slices[i]); + protocol__flex_slice__init(sc->dl->slices[i]); + flexran_get_dl_slice(mod_id, i, sc->dl->slices[i], sc->dl->algorithm); + } + } else { + sc->dl->scheduler = flexran_get_dl_scheduler_name(mod_id); + } + + sc->ul = malloc(sizeof(Protocol__FlexSliceDlUlConfig)); + DevAssert(sc->ul); + protocol__flex_slice_dl_ul_config__init(sc->ul); + sc->ul->algorithm = flexran_get_ul_slice_algo(mod_id); + sc->ul->has_algorithm = 1; + sc->ul->n_slices = flexran_get_num_ul_slices(mod_id); + if (sc->ul->n_slices > 0) { + sc->ul->slices = calloc(sc->ul->n_slices, sizeof(Protocol__FlexSlice *)); + DevAssert(sc->ul->slices); + for (int i = 0; i < sc->ul->n_slices; ++i) { + sc->ul->slices[i] = malloc(sizeof(Protocol__FlexSlice)); + DevAssert(sc->ul->slices[i]); + protocol__flex_slice__init(sc->ul->slices[i]); + flexran_get_ul_slice(mod_id, i, sc->ul->slices[i], sc->ul->algorithm); + } + } else { + sc->ul->scheduler = flexran_get_ul_scheduler_name(mod_id); + } + } +} + +void flexran_agent_destroy_mac_slice_config(Protocol__FlexCellConfig *conf) { + Protocol__FlexSliceConfig *sc = conf->slice_config; + for (int i = 0; i < sc->dl->n_slices; ++i) { + free(sc->dl->slices[i]); + sc->dl->slices[i] = NULL; + /* scheduler names are not freed: we assume we read them directly from the + * underlying memory and do not dispose it */ + } + free(sc->dl->slices); + /* scheduler name is not freed */ + free(sc->dl); + sc->dl = NULL; + for (int i = 0; i < sc->ul->n_slices; ++i) { + free(sc->ul->slices[i]); + sc->ul->slices[i] = NULL; + /* scheduler names are not freed */ + } + free(sc->ul->slices); + /* scheduler name is not freed */ + free(sc->ul); + sc->ul = NULL; + free(conf->slice_config); + conf->slice_config = NULL; } void flexran_agent_fill_mac_ue_config(mid_t mod_id, mid_t ue_id, @@ -1481,10 +1568,12 @@ void flexran_agent_fill_mac_ue_config(mid_t mod_id, mid_t ue_id, ue_conf->rnti = flexran_get_mac_ue_crnti(mod_id, ue_id); ue_conf->has_rnti = 1; - ue_conf->dl_slice_id = flexran_get_ue_dl_slice_id(mod_id, ue_id); - ue_conf->has_dl_slice_id = 1; - ue_conf->ul_slice_id = flexran_get_ue_ul_slice_id(mod_id, ue_id); - ue_conf->has_ul_slice_id = 1; + int dl_id = flexran_get_ue_dl_slice_id(mod_id, ue_id); + ue_conf->dl_slice_id = dl_id; + ue_conf->has_dl_slice_id = dl_id >= 0; + int ul_id = flexran_get_ue_ul_slice_id(mod_id, ue_id); + ue_conf->ul_slice_id = ul_id; + ue_conf->has_ul_slice_id = ul_id >= 0; ue_conf->ue_aggregated_max_bitrate_ul = flexran_get_ue_aggregated_max_bitrate_ul(mod_id, ue_id); ue_conf->has_ue_aggregated_max_bitrate_ul = 1; @@ -1565,6 +1654,15 @@ int flexran_agent_unregister_mac_xface(mid_t mod_id) LOG_E(FLEXRAN_AGENT, "MAC agent CM for eNB %d is not registered\n", mod_id); return -1; } + + lfds700_ringbuffer_cleanup(&ringbuffer_state[mod_id], NULL ); + free(dl_mac_config_array[mod_id]); + lfds700_ringbuffer_cleanup(&slice_config_ringbuffer_state[mod_id], NULL ); + free(slice_config_array[mod_id]); + lfds700_ringbuffer_cleanup(&ue_assoc_ringbuffer_state[mod_id], NULL ); + free(ue_assoc_array[mod_id]); + lfds700_misc_library_cleanup(); + AGENT_MAC_xface *xface = agent_mac_xface[mod_id]; xface->flexran_agent_send_sr_info = NULL; xface->flexran_agent_send_sf_trigger = NULL; @@ -1579,234 +1677,91 @@ int flexran_agent_unregister_mac_xface(mid_t mod_id) return 0; } -AGENT_MAC_xface *flexran_agent_get_mac_xface(mid_t mod_id) -{ - return agent_mac_xface[mod_id]; +void helper_destroy_mac_slice_config(Protocol__FlexSliceConfig *slice_config) { + if (slice_config->dl) { + if (slice_config->dl->scheduler) + free(slice_config->dl->scheduler); + for (int i = 0; i < slice_config->dl->n_slices; i++) + if (slice_config->dl->slices[i]->scheduler) + free(slice_config->dl->slices[i]->scheduler); + } + if (slice_config->ul) { + if (slice_config->ul->scheduler) + free(slice_config->ul->scheduler); + for (int i = 0; i < slice_config->ul->n_slices; i++) + if (slice_config->ul->slices[i]->scheduler) + free(slice_config->ul->slices[i]->scheduler); + } + + Protocol__FlexCellConfig helper; + helper.slice_config = slice_config; + flexran_agent_destroy_mac_slice_config(&helper); } -void flexran_create_config_structures(mid_t mod_id) -{ - int i; - int n_dl = flexran_get_num_dl_slices(mod_id); - int m_ul = flexran_get_num_ul_slices(mod_id); - slice_config[mod_id] = flexran_agent_create_slice_config(n_dl, m_ul); - sc_update[mod_id] = flexran_agent_create_slice_config(n_dl, m_ul); - if (!slice_config[mod_id] || !sc_update[mod_id]) return; +void prepare_update_slice_config(mid_t mod_id, Protocol__FlexSliceConfig **slice_config) { + if (!*slice_config) return; + /* just use the memory and set to NULL in original */ + Protocol__FlexSliceConfig *sc = *slice_config; + *slice_config = NULL; - flexran_agent_read_slice_config(mod_id, slice_config[mod_id]); - flexran_agent_read_slice_config(mod_id, sc_update[mod_id]); - for (i = 0; i < n_dl; i++) { - flexran_agent_read_slice_dl_config(mod_id, i, slice_config[mod_id]->dl[i]); - flexran_agent_read_slice_dl_config(mod_id, i, sc_update[mod_id]->dl[i]); - } - for (i = 0; i < m_ul; i++) { - flexran_agent_read_slice_ul_config(mod_id, i, slice_config[mod_id]->ul[i]); - flexran_agent_read_slice_ul_config(mod_id, i, sc_update[mod_id]->ul[i]); + struct lfds700_misc_prng_state ls; + LFDS700_MISC_MAKE_VALID_ON_CURRENT_LOGICAL_CORE_INITS_COMPLETED_BEFORE_NOW_ON_ANY_OTHER_LOGICAL_CORE; + lfds700_misc_prng_init(&ls); + enum lfds700_misc_flag overwrite_occurred_flag; + + Protocol__FlexSliceConfig *overwritten_sc; + lfds700_ringbuffer_write(&slice_config_ringbuffer_state[mod_id], + NULL, + (void *)sc, + &overwrite_occurred_flag, + NULL, + (void **)&overwritten_sc, + &ls); + + if (overwrite_occurred_flag == LFDS700_MISC_FLAG_RAISED) { + helper_destroy_mac_slice_config(overwritten_sc); + LOG_E(FLEXRAN_AGENT, "lost slice config: too many reconfigurations at once\n"); } } -void flexran_check_and_remove_slices(mid_t mod_id) -{ - Protocol__FlexDlSlice **dl = sc_update[mod_id]->dl; - Protocol__FlexDlSlice **dlreal = slice_config[mod_id]->dl; - int i = 0; - while (i < sc_update[mod_id]->n_dl) { - /* remove slices whose percentage is zero */ - if (dl[i]->percentage > 0) { - ++i; - continue; - } - if (flexran_remove_dl_slice(mod_id, i) < 1) { - LOG_W(FLEXRAN_AGENT, "[%d] can not remove slice index %d ID %d\n", - mod_id, i, dl[i]->id); - ++i; - continue; - } - LOG_I(FLEXRAN_AGENT, "[%d] removed slice index %d ID %d\n", - mod_id, i, dl[i]->id); - if (dl[i]->n_sorting > 0) free(dl[i]->sorting); - free(dl[i]->scheduler_name); - if (dlreal[i]->n_sorting > 0) { - dlreal[i]->n_sorting = 0; - free(dlreal[i]->sorting); - } - free(dlreal[i]->scheduler_name); - --sc_update[mod_id]->n_dl; - --slice_config[mod_id]->n_dl; - const size_t last = sc_update[mod_id]->n_dl; - /* we need to memcpy the higher slice to the position we just deleted */ - memcpy(dl[i], dl[last], sizeof(*dl[last])); - memset(dl[last], 0, sizeof(*dl[last])); - memcpy(dlreal[i], dlreal[last], sizeof(*dlreal[last])); - memset(dlreal[last], 0, sizeof(*dlreal[last])); - /* dont increase i but recheck the slice which has been copied to here */ - } - Protocol__FlexUlSlice **ul = sc_update[mod_id]->ul; - Protocol__FlexUlSlice **ulreal = slice_config[mod_id]->ul; - i = 0; - while (i < sc_update[mod_id]->n_ul) { - if (ul[i]->percentage > 0) { - ++i; - continue; - } - if (flexran_remove_ul_slice(mod_id, i) < 1) { - LOG_W(FLEXRAN_AGENT, "[%d] can not remove slice index %d ID %d\n", - mod_id, i, ul[i]->id); - ++i; - continue; - } - LOG_I(FLEXRAN_AGENT, "[%d] removed slice index %d ID %d\n", - mod_id, i, ul[i]->id); - free(ul[i]->scheduler_name); - free(ulreal[i]->scheduler_name); - --sc_update[mod_id]->n_ul; - --slice_config[mod_id]->n_ul; - const size_t last = sc_update[mod_id]->n_ul; - /* see DL remarks */ - memcpy(ul[i], ul[last], sizeof(*ul[last])); - memset(ul[last], 0, sizeof(*ul[last])); - memcpy(ulreal[i], ulreal[last], sizeof(*ulreal[last])); - memset(ulreal[last], 0, sizeof(*ulreal[last])); - /* dont increase i but recheck the slice which has been copied to here */ +void prepare_ue_slice_assoc_update(mid_t mod_id, Protocol__FlexUeConfig **ue_config) { + struct lfds700_misc_prng_state ls; + LFDS700_MISC_MAKE_VALID_ON_CURRENT_LOGICAL_CORE_INITS_COMPLETED_BEFORE_NOW_ON_ANY_OTHER_LOGICAL_CORE; + lfds700_misc_prng_init(&ls); + enum lfds700_misc_flag overwrite_occurred_flag; + + Protocol__FlexUeConfig *overwritten_ue_config; + lfds700_ringbuffer_write(&ue_assoc_ringbuffer_state[mod_id], + NULL, + (void *) *ue_config, + &overwrite_occurred_flag, + NULL, + (void **)&overwritten_ue_config, + &ls); + + if (overwrite_occurred_flag == LFDS700_MISC_FLAG_RAISED) { + free(overwritten_ue_config); + LOG_E(FLEXRAN_AGENT, "lost UE-slice association: too many UE-slice associations at once\n"); } } -void flexran_agent_slice_update(mid_t mod_id) -{ - int i; - int changes = 0; +void flexran_agent_slice_update(mid_t mod_id) { + struct lfds700_misc_prng_state ls; + LFDS700_MISC_MAKE_VALID_ON_CURRENT_LOGICAL_CORE_INITS_COMPLETED_BEFORE_NOW_ON_ANY_OTHER_LOGICAL_CORE; + lfds700_misc_prng_init(&ls); - if (perform_slice_config_update_count <= 0) return; - perform_slice_config_update_count--; - - pthread_mutex_lock(&sc_update_mtx); - - if (!slice_config[mod_id]) { - /* if the configuration does not exist for agent, create from eNB structure - * and exit */ - flexran_create_config_structures(mod_id); - pthread_mutex_unlock(&sc_update_mtx); - return; + Protocol__FlexSliceConfig *sc = NULL; + struct lfds700_ringbuffer_state *state = &slice_config_ringbuffer_state[mod_id]; + if (lfds700_ringbuffer_read(state, NULL, (void **) &sc, &ls) != 0) { + apply_update_dl_slice_config(mod_id, sc->dl); + apply_update_ul_slice_config(mod_id, sc->ul); + helper_destroy_mac_slice_config(sc); } - /********* read existing config *********/ - /* simply update slice_config all the time and write new config - * (apply_new_slice_dl_config() only updates if changes are necessary) */ - slice_config[mod_id]->n_dl = flexran_get_num_dl_slices(mod_id); - slice_config[mod_id]->n_ul = flexran_get_num_ul_slices(mod_id); - for (i = 0; i < slice_config[mod_id]->n_dl; i++) { - flexran_agent_read_slice_dl_config(mod_id, i, slice_config[mod_id]->dl[i]); + Protocol__FlexUeConfig *ue_config = NULL; + state = &ue_assoc_ringbuffer_state[mod_id]; + if (lfds700_ringbuffer_read(state, NULL, (void **) &ue_config, &ls) != 0) { + apply_ue_slice_assoc_update(mod_id, ue_config); + free(ue_config); } - for (i = 0; i < slice_config[mod_id]->n_ul; i++) { - flexran_agent_read_slice_ul_config(mod_id, i, slice_config[mod_id]->ul[i]); - } - - /********* write new config *********/ - /* check for removal (sc_update[X]->dl[Y].percentage == 0) - * and update sc_update & slice_config accordingly */ - flexran_check_and_remove_slices(mod_id); - - /* create new DL and UL slices if necessary */ - for (i = slice_config[mod_id]->n_dl; i < sc_update[mod_id]->n_dl; i++) { - flexran_create_dl_slice(mod_id, sc_update[mod_id]->dl[i]->id); - } - for (i = slice_config[mod_id]->n_ul; i < sc_update[mod_id]->n_ul; i++) { - flexran_create_ul_slice(mod_id, sc_update[mod_id]->ul[i]->id); - } - slice_config[mod_id]->n_dl = flexran_get_num_dl_slices(mod_id); - slice_config[mod_id]->n_ul = flexran_get_num_ul_slices(mod_id); - changes += apply_new_slice_config(mod_id, slice_config[mod_id], sc_update[mod_id]); - for (i = 0; i < slice_config[mod_id]->n_dl; i++) { - changes += apply_new_slice_dl_config(mod_id, - slice_config[mod_id]->dl[i], - sc_update[mod_id]->dl[i]); - flexran_agent_read_slice_dl_config(mod_id, i, slice_config[mod_id]->dl[i]); - } - for (i = 0; i < slice_config[mod_id]->n_ul; i++) { - changes += apply_new_slice_ul_config(mod_id, - slice_config[mod_id]->ul[i], - sc_update[mod_id]->ul[i]); - flexran_agent_read_slice_ul_config(mod_id, i, slice_config[mod_id]->ul[i]); - } - flexran_agent_read_slice_config(mod_id, slice_config[mod_id]); - if (n_ue_slice_assoc_updates > 0) { - changes += apply_ue_slice_assoc_update(mod_id); - } - if (changes > 0) - LOG_I(FLEXRAN_AGENT, "[%d] slice configuration: applied %d changes\n", mod_id, changes); - - pthread_mutex_unlock(&sc_update_mtx); -} - -Protocol__FlexSliceConfig *flexran_agent_get_slice_config(mid_t mod_id) -{ - if (!slice_config[mod_id]) return NULL; - Protocol__FlexSliceConfig *config = NULL; - - pthread_mutex_lock(&sc_update_mtx); - config = flexran_agent_create_slice_config(slice_config[mod_id]->n_dl, - slice_config[mod_id]->n_ul); - if (!config) { - pthread_mutex_unlock(&sc_update_mtx); - return NULL; - } - config->has_intraslice_share_active = 1; - config->intraslice_share_active = slice_config[mod_id]->intraslice_share_active; - config->has_interslice_share_active = 1; - config->interslice_share_active = slice_config[mod_id]->interslice_share_active; - for (int i = 0; i < slice_config[mod_id]->n_dl; ++i) { - if (!config->dl[i]) continue; - config->dl[i]->has_id = 1; - config->dl[i]->id = slice_config[mod_id]->dl[i]->id; - config->dl[i]->has_label = 1; - config->dl[i]->label = slice_config[mod_id]->dl[i]->label; - config->dl[i]->has_percentage = 1; - config->dl[i]->percentage = slice_config[mod_id]->dl[i]->percentage; - config->dl[i]->has_isolation = 1; - config->dl[i]->isolation = slice_config[mod_id]->dl[i]->isolation; - config->dl[i]->has_priority = 1; - config->dl[i]->priority = slice_config[mod_id]->dl[i]->priority; - config->dl[i]->has_position_low = 1; - config->dl[i]->position_low = slice_config[mod_id]->dl[i]->position_low; - config->dl[i]->has_position_high = 1; - config->dl[i]->position_high = slice_config[mod_id]->dl[i]->position_high; - config->dl[i]->has_maxmcs = 1; - config->dl[i]->maxmcs = slice_config[mod_id]->dl[i]->maxmcs; - config->dl[i]->n_sorting = slice_config[mod_id]->dl[i]->n_sorting; - config->dl[i]->sorting = calloc(config->dl[i]->n_sorting, sizeof(Protocol__FlexDlSorting)); - if (!config->dl[i]->sorting) config->dl[i]->n_sorting = 0; - for (int j = 0; j < config->dl[i]->n_sorting; ++j) - config->dl[i]->sorting[j] = slice_config[mod_id]->dl[i]->sorting[j]; - config->dl[i]->has_accounting = 1; - config->dl[i]->accounting = slice_config[mod_id]->dl[i]->accounting; - config->dl[i]->scheduler_name = strdup(slice_config[mod_id]->dl[i]->scheduler_name); - } - for (int i = 0; i < slice_config[mod_id]->n_ul; ++i) { - if (!config->ul[i]) continue; - config->ul[i]->has_id = 1; - config->ul[i]->id = slice_config[mod_id]->ul[i]->id; - config->ul[i]->has_label = 1; - config->ul[i]->label = slice_config[mod_id]->ul[i]->label; - config->ul[i]->has_percentage = 1; - config->ul[i]->percentage = slice_config[mod_id]->ul[i]->percentage; - config->ul[i]->has_isolation = 1; - config->ul[i]->isolation = slice_config[mod_id]->ul[i]->isolation; - config->ul[i]->has_priority = 1; - config->ul[i]->priority = slice_config[mod_id]->ul[i]->priority; - config->ul[i]->has_first_rb = 1; - config->ul[i]->first_rb = slice_config[mod_id]->ul[i]->first_rb; - config->ul[i]->has_maxmcs = 1; - config->ul[i]->maxmcs = slice_config[mod_id]->ul[i]->maxmcs; - config->ul[i]->n_sorting = slice_config[mod_id]->ul[i]->n_sorting; - config->ul[i]->sorting = calloc(config->ul[i]->n_sorting, sizeof(Protocol__FlexUlSorting)); - if (!config->ul[i]->sorting) config->ul[i]->n_sorting = 0; - for (int j = 0; j < config->ul[i]->n_sorting; ++j) - config->ul[i]->sorting[j] = slice_config[mod_id]->ul[i]->sorting[j]; - config->ul[i]->has_accounting = 1; - config->ul[i]->accounting = slice_config[mod_id]->ul[i]->accounting; - config->ul[i]->scheduler_name = strdup(slice_config[mod_id]->ul[i]->scheduler_name); - } - - pthread_mutex_unlock(&sc_update_mtx); - return config; } diff --git a/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac.h b/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac.h index 2f9f99c740..5a8d4f31aa 100644 --- a/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac.h +++ b/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac.h @@ -115,7 +115,16 @@ int flexran_agent_unregister_mac_xface(mid_t mod_id); /* Inform controller about possibility to update slice configuration */ void flexran_agent_slice_update(mid_t mod_id); -/* return a pointer to the current config */ -Protocol__FlexSliceConfig *flexran_agent_get_slice_config(mid_t mod_id); +/* marks slice_config so that it can be applied later. Takes ownership of the + * FlexSliceConfig message */ +void prepare_update_slice_config(mid_t mod_id, Protocol__FlexSliceConfig **slice); + +/* inserts a new ue_config into the structure keeping ue to slice association + * updates and marks so it can be applied. Takes ownership of the FlexUeConfig message */ +void prepare_ue_slice_assoc_update(mid_t mod_id, Protocol__FlexUeConfig **ue_config); + +/* free slice_config part of flexCellConfig, filled in + * flexran_agent_fill_mac_cell_config() */ +void flexran_agent_destroy_mac_slice_config(Protocol__FlexCellConfig *conf); #endif diff --git a/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac_internal.c b/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac_internal.c index a85cbac543..93de0b11ec 100644 --- a/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac_internal.c +++ b/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac_internal.c @@ -33,14 +33,6 @@ #include "flexran_agent_mac_internal.h" #include "flexran_agent_mac_slice_verification.h" -/* from flexran_agent_mac.c */ -extern Protocol__FlexSliceConfig *slice_config[MAX_NUM_SLICES]; -extern Protocol__FlexSliceConfig *sc_update[MAX_NUM_SLICES]; -extern int perform_slice_config_update_count; -extern Protocol__FlexUeConfig *ue_slice_assoc_update[MAX_NUM_SLICES]; -extern int n_ue_slice_assoc_updates; -extern pthread_mutex_t sc_update_mtx; - Protocol__FlexranMessage * flexran_agent_generate_diff_mac_stats_report(Protocol__FlexranMessage *new_message, Protocol__FlexranMessage *old_message) { @@ -1033,724 +1025,166 @@ int load_dl_scheduler_function(mid_t mod_id, const char *function_name) { } -Protocol__FlexSliceConfig *flexran_agent_create_slice_config(int n_dl, int m_ul) -{ - int i; - Protocol__FlexSliceConfig *fsc = malloc(sizeof(Protocol__FlexSliceConfig)); - if (!fsc) return NULL; - protocol__flex_slice_config__init(fsc); - - /* say there are n_dl slices but reserve memory for up to MAX_NUM_SLICES so - * we don't need to reserve again later */ - fsc->n_dl = n_dl; - fsc->dl = calloc(MAX_NUM_SLICES, sizeof(Protocol__FlexDlSlice *)); - if (!fsc->dl) fsc->n_dl = 0; - for (i = 0; i < MAX_NUM_SLICES; i++) { - fsc->dl[i] = malloc(sizeof(Protocol__FlexDlSlice)); - if (!fsc->dl[i]) continue; - protocol__flex_dl_slice__init(fsc->dl[i]); - } - - /* as above */ - fsc->n_ul = m_ul; - fsc->ul = calloc(MAX_NUM_SLICES, sizeof(Protocol__FlexUlSlice *)); - if (!fsc->ul) fsc->n_ul = 0; - for (i = 0; i < MAX_NUM_SLICES; i++) { - fsc->ul[i] = malloc(sizeof(Protocol__FlexUlSlice)); - if (!fsc->ul[i]) continue; - protocol__flex_ul_slice__init(fsc->ul[i]); - } - return fsc; -} - -void flexran_agent_read_slice_config(mid_t mod_id, Protocol__FlexSliceConfig *s) -{ - s->intraslice_share_active = flexran_get_intraslice_sharing_active(mod_id); - s->has_intraslice_share_active = 1; - s->interslice_share_active = flexran_get_interslice_sharing_active(mod_id); - s->has_interslice_share_active = 1; -} - -void flexran_agent_read_slice_dl_config(mid_t mod_id, int slice_idx, Protocol__FlexDlSlice *dl_slice) -{ - dl_slice->id = flexran_get_dl_slice_id(mod_id, slice_idx); - dl_slice->has_id = 1; - /* read label from corresponding sc_update entry or give default */ - dl_slice->label = PROTOCOL__FLEX_SLICE_LABEL__xMBB; - dl_slice->has_label = 1; - for (int i = 0; i < sc_update[mod_id]->n_dl; i++) { - if (sc_update[mod_id]->dl[i]->id == dl_slice->id - && sc_update[mod_id]->dl[i]->has_label) { - dl_slice->label = sc_update[mod_id]->dl[i]->label; - break; - } - } - dl_slice->percentage = flexran_get_dl_slice_percentage(mod_id, slice_idx); - dl_slice->has_percentage = 1; - dl_slice->isolation = flexran_get_dl_slice_isolation(mod_id, slice_idx); - dl_slice->has_isolation = 1; - dl_slice->priority = flexran_get_dl_slice_priority(mod_id, slice_idx); - dl_slice->has_priority = 1; - dl_slice->position_low = flexran_get_dl_slice_position_low(mod_id, slice_idx); - dl_slice->has_position_low = 1; - dl_slice->position_high = flexran_get_dl_slice_position_high(mod_id, slice_idx); - dl_slice->has_position_high = 1; - dl_slice->maxmcs = flexran_get_dl_slice_maxmcs(mod_id, slice_idx); - dl_slice->has_maxmcs = 1; - dl_slice->n_sorting = flexran_get_dl_slice_sorting(mod_id, slice_idx, &dl_slice->sorting); - if (dl_slice->n_sorting < 1) dl_slice->sorting = NULL; - dl_slice->accounting = flexran_get_dl_slice_accounting_policy(mod_id, slice_idx); - dl_slice->has_accounting = 1; - const char *s_name = flexran_get_dl_slice_scheduler(mod_id, slice_idx); - if (!dl_slice->scheduler_name - || strcmp(dl_slice->scheduler_name, s_name) != 0) { - dl_slice->scheduler_name = realloc(dl_slice->scheduler_name, strlen(s_name) + 1); - strcpy(dl_slice->scheduler_name, s_name); - } -} - -void flexran_agent_read_slice_ul_config(mid_t mod_id, int slice_idx, Protocol__FlexUlSlice *ul_slice) -{ - ul_slice->id = flexran_get_ul_slice_id(mod_id, slice_idx); - ul_slice->has_id = 1; - /* read label from corresponding sc_update entry or give default */ - ul_slice->label = PROTOCOL__FLEX_SLICE_LABEL__xMBB; - ul_slice->has_label = 1; - for (int i = 0; i < sc_update[mod_id]->n_ul; i++) { - if (sc_update[mod_id]->ul[i]->id == ul_slice->id - && sc_update[mod_id]->ul[i]->has_label) { - ul_slice->label = sc_update[mod_id]->ul[i]->label; - break; - } - } - ul_slice->percentage = flexran_get_ul_slice_percentage(mod_id, slice_idx); - ul_slice->has_percentage = 1; - /*ul_slice->isolation = flexran_get_ul_slice_isolation(mod_id, slice_idx);*/ - ul_slice->has_isolation = 0; - /*ul_slice->priority = flexran_get_ul_slice_priority(mod_id, slice_idx);*/ - ul_slice->has_priority = 0; - ul_slice->first_rb = flexran_get_ul_slice_first_rb(mod_id, slice_idx); - ul_slice->has_first_rb = 1; - /*ul_slice-> = flexran_get_ul_slice_length_rb(mod_id, slice_idx); - ul_slice->has_length_rb = 0;*/ - ul_slice->maxmcs = flexran_get_ul_slice_maxmcs(mod_id, slice_idx); - ul_slice->has_maxmcs = 1; - ul_slice->n_sorting = 0; - /*if (ul_slice->sorting) { - free(ul_slice->sorting); - ul_slice->sorting = NULL; - } - ul_slice->n_sorting = flexran_get_ul_slice_sorting(mod_id, slice_idx, &ul_slice->sorting); - if (ul_slice->n_sorting < 1) ul_slice->sorting = NULL;*/ - /*ul_slice->accounting = flexran_get_ul_slice_accounting_policy(mod_id, slice_idx);*/ - ul_slice->has_accounting = 0; - const char *s_name = flexran_get_ul_slice_scheduler(mod_id, slice_idx); - if (!ul_slice->scheduler_name - || strcmp(ul_slice->scheduler_name, s_name) != 0) { - ul_slice->scheduler_name = realloc(ul_slice->scheduler_name, strlen(s_name) + 1); - strcpy(ul_slice->scheduler_name, s_name); - } -} - -int check_dl_sorting_update(Protocol__FlexDlSlice *old, Protocol__FlexDlSlice *new) -{ - /* sorting_update => true when old->n_sorting == 0 or different numbers of - * elements; otherwise will check * element-wise */ - int sorting_update = old->n_sorting == 0 || (old->n_sorting != new->n_sorting); - for (int i = 0; i < old->n_sorting && !sorting_update; ++i) { - sorting_update = sorting_update || (new->sorting[i] != old->sorting[i]); - } - return sorting_update; -} - -int check_ul_sorting_update(Protocol__FlexUlSlice *old, Protocol__FlexUlSlice *new) -{ - /* sorting_update => true when old->n_sorting == 0 or different numbers of - * elements; otherwise will check * element-wise */ - int sorting_update = old->n_sorting == 0 || (old->n_sorting != new->n_sorting); - for (int i = 0; i < old->n_sorting && !sorting_update; ++i) { - sorting_update = sorting_update || (new->sorting[i] != old->sorting[i]); - } - return sorting_update; -} - -void overwrite_slice_config(mid_t mod_id, Protocol__FlexSliceConfig *exist, Protocol__FlexSliceConfig *update) -{ - if (update->has_intraslice_share_active - && exist->intraslice_share_active != update->intraslice_share_active) { - LOG_I(FLEXRAN_AGENT, "[%d] update intraslice_share_active: %d -> %d\n", - mod_id, exist->intraslice_share_active, update->intraslice_share_active); - exist->intraslice_share_active = update->intraslice_share_active; - exist->has_intraslice_share_active = 1; - } - if (update->has_interslice_share_active - && exist->interslice_share_active != update->interslice_share_active) { - LOG_I(FLEXRAN_AGENT, "[%d] update interslice_share_active: %d -> %d\n", - mod_id, exist->interslice_share_active, update->interslice_share_active); - exist->interslice_share_active = update->interslice_share_active; - exist->has_interslice_share_active = 1; - } -} - -void overwrite_slice_config_dl(mid_t mod_id, Protocol__FlexDlSlice *exist, Protocol__FlexDlSlice *update) -{ - if (update->label != exist->label) { - LOG_I(FLEXRAN_AGENT, "[%d][DL slice %d] update label: %d -> %d\n", - mod_id, update->id, exist->label, update->label); - exist->label = update->label; - exist->has_label = 1; - } - if (update->percentage != exist->percentage) { - LOG_I(FLEXRAN_AGENT, "[%d][DL slice %d] update percentage: %d -> %d\n", - mod_id, update->id, exist->percentage, update->percentage); - exist->percentage = update->percentage; - exist->has_percentage = 1; - } - if (update->isolation != exist->isolation) { - LOG_I(FLEXRAN_AGENT, "[%d][DL slice %d] update isolation: %d -> %d\n", - mod_id, update->id, exist->isolation, update->isolation); - exist->isolation = update->isolation; - exist->has_isolation = 1; - } - if (update->priority != exist->priority) { - LOG_I(FLEXRAN_AGENT, "[%d][DL slice %d] update priority: %d -> %d\n", - mod_id, update->id, exist->priority, update->priority); - exist->priority = update->priority; - exist->has_priority = 1; - } - if (update->position_low != exist->position_low) { - LOG_I(FLEXRAN_AGENT, "[%d][DL slice %d] update position_low: %d -> %d\n", - mod_id, update->id, exist->position_low, update->position_low); - exist->position_low = update->position_low; - exist->has_position_low = 1; - } - if (update->position_high != exist->position_high) { - LOG_I(FLEXRAN_AGENT, "[%d][DL slice %d] update position_high: %d -> %d\n", - mod_id, update->id, exist->position_high, update->position_high); - exist->position_high = update->position_high; - exist->has_position_high = 1; - } - if (update->maxmcs != exist->maxmcs) { - LOG_I(FLEXRAN_AGENT, "[%d][DL slice %d] update maxmcs: %d -> %d\n", - mod_id, update->id, exist->maxmcs, update->maxmcs); - exist->maxmcs = update->maxmcs; - exist->has_maxmcs = 1; - } - if (check_dl_sorting_update(exist, update)) { - LOG_I(FLEXRAN_AGENT, "[%d][DL slice %d] update sorting array\n", mod_id, update->id); - if (exist->n_sorting != update->n_sorting) { - exist->n_sorting = update->n_sorting; - exist->sorting = realloc(exist->sorting, exist->n_sorting * sizeof(Protocol__FlexDlSorting)); - if (!exist->sorting) exist->n_sorting = 0; - } - for (int i = 0; i < exist->n_sorting; i++) - exist->sorting[i] = update->sorting[i]; - } - if (update->accounting != exist->accounting) { - LOG_I(FLEXRAN_AGENT, "[%d][DL slice %d] update accounting: %d -> %d\n", - mod_id, update->id, exist->accounting, update->accounting); - exist->accounting = update->accounting; - exist->has_accounting = 1; - } - if (!exist->scheduler_name - || strcmp(update->scheduler_name, exist->scheduler_name) != 0) { - LOG_I(FLEXRAN_AGENT, "[%d][DL slice %d] update scheduler: %s -> %s\n", - mod_id, update->id, exist->scheduler_name, update->scheduler_name); - if (exist->scheduler_name) free(exist->scheduler_name); - exist->scheduler_name = strdup(update->scheduler_name); - } -} - -void overwrite_slice_config_ul(mid_t mod_id, Protocol__FlexUlSlice *exist, Protocol__FlexUlSlice *update) -{ - if (update->label != exist->label) { - LOG_I(FLEXRAN_AGENT, "[%d][UL slice %d] update label: %d -> %d\n", - mod_id, update->id, exist->label, update->label); - exist->label = update->label; - exist->has_label = 1; - } - if (update->percentage != exist->percentage) { - LOG_I(FLEXRAN_AGENT, "[%d][UL slice %d] update percentage: %d -> %d\n", - mod_id, update->id, exist->percentage, update->percentage); - exist->percentage = update->percentage; - exist->has_percentage = 1; - } - if (update->isolation != exist->isolation) { - LOG_I(FLEXRAN_AGENT, "[%d][UL slice %d] update isolation: %d -> %d\n", - mod_id, update->id, exist->isolation, update->isolation); - exist->isolation = update->isolation; - exist->has_isolation = 1; - } - if (update->priority != exist->priority) { - LOG_I(FLEXRAN_AGENT, "[%d][UL slice %d] update priority: %d -> %d\n", - mod_id, update->id, exist->priority, update->priority); - exist->priority = update->priority; - exist->has_priority = 1; - } - if (update->first_rb != exist->first_rb) { - LOG_I(FLEXRAN_AGENT, "[%d][UL slice %d] update first_rb: %d -> %d\n", - mod_id, update->id, exist->first_rb, update->first_rb); - exist->first_rb = update ->first_rb; - exist->has_first_rb = 1; - } - /*if (update->lenght_rb != exist->lenght_rb) { - LOG_I(FLEXRAN_AGENT, "[%d][UL slice %d] update lenght_rb: %d -> %d\n", - mod_id, update->id, exist->lenght_rb, update->lenght_rb); - exist->lenght_rb = update->lenght_rb; - }*/ - if (update->maxmcs != exist->maxmcs) { - LOG_I(FLEXRAN_AGENT, "[%d][UL slice %d] update maxmcs: %d -> %d\n", - mod_id, update->id, exist->maxmcs, update->maxmcs); - exist->maxmcs = update->maxmcs; - exist->has_maxmcs = 1; - } - /* TODO - int sorting_update = 0; - int n = min(exist->n_sorting, update->n_sorting); - int i = 0; - while (i < n && !sorting_update) { - sorting_update = sorting_update || (update->sorting[i] != exist->sorting[i]); - i++; - } - if (sorting_update) { - LOG_I(FLEXRAN_AGENT, "[%d][UL slice %d] update sorting array\n", update->id, mod_id); - if (exist->n_sorting != update->n_sorting) - LOG_W(FLEXRAN_AGENT, "[%d][UL slice %d] only writing %d elements\n", - mod_id, update->id, n); - for (i = 0; i < n; i++) - exist->sorting[i] = update->sorting[i]; - } - */ - if (update->accounting != exist->accounting) { - LOG_I(FLEXRAN_AGENT, "[%d][UL slice %d] update accounting: %d -> %d\n", - mod_id, update->id, exist->accounting, update->accounting); - exist->accounting = update->accounting; - exist->has_accounting = 1; - } - if (!exist->scheduler_name - || strcmp(update->scheduler_name, exist->scheduler_name) != 0) { - LOG_I(FLEXRAN_AGENT, "[%d][UL slice %d] update scheduler: %s -> %s\n", - mod_id, update->id, exist->scheduler_name, update->scheduler_name); - if (exist->scheduler_name) free(exist->scheduler_name); - exist->scheduler_name = strdup(update->scheduler_name); - } -} - -void fill_dl_slice(mid_t mod_id, Protocol__FlexDlSlice *s, Protocol__FlexDlSlice *from) -{ - /* function fills slice with information from another slice or with default - * values (currently slice 0) if from is NULL */ - /* TODO fill the slice depending on the chosen label */ - if (!s->has_label) { - s->has_label = 1; - s->label = from ? from->label : sc_update[mod_id]->dl[0]->label; - } - if (!s->has_percentage) { - s->has_percentage = 1; - s->percentage = from ? from->percentage : sc_update[mod_id]->dl[0]->percentage; - } - if (!s->has_isolation) { - s->has_isolation = 1; - s->isolation = from ? from->isolation : sc_update[mod_id]->dl[0]->isolation; - } - if (!s->has_priority) { - s->has_priority = 1; - s->priority = from ? from->priority : sc_update[mod_id]->dl[0]->priority; - } - if (!s->has_position_low) { - s->has_position_low = 1; - s->position_low = from ? from->position_low : sc_update[mod_id]->dl[0]->position_low; - } - if (!s->has_position_high) { - s->has_position_high = 1; - s->position_high = from ? from->position_high : sc_update[mod_id]->dl[0]->position_high; - } - if (!s->has_maxmcs) { - s->has_maxmcs = 1; - s->maxmcs = from ? from->maxmcs : sc_update[mod_id]->dl[0]->maxmcs; - } - if (s->n_sorting == 0) { - s->n_sorting = from ? from->n_sorting : sc_update[mod_id]->dl[0]->n_sorting; - s->sorting = calloc(s->n_sorting, sizeof(Protocol__FlexDlSorting)); - if (!s->sorting) s->n_sorting = 0; - for (int i = 0; i < s->n_sorting; ++i) - s->sorting[i] = from ? from->sorting[i] : sc_update[0]->dl[0]->sorting[i]; - } - if (!s->has_accounting) { - s->accounting = from ? from->accounting : sc_update[mod_id]->dl[0]->accounting; - } - if (!s->scheduler_name) { - s->scheduler_name = strdup(from ? from->scheduler_name : sc_update[mod_id]->dl[0]->scheduler_name); - } -} - -Protocol__FlexDlSlice *get_existing_dl_slice(mid_t mod_id, int id) -{ - for (int i = 0; i < sc_update[mod_id]->n_dl; ++i) { - if (id == sc_update[mod_id]->dl[i]->id) { - return sc_update[mod_id]->dl[i]; - } - } - return NULL; -} - -Protocol__FlexDlSlice *create_new_dl_slice(mid_t mod_id, int id) -{ - LOG_I(FLEXRAN_AGENT, - "[%d] Creating DL slice with ID %d, taking default values from DL slice 0\n", - mod_id, id); - Protocol__FlexDlSlice *to = sc_update[mod_id]->dl[sc_update[mod_id]->n_dl]; - sc_update[mod_id]->n_dl++; - AssertFatal(sc_update[mod_id]->n_dl <= MAX_NUM_SLICES, - "cannot create more than MAX_NUM_SLICES\n"); - to->id = id; - return to; -} - -void fill_ul_slice(mid_t mod_id, Protocol__FlexUlSlice *s, Protocol__FlexUlSlice *from) -{ - /* function fills slice with information from another slice or with default - * values (currently slice 0) if from is NULL */ - /* TODO fill the slice depending on the chosen label */ - if (!s->has_label) { - s->has_label = 1; - s->label = from ? from->label : sc_update[mod_id]->ul[0]->label; - } - if (!s->has_percentage) { - s->has_percentage = 1; - s->percentage = from ? from->percentage : sc_update[mod_id]->ul[0]->percentage; - } - if (!s->has_isolation) { - s->has_isolation = 1; - s->isolation = from ? from->isolation : sc_update[mod_id]->ul[0]->isolation; - } - if (!s->has_priority) { - s->has_priority = 1; - s->priority = from ? from->priority : sc_update[mod_id]->ul[0]->priority; - } - if (!s->has_first_rb) { - s->has_first_rb = 1; - s->first_rb = from ? from->first_rb : sc_update[mod_id]->ul[0]->first_rb; - } - if (!s->has_maxmcs) { - s->has_maxmcs = 1; - s->maxmcs = from ? from->maxmcs : sc_update[mod_id]->ul[0]->maxmcs; - } - if (s->n_sorting == 0) { - s->n_sorting = from ? from->n_sorting : sc_update[0]->ul[0]->n_sorting; - s->sorting = calloc(s->n_sorting, sizeof(Protocol__FlexUlSorting)); - if (!s->sorting) s->n_sorting = 0; - for (int i = 0; i < s->n_sorting; ++i) - s->sorting[i] = from ? from->sorting[i] : sc_update[0]->ul[0]->sorting[i]; - } - if (!s->has_accounting) { - s->accounting = from ? from->accounting : sc_update[0]->ul[0]->accounting; - } - if (!s->scheduler_name) { - s->scheduler_name = strdup(from ? from->scheduler_name : sc_update[mod_id]->ul[0]->scheduler_name); - } -} - -Protocol__FlexUlSlice *get_existing_ul_slice(mid_t mod_id, int id) -{ - for (int i = 0; i < sc_update[mod_id]->n_ul; ++i) { - if (id == sc_update[mod_id]->ul[i]->id) { - return sc_update[mod_id]->ul[i]; - } - } - return NULL; -} - -Protocol__FlexUlSlice *create_new_ul_slice(mid_t mod_id, int id) -{ - LOG_I(FLEXRAN_AGENT, - "[%d] Creating UL slice with ID %d, taking default values from UL slice 0\n", - mod_id, id); - Protocol__FlexUlSlice *to = sc_update[mod_id]->ul[sc_update[mod_id]->n_ul]; - sc_update[mod_id]->n_ul++; - AssertFatal(sc_update[mod_id]->n_ul <= MAX_NUM_SLICES, - "cannot create more than MAX_NUM_SLICES\n"); - to->id = id; - return to; -} - -void prepare_update_slice_config(mid_t mod_id, Protocol__FlexSliceConfig *sup) -{ - int verified = 1; - if (!sc_update[mod_id]) { - LOG_E(FLEXRAN_AGENT, "Can not update slice policy (no existing slice profile)\n"); - return; - } - - pthread_mutex_lock(&sc_update_mtx); - /* no need for tests in the current state as there are only two protobuf - * bools for intra-/interslice sharing. The function applies new values if - * applicable */ - overwrite_slice_config(mod_id, sc_update[mod_id], sup); - - if (sup->n_dl == 0) { - LOG_I(FLEXRAN_AGENT, "[%d] no DL slice configuration in flex_slice_config message\n", mod_id); +void update_or_remove_dl(mid_t mod_id, Protocol__FlexSlice *s) { + if (s->params_case == PROTOCOL__FLEX_SLICE__PARAMS__NOT_SET + && !s->label && !s->scheduler) { + LOG_I(FLEXRAN_AGENT, "remove DL slice ID %d\n", s->id); + const int rc = flexran_remove_dl_slice(mod_id, s); + if (!rc) + LOG_W(FLEXRAN_AGENT, "error while removing slice ID %d\n", s->id); } else { - /* verify slice parameters */ - for (int i = 0; i < sup->n_dl; i++) { - if (!sup->dl[i]->has_id) { - verified = 0; - break; - } - Protocol__FlexDlSlice *dls = get_existing_dl_slice(mod_id, sup->dl[i]->id); - /* fill up so that the slice is complete. This way, we don't need to - * worry about it later */ - fill_dl_slice(mod_id, sup->dl[i], dls); - verified = verified && flexran_verify_dl_slice(mod_id, sup->dl[i]); - if (!verified) break; - } - - /* verify group-based parameters (e.g. sum percentage should not exceed - * 100%). Can be used to perform admission control */ - verified = verified && flexran_verify_group_dl_slices(mod_id, - sc_update[mod_id]->dl, sc_update[mod_id]->n_dl, sup->dl, sup->n_dl); - - if (verified) { - for (int i = 0; i < sup->n_dl; i++) { - /* if all verifications were successful, get existing slice for ID or - * create new one and overwrite with the update */ - Protocol__FlexDlSlice *dls = get_existing_dl_slice(mod_id, sup->dl[i]->id); - if (!dls) dls = create_new_dl_slice(mod_id, sup->dl[i]->id); - overwrite_slice_config_dl(mod_id, dls, sup->dl[i]); - } - } else { - LOG_E(FLEXRAN_AGENT, "[%d] DL slice verification failed, refusing application\n", mod_id); - } + LOG_I(FLEXRAN_AGENT, "updating DL slice ID %d\n", s->id); + const int rc = flexran_create_dl_slice(mod_id, s); + if (rc < 0) + LOG_W(FLEXRAN_AGENT, + "error while update slice ID %d: flexran_create_dl_slice() -> %d\n", + s->id, rc); } +} - verified = 1; - if (sup->n_ul == 0) { - LOG_I(FLEXRAN_AGENT, "[%d] no UL slice configuration in flex_slice_config message\n", mod_id); +void update_or_remove_ul(mid_t mod_id, Protocol__FlexSlice *s) { + if (s->params_case == PROTOCOL__FLEX_SLICE__PARAMS__NOT_SET + && !s->label && !s->scheduler) { + LOG_I(FLEXRAN_AGENT, "remove UL slice ID %d\n", s->id); + const int rc = flexran_remove_ul_slice(mod_id, s); + if (!rc) + LOG_W(FLEXRAN_AGENT, "error while removing slice ID %d\n", s->id); } else { - /* verify slice parameters */ - for (int i = 0; i < sup->n_ul; i++) { - if (!sup->ul[i]->has_id) { - verified = 0; - break; - } - Protocol__FlexUlSlice *uls = get_existing_ul_slice(mod_id, sup->ul[i]->id); - /* fill up so that the slice is complete. This way, we don't need to - * worry about it later */ - fill_ul_slice(mod_id, sup->ul[i], uls); - verified = verified && flexran_verify_ul_slice(mod_id, sup->ul[i]); - if (!verified) break; - } - - /* verify group-based parameters (e.g. sum percentage should not exceed - * 100%). Can be used to perform admission control */ - verified = verified && flexran_verify_group_ul_slices(mod_id, - sc_update[mod_id]->ul, sc_update[mod_id]->n_ul, sup->ul, sup->n_ul); - - if (verified) { - for (int i = 0; i < sup->n_ul; i++) { - /* if all verifications were successful, get existing slice for ID or - * create new one and overwrite with the update */ - Protocol__FlexUlSlice *uls = get_existing_ul_slice(mod_id, sup->ul[i]->id); - if (!uls) uls = create_new_ul_slice(mod_id, sup->ul[i]->id); - overwrite_slice_config_ul(mod_id, uls, sup->ul[i]); - } - } else { - LOG_E(FLEXRAN_AGENT, "[%d] UL slice verification failed, refusing application\n", mod_id); - } + LOG_I(FLEXRAN_AGENT, "updating UL slice ID %d\n", s->id); + const int rc = flexran_create_ul_slice(mod_id, s); + if (rc < 0) + LOG_W(FLEXRAN_AGENT, + "error while updating slice ID %d: flexran_create_ul_slice() -> %d)\n", + s->id, rc); } - pthread_mutex_unlock(&sc_update_mtx); - - perform_slice_config_update_count = 1; } -int apply_new_slice_config(mid_t mod_id, Protocol__FlexSliceConfig *olds, Protocol__FlexSliceConfig *news) -{ - /* not setting the old configuration is intentional, as it will be picked up - * later when reading the configuration. There is thus a direct feedback - * whether it has been set. */ - int changes = 0; - if (olds->intraslice_share_active != news->intraslice_share_active) { - flexran_set_intraslice_sharing_active(mod_id, news->intraslice_share_active); - changes++; - } - if (olds->interslice_share_active != news->interslice_share_active) { - flexran_set_interslice_sharing_active(mod_id, news->interslice_share_active); - changes++; - } - return changes; -} - -int apply_new_slice_dl_config(mid_t mod_id, Protocol__FlexDlSlice *oldc, Protocol__FlexDlSlice *newc) -{ - /* not setting the old configuration is intentional, as it will be picked up - * later when reading the configuration. There is thus a direct feedback - * whether it has been set. */ - int changes = 0; - int slice_idx = flexran_find_dl_slice(mod_id, newc->id); - if (slice_idx < 0) { - LOG_W(FLEXRAN_AGENT, "[%d] cannot find index for slice ID %d\n", mod_id, newc->id); - return 0; - } - if (oldc->percentage != newc->percentage) { - flexran_set_dl_slice_percentage(mod_id, slice_idx, newc->percentage); - changes++; - } - if (oldc->isolation != newc->isolation) { - flexran_set_dl_slice_isolation(mod_id, slice_idx, newc->isolation); - changes++; - } - if (oldc->priority != newc->priority) { - flexran_set_dl_slice_priority(mod_id, slice_idx, newc->priority); - changes++; - } - if (oldc->position_low != newc->position_low) { - flexran_set_dl_slice_position_low(mod_id, slice_idx, newc->position_low); - changes++; - } - if (oldc->position_high != newc->position_high) { - flexran_set_dl_slice_position_high(mod_id, slice_idx, newc->position_high); - changes++; - } - if (oldc->maxmcs != newc->maxmcs) { - flexran_set_dl_slice_maxmcs(mod_id, slice_idx, newc->maxmcs); - changes++; - } - if (check_dl_sorting_update(oldc, newc)) { - flexran_set_dl_slice_sorting(mod_id, slice_idx, newc->sorting, newc->n_sorting); - changes++; - } - if (oldc->accounting != newc->accounting) { - flexran_set_dl_slice_accounting_policy(mod_id, slice_idx, newc->accounting); - changes++; - } - if (!oldc->scheduler_name - || strcmp(oldc->scheduler_name, newc->scheduler_name) != 0) { - int ret = flexran_set_dl_slice_scheduler(mod_id, slice_idx, newc->scheduler_name); - AssertFatal(ret, "could not set DL slice scheduler for slice %d idx %d\n", - newc->id, slice_idx); - changes++; - } - return changes; -} - -int apply_new_slice_ul_config(mid_t mod_id, Protocol__FlexUlSlice *oldc, Protocol__FlexUlSlice *newc) -{ - /* not setting the old configuration is intentional, as it will be picked up - * later when reading the configuration. There is thus a direct feedback - * whether it has been set. */ - int changes = 0; - int slice_idx = flexran_find_ul_slice(mod_id, newc->id); - if (slice_idx < 0) { - LOG_W(FLEXRAN_AGENT, "[%d] cannot find index for slice ID %d\n", mod_id, newc->id); - return 0; - } - if (oldc->percentage != newc->percentage) { - flexran_set_ul_slice_percentage(mod_id, slice_idx, newc->percentage); - changes++; - } - if (oldc->isolation != newc->isolation) { - /*flexran_set_ul_slice_isolation(mod_id, slice_idx, newc->isolation); - *changes++;*/ - LOG_W(FLEXRAN_AGENT, "[%d][UL slice %d] setting isolation is not supported\n", - mod_id, newc->id); - } - if (oldc->priority != newc->priority) { - /*flexran_set_ul_slice_priority(mod_id, slice_idx, newc->priority); - *changes++;*/ - LOG_W(FLEXRAN_AGENT, "[%d][UL slice %d] setting the priority is not supported\n", - mod_id, newc->id); - } - if (oldc->first_rb != newc->first_rb) { - flexran_set_ul_slice_first_rb(mod_id, slice_idx, newc->first_rb); - changes++; - } - /*if (oldc->length_rb != newc->length_rb) { - flexran_set_ul_slice_length_rb(mod_id, slice_idx, newc->length_rb); - changes++; - LOG_W(FLEXRAN_AGENT, "[%d][UL slice %d] setting length_rb is not supported\n", - mod_id, newc->id); - }*/ - if (oldc->maxmcs != newc->maxmcs) { - flexran_set_ul_slice_maxmcs(mod_id, slice_idx, newc->maxmcs); - changes++; - } - /*if (check_ul_sorting_update(oldc, newc)) { - flexran_set_ul_slice_sorting(mod_id, slice_idx, newc->sorting, n); - changes++; - LOG_W(FLEXRAN_AGENT, "[%d][UL slice %d] setting the sorting is not supported\n", - mod_id, newc->id); - }*/ - if (oldc->accounting != newc->accounting) { - /*flexran_set_ul_slice_accounting_policy(mod_id, slice_idx, newc->accounting); - *changes++;*/ - LOG_W(FLEXRAN_AGENT, "[%d][UL slice %d] setting the accounting is not supported\n", - mod_id, newc->id); - } - if (!oldc->scheduler_name - || strcmp(oldc->scheduler_name, newc->scheduler_name) != 0) { - int ret = flexran_set_ul_slice_scheduler(mod_id, slice_idx, newc->scheduler_name); - AssertFatal(ret, "could not set DL slice scheduler for slice %d idx %d\n", - newc->id, slice_idx); - changes++; - } - return changes; -} - -void prepare_ue_slice_assoc_update(mid_t mod_id, Protocol__FlexUeConfig *ue_config) -{ - if (n_ue_slice_assoc_updates == MAX_NUM_SLICES) { - LOG_E(FLEXRAN_AGENT, - "[%d] can not handle flex_ue_config message, buffer is full; try again later\n", - mod_id); +void apply_update_dl_slice_config(mid_t mod_id, Protocol__FlexSliceDlUlConfig *dl) { + if (!dl) return; + + Protocol__FlexSliceAlgorithm dl_algo = flexran_get_dl_slice_algo(mod_id); + if (dl->has_algorithm && dl_algo != dl->algorithm) { + LOG_I(FLEXRAN_AGENT, "loading new DL slice algorithm %d\n", dl->algorithm); + dl_algo = dl->algorithm; + flexran_set_dl_slice_algo(mod_id, dl_algo); } + + /* first update existing slices, then create new. Thus, we go through the + * list twice. First round, if a slice exists, handle and mark as such. Then, + * apply all others in the second round */ + if (dl->n_slices > 0) { + if (dl_algo == PROTOCOL__FLEX_SLICE_ALGORITHM__None) { + LOG_E(FLEXRAN_AGENT, "cannot update slices: no algorithm loaded\n"); + return; + } + int handled_dl[dl->n_slices]; + for (int i = 0; i < dl->n_slices; ++i) { + if (flexran_find_dl_slice(mod_id, dl->slices[i]->id) < 0) { + handled_dl[i] = 0; + continue; + } + update_or_remove_dl(mod_id, dl->slices[i]); + handled_dl[i] = 1; + } + for (int i = 0; i < dl->n_slices; ++i) { + if (handled_dl[i]) + continue; + update_or_remove_dl(mod_id, dl->slices[i]); + } + } + + if (dl->scheduler) { + if (dl_algo != PROTOCOL__FLEX_SLICE_ALGORITHM__None) { + LOG_E(FLEXRAN_AGENT, "cannot update scheduling algorithm: slice algorithm loaded\n"); + return; + } + LOG_I(FLEXRAN_AGENT, "loading DL new scheduling algorithm '%s'\n", dl->scheduler); + const int rc = flexran_set_dl_scheduler(mod_id, dl->scheduler); + if (rc < 0) { + LOG_E(FLEXRAN_AGENT, + "error while updating scheduling algorithm: " + "flexran_update_dl_sched_algo() -> %d)\n", + rc); + return; + } + } +} + +void apply_update_ul_slice_config(mid_t mod_id, Protocol__FlexSliceDlUlConfig *ul) { + if (!ul) + return; + + Protocol__FlexSliceAlgorithm ul_algo = flexran_get_ul_slice_algo(mod_id); + if (ul->has_algorithm && ul_algo != ul->algorithm) { + LOG_I(FLEXRAN_AGENT, "loading new UL slice algorithm %d\n", ul->algorithm); + ul_algo = ul->algorithm; + flexran_set_ul_slice_algo(mod_id, ul_algo); + } + if (ul->n_slices > 0) { + if (ul_algo == PROTOCOL__FLEX_SLICE_ALGORITHM__None) { + LOG_E(FLEXRAN_AGENT, "cannot update slices: no algorithm loaded\n"); + return; + } + int handled_ul[ul->n_slices]; + for (int i = 0; i < ul->n_slices; ++i) { + if (flexran_find_ul_slice(mod_id, ul->slices[i]->id) < 0) { + handled_ul[i] = 0; + continue; + } + update_or_remove_ul(mod_id, ul->slices[i]); + handled_ul[i] = 1; + } + for (int i = 0; i < ul->n_slices; ++i) { + if (handled_ul[i]) + continue; + update_or_remove_ul(mod_id, ul->slices[i]); + } + } + + if (ul->scheduler) { + if (ul_algo != PROTOCOL__FLEX_SLICE_ALGORITHM__None) { + LOG_E(FLEXRAN_AGENT, "cannot update scheduling algorithm: slice algorithm loaded\n"); + return; + } + LOG_I(FLEXRAN_AGENT, "loading new UL scheduling algorithm '%s'\n", ul->scheduler); + const int rc = flexran_set_ul_scheduler(mod_id, ul->scheduler); + if (rc < 0) { + LOG_E(FLEXRAN_AGENT, + "error while updating scheduling algorithm: " + "flexran_update_dl_sched_algo() -> %d)\n", + rc); + return; + } + } +} + +int apply_ue_slice_assoc_update(mid_t mod_id, Protocol__FlexUeConfig *ue_config) +{ if (!ue_config->has_rnti) { LOG_E(FLEXRAN_AGENT, "[%d] cannot update UE to slice association, no RNTI in flex_ue_config message\n", mod_id); - return; + return 0; } - if (ue_config->has_dl_slice_id) - LOG_I(FLEXRAN_AGENT, "[%d] associating UE RNTI %#x to DL slice ID %d\n", - mod_id, ue_config->rnti, ue_config->dl_slice_id); - if (ue_config->has_ul_slice_id) - LOG_I(FLEXRAN_AGENT, "[%d] associating UE RNTI %#x to UL slice ID %d\n", - mod_id, ue_config->rnti, ue_config->ul_slice_id); - ue_slice_assoc_update[n_ue_slice_assoc_updates++] = ue_config; - perform_slice_config_update_count = 2; -} - -int apply_ue_slice_assoc_update(mid_t mod_id) -{ - int i; - int changes = 0; - for (i = 0; i < n_ue_slice_assoc_updates; i++) { - int ue_id = find_UE_id(mod_id, ue_slice_assoc_update[i]->rnti); - if (ue_id < 0 || ue_id > MAX_MOBILES_PER_ENB){ - LOG_E(FLEXRAN_AGENT,"UE_id %d is wrong!!\n",ue_id); - continue; - } - if (ue_slice_assoc_update[i]->has_dl_slice_id) { - int slice_idx = flexran_find_dl_slice(mod_id, ue_slice_assoc_update[i]->dl_slice_id); - if (flexran_dl_slice_exists(mod_id, slice_idx)) { - flexran_set_ue_dl_slice_idx(mod_id, ue_id, slice_idx); - changes++; - } else { - LOG_W(FLEXRAN_AGENT, "[%d] DL slice %d does not exist, refusing change\n", - mod_id, ue_slice_assoc_update[i]->dl_slice_id); - } - } - if (ue_slice_assoc_update[i]->has_ul_slice_id) { - int slice_idx = flexran_find_ul_slice(mod_id, ue_slice_assoc_update[i]->ul_slice_id); - if (flexran_ul_slice_exists(mod_id, slice_idx)) { - flexran_set_ue_ul_slice_idx(mod_id, ue_id, slice_idx); - changes++; - } else { - LOG_W(FLEXRAN_AGENT, "[%d] UL slice %d does not exist, refusing change\n", - mod_id, ue_slice_assoc_update[i]->ul_slice_id); - } + int UE_id = flexran_get_mac_ue_id_rnti(mod_id, ue_config->rnti); + if (ue_config->has_dl_slice_id) { + if (flexran_get_dl_slice_algo(mod_id) == PROTOCOL__FLEX_SLICE_ALGORITHM__None) { + LOG_E(FLEXRAN_AGENT, "no DL slice algorithm loaded\n"); + } else { + LOG_I(FLEXRAN_AGENT, "[%d] associating UE RNTI %04x - %d/UE %d to DL slice ID %d\n", + mod_id, ue_config->rnti, ue_config->rnti, UE_id, ue_config->dl_slice_id); + flexran_set_ue_dl_slice_id(mod_id, UE_id, ue_config->dl_slice_id); } } - n_ue_slice_assoc_updates = 0; - return changes; + if (ue_config->has_ul_slice_id) { + if (flexran_get_ul_slice_algo(mod_id) == PROTOCOL__FLEX_SLICE_ALGORITHM__None) { + LOG_E(FLEXRAN_AGENT, "no UL slice algorithm loaded\n"); + } else { + LOG_I(FLEXRAN_AGENT, "[%d] associating UE RNTI %04x - %d/UE %d to UL slice ID %d\n", + mod_id, ue_config->rnti, ue_config->rnti, UE_id, ue_config->ul_slice_id); + flexran_set_ue_ul_slice_id(mod_id, UE_id, ue_config->ul_slice_id); + } + } + return 0; } diff --git a/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac_internal.h b/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac_internal.h index 957fe6065e..9db5d61a11 100644 --- a/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac_internal.h +++ b/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac_internal.h @@ -103,43 +103,11 @@ int load_dl_scheduler_function(mid_t mod_id, const char *function_name); /*** Functions for handling a slice config ***/ -/* allocate memory for a Protocol__FlexSliceConfig structure with n_dl DL slice - * configs and m_ul UL slice configs */ -Protocol__FlexSliceConfig *flexran_agent_create_slice_config(int n_dl, int m_ul); - -/* read the general slice parameters via RAN into the given - * Protocol__FlexSliceConfig struct */ -void flexran_agent_read_slice_config(mid_t mod_id, Protocol__FlexSliceConfig *s); - -/* read the DL slice config via the RAN into a given Protocol__FlexDlSlice - * struct */ -void flexran_agent_read_slice_dl_config(mid_t mod_id, int slice_idx, Protocol__FlexDlSlice *dl_slice); - -/* read the UL slice config via the RAN into a given Protocol__FlexUlSlice - * struct */ -void flexran_agent_read_slice_ul_config(mid_t mod_id, int slice_idx, Protocol__FlexUlSlice *ul_slice); - -/* reads content of slice over the sc_update structure, so that it can be - * applied later by performing a diff between slice_config and sc_update */ -void prepare_update_slice_config(mid_t mod_id, Protocol__FlexSliceConfig *slice); - -/* apply generic slice parameters (e.g. intra-/interslice sharing activated or - * not) if there are changes. Returns the number of changed parameters. */ -int apply_new_slice_config(mid_t mod_id, Protocol__FlexSliceConfig *olds, Protocol__FlexSliceConfig *news); - -/* apply new configuration of slice in DL if there are changes between the - * parameters. Returns the number of changed parameters. */ -int apply_new_slice_dl_config(mid_t mod_id, Protocol__FlexDlSlice *oldc, Protocol__FlexDlSlice *newc); - -/* apply new configuration of slice in UL if there are changes between the - * parameters. Returns the number of changed parameters. */ -int apply_new_slice_ul_config(mid_t mod_id, Protocol__FlexUlSlice *oldc, Protocol__FlexUlSlice *newc); - -/* inserts a new ue_config into the structure keeping ue to slice association - * updates and marks so it can be applied */ -void prepare_ue_slice_assoc_update(mid_t mod_id, Protocol__FlexUeConfig *ue_config); +/* Prepare the application of a slicing config */ +void apply_update_dl_slice_config(mid_t mod_id, Protocol__FlexSliceDlUlConfig *slice); +void apply_update_ul_slice_config(mid_t mod_id, Protocol__FlexSliceDlUlConfig *slice); /* apply a new association between a UE and a slice (both DL and UL) */ -int apply_ue_slice_assoc_update(mid_t mod_id); +int apply_ue_slice_assoc_update(mid_t mod_id, Protocol__FlexUeConfig *ue_config); #endif /*FLEXRAN_AGENT_MAC_INTERNAL_H_*/ diff --git a/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac_slice_verification.c b/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac_slice_verification.c index 67329e91be..6e54e155c2 100644 --- a/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac_slice_verification.c +++ b/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac_slice_verification.c @@ -28,346 +28,3 @@ #include "flexran_agent_mac_slice_verification.h" - -/* overlap check for UL slices, helper type */ -struct sregion_s { - int start; - int length; -}; - -/* forward declaration of locally-used verification functions */ -int flexran_dl_slice_verify_pct(int pct); -int flexran_dl_slice_verify_priority(int prio); -int flexran_dl_slice_verify_position(int pos_low, int pos_high); -int flexran_dl_slice_verify_maxmcs(int maxmcs); -int flexran_ul_slice_verify_pct(int pct); -int flexran_ul_slice_verify_priority(int prio); -int flexran_ul_slice_verify_first_rb(int first_rb); -int flexran_ul_slice_verify_maxmcs(int maxmcs); -int check_ul_slice_overlap(mid_t mod_id, struct sregion_s *sr, int n); - -int flexran_verify_dl_slice(mid_t mod_id, Protocol__FlexDlSlice *dls) -{ - /* check mandatory parameters */ - if (!dls->has_id) { - LOG_E(FLEXRAN_AGENT, "[%d] Incoming DL slice configuration has no ID\n", mod_id); - return 0; - } - - /* verify parameters individualy */ - /* label is enum */ - if (!flexran_dl_slice_verify_pct(dls->percentage)) { - LOG_E(FLEXRAN_AGENT, "[%d][DL slice %d] illegal DL slice percentage (%d)\n", - mod_id, dls->id, dls->percentage); - return 0; - } - /* isolation is a protobuf bool */ - if (!flexran_dl_slice_verify_priority(dls->priority)) { - LOG_E(FLEXRAN_AGENT, "[%d][DL slice %d] illegal DL slice priority (%d)\n", - mod_id, dls->id, dls->priority); - return 0; - } - if (!flexran_dl_slice_verify_position(dls->position_low, dls->position_high)) { - LOG_E(FLEXRAN_AGENT, - "[%d][DL slice %d] illegal DL slice position low (%d) and/or high (%d)\n", - mod_id, dls->id, dls->position_low, dls->position_high); - return 0; - } - if (!flexran_dl_slice_verify_maxmcs(dls->maxmcs)) { - LOG_E(FLEXRAN_AGENT, "[%d][DL slice %d] illegal DL slice max mcs %d\n", - mod_id, dls->id, dls->maxmcs); - return 0; - } - if (dls->n_sorting == 0) { - LOG_E(FLEXRAN_AGENT, "[%d][DL slice %d] no sorting in DL slice\n", - mod_id, dls->id); - return 0; - } - if (!dls->sorting) { - LOG_E(FLEXRAN_AGENT, "[%d][DL slice %d] no sorting found in DL slice\n", - mod_id, dls->id); - return 0; - } - /* sorting is an enum */ - /* accounting is an enum */ - if (!dls->scheduler_name) { - LOG_E(FLEXRAN_AGENT, "[%d][DL slice %d] no scheduler name found\n", - mod_id, dls->id); - return 0; - } - if (strcmp(dls->scheduler_name, "schedule_ue_spec") != 0) { - LOG_E(FLEXRAN_AGENT, "[%d][DL slice %d] setting the scheduler to something " - "different than schedule_ue_spec is currently not allowed\n", - mod_id, dls->id); - return 0; - } - - return 1; -} - -int flexran_verify_group_dl_slices(mid_t mod_id, Protocol__FlexDlSlice **existing, - int n_ex, Protocol__FlexDlSlice **update, int n_up) -{ - int i, j, n; - int pct, pct_orig; - /* for every update, array points to existing slice, or NULL if update - * creates new slice */ - Protocol__FlexDlSlice *s[n_up]; - for (i = 0; i < n_up; i++) { - s[i] = NULL; - for (j = 0; j < n_ex; j++) { - if (existing[j]->id == update[i]->id) - s[i] = existing[j]; - } - } - - /* check that number of created and number of added slices in total matches - * [1,10] */ - n = n_ex; - for (i = 0; i < n_up; i++) { - /* new slice */ - if (!s[i]) n += 1; - /* slice will be deleted */ - else if (s[i]->percentage == 0) n -= 1; - /* else "only" an update */ - } - - if (n < 1 || n > MAX_NUM_SLICES) { - LOG_E(FLEXRAN_AGENT, "[%d] Illegal number of resulting DL slices (%d -> %d)\n", - mod_id, n_ex, n); - return 0; - } - - /* check that the sum of all slices percentages (including removed/added - * slices) matches [1,100] */ - pct = 0; - for (i = 0; i < n_ex; i++) { - pct += existing[i]->percentage; - } - pct_orig = pct; - for (i = 0; i < n_up; i++) { - /* if there is an existing slice, subtract its percentage and add the - * update's percentage */ - if (s[i]) - pct -= s[i]->percentage; - pct += update[i]->percentage; - } - if (pct < 1 || pct > 100) { - LOG_E(FLEXRAN_AGENT, - "[%d] invalid total RB share for DL slices (%d%% -> %d%%)\n", - mod_id, pct_orig, pct); - return 0; - } - - return 1; -} - -int flexran_verify_ul_slice(mid_t mod_id, Protocol__FlexUlSlice *uls) -{ - /* check mandatory parameters */ - if (!uls->has_id) { - LOG_E(FLEXRAN_AGENT, "[%d] Incoming UL slice configuration has no ID\n", mod_id); - return 0; - } - - /* verify parameters individually */ - /* label is enum */ - if (!flexran_ul_slice_verify_pct(uls->percentage)) { - LOG_E(FLEXRAN_AGENT, "[%d][UL slice %d] illegal UL slice percentage (%d)\n", - mod_id, uls->id, uls->percentage); - return 0; - } - /* isolation is a protobuf bool */ - if (!flexran_ul_slice_verify_priority(uls->priority)) { - LOG_E(FLEXRAN_AGENT, "[%d][UL slice %d] illegal UL slice percentage (%d)\n", - mod_id, uls->id, uls->priority); - return 0; - } - if (!flexran_ul_slice_verify_first_rb(uls->first_rb)) { - LOG_E(FLEXRAN_AGENT, "[%d][UL slice %d] illegal UL slice first RB (%d)\n", - mod_id, uls->id, uls->first_rb); - return 0; - } - if (!flexran_ul_slice_verify_maxmcs(uls->maxmcs)) { - LOG_E(FLEXRAN_AGENT, "[%d][UL slice %d] illegal UL slice max mcs (%d)\n", - mod_id, uls->id, uls->maxmcs); - return 0; - } - /* TODO - if (uls->n_sorting == 0) { - LOG_E(FLEXRAN_AGENT, "[%d][UL slice %d] no sorting in UL slice\n", - mod_id, uls->id); - return 0; - } - if (!uls->sorting) { - LOG_E(FLEXRAN_AGENT, "[%d][UL slice %d] no sorting found in UL slice\n", - mod_id, uls->id); - return 0; - } - */ - /* sorting is an enum */ - /* accounting is an enum */ - if (!uls->scheduler_name) { - LOG_E(FLEXRAN_AGENT, "[%d][UL slice %d] no scheduler name found\n", - mod_id, uls->id); - return 0; - } - if (strcmp(uls->scheduler_name, "schedule_ulsch_rnti") != 0) { - LOG_E(FLEXRAN_AGENT, "[%d][UL slice %d] setting the scheduler to something " - "different than schedule_ulsch_rnti is currently not allowed\n", - mod_id, uls->id); - return 0; - } - - return 1; -} - -int flexran_verify_group_ul_slices(mid_t mod_id, Protocol__FlexUlSlice **existing, - int n_ex, Protocol__FlexUlSlice **update, int n_up) -{ - int i, j, n; - int pct, pct_orig; - /* for every update, array "s" points to existing slice, or NULL if update - * creates new slice; array "offs" gives the offset of this slice */ - Protocol__FlexUlSlice *s[n_up]; - int offs[n_up]; - for (i = 0; i < n_up; i++) { - s[i] = NULL; - offs[i] = 0; - for (j = 0; j < n_ex; j++) { - if (existing[j]->id == update[i]->id) { - s[i] = existing[j]; - offs[i] = j; - } - } - } - - /* check that number of created and number of added slices in total matches - * [1,10] */ - n = n_ex; - for (i = 0; i < n_up; i++) { - /* new slice */ - if (!s[i]) n += 1; - /* slice will be deleted */ - else if (s[i]->percentage == 0) n -= 1; - /* else "only" an update */ - } - - if (n < 1 || n > MAX_NUM_SLICES) { - LOG_E(FLEXRAN_AGENT, "[%d] Illegal number of resulting UL slices (%d -> %d)\n", - mod_id, n_ex, n); - return 0; - } - - /* check that the sum of all slices percentages (including removed/added - * slices) matches [1,100] */ - pct = 0; - for (i = 0; i < n_ex; i++) { - pct += existing[i]->percentage; - } - pct_orig = pct; - for (i = 0; i < n_up; i++) { - /* if there is an existing slice, subtract its percentage and add the - * update's percentage */ - if (s[i]) - pct -= s[i]->percentage; - pct += update[i]->percentage; - } - if (pct < 1 || pct > 100) { - LOG_E(FLEXRAN_AGENT, "[%d] invalid total RB share (%d%% -> %d%%)\n", - mod_id, pct_orig, pct); - return 0; - } - - /* check that there is no overlap in slices resulting as the combination of - * first_rb and percentage */ - struct sregion_s sregion[n]; - const int N_RB = flexran_get_N_RB_UL(mod_id, 0); /* assume PCC */ - int k = n_ex; - for (i = 0; i < n_ex; i++) { - sregion[i].start = existing[i]->first_rb; - sregion[i].length = existing[i]->percentage * N_RB / 100; - } - for (i = 0; i < n_up; i++) { - ptrdiff_t d = s[i] ? offs[i] : k++; - AssertFatal(d >= 0 && d < k, "illegal pointer offset (%ld, k=%d)\n", d, k); - sregion[d].start = update[i]->first_rb; - sregion[d].length = update[i]->percentage * N_RB / 100; - } - AssertFatal(k == n, "illegal number of slices while calculating overlap\n"); - if (!check_ul_slice_overlap(mod_id, sregion, k)) { - LOG_E(FLEXRAN_AGENT, "[%d] UL slices are overlapping\n", mod_id); - return 0; - } - - return 1; -} - -int flexran_dl_slice_verify_pct(int pct) -{ - return pct >= 0 && pct <= 100; -} - -int flexran_dl_slice_verify_priority(int prio) -{ - return prio >= 0; -} - -int flexran_dl_slice_verify_position(int pos_low, int pos_high) -{ - return pos_low < pos_high && pos_low >= 0 && pos_high <= N_RBG_MAX; -} - -int flexran_dl_slice_verify_maxmcs(int maxmcs) -{ - return maxmcs >= 0 && maxmcs <= 28; -} - -int flexran_ul_slice_verify_pct(int pct) -{ - return pct >= 0 && pct <= 100; -} - -int flexran_ul_slice_verify_priority(int prio) -{ - return prio >= 0; -} - -int flexran_ul_slice_verify_first_rb(int first_rb) -{ - return first_rb >= 0 && first_rb < 100; -} - -int flexran_ul_slice_verify_maxmcs(int maxmcs) -{ - return maxmcs >= 0 && maxmcs <= 20; -} - -int sregion_compare(const void *_a, const void *_b) -{ - const struct sregion_s *a = (const struct sregion_s *)_a; - const struct sregion_s *b = (const struct sregion_s *)_b; - const int res = a->start - b->start; - if (res < 0) return -1; - else if (res == 0) return 0; - else return 1; -} - -int check_ul_slice_overlap(mid_t mod_id, struct sregion_s *sr, int n) -{ - int i; - int overlap, op, u; - const int N_RB = flexran_get_N_RB_UL(mod_id, 0); /* assume PCC */ - qsort(sr, n, sizeof(sr[0]), sregion_compare); - for (i = 0; i < n; i++) { - u = i == n-1 ? N_RB : sr[i+1].start; - AssertFatal(sr[i].start <= u, "unsorted slice list\n"); - overlap = sr[i].start + sr[i].length - u; - if (overlap <= 0) continue; - op = overlap * 100 / sr[i].length; - LOG_W(FLEXRAN_AGENT, "[%d] slice overlap of %d%% detected\n", mod_id, op); - if (op >= 10) /* more than 10% overlap -> refuse */ - return 0; - } - return 1; -} diff --git a/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac_slice_verification.h b/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac_slice_verification.h index a8f4030d36..c9e66b6f88 100644 --- a/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac_slice_verification.h +++ b/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac_slice_verification.h @@ -29,9 +29,3 @@ #include "flexran_agent_common_internal.h" #include "flexran_agent_mac_internal.h" -int flexran_verify_dl_slice(mid_t mod_id, Protocol__FlexDlSlice *dls); -int flexran_verify_group_dl_slices(mid_t mod_id, Protocol__FlexDlSlice **existing, - int n_ex, Protocol__FlexDlSlice **update, int n_up); -int flexran_verify_ul_slice(mid_t mod_id, Protocol__FlexUlSlice *uls); -int flexran_verify_group_ul_slices(mid_t mod_id, Protocol__FlexUlSlice **existing, - int n_ex, Protocol__FlexUlSlice **update, int n_up); diff --git a/openair2/ENB_APP/CONTROL_MODULES/RRC/flexran_agent_rrc.c b/openair2/ENB_APP/CONTROL_MODULES/RRC/flexran_agent_rrc.c index 92c9917622..ec907a1956 100644 --- a/openair2/ENB_APP/CONTROL_MODULES/RRC/flexran_agent_rrc.c +++ b/openair2/ENB_APP/CONTROL_MODULES/RRC/flexran_agent_rrc.c @@ -921,7 +921,4 @@ int flexran_agent_unregister_rrc_xface(mid_t mod_id) return 0; } -AGENT_RRC_xface *flexran_agent_get_rrc_xface(mid_t mod_id) -{ - return agent_rrc_xface[mod_id]; -} + diff --git a/openair2/ENB_APP/CONTROL_MODULES/S1AP/flexran_agent_s1ap.c b/openair2/ENB_APP/CONTROL_MODULES/S1AP/flexran_agent_s1ap.c index 04a47406e1..c2d7cb9e55 100644 --- a/openair2/ENB_APP/CONTROL_MODULES/S1AP/flexran_agent_s1ap.c +++ b/openair2/ENB_APP/CONTROL_MODULES/S1AP/flexran_agent_s1ap.c @@ -125,6 +125,63 @@ void flexran_agent_s1ap_destroy_stats_reply(Protocol__FlexStatsReply *reply) { } } +void flexran_agent_handle_mme_update(mid_t mod_id, + size_t n_mme, + Protocol__FlexS1apMme **mme) { + if (n_mme == 0 || n_mme > 1) { + LOG_E(FLEXRAN_AGENT, "cannot handle %lu MMEs yet\n", n_mme); + return; + } + + if (!mme[0]->s1_ip) { + LOG_E(FLEXRAN_AGENT, "no S1 IP present, cannot handle request\n"); + return; + } + + if (mme[0]->has_state + && mme[0]->state == PROTOCOL__FLEX_MME_STATE__FLMMES_DISCONNECTED) { + int rc = flexran_remove_s1ap_mme(mod_id, 1, &mme[0]->s1_ip); + if (rc == 0) + LOG_I(FLEXRAN_AGENT, "remove MME at IP %s\n", mme[0]->s1_ip); + else + LOG_W(FLEXRAN_AGENT, + "could not remove MME: flexran_remove_s1ap_mme() returned %d\n", + rc); + } else { + int rc = flexran_add_s1ap_mme(mod_id, 1, &mme[0]->s1_ip); + if (rc == 0) + LOG_I(FLEXRAN_AGENT, "add MME at IP %s\n", mme[0]->s1_ip); + else + LOG_W(FLEXRAN_AGENT, + "could not add MME: flexran_add_s1ap_mme() returned %d\n", + rc); + } +} + +void flexran_agent_handle_plmn_update(mid_t mod_id, + int CC_id, + size_t n_plmn, + Protocol__FlexPlmn **plmn_id) { + if (n_plmn < 1 || n_plmn > 6) { + LOG_E(FLEXRAN_AGENT, "cannot handle %lu PLMNs\n", n_plmn); + return; + } + + /* We assume the controller has checked all the parameters within each + * plmn_id */ + int rc = flexran_set_new_plmn_id(mod_id, CC_id, n_plmn, plmn_id); + if (rc == 0) { + LOG_I(FLEXRAN_AGENT, "set %lu new PLMNs:\n", n_plmn); + for (int i = 0; i < (int)n_plmn; ++i) + LOG_I(FLEXRAN_AGENT, " MCC %d MNC %d MNC length %d\n", + plmn_id[i]->mcc, plmn_id[i]->mnc, plmn_id[0]->mnc_length); + } else { + LOG_W(FLEXRAN_AGENT, + "could not set new PLMN configuration: flexran_set_new_plmn_id() returned %d\n", + rc); + } +} + int flexran_agent_register_s1ap_xface(mid_t mod_id) { if (agent_s1ap_xface[mod_id]) { LOG_E(FLEXRAN_AGENT, "S1AP agent CM for eNB %d is already registered\n", mod_id); diff --git a/openair2/ENB_APP/CONTROL_MODULES/S1AP/flexran_agent_s1ap.h b/openair2/ENB_APP/CONTROL_MODULES/S1AP/flexran_agent_s1ap.h index 1cca6ac9c1..006eaa1d3c 100644 --- a/openair2/ENB_APP/CONTROL_MODULES/S1AP/flexran_agent_s1ap.h +++ b/openair2/ENB_APP/CONTROL_MODULES/S1AP/flexran_agent_s1ap.h @@ -60,6 +60,17 @@ int flexran_agent_s1ap_stats_reply(mid_t mod_id, /* Free allocated S1AP stats message */ void flexran_agent_s1ap_destroy_stats_reply(Protocol__FlexStatsReply *reply); +/* Add or remove MME updates */ +void flexran_agent_handle_mme_update(mid_t mod_id, + size_t n_mme, + Protocol__FlexS1apMme **mme); + +/* Set a new PLMN configuration */ +void flexran_agent_handle_plmn_update(mid_t mod_id, + int CC_id, + size_t n_plmn, + Protocol__FlexPlmn **plmn_id); + /* Register technology specific interface callbacks */ int flexran_agent_register_s1ap_xface(mid_t mod_id); diff --git a/openair2/ENB_APP/MACRLC_paramdef.h b/openair2/ENB_APP/MACRLC_paramdef.h index 55ce9d5059..fcee6142f0 100644 --- a/openair2/ENB_APP/MACRLC_paramdef.h +++ b/openair2/ENB_APP/MACRLC_paramdef.h @@ -58,6 +58,7 @@ #define CONFIG_STRING_MACRLC_SCHED_MODE "scheduler_mode" #define CONFIG_MACRLC_PUSCH10xSNR "puSch10xSnr" #define CONFIG_MACRLC_PUCCH10xSNR "puCch10xSnr" +#define CONFIG_STRING_MACRLC_DEFAULT_SCHED_DL_ALGO "default_sched_dl_algo" /*-------------------------------------------------------------------------------------------------------------------------------------------------------*/ /* MacRLC configuration parameters */ @@ -84,6 +85,7 @@ {CONFIG_STRING_MACRLC_SCHED_MODE, NULL, 0, strptr:NULL, defstrval:"default", TYPE_STRING, 0}, \ {CONFIG_MACRLC_PUSCH10xSNR, NULL, 0, iptr:NULL, defintval:200, TYPE_INT, 0}, \ {CONFIG_MACRLC_PUCCH10xSNR, NULL, 0, iptr:NULL, defintval:200, TYPE_INT, 0}, \ +{CONFIG_STRING_MACRLC_DEFAULT_SCHED_DL_ALGO, NULL, 0, strptr:NULL, defstrval:"round_robin_dl", TYPE_STRING, 0}, \ } #define MACRLC_CC_IDX 0 #define MACRLC_TRANSPORT_N_PREFERENCE_IDX 1 @@ -105,6 +107,7 @@ #define MACRLC_SCHED_MODE_IDX 17 #define MACRLC_PUSCH10xSNR_IDX 18 #define MACRLC_PUCCH10xSNR_IDX 19 +#define MACRLC_DEFAULT_SCHED_DL_ALGO_IDX 20 /*---------------------------------------------------------------------------------------------------------------------------------------------------------*/ #endif diff --git a/openair2/ENB_APP/MESSAGES/V2/config_common.proto b/openair2/ENB_APP/MESSAGES/V2/config_common.proto index 733d883c92..2f2267b628 100644 --- a/openair2/ENB_APP/MESSAGES/V2/config_common.proto +++ b/openair2/ENB_APP/MESSAGES/V2/config_common.proto @@ -61,82 +61,30 @@ enum flex_qam { // // Slice config related structures and enums // -enum flex_dl_sorting { - - CR_ROUND = 0; // Highest HARQ first - CR_SRB12 = 1; // Highest SRB1+2 first - CR_HOL = 2; // Highest HOL first - CR_LC = 3; // Greatest RLC buffer first - CR_CQI = 4; // Highest CQI first - CR_LCP = 5; // Highest LC priority first +enum flex_slice_algorithm { + None = 0; + Static = 1; + NVS = 2; } -enum flex_ul_sorting { - CRU_ROUND = 0; // Highest HARQ first - CRU_BUF = 1; // Highest BSR first - CRU_BTS = 2; // More bytes to schedule first - CRU_MCS = 3; // Highest MCS first - CRU_LCP = 4; // Highest LC priority first - CRU_HOL = 5; // Highest HOL first +message flex_slice_static { + optional uint32 posLow = 1; + optional uint32 posHigh = 2; } -enum flex_dl_accounting_policy { - POL_FAIR = 0; - POL_GREEDY = 1; - POL_NUM = 2; +message flex_slice { + optional uint32 id = 1; + optional string label = 2; + optional string scheduler = 3; + oneof params { + flex_slice_static static = 10; + } } -enum flex_ul_accounting_policy { - POLU_FAIR = 0; - POLU_GREEDY = 1; - POLU_NUM = 2; -} - -enum flex_slice_label { - xMBB = 0; - URLLC = 1; - mMTC = 2; - xMTC = 3; - Other = 4; -} - -message flex_dl_slice { - optional uint32 id = 1; - optional flex_slice_label label = 2; - // should be between 0 and 100 - optional uint32 percentage = 3; - // whether this slice should be exempted form interslice sharing - optional bool isolation = 4; - // increasing value means increasing prio - optional uint32 priority = 5; - // min and max RB to use (in frequency) in the range [0, N_RBG_MAX] - optional uint32 position_low = 6; - optional uint32 position_high = 7; - // maximum MCS to be allowed in this slice - optional uint32 maxmcs = 8; - repeated flex_dl_sorting sorting = 9; - optional flex_dl_accounting_policy accounting = 10; - optional string scheduler_name = 11; -} - -message flex_ul_slice { - optional uint32 id = 1; - optional flex_slice_label label = 2; - // should be between 0 and 100 - optional uint32 percentage = 3; - // whether this slice should be exempted form interslice sharing - optional bool isolation = 4; - // increasing value means increasing prio - optional uint32 priority = 5; - // RB start to use (in frequency) in the range [0, N_RB_MAX] - optional uint32 first_rb = 6; - // TODO RB number - //optional uint32 length_rb = 7; - // maximum MCS to be allowed in this slice - optional uint32 maxmcs = 8; - repeated flex_ul_sorting sorting = 9; - optional flex_ul_accounting_policy accounting = 10; - optional string scheduler_name = 11; +message flex_slice_dl_ul_config { + optional flex_slice_algorithm algorithm = 1; + repeated flex_slice slices = 2; + optional string scheduler = 3; // if no slicing } // diff --git a/openair2/ENB_APP/MESSAGES/V2/config_messages.proto b/openair2/ENB_APP/MESSAGES/V2/config_messages.proto index 324153613d..1a69deec71 100644 --- a/openair2/ENB_APP/MESSAGES/V2/config_messages.proto +++ b/openair2/ENB_APP/MESSAGES/V2/config_messages.proto @@ -49,14 +49,8 @@ message flex_cell_config { } message flex_slice_config { - // whether remaining RBs after first intra-slice allocation will - // be allocated to UEs of the same slice - optional bool intraslice_share_active = 3; - // whether remaining RBs after slice allocation will be allocated - // to UEs of another slice. Isolated slices will be ignored. - optional bool interslice_share_active = 4; - repeated flex_dl_slice dl = 1; - repeated flex_ul_slice ul = 2; + optional flex_slice_dl_ul_config dl = 6; + optional flex_slice_dl_ul_config ul = 7; } message flex_ue_config { diff --git a/openair2/ENB_APP/enb_app.c b/openair2/ENB_APP/enb_app.c index 0e1c7e64bc..1d001022d2 100644 --- a/openair2/ENB_APP/enb_app.c +++ b/openair2/ENB_APP/enb_app.c @@ -214,7 +214,7 @@ void *eNB_app_task(void *args_p) { long x2_enb_register_retry_timer_id; uint32_t m2_register_enb_pending = 0; uint32_t m2_registered_enb = 0; - long m2_enb_register_retry_timer_id; + //long m2_enb_register_retry_timer_id; MessageDef *msg_p = NULL; instance_t instance; int result; @@ -236,16 +236,11 @@ void *eNB_app_task(void *args_p) { /* Try to register each eNB with MCE each other */ if (is_m2ap_eNB_enabled() /*&& !NODE_IS_DU(RC.rrc[0]->node_type)*/) { //eNB_app_register_MBMS_STA(RC.rrc[0]->node_type, enb_id_start, enb_id_end); - //m2_register_enb_pending = eNB_app_register_m2 (enb_id_start, enb_id_end); + m2_register_enb_pending = eNB_app_register_m2 (enb_id_start, enb_id_end); - if (timer_setup (5, 0, TASK_ENB_APP, INSTANCE_DEFAULT, TIMER_ONE_SHOT, - NULL, &m2_enb_register_retry_timer_id) < 0) { - //LOG_E(ENB_APP, " Can not start eNB register retry timer, use \"sleep\" instead!\n"); - //sleep(ENB_REGISTER_RETRY_DELAY); - /* Restart the registration process */ - //registered_enb = 0; - //register_enb_pending = eNB_app_register (RC.rrc[0]->node_type,enb_id_start, enb_id_end); - } + //if (timer_setup (5, 0, TASK_ENB_APP, INSTANCE_DEFAULT, TIMER_ONE_SHOT, + // NULL, &m2_enb_register_retry_timer_id) < 0) { + //} } @@ -273,7 +268,6 @@ void *eNB_app_task(void *args_p) { if (EPC_MODE_ENABLED) { LOG_I(ENB_APP, "[eNB %d] Received %s: associated MME %d\n", instance, ITTI_MSG_NAME (msg_p), S1AP_REGISTER_ENB_CNF(msg_p).nb_mme); - DevAssert(register_enb_pending > 0); register_enb_pending--; /* Check if at least eNB is registered with one MME */ @@ -377,11 +371,11 @@ void *eNB_app_task(void *args_p) { } } /* if (EPC_MODE_ENABLED) */ - if(TIMER_HAS_EXPIRED (msg_p).timer_id == m2_enb_register_retry_timer_id) { - - LOG_I(ENB_APP, " Received %s: timer_id %ld M2 register\n", ITTI_MSG_NAME (msg_p), TIMER_HAS_EXPIRED(msg_p).timer_id); - m2_register_enb_pending = eNB_app_register_m2 (enb_id_start, enb_id_end); - } +// if(TIMER_HAS_EXPIRED (msg_p).timer_id == m2_enb_register_retry_timer_id) { +// +// LOG_I(ENB_APP, " Received %s: timer_id %ld M2 register\n", ITTI_MSG_NAME (msg_p), TIMER_HAS_EXPIRED(msg_p).timer_id); +// m2_register_enb_pending = eNB_app_register_m2 (enb_id_start, enb_id_end); +// } break; diff --git a/openair2/ENB_APP/enb_config.c b/openair2/ENB_APP/enb_config.c index 6dcc574746..4c6a7885c3 100644 --- a/openair2/ENB_APP/enb_config.c +++ b/openair2/ENB_APP/enb_config.c @@ -29,6 +29,7 @@ #include #include +#include #include "common/utils/LOG/log.h" #include "assertions.h" @@ -260,6 +261,16 @@ void RCconfig_macrlc(int macrlc_has_f1[MAX_MAC_INST]) { global_scheduler_mode=SCHED_MODE_DEFAULT; printf("sched mode = default %d [%s]\n",global_scheduler_mode,*(MacRLC_ParamList.paramarray[j][MACRLC_SCHED_MODE_IDX].strptr)); } + + char *s = *MacRLC_ParamList.paramarray[j][MACRLC_DEFAULT_SCHED_DL_ALGO_IDX].strptr; + void *d = dlsym(NULL, s); + AssertFatal(d, "%s(): no default scheduler DL algo '%s' found\n", __func__, s); + // release default, add new + pp_impl_param_t *dl_pp = &RC.mac[j]->pre_processor_dl; + dl_pp->dl_algo.unset(&dl_pp->dl_algo.data); + dl_pp->dl_algo = *(default_sched_dl_algo_t *) d; + dl_pp->dl_algo.data = dl_pp->dl_algo.setup(); + LOG_I(ENB_APP, "using default scheduler DL algo '%s'\n", dl_pp->dl_algo.name); }// j=0..num_inst } /*else {// MacRLC_ParamList.numelt > 0 // ignore it @@ -1545,7 +1556,7 @@ int RCconfig_RRC(uint32_t i, eNB_RRC_INST *rrc, int macrlc_has_f1) { RRC_CONFIGURATION_REQ(msg_p).eMBMS_configured = 0; printf("No eMBMS configuration, skipping it\n"); // eMTC configuration - char brparamspath[MAX_OPTNAME_SIZE*2 + 16]; + char brparamspath[MAX_OPTNAME_SIZE*2 + 160]; sprintf(brparamspath,"%s.%s", ccspath, ENB_CONFIG_STRING_EMTC_PARAMETERS); config_get(eMTCParams, sizeof(eMTCParams)/sizeof(paramdef_t), brparamspath); RRC_CONFIGURATION_REQ(msg_p).eMTC_configured = eMTCconfig.eMTC_configured&1; @@ -1554,7 +1565,7 @@ int RCconfig_RRC(uint32_t i, eNB_RRC_INST *rrc, int macrlc_has_f1) { else printf("No eMTC configuration, skipping it\n"); // Sidelink configuration - char SLparamspath[MAX_OPTNAME_SIZE*2 + 16]; + char SLparamspath[MAX_OPTNAME_SIZE*2 + 160]; sprintf(SLparamspath,"%s.%s", ccspath, ENB_CONFIG_STRING_SL_PARAMETERS); config_get( SLParams, sizeof(SLParams)/sizeof(paramdef_t), SLparamspath); // Sidelink Resource pool information @@ -3041,7 +3052,8 @@ void configure_du_mac(int inst) { (LTE_SchedulingInfo_MBMS_r14_t *) NULL, (struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL, (LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL, - (LTE_MBSFN_AreaInfoList_r9_t *) NULL + (LTE_MBSFN_AreaInfoList_r9_t *) NULL, + (LTE_MBSFNAreaConfiguration_r9_t*) NULL ); } diff --git a/openair2/ENB_APP/flexran_agent_common.c b/openair2/ENB_APP/flexran_agent_common.c index dc320ef974..7569ca1ac1 100644 --- a/openair2/ENB_APP/flexran_agent_common.c +++ b/openair2/ENB_APP/flexran_agent_common.c @@ -306,6 +306,7 @@ int flexran_agent_destroy_enb_config_reply(Protocol__FlexranMessage *msg) { if (reply->cell_config[i]->mbsfn_subframe_config_sfalloc) free(reply->cell_config[i]->mbsfn_subframe_config_sfalloc); + /* si_config is shared between MAC and RRC, free here */ if (reply->cell_config[i]->si_config) { for(int j = 0; j < reply->cell_config[i]->si_config->n_si_message; j++) { free(reply->cell_config[i]->si_config->si_message[j]); @@ -316,26 +317,7 @@ int flexran_agent_destroy_enb_config_reply(Protocol__FlexranMessage *msg) { } if (reply->cell_config[i]->slice_config) { - for (int j = 0; j < reply->cell_config[i]->slice_config->n_dl; ++j) { - if (reply->cell_config[i]->slice_config->dl[j]->n_sorting > 0) - free(reply->cell_config[i]->slice_config->dl[j]->sorting); - - free(reply->cell_config[i]->slice_config->dl[j]->scheduler_name); - free(reply->cell_config[i]->slice_config->dl[j]); - } - - free(reply->cell_config[i]->slice_config->dl); - - for (int j = 0; j < reply->cell_config[i]->slice_config->n_ul; ++j) { - if (reply->cell_config[i]->slice_config->ul[j]->n_sorting > 0) - free(reply->cell_config[i]->slice_config->ul[j]->sorting); - - free(reply->cell_config[i]->slice_config->ul[j]->scheduler_name); - free(reply->cell_config[i]->slice_config->ul[j]); - } - - free(reply->cell_config[i]->slice_config->ul); - free(reply->cell_config[i]->slice_config); + flexran_agent_destroy_mac_slice_config(reply->cell_config[i]); } free(reply->cell_config[i]); @@ -893,31 +875,40 @@ int flexran_agent_handle_enb_config_reply(mid_t mod_id, const void *params, Prot Protocol__FlexranMessage *input = (Protocol__FlexranMessage *)params; Protocol__FlexEnbConfigReply *enb_config = input->enb_config_reply_msg; - if (enb_config->n_cell_config == 0) { - LOG_W(FLEXRAN_AGENT, - "received enb_config_reply message does not contain a cell_config\n"); - *msg = NULL; - return 0; - } - if (enb_config->n_cell_config > 1) LOG_W(FLEXRAN_AGENT, "ignoring slice configs for other cell except cell 0\n"); - if (flexran_agent_get_mac_xface(mod_id) && enb_config->cell_config[0]->slice_config) { - prepare_update_slice_config(mod_id, enb_config->cell_config[0]->slice_config); - } else if (enb_config->cell_config[0]->has_eutra_band - && enb_config->cell_config[0]->has_dl_freq - && enb_config->cell_config[0]->has_ul_freq - && enb_config->cell_config[0]->has_dl_bandwidth) { - initiate_soft_restart(mod_id, enb_config->cell_config[0]); - } else if (flexran_agent_get_rrc_xface(mod_id) - && enb_config->cell_config[0]->has_x2_ho_net_control) { - LOG_I(FLEXRAN_AGENT, - "setting X2 HO NetControl to %d\n", - enb_config->cell_config[0]->x2_ho_net_control); - const int rc = flexran_set_x2_ho_net_control(mod_id, enb_config->cell_config[0]->x2_ho_net_control); - if (rc < 0) - LOG_E(FLEXRAN_AGENT, "Error in configuring X2 handover controlled by network"); + if (enb_config->n_cell_config > 0) { + if (flexran_agent_get_mac_xface(mod_id) && enb_config->cell_config[0]->slice_config) { + prepare_update_slice_config(mod_id, &enb_config->cell_config[0]->slice_config); + } + if (enb_config->cell_config[0]->has_eutra_band + && enb_config->cell_config[0]->has_dl_freq + && enb_config->cell_config[0]->has_ul_freq + && enb_config->cell_config[0]->has_dl_bandwidth) { + initiate_soft_restart(mod_id, enb_config->cell_config[0]); + } + if (flexran_agent_get_rrc_xface(mod_id) + && enb_config->cell_config[0]->has_x2_ho_net_control) { + LOG_I(FLEXRAN_AGENT, + "setting X2 HO NetControl to %d\n", + enb_config->cell_config[0]->x2_ho_net_control); + const int rc = flexran_set_x2_ho_net_control(mod_id, enb_config->cell_config[0]->x2_ho_net_control); + if (rc < 0) + LOG_E(FLEXRAN_AGENT, "Error in configuring X2 handover controlled by network"); + } + if (flexran_agent_get_rrc_xface(mod_id) && enb_config->cell_config[0]->n_plmn_id > 0) { + flexran_agent_handle_plmn_update(mod_id, + 0, + enb_config->cell_config[0]->n_plmn_id, + enb_config->cell_config[0]->plmn_id); + } + } + + if (flexran_agent_get_s1ap_xface(mod_id) && enb_config->s1ap) { + flexran_agent_handle_mme_update(mod_id, + enb_config->s1ap->n_mme, + enb_config->s1ap->mme); } *msg = NULL; @@ -930,7 +921,11 @@ int flexran_agent_handle_ue_config_reply(mid_t mod_id, const void *params, Proto Protocol__FlexUeConfigReply *ue_config_reply = input->ue_config_reply_msg; for (i = 0; flexran_agent_get_mac_xface(mod_id) && i < ue_config_reply->n_ue_config; i++) - prepare_ue_slice_assoc_update(mod_id, ue_config_reply->ue_config[i]); + prepare_ue_slice_assoc_update(mod_id, &ue_config_reply->ue_config[i]); + /* prepare_ue_slice_assoc_update takes ownership of the individual + * FlexUeConfig messages. Therefore, mark zero messages to not accidentally + * free them twice */ + ue_config_reply->n_ue_config = 0; *msg = NULL; return 0; diff --git a/openair2/ENB_APP/flexran_agent_extern.h b/openair2/ENB_APP/flexran_agent_extern.h index 119bc3d44c..2a5930e1a8 100644 --- a/openair2/ENB_APP/flexran_agent_extern.h +++ b/openair2/ENB_APP/flexran_agent_extern.h @@ -41,10 +41,13 @@ AGENT_PHY_xface *flexran_agent_get_phy_xface(mid_t mod_id); /* Control module interface for the communication of the MAC Control Module with the agent */ -AGENT_MAC_xface *flexran_agent_get_mac_xface(mid_t mod_id); +extern AGENT_MAC_xface *agent_mac_xface[NUM_MAX_ENB]; +#define flexran_agent_get_mac_xface(mod_id) (agent_mac_xface[mod_id]) /* Control module interface for the communication of the RRC Control Module with the agent */ -AGENT_RRC_xface *flexran_agent_get_rrc_xface(mid_t mod_id); +// AGENT_RRC_xface *flexran_agent_get_rrc_xface(mid_t mod_id); +extern AGENT_RRC_xface *agent_rrc_xface[NUM_MAX_ENB]; +#define flexran_agent_get_rrc_xface(mod_id) (agent_rrc_xface[mod_id]) /* Control module interface for the communication of the RRC Control Module with the agent */ AGENT_PDCP_xface *flexran_agent_get_pdcp_xface(mid_t mod_id); diff --git a/openair2/ENB_APP/flexran_agent_ran_api.c b/openair2/ENB_APP/flexran_agent_ran_api.c index 32cb8c74e1..79c992a4d7 100644 --- a/openair2/ENB_APP/flexran_agent_ran_api.c +++ b/openair2/ENB_APP/flexran_agent_ran_api.c @@ -30,6 +30,7 @@ #include "flexran_agent_ran_api.h" #include "s1ap_eNB_ue_context.h" #include "s1ap_eNB_management_procedures.h" +#include "openair2/LAYER2/MAC/slicing/slicing.h" static inline int phy_is_present(mid_t mod_id, uint8_t cc_id) { return RC.eNB && RC.eNB[mod_id] && RC.eNB[mod_id][cc_id]; @@ -3013,471 +3014,293 @@ uint32_t flexran_get_rrc_enb_ue_s1ap_id(mid_t mod_id, rnti_t rnti) } /**************************** SLICING ****************************/ -int flexran_get_ue_dl_slice_id(mid_t mod_id, mid_t ue_id) { - if (!mac_is_present(mod_id)) return -1; +Protocol__FlexSliceAlgorithm flexran_get_dl_slice_algo(mid_t mod_id) { + if (!mac_is_present(mod_id)) return PROTOCOL__FLEX_SLICE_ALGORITHM__None; - int slice_idx = 0; //RC.mac[mod_id]->UE_info.assoc_dl_slice_idx[ue_id]; - - if (slice_idx >= 0 && slice_idx < RC.mac[mod_id]->slice_info.n_dl) - return RC.mac[mod_id]->slice_info.dl[slice_idx].id; - - return 0; + switch (RC.mac[mod_id]->pre_processor_dl.algorithm) { + case STATIC_SLICING: + return PROTOCOL__FLEX_SLICE_ALGORITHM__Static; + default: + return PROTOCOL__FLEX_SLICE_ALGORITHM__None; + } } -void flexran_set_ue_dl_slice_idx(mid_t mod_id, mid_t ue_id, int slice_idx) { +int flexran_set_dl_slice_algo(mid_t mod_id, Protocol__FlexSliceAlgorithm algo) { + if (!mac_is_present(mod_id)) return 0; + eNB_MAC_INST *mac = RC.mac[mod_id]; + const int cc_id = 0; + + pp_impl_param_t dl = mac->pre_processor_dl; + switch (algo) { + case PROTOCOL__FLEX_SLICE_ALGORITHM__Static: + mac->pre_processor_dl = static_dl_init(mod_id, cc_id); + break; + default: + mac->pre_processor_dl.algorithm = 0; + mac->pre_processor_dl.dl = dlsch_scheduler_pre_processor; + mac->pre_processor_dl.dl_algo.data = mac->pre_processor_dl.dl_algo.setup(); + mac->pre_processor_dl.slices = NULL; + break; + } + if (dl.slices) + dl.destroy(&dl.slices); + if (dl.dl_algo.data) + dl.dl_algo.unset(&dl.dl_algo.data); + return 1; +} + +Protocol__FlexSliceAlgorithm flexran_get_ul_slice_algo(mid_t mod_id) { + if (!mac_is_present(mod_id)) return PROTOCOL__FLEX_SLICE_ALGORITHM__None; + + switch (RC.mac[mod_id]->pre_processor_ul.algorithm) { + case STATIC_SLICING: + return PROTOCOL__FLEX_SLICE_ALGORITHM__Static; + default: + return PROTOCOL__FLEX_SLICE_ALGORITHM__None; + } +} + +int flexran_set_ul_slice_algo(mid_t mod_id, Protocol__FlexSliceAlgorithm algo) { + if (!mac_is_present(mod_id)) return 0; + eNB_MAC_INST *mac = RC.mac[mod_id]; + const int cc_id = 0; + + pp_impl_param_t ul = mac->pre_processor_ul; + switch (algo) { + case PROTOCOL__FLEX_SLICE_ALGORITHM__Static: + mac->pre_processor_ul = static_ul_init(mod_id, cc_id); + break; + default: + mac->pre_processor_ul.algorithm = 0; + mac->pre_processor_ul.ul = ulsch_scheduler_pre_processor; + mac->pre_processor_ul.ul_algo.data = mac->pre_processor_ul.ul_algo.setup(); + mac->pre_processor_ul.slices = NULL; + break; + } + if (ul.slices) + ul.destroy(&ul.slices); + if (ul.ul_algo.data) + ul.ul_algo.unset(&ul.ul_algo.data); + return 1; +} + +int flexran_get_ue_dl_slice_id(mid_t mod_id, mid_t ue_id) { + if (!mac_is_present(mod_id)) return -1; + slice_info_t *slices = RC.mac[mod_id]->pre_processor_dl.slices; + if (!slices) return -1; + const int idx = slices->UE_assoc_slice[ue_id]; + return slices->s[idx]->id; +} + +void flexran_set_ue_dl_slice_id(mid_t mod_id, mid_t ue_id, slice_id_t slice_id) { if (!mac_is_present(mod_id)) return; - - if (flexran_get_mac_ue_crnti(mod_id, ue_id) == NOT_A_RNTI) return; - - if (!flexran_dl_slice_exists(mod_id, slice_idx)) return; - - //RC.mac[mod_id]->UE_info.assoc_dl_slice_idx[ue_id] = slice_idx; + int idx = flexran_find_dl_slice(mod_id, slice_id); + if (idx < 0) return; + pp_impl_param_t *dl = &RC.mac[mod_id]->pre_processor_dl; + dl->move_UE(dl->slices, ue_id, idx); } int flexran_get_ue_ul_slice_id(mid_t mod_id, mid_t ue_id) { if (!mac_is_present(mod_id)) return -1; - - int slice_idx = 0; //RC.mac[mod_id]->UE_info.assoc_ul_slice_idx[ue_id]; - - if (slice_idx >= 0 && slice_idx < RC.mac[mod_id]->slice_info.n_ul) - return RC.mac[mod_id]->slice_info.ul[slice_idx].id; - - return 0; + slice_info_t *slices = RC.mac[mod_id]->pre_processor_ul.slices; + if (!slices) return -1; + const int idx = slices->UE_assoc_slice[ue_id]; + return slices->s[idx]->id; } -void flexran_set_ue_ul_slice_idx(mid_t mod_id, mid_t ue_id, int slice_idx) { +void flexran_set_ue_ul_slice_id(mid_t mod_id, mid_t ue_id, slice_id_t slice_id) { if (!mac_is_present(mod_id)) return; - - if (flexran_get_mac_ue_crnti(mod_id, ue_id) == NOT_A_RNTI) return; - - if (!flexran_ul_slice_exists(mod_id, slice_idx)) return; - - //RC.mac[mod_id]->UE_info.assoc_ul_slice_idx[ue_id] = slice_idx; + int idx = flexran_find_ul_slice(mod_id, slice_id); + if (idx < 0) return; + pp_impl_param_t *ul = &RC.mac[mod_id]->pre_processor_ul; + ul->move_UE(ul->slices, ue_id, idx); } -int flexran_dl_slice_exists(mid_t mod_id, int slice_idx) { - if (!mac_is_present(mod_id)) return -1; - - return slice_idx >= 0 && slice_idx < RC.mac[mod_id]->slice_info.n_dl; +int flexran_create_dl_slice(mid_t mod_id, const Protocol__FlexSlice *s) { + if (!mac_is_present(mod_id)) return 0; + void *params = NULL; + switch (s->params_case) { + case PROTOCOL__FLEX_SLICE__PARAMS_STATIC: + params = malloc(sizeof(static_slice_param_t)); + if (!params) return 0; + ((static_slice_param_t *)params)->posLow = s->static_->poslow; + ((static_slice_param_t *)params)->posHigh = s->static_->poshigh; + break; + default: + break; + } + pp_impl_param_t *dl = &RC.mac[mod_id]->pre_processor_dl; + char *l = s->label ? strdup(s->label) : NULL; + void *algo = &dl->dl_algo; // default scheduler + if (s->scheduler) { + algo = dlsym(NULL, s->scheduler); + if (!algo) { + free(params); + LOG_E(FLEXRAN_AGENT, "cannot locate scheduler '%s'\n", s->scheduler); + return -15; + } + } + return dl->addmod_slice(dl->slices, s->id, l, algo, params); } -int flexran_create_dl_slice(mid_t mod_id, slice_id_t slice_id) { - if (!mac_is_present(mod_id)) return -1; - - int newidx = RC.mac[mod_id]->slice_info.n_dl; - - if (newidx >= MAX_NUM_SLICES) return -1; - - ++RC.mac[mod_id]->slice_info.n_dl; - flexran_set_dl_slice_id(mod_id, newidx, slice_id); - return newidx; +int flexran_remove_dl_slice(mid_t mod_id, const Protocol__FlexSlice *s) { + if (!mac_is_present(mod_id)) return 0; + const int idx = flexran_find_dl_slice(mod_id, s->id); + if (idx < 0) return 0; + pp_impl_param_t *dl = &RC.mac[mod_id]->pre_processor_dl; + return dl->remove_slice(dl->slices, idx); } int flexran_find_dl_slice(mid_t mod_id, slice_id_t slice_id) { if (!mac_is_present(mod_id)) return -1; - - slice_info_t *sli = &RC.mac[mod_id]->slice_info; - int n = sli->n_dl; - - for (int i = 0; i < n; i++) { - if (sli->dl[i].id == slice_id) return i; - } - + slice_info_t *si = RC.mac[mod_id]->pre_processor_dl.slices; + for (int i = 0; i < si->num; ++i) + if (si->s[i]->id == slice_id) + return i; return -1; } -int flexran_remove_dl_slice(mid_t mod_id, int slice_idx) { - if (!mac_is_present(mod_id)) return -1; - - slice_info_t *sli = &RC.mac[mod_id]->slice_info; - - if (sli->n_dl <= 1) return -1; - - if (sli->dl[slice_idx].sched_name) free(sli->dl[slice_idx].sched_name); - - --sli->n_dl; - - /* move last element to the position of the removed one */ - if (slice_idx != sli->n_dl) - memcpy(&sli->dl[slice_idx], &sli->dl[sli->n_dl], sizeof(sli->dl[sli->n_dl])); - - memset(&sli->dl[sli->n_dl], 0, sizeof(sli->dl[sli->n_dl])); - /* all UEs that have been in the old slice are put into slice index 0 */ - //int *assoc_list = RC.mac[mod_id]->UE_info.assoc_dl_slice_idx; - - //for (int i = 0; i < MAX_MOBILES_PER_ENB; ++i) { - // if (assoc_list[i] == slice_idx) - // assoc_list[i] = 0; - //} - - return 1; +void flexran_get_dl_slice(mid_t mod_id, + int slice_idx, + Protocol__FlexSlice *slice, + Protocol__FlexSliceAlgorithm algo) { + if (!mac_is_present(mod_id)) return; + slice_t *s_ = RC.mac[mod_id]->pre_processor_dl.slices->s[slice_idx]; + slice->has_id = 1; + slice->id = s_->id; + slice->label = s_->label; + slice->scheduler = s_->dl_algo.name; + slice->params_case = PROTOCOL__FLEX_SLICE__PARAMS__NOT_SET; + switch (algo) { + case PROTOCOL__FLEX_SLICE_ALGORITHM__Static: + slice->static_ = malloc(sizeof(Protocol__FlexSliceStatic)); + if (!slice->static_) return; + protocol__flex_slice_static__init(slice->static_); + slice->static_->has_poslow = 1; + slice->static_->poslow = ((static_slice_param_t *)s_->algo_data)->posLow; + slice->static_->has_poshigh = 1; + slice->static_->poshigh = ((static_slice_param_t *)s_->algo_data)->posHigh; + slice->params_case = PROTOCOL__FLEX_SLICE__PARAMS_STATIC; + break; + default: + break; + } } int flexran_get_num_dl_slices(mid_t mod_id) { - if (!mac_is_present(mod_id)) return -1; - - return RC.mac[mod_id]->slice_info.n_dl; -} - -int flexran_get_intraslice_sharing_active(mid_t mod_id) { - if (!mac_is_present(mod_id)) return -1; - - return RC.mac[mod_id]->slice_info.intraslice_share_active; -} -void flexran_set_intraslice_sharing_active(mid_t mod_id, int intraslice_active) { - if (!mac_is_present(mod_id)) return; - - RC.mac[mod_id]->slice_info.intraslice_share_active = intraslice_active; -} - -int flexran_get_interslice_sharing_active(mid_t mod_id) { - if (!mac_is_present(mod_id)) return -1; - - return RC.mac[mod_id]->slice_info.interslice_share_active; -} -void flexran_set_interslice_sharing_active(mid_t mod_id, int interslice_active) { - if (!mac_is_present(mod_id)) return; - - RC.mac[mod_id]->slice_info.interslice_share_active = interslice_active; -} - -slice_id_t flexran_get_dl_slice_id(mid_t mod_id, int slice_idx) { - if (!mac_is_present(mod_id)) return -1; - - return RC.mac[mod_id]->slice_info.dl[slice_idx].id; -} -void flexran_set_dl_slice_id(mid_t mod_id, int slice_idx, slice_id_t slice_id) { - if (!mac_is_present(mod_id)) return; - - RC.mac[mod_id]->slice_info.dl[slice_idx].id = slice_id; -} - -int flexran_get_dl_slice_percentage(mid_t mod_id, int slice_idx) { - if (!mac_is_present(mod_id)) return -1; - - return RC.mac[mod_id]->slice_info.dl[slice_idx].pct * 100.0f; -} -void flexran_set_dl_slice_percentage(mid_t mod_id, int slice_idx, int percentage) { - if (!mac_is_present(mod_id)) return; - - RC.mac[mod_id]->slice_info.dl[slice_idx].pct = percentage / 100.0f; -} - -int flexran_get_dl_slice_isolation(mid_t mod_id, int slice_idx) { - if (!mac_is_present(mod_id)) return -1; - - return RC.mac[mod_id]->slice_info.dl[slice_idx].isol; -} -void flexran_set_dl_slice_isolation(mid_t mod_id, int slice_idx, int is_isolated) { - if (!mac_is_present(mod_id)) return; - - RC.mac[mod_id]->slice_info.dl[slice_idx].isol = is_isolated; -} - -int flexran_get_dl_slice_priority(mid_t mod_id, int slice_idx) { - if (!mac_is_present(mod_id)) return -1; - - return RC.mac[mod_id]->slice_info.dl[slice_idx].prio; -} -void flexran_set_dl_slice_priority(mid_t mod_id, int slice_idx, int priority) { - if (!mac_is_present(mod_id)) return; - - RC.mac[mod_id]->slice_info.dl[slice_idx].prio = priority; -} - -int flexran_get_dl_slice_position_low(mid_t mod_id, int slice_idx) { - if (!mac_is_present(mod_id)) return -1; - - return RC.mac[mod_id]->slice_info.dl[slice_idx].pos_low; -} -void flexran_set_dl_slice_position_low(mid_t mod_id, int slice_idx, int poslow) { - if (!mac_is_present(mod_id)) return; - - RC.mac[mod_id]->slice_info.dl[slice_idx].pos_low = poslow; -} - -int flexran_get_dl_slice_position_high(mid_t mod_id, int slice_idx) { - if (!mac_is_present(mod_id)) return -1; - - return RC.mac[mod_id]->slice_info.dl[slice_idx].pos_high; -} -void flexran_set_dl_slice_position_high(mid_t mod_id, int slice_idx, int poshigh) { - if (!mac_is_present(mod_id)) return; - - RC.mac[mod_id]->slice_info.dl[slice_idx].pos_high = poshigh; -} - -int flexran_get_dl_slice_maxmcs(mid_t mod_id, int slice_idx) { - if (!mac_is_present(mod_id)) return -1; - - return RC.mac[mod_id]->slice_info.dl[slice_idx].maxmcs; -} -void flexran_set_dl_slice_maxmcs(mid_t mod_id, int slice_idx, int maxmcs) { - if (!mac_is_present(mod_id)) return; - - RC.mac[mod_id]->slice_info.dl[slice_idx].maxmcs = maxmcs; -} - -int flexran_get_dl_slice_sorting(mid_t mod_id, int slice_idx, Protocol__FlexDlSorting **sorting_list) { - if (!mac_is_present(mod_id)) return -1; - - if (!(*sorting_list)) { - *sorting_list = calloc(CR_NUM, sizeof(Protocol__FlexDlSorting)); - - if (!(*sorting_list)) return -1; - } - - uint32_t policy = RC.mac[mod_id]->slice_info.dl[slice_idx].sorting; - - for (int i = 0; i < CR_NUM; i++) { - switch (policy >> 4 * (CR_NUM - 1 - i) & 0xF) { - case CR_ROUND: - (*sorting_list)[i] = PROTOCOL__FLEX_DL_SORTING__CR_ROUND; - break; - - case CR_SRB12: - (*sorting_list)[i] = PROTOCOL__FLEX_DL_SORTING__CR_SRB12; - break; - - case CR_HOL: - (*sorting_list)[i] = PROTOCOL__FLEX_DL_SORTING__CR_HOL; - break; - - case CR_LC: - (*sorting_list)[i] = PROTOCOL__FLEX_DL_SORTING__CR_LC; - break; - - case CR_CQI: - (*sorting_list)[i] = PROTOCOL__FLEX_DL_SORTING__CR_CQI; - break; - - case CR_LCP: - (*sorting_list)[i] = PROTOCOL__FLEX_DL_SORTING__CR_LCP; - break; - - default: - /* this should not happen, but a "default" */ - (*sorting_list)[i] = PROTOCOL__FLEX_DL_SORTING__CR_ROUND; - break; - } - } - - return CR_NUM; -} -void flexran_set_dl_slice_sorting(mid_t mod_id, int slice_idx, Protocol__FlexDlSorting *sorting_list, int n) { - if (!mac_is_present(mod_id)) return; - - uint32_t policy = 0; - - for (int i = 0; i < n && i < CR_NUM; i++) { - switch (sorting_list[i]) { - case PROTOCOL__FLEX_DL_SORTING__CR_ROUND: - policy = policy << 4 | CR_ROUND; - break; - - case PROTOCOL__FLEX_DL_SORTING__CR_SRB12: - policy = policy << 4 | CR_SRB12; - break; - - case PROTOCOL__FLEX_DL_SORTING__CR_HOL: - policy = policy << 4 | CR_HOL; - break; - - case PROTOCOL__FLEX_DL_SORTING__CR_LC: - policy = policy << 4 | CR_LC; - break; - - case PROTOCOL__FLEX_DL_SORTING__CR_CQI: - policy = policy << 4 | CR_CQI; - break; - - case PROTOCOL__FLEX_DL_SORTING__CR_LCP: - policy = policy << 4 | CR_LCP; - break; - - default: /* suppresses warnings */ - policy = policy << 4 | CR_ROUND; - break; - } - } - - /* fill up with 0 == CR_ROUND */ - if (CR_NUM > n) policy = policy << 4 * (CR_NUM - n); - - RC.mac[mod_id]->slice_info.dl[slice_idx].sorting = policy; -} - -Protocol__FlexDlAccountingPolicy flexran_get_dl_slice_accounting_policy(mid_t mod_id, int slice_idx) { - if (!mac_is_present(mod_id)) return PROTOCOL__FLEX_DL_ACCOUNTING_POLICY__POL_FAIR; - - switch (RC.mac[mod_id]->slice_info.dl[slice_idx].accounting) { - case POL_FAIR: - return PROTOCOL__FLEX_DL_ACCOUNTING_POLICY__POL_FAIR; - - case POL_GREEDY: - return PROTOCOL__FLEX_DL_ACCOUNTING_POLICY__POL_GREEDY; - - default: - return PROTOCOL__FLEX_DL_ACCOUNTING_POLICY__POL_FAIR; - } -} -void flexran_set_dl_slice_accounting_policy(mid_t mod_id, int slice_idx, Protocol__FlexDlAccountingPolicy accounting) { - if (!mac_is_present(mod_id)) return; - - switch (accounting) { - case PROTOCOL__FLEX_DL_ACCOUNTING_POLICY__POL_FAIR: - RC.mac[mod_id]->slice_info.dl[slice_idx].accounting = POL_FAIR; - return; - - case PROTOCOL__FLEX_DL_ACCOUNTING_POLICY__POL_GREEDY: - RC.mac[mod_id]->slice_info.dl[slice_idx].accounting = POL_GREEDY; - return; - - default: - RC.mac[mod_id]->slice_info.dl[slice_idx].accounting = POL_FAIR; - return; - } -} - -char *flexran_get_dl_slice_scheduler(mid_t mod_id, int slice_idx) { - if (!mac_is_present(mod_id)) return NULL; - - return RC.mac[mod_id]->slice_info.dl[slice_idx].sched_name; -} -int flexran_set_dl_slice_scheduler(mid_t mod_id, int slice_idx, char *name) { if (!mac_is_present(mod_id)) return 0; - - if (RC.mac[mod_id]->slice_info.dl[slice_idx].sched_name) - free(RC.mac[mod_id]->slice_info.dl[slice_idx].sched_name); - - RC.mac[mod_id]->slice_info.dl[slice_idx].sched_name = strdup(name); - RC.mac[mod_id]->slice_info.dl[slice_idx].sched_cb = dlsym(NULL, name); - return RC.mac[mod_id]->slice_info.dl[slice_idx].sched_cb != NULL; + if (!RC.mac[mod_id]->pre_processor_dl.slices) return 0; + return RC.mac[mod_id]->pre_processor_dl.slices->num; } -int flexran_create_ul_slice(mid_t mod_id, slice_id_t slice_id) { +int flexran_create_ul_slice(mid_t mod_id, const Protocol__FlexSlice *s) { if (!mac_is_present(mod_id)) return -1; + void *params = NULL; + switch (s->params_case) { + case PROTOCOL__FLEX_SLICE__PARAMS_STATIC: + params = malloc(sizeof(static_slice_param_t)); + if (!params) return 0; + ((static_slice_param_t *)params)->posLow = s->static_->poslow; + ((static_slice_param_t *)params)->posHigh = s->static_->poshigh; + break; + default: + break; + } + pp_impl_param_t *ul = &RC.mac[mod_id]->pre_processor_ul; + char *l = s->label ? strdup(s->label) : NULL; + void *algo = &ul->ul_algo; // default scheduler + if (s->scheduler) { + algo = dlsym(NULL, s->scheduler); + if (!algo) { + free(params); + LOG_E(FLEXRAN_AGENT, "cannot locate scheduler '%s'\n", s->scheduler); + return -15; + } + } + return ul->addmod_slice(ul->slices, s->id, l, algo, params); +} - int newidx = RC.mac[mod_id]->slice_info.n_ul; - - if (newidx >= MAX_NUM_SLICES) return -1; - - ++RC.mac[mod_id]->slice_info.n_ul; - flexran_set_ul_slice_id(mod_id, newidx, slice_id); - return newidx; +int flexran_remove_ul_slice(mid_t mod_id, const Protocol__FlexSlice *s) { + if (!mac_is_present(mod_id)) return 0; + const int idx = flexran_find_ul_slice(mod_id, s->id); + if (idx < 0) return 0; + pp_impl_param_t *ul = &RC.mac[mod_id]->pre_processor_ul; + return ul->remove_slice(ul->slices, idx); } int flexran_find_ul_slice(mid_t mod_id, slice_id_t slice_id) { if (!mac_is_present(mod_id)) return -1; - - slice_info_t *sli = &RC.mac[mod_id]->slice_info; - int n = sli->n_ul; - - for (int i = 0; i < n; i++) { - if (sli->ul[i].id == slice_id) return i; - } - + slice_info_t *si = RC.mac[mod_id]->pre_processor_ul.slices; + for (int i = 0; i < si->num; ++i) + if (si->s[i]->id == slice_id) + return i; return -1; } -int flexran_remove_ul_slice(mid_t mod_id, int slice_idx) { - if (!mac_is_present(mod_id)) return -1; +void flexran_get_ul_slice(mid_t mod_id, + int slice_idx, + Protocol__FlexSlice *slice, + Protocol__FlexSliceAlgorithm algo) { + if (!mac_is_present(mod_id)) return; + slice_t *s_ = RC.mac[mod_id]->pre_processor_ul.slices->s[slice_idx]; + slice->has_id = 1; + slice->id = s_->id; + slice->label = s_->label; + slice->scheduler = s_->ul_algo.name; + slice->params_case = PROTOCOL__FLEX_SLICE__PARAMS__NOT_SET; + switch (algo) { + case PROTOCOL__FLEX_SLICE_ALGORITHM__Static: + slice->static_ = malloc(sizeof(Protocol__FlexSliceStatic)); + if (!slice->static_) return; + protocol__flex_slice_static__init(slice->static_); + slice->static_->has_poslow = 1; + slice->static_->poslow = ((static_slice_param_t *)s_->algo_data)->posLow; + slice->static_->has_poshigh = 1; + slice->static_->poshigh = ((static_slice_param_t *)s_->algo_data)->posHigh; + slice->params_case = PROTOCOL__FLEX_SLICE__PARAMS_STATIC; + break; + default: + break; + } - slice_info_t *sli = &RC.mac[mod_id]->slice_info; - - if (sli->n_ul <= 1) return -1; - - if (sli->ul[slice_idx].sched_name) free(sli->ul[slice_idx].sched_name); - - --sli->n_ul; - - /* move last element to the position of the removed one */ - if (slice_idx != sli->n_ul) - memcpy(&sli->ul[slice_idx], &sli->ul[sli->n_ul], sizeof(sli->ul[sli->n_ul])); - - memset(&sli->ul[sli->n_ul], 0, sizeof(sli->ul[sli->n_ul])); - /* all UEs that have been in the old slice are put into slice index 0 */ - //int *assoc_list = RC.mac[mod_id]->UE_info.assoc_ul_slice_idx; - - //for (int i = 0; i < MAX_MOBILES_PER_ENB; ++i) { - // if (assoc_list[i] == slice_idx) - // assoc_list[i] = 0; - //} - - return sli->n_ul; } int flexran_get_num_ul_slices(mid_t mod_id) { - if (!mac_is_present(mod_id)) return -1; - - return RC.mac[mod_id]->slice_info.n_ul; -} - -int flexran_ul_slice_exists(mid_t mod_id, int slice_idx) { - if (!mac_is_present(mod_id)) return -1; - - return slice_idx >= 0 && slice_idx < RC.mac[mod_id]->slice_info.n_ul; -} - -slice_id_t flexran_get_ul_slice_id(mid_t mod_id, int slice_idx) { - if (!mac_is_present(mod_id)) return -1; - - return RC.mac[mod_id]->slice_info.ul[slice_idx].id; -} -void flexran_set_ul_slice_id(mid_t mod_id, int slice_idx, slice_id_t slice_id) { - if (!mac_is_present(mod_id)) return; - - RC.mac[mod_id]->slice_info.ul[slice_idx].id = slice_id; -} - -int flexran_get_ul_slice_percentage(mid_t mod_id, int slice_idx) { - if (!mac_is_present(mod_id)) return -1; - - return RC.mac[mod_id]->slice_info.ul[slice_idx].pct * 100.0f; -} -void flexran_set_ul_slice_percentage(mid_t mod_id, int slice_idx, int percentage) { - if (!mac_is_present(mod_id)) return; - - RC.mac[mod_id]->slice_info.ul[slice_idx].pct = percentage / 100.0f; -} - -int flexran_get_ul_slice_first_rb(mid_t mod_id, int slice_idx) { - if (!mac_is_present(mod_id)) return -1; - - return RC.mac[mod_id]->slice_info.ul[slice_idx].first_rb; -} - -void flexran_set_ul_slice_first_rb(mid_t mod_id, int slice_idx, int first_rb) { - if (!mac_is_present(mod_id)) return; - - RC.mac[mod_id]->slice_info.ul[slice_idx].first_rb = first_rb; -} - -int flexran_get_ul_slice_maxmcs(mid_t mod_id, int slice_idx) { - if (!mac_is_present(mod_id)) return -1; - - return RC.mac[mod_id]->slice_info.ul[slice_idx].maxmcs; -} -void flexran_set_ul_slice_maxmcs(mid_t mod_id, int slice_idx, int maxmcs) { - if (!mac_is_present(mod_id)) return; - - RC.mac[mod_id]->slice_info.ul[slice_idx].maxmcs = maxmcs; -} - -char *flexran_get_ul_slice_scheduler(mid_t mod_id, int slice_idx) { - if (!mac_is_present(mod_id)) return NULL; - - return RC.mac[mod_id]->slice_info.ul[slice_idx].sched_name; -} -int flexran_set_ul_slice_scheduler(mid_t mod_id, int slice_idx, char *name) { if (!mac_is_present(mod_id)) return 0; + if (!RC.mac[mod_id]->pre_processor_ul.slices) return 0; + return RC.mac[mod_id]->pre_processor_ul.slices->num; +} - if (RC.mac[mod_id]->slice_info.ul[slice_idx].sched_name) - free(RC.mac[mod_id]->slice_info.ul[slice_idx].sched_name); +char *flexran_get_dl_scheduler_name(mid_t mod_id) { + if (!mac_is_present(mod_id)) return NULL; + return RC.mac[mod_id]->pre_processor_dl.dl_algo.name; +} - RC.mac[mod_id]->slice_info.ul[slice_idx].sched_name = strdup(name); - RC.mac[mod_id]->slice_info.ul[slice_idx].sched_cb = dlsym(NULL, name); - return RC.mac[mod_id]->slice_info.ul[slice_idx].sched_cb != NULL; +int flexran_set_dl_scheduler(mid_t mod_id, char *sched) { + if (!mac_is_present(mod_id)) return -1; + void *d = dlsym(NULL, sched); + if (!d) return -2; + pp_impl_param_t *dl_pp = &RC.mac[mod_id]->pre_processor_dl; + dl_pp->dl_algo.unset(&dl_pp->dl_algo.data); + dl_pp->dl_algo = *(default_sched_dl_algo_t *) d; + dl_pp->dl_algo.data = dl_pp->dl_algo.setup(); + return 0; +} + +char *flexran_get_ul_scheduler_name(mid_t mod_id) { + if (!mac_is_present(mod_id)) return NULL; + return RC.mac[mod_id]->pre_processor_ul.ul_algo.name; +} + +int flexran_set_ul_scheduler(mid_t mod_id, char *sched) { + if (!mac_is_present(mod_id)) return -1; + void *d = dlsym(NULL, sched); + if (!d) return -2; + pp_impl_param_t *ul_pp = &RC.mac[mod_id]->pre_processor_ul; + ul_pp->ul_algo.unset(&ul_pp->ul_algo.data); + ul_pp->ul_algo = *(default_sched_ul_algo_t *) d; + ul_pp->ul_algo.data = ul_pp->ul_algo.setup(); + return 0; } /************************** S1AP **************************/ @@ -3634,6 +3457,168 @@ int flexran_get_s1ap_mme_conf(mid_t mod_id, mid_t mme_index, Protocol__FlexS1apM return 0; } +int flexran_add_s1ap_mme(mid_t mod_id, size_t n_mme, char **mme_ipv4) { + s1ap_eNB_instance_t *s1ap = s1ap_eNB_get_instance(mod_id); + if (!s1ap) return -1; + if (!rrc_is_present(mod_id)) return -2; + + /* Reconstruct S1AP_REGISTER_ENB_REQ */ + MessageDef *m = itti_alloc_new_message(TASK_FLEXRAN_AGENT, S1AP_REGISTER_ENB_REQ); + RCconfig_S1(m, mod_id); + + const int CC_id = 0; + eNB_RRC_INST *rrc = RC.rrc[CC_id]; + RrcConfigurationReq *conf = &rrc->configuration; + S1AP_REGISTER_ENB_REQ(m).num_plmn = conf->num_plmn; + for (int i = 0; i < conf->num_plmn; ++i) { + S1AP_REGISTER_ENB_REQ(m).mcc[i] = conf->mcc[i]; + S1AP_REGISTER_ENB_REQ(m).mnc[i] = conf->mnc[i]; + S1AP_REGISTER_ENB_REQ(m).mnc_digit_length[i] = conf->mnc_digit_length[i]; + } + + /* reconstruct MME list, it might have been updated since initial + * configuration */ + S1AP_REGISTER_ENB_REQ(m).nb_mme = 0; + struct s1ap_eNB_mme_data_s *mme = NULL; + RB_FOREACH(mme, s1ap_mme_map, &s1ap->s1ap_mme_head) { + const int n = S1AP_REGISTER_ENB_REQ(m).nb_mme; + S1AP_REGISTER_ENB_REQ(m).mme_ip_address[n].ipv4 = mme->mme_s1_ip.ipv4; + strcpy(S1AP_REGISTER_ENB_REQ(m).mme_ip_address[n].ipv4_address, mme->mme_s1_ip.ipv4_address); + S1AP_REGISTER_ENB_REQ(m).mme_ip_address[n].ipv6 = mme->mme_s1_ip.ipv6; + strcpy(S1AP_REGISTER_ENB_REQ(m).mme_ip_address[n].ipv6_address, mme->mme_s1_ip.ipv6_address); + S1AP_REGISTER_ENB_REQ(m).broadcast_plmn_num[n] = mme->broadcast_plmn_num; + for (int i = 0; i < mme->broadcast_plmn_num; ++i) + S1AP_REGISTER_ENB_REQ(m).broadcast_plmn_index[n][i] = mme->broadcast_plmn_index[i]; + S1AP_REGISTER_ENB_REQ(m).nb_mme += 1; + } + + if (S1AP_REGISTER_ENB_REQ(m).nb_mme + n_mme > S1AP_MAX_NB_MME_IP_ADDRESS) + return -1; + + for (int i = 0; i < n_mme; ++i) { + const int n = S1AP_REGISTER_ENB_REQ(m).nb_mme; + strcpy(S1AP_REGISTER_ENB_REQ(m).mme_ip_address[n].ipv4_address, mme_ipv4[0]); + S1AP_REGISTER_ENB_REQ(m).mme_ip_address[n].ipv4 = 1; + S1AP_REGISTER_ENB_REQ(m).mme_ip_address[n].ipv6 = 0; + S1AP_REGISTER_ENB_REQ(m).broadcast_plmn_num[n] = S1AP_REGISTER_ENB_REQ(m).num_plmn; + for (int i = 0; i < S1AP_REGISTER_ENB_REQ(m).num_plmn; ++i) + S1AP_REGISTER_ENB_REQ(m).broadcast_plmn_index[n][i] = i; + S1AP_REGISTER_ENB_REQ(m).nb_mme += 1; + } + + itti_send_msg_to_task (TASK_S1AP, ENB_MODULE_ID_TO_INSTANCE(mod_id), m); + + return 0; +} + +int flexran_remove_s1ap_mme(mid_t mod_id, size_t n_mme, char **mme_ipv4) { + s1ap_eNB_instance_t *s1ap = s1ap_eNB_get_instance(mod_id); + if (!s1ap) return -1; + struct s1ap_eNB_mme_data_s *mme = NULL; + RB_FOREACH(mme, s1ap_mme_map, &s1ap->s1ap_mme_head) { + if (mme->mme_s1_ip.ipv4 + && strncmp(mme->mme_s1_ip.ipv4_address, mme_ipv4[0], 16) == 0) + break; + } + if (!mme) + return -2; + + MessageDef *m = itti_alloc_new_message(TASK_FLEXRAN_AGENT, SCTP_CLOSE_ASSOCIATION); + SCTP_CLOSE_ASSOCIATION(m).assoc_id = mme->assoc_id; + itti_send_msg_to_task (TASK_SCTP, ENB_MODULE_ID_TO_INSTANCE(mod_id), m); + + switch (mme->state) { + case S1AP_ENB_STATE_WAITING: + s1ap->s1ap_mme_nb -= 1; + if (s1ap->s1ap_mme_pending_nb > 0) + s1ap->s1ap_mme_pending_nb -= 1; + break; + case S1AP_ENB_STATE_CONNECTED: + case S1AP_ENB_OVERLOAD: /* I am not sure the decrements are right here */ + s1ap->s1ap_mme_nb -= 1; + s1ap->s1ap_mme_associated_nb -= 1; + break; + case S1AP_ENB_STATE_DISCONNECTED: + default: + break; + } + RB_REMOVE(s1ap_mme_map, &s1ap->s1ap_mme_head, mme); + + return 0; +} + +int flexran_set_new_plmn_id(mid_t mod_id, int CC_id, size_t n_plmn, Protocol__FlexPlmn **plmn_id) { + if (!rrc_is_present(mod_id)) + return -1; + s1ap_eNB_instance_t *s1ap = s1ap_eNB_get_instance(mod_id); + if (!s1ap) + return -2; + + eNB_RRC_INST *rrc = RC.rrc[CC_id]; + RrcConfigurationReq *conf = &rrc->configuration; + + uint8_t num_plmn_old = conf->num_plmn; + uint16_t mcc[PLMN_LIST_MAX_SIZE]; + uint16_t mnc[PLMN_LIST_MAX_SIZE]; + uint8_t mnc_digit_length[PLMN_LIST_MAX_SIZE]; + for (int i = 0; i < num_plmn_old; ++i) { + mcc[i] = conf->mcc[i]; + mnc[i] = conf->mnc[i]; + mnc_digit_length[i] = conf->mnc_digit_length[i]; + } + + conf->num_plmn = (uint8_t) n_plmn; + for (int i = 0; i < conf->num_plmn; ++i) { + conf->mcc[i] = plmn_id[i]->mcc; + conf->mnc[i] = plmn_id[i]->mnc; + conf->mnc_digit_length[i] = plmn_id[i]->mnc_length; + } + + rrc_eNB_carrier_data_t *carrier = &rrc->carrier[CC_id]; + extern uint8_t do_SIB1(rrc_eNB_carrier_data_t *carrier, + int Mod_id, + int CC_id, + BOOLEAN_t brOption, + RrcConfigurationReq *configuration); + carrier->sizeof_SIB1 = do_SIB1(carrier, mod_id, CC_id, FALSE, conf); + if (carrier->sizeof_SIB1 < 0) + return -1337; /* SIB1 encoding failed, hell will probably break loose */ + + s1ap->num_plmn = (uint8_t) n_plmn; + for (int i = 0; i < conf->num_plmn; ++i) { + s1ap->mcc[i] = plmn_id[i]->mcc; + s1ap->mnc[i] = plmn_id[i]->mnc; + s1ap->mnc_digit_length[i] = plmn_id[i]->mnc_length; + } + + int bpn_failed = 0; + struct s1ap_eNB_mme_data_s *mme = NULL; + RB_FOREACH(mme, s1ap_mme_map, &s1ap->s1ap_mme_head) { + for (int i = 0; i < mme->broadcast_plmn_num; ++i) { + /* search the new index and update. If we don't find, we count this using + * bpn_failed to now how many broadcast_plmns could not be updated */ + int idx = mme->broadcast_plmn_index[i]; + int omcc = mcc[idx]; + int omnc = mnc[idx]; + int omncl = mnc_digit_length[idx]; + int j = 0; + for (j = 0; j < s1ap->num_plmn; ++j) { + if (s1ap->mcc[j] == omcc + && s1ap->mnc[j] == omnc + && s1ap->mnc_digit_length[j] == omncl) { + mme->broadcast_plmn_index[i] = j; + break; + } + } + if (j == s1ap->num_plmn) /* could not find the old PLMN in the new ones */ + bpn_failed++; + } + } + if (bpn_failed > 0) + return -10000 - bpn_failed; + return 0; +} + int flexran_get_s1ap_ue(mid_t mod_id, rnti_t rnti, Protocol__FlexS1apUe * ue_conf){ if (!rrc_is_present(mod_id)) return -1; s1ap_eNB_instance_t *s1ap = s1ap_eNB_get_instance(mod_id); @@ -3644,7 +3629,7 @@ int flexran_get_s1ap_ue(mid_t mod_id, rnti_t rnti, Protocol__FlexS1apUe * ue_con RB_FOREACH(ue, s1ap_ue_map, &s1ap->s1ap_ue_head){ if (ue->eNB_ue_s1ap_id == enb_ue_s1ap_id) break; } - if (ue == NULL) return -1; + if (!ue) return 0; // UE does not exist: it might be connected but CN did not answer if (ue->mme_ref->mme_s1_ip.ipv4) ue_conf->mme_s1_ip = (char*) &ue->mme_ref->mme_s1_ip.ipv4_address[0]; diff --git a/openair2/ENB_APP/flexran_agent_ran_api.h b/openair2/ENB_APP/flexran_agent_ran_api.h index ce32883852..2d8a86f7d0 100644 --- a/openair2/ENB_APP/flexran_agent_ran_api.h +++ b/openair2/ENB_APP/flexran_agent_ran_api.h @@ -656,156 +656,66 @@ int flexran_agent_rrc_gtp_get_teid_sgw(mid_t mod_id, rnti_t rnti, int index); uint32_t flexran_get_rrc_enb_ue_s1ap_id(mid_t mod_id, rnti_t rnti); /************************** Slice configuration **************************/ +/* Get the currently active DL slicing algorithm */ +Protocol__FlexSliceAlgorithm flexran_get_dl_slice_algo(mid_t mod_id); +/* Set the active DL slicing algorithm */ +int flexran_set_dl_slice_algo(mid_t mod_id, Protocol__FlexSliceAlgorithm algo); + +/* Get the currently active UL slicing algorithm */ +Protocol__FlexSliceAlgorithm flexran_get_ul_slice_algo(mid_t mod_id); +/* Set the active UL slicing algorithm */ +int flexran_set_ul_slice_algo(mid_t mod_id, Protocol__FlexSliceAlgorithm algo); /* Get the DL slice ID for a UE */ int flexran_get_ue_dl_slice_id(mid_t mod_id, mid_t ue_id); - -/* Set the DL slice index(!) for a UE */ -void flexran_set_ue_dl_slice_idx(mid_t mod_id, mid_t ue_id, int slice_idx); +/* Set the DL slice for a UE */ +void flexran_set_ue_dl_slice_id(mid_t mod_id, mid_t ue_id, slice_id_t slice_id); /* Get the UL slice ID for a UE */ int flexran_get_ue_ul_slice_id(mid_t mod_id, mid_t ue_id); +/* Set the UL slice for a UE */ +void flexran_set_ue_ul_slice_id(mid_t mod_id, mid_t ue_id, slice_id_t slice_id); -/* Set the UL slice index(!) for a UE */ -void flexran_set_ue_ul_slice_idx(mid_t mod_id, mid_t ue_id, int slice_idx); - -/* Whether intraslice sharing is active, return boolean */ -int flexran_get_intraslice_sharing_active(mid_t mod_id); -/* Set whether intraslice sharing is active */ -void flexran_set_intraslice_sharing_active(mid_t mod_id, int intraslice_active); - -/* Whether intraslice sharing is active, return boolean */ -int flexran_get_interslice_sharing_active(mid_t mod_id); -/* Set whether intraslice sharing is active */ -void flexran_set_interslice_sharing_active(mid_t mod_id, int interslice_active); +/* Create slice in DL, returns the new slice index */ +int flexran_create_dl_slice(mid_t mod_id, const Protocol__FlexSlice *s); +/* Remove slice in DL, returns new number of slices or -1 on error */ +int flexran_remove_dl_slice(mid_t mod_id, const Protocol__FlexSlice *s); +/* Finds slice in DL with given slice_id and returns slice index */ +int flexran_find_dl_slice(mid_t mod_id, slice_id_t slice_id); +/* Return the parameters of slice at index slice_idx */ +void flexran_get_dl_slice(mid_t mod_id, + int slice_idx, + Protocol__FlexSlice *slice, + Protocol__FlexSliceAlgorithm algo); /* Get the number of slices in DL */ int flexran_get_num_dl_slices(mid_t mod_id); -/* Query slice existence in DL. Return is boolean value */ -int flexran_dl_slice_exists(mid_t mod_id, int slice_idx); +/* Create slice in UL, returns the new slice index */ +int flexran_create_ul_slice(mid_t mod_id, const Protocol__FlexSlice *s); +/* Remove slice in UL */ +int flexran_remove_ul_slice(mid_t mod_id, const Protocol__FlexSlice *s); -/* Create slice in DL, returns the new slice index */ -int flexran_create_dl_slice(mid_t mod_id, slice_id_t slice_id); /* Finds slice in DL with given slice_id and returns slice index */ -int flexran_find_dl_slice(mid_t mod_id, slice_id_t slice_id); -/* Remove slice in DL, returns new number of slices or -1 on error */ -int flexran_remove_dl_slice(mid_t mod_id, int slice_idx); - -/* Get the ID of a slice in DL */ -slice_id_t flexran_get_dl_slice_id(mid_t mod_id, int slice_idx); -/* Set the ID of a slice in DL */ -void flexran_set_dl_slice_id(mid_t mod_id, int slice_idx, slice_id_t slice_id); - -/* Get the RB share a slice in DL, value 0-100 */ -int flexran_get_dl_slice_percentage(mid_t mod_id, int slice_idx); -/* Set the RB share a slice in DL, value 0-100 */ -void flexran_set_dl_slice_percentage(mid_t mod_id, int slice_idx, int percentage); - -/* Whether a slice in DL is isolated */ -int flexran_get_dl_slice_isolation(mid_t mod_id, int slice_idx); -/* Set whether a slice in DL is isolated */ -void flexran_set_dl_slice_isolation(mid_t mod_id, int slice_idx, int is_isolated); - -/* Get the priority of a slice in DL */ -int flexran_get_dl_slice_priority(mid_t mod_id, int slice_idx); -/* Get the priority of a slice in DL */ -void flexran_set_dl_slice_priority(mid_t mod_id, int slice_idx, int priority); - -/* Get the lower end of the frequency range for the slice positioning in DL */ -int flexran_get_dl_slice_position_low(mid_t mod_id, int slice_idx); -/* Set the lower end of the frequency range for the slice positioning in DL */ -void flexran_set_dl_slice_position_low(mid_t mod_id, int slice_idx, int poslow); - -/* Get the higher end of the frequency range for the slice positioning in DL */ -int flexran_get_dl_slice_position_high(mid_t mod_id, int slice_idx); -/* Set the higher end of the frequency range for the slice positioning in DL */ -void flexran_set_dl_slice_position_high(mid_t mod_id, int slice_idx, int poshigh); - -/* Get the maximum MCS for slice in DL */ -int flexran_get_dl_slice_maxmcs(mid_t mod_id, int slice_idx); -/* Set the maximum MCS for slice in DL */ -void flexran_set_dl_slice_maxmcs(mid_t mod_id, int slice_idx, int maxmcs); - -/* Get the sorting order of a slice in DL, return value is number of elements - * in sorting_list */ -int flexran_get_dl_slice_sorting(mid_t mod_id, int slice_idx, Protocol__FlexDlSorting **sorting_list); -/* Set the sorting order of a slice in DL */ -void flexran_set_dl_slice_sorting(mid_t mod_id, int slice_idx, Protocol__FlexDlSorting *sorting_list, int n); - -/* Get the accounting policy for a slice in DL */ -Protocol__FlexDlAccountingPolicy flexran_get_dl_slice_accounting_policy(mid_t mod_id, int slice_idx); -/* Set the accounting policy for a slice in DL */ -void flexran_set_dl_slice_accounting_policy(mid_t mod_id, int slice_idx, Protocol__FlexDlAccountingPolicy accounting); - -/* Get the scheduler name for a slice in DL */ -char *flexran_get_dl_slice_scheduler(mid_t mod_id, int slice_idx); -/* Set the scheduler name for a slice in DL */ -int flexran_set_dl_slice_scheduler(mid_t mod_id, int slice_idx, char *name); - +int flexran_find_ul_slice(mid_t mod_id, slice_id_t slice_id); +/* Return the parameters of slice at index slice_idx */ +void flexran_get_ul_slice(mid_t mod_id, + int slice_idx, + Protocol__FlexSlice *slice, + Protocol__FlexSliceAlgorithm algo); /* Get the number of slices in UL */ int flexran_get_num_ul_slices(mid_t mod_id); -/* Query slice existence in UL. Return is boolean value */ -int flexran_ul_slice_exists(mid_t mod_id, int slice_idx); +/* Get the name of/Set the DL scheduling algorithm. If slicing is active, this + * corresponds to the default algorithm for slices, otherwise the currently + * used one. */ +char *flexran_get_dl_scheduler_name(mid_t mod_id); +int flexran_set_dl_scheduler(mid_t mod_id, char *sched); -/* Create slice in UL, returns the new slice index */ -int flexran_create_ul_slice(mid_t mod_id, slice_id_t slice_id); -/* Finds slice in UL with given slice_id and returns slice index */ -int flexran_find_ul_slice(mid_t mod_id, slice_id_t slice_id); -/* Remove slice in UL */ -int flexran_remove_ul_slice(mid_t mod_id, int slice_idx); - -/* Get the ID of a slice in UL */ -slice_id_t flexran_get_ul_slice_id(mid_t mod_id, int slice_idx); -/* Set the ID of a slice in UL */ -void flexran_set_ul_slice_id(mid_t mod_id, int slice_idx, slice_id_t slice_id); - -/* Get the RB share a slice in UL, value 0-100 */ -int flexran_get_ul_slice_percentage(mid_t mod_id, int slice_idx); -/* Set the RB share a slice in UL, value 0-100 */ -void flexran_set_ul_slice_percentage(mid_t mod_id, int slice_idx, int percentage); - -/* TODO Whether a slice in UL is isolated */ -/*int flexran_get_ul_slice_isolation(mid_t mod_id, int slice_idx);*/ -/* TODO Set whether a slice in UL is isolated */ -/*void flexran_set_ul_slice_isolation(mid_t mod_id, int slice_idx, int is_isolated);*/ - -/* TODO Get the priority of a slice in UL */ -/*int flexran_get_ul_slice_priority(mid_t mod_id, int slice_idx);*/ -/* TODO Set the priority of a slice in UL */ -/*void flexran_set_ul_slice_priority(mid_t mod_id, int slice_idx, int priority);*/ - -/* Get the first RB for allocation in a slice in UL */ -int flexran_get_ul_slice_first_rb(mid_t mod_id, int slice_idx); -/* Set the first RB for allocation in a slice in UL */ -void flexran_set_ul_slice_first_rb(mid_t mod_id, int slice_idx, int first_rb); - -/* TODO Get the number of RB for the allocation in a slice in UL */ -/*int flexran_get_ul_slice_length_rb(mid_t mod_id, int slice_idx);*/ -/* TODO Set the of number of RB for the allocation in a slice in UL */ -/*void flexran_set_ul_slice_length_rb(mid_t mod_id, int slice_idx, int poshigh);*/ - -/* Get the maximum MCS for slice in UL */ -int flexran_get_ul_slice_maxmcs(mid_t mod_id, int slice_idx); -/* Set the maximum MCS for slice in UL */ -void flexran_set_ul_slice_maxmcs(mid_t mod_id, int slice_idx, int maxmcs); - -/* TODO Get the sorting order of a slice in UL, return value is number of elements - * in sorting_list */ -/*int flexran_get_ul_slice_sorting(mid_t mod_id, int slice_idx, Protocol__FlexUlSorting **sorting_list);*/ -/* TODO Set the sorting order of a slice in UL */ -/*void flexran_set_ul_slice_sorting(mid_t mod_id, int slice_idx, Protocol__FlexUlSorting *sorting_list, int n);*/ - -/* TODO Get the accounting policy for a slice in UL */ -/*Protocol__UlAccountingPolicy flexran_get_ul_slice_accounting_policy(mid_t mod_id, int slice_idx);*/ -/* TODO Set the accounting policy for a slice in UL */ -/*void flexran_get_ul_slice_accounting_policy(mid_t mod_id, int slice_idx, Protocol__UlAccountingPolicy accountin);*/ - -/* Get the scheduler name for a slice in UL */ -char *flexran_get_ul_slice_scheduler(mid_t mod_id, int slice_idx); -/* Set the scheduler name for a slice in UL */ -int flexran_set_ul_slice_scheduler(mid_t mod_id, int slice_idx, char *name); +/* Get the name of/Set the UL scheduler algorithm. Same applies as for the DL + * case */ +char *flexran_get_ul_scheduler_name(mid_t mod_id); +int flexran_set_ul_scheduler(mid_t mod_id, char *sched); /************************** S1AP **************************/ /* Get the number of MMEs to be connected */ @@ -832,6 +742,15 @@ int flexran_get_s1ap_mme_conf(mid_t mod_id, mid_t mme_index, Protocol__FlexS1apM /* Get the S1AP UE conf */ int flexran_get_s1ap_ue(mid_t mod_id, rnti_t rnti, Protocol__FlexS1apUe * ue_conf); +/* Add MMEs and re-issue S1AP Registration Request */ +int flexran_add_s1ap_mme(mid_t mod_id, size_t n_mme, char **mme_ipv4); + +/* Remove MMEs and and cut SCTP to MME */ +int flexran_remove_s1ap_mme(mid_t mod_id, size_t n_mme, char **mme_ipv4); + +/* Set a new PLMN configuration */ +int flexran_set_new_plmn_id(mid_t mod_id, int CC_id, size_t n_plmn, Protocol__FlexPlmn **plmn_id); + /********************* general information *****************/ /* get an ID for this BS (or part of a BS) */ uint64_t flexran_get_bs_id(mid_t mod_id); diff --git a/openair2/F1AP/f1ap_cu_ue_context_management.c b/openair2/F1AP/f1ap_cu_ue_context_management.c index a64f2d529b..789ce4c715 100644 --- a/openair2/F1AP/f1ap_cu_ue_context_management.c +++ b/openair2/F1AP/f1ap_cu_ue_context_management.c @@ -226,7 +226,7 @@ int CU_send_UE_CONTEXT_SETUP_REQUEST(instance_t instance, ie->value.choice.ResourceCoordinationTransferContainer.buf = malloc(4); ie->value.choice.ResourceCoordinationTransferContainer.size = 4; - strncpy((char *)ie->value.choice.ResourceCoordinationTransferContainer.buf, "123", 3); + strncpy((char *)ie->value.choice.ResourceCoordinationTransferContainer.buf, "123", 4); OCTET_STRING_fromBuf(&ie->value.choice.ResourceCoordinationTransferContainer, "asdsa1d32sa1d31asd31as", diff --git a/openair2/F1AP/f1ap_du_rrc_message_transfer.c b/openair2/F1AP/f1ap_du_rrc_message_transfer.c index fb9450728b..6953588818 100644 --- a/openair2/F1AP/f1ap_du_rrc_message_transfer.c +++ b/openair2/F1AP/f1ap_du_rrc_message_transfer.c @@ -306,7 +306,8 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t instance, (LTE_SchedulingInfo_MBMS_r14_t *) NULL, (struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL, (LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL, - (LTE_MBSFN_AreaInfoList_r9_t *) NULL + (LTE_MBSFN_AreaInfoList_r9_t *) NULL, + (LTE_MBSFNAreaConfiguration_r9_t*) NULL ); break; } // case @@ -480,7 +481,8 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t instance, (LTE_SchedulingInfo_MBMS_r14_t *) NULL, (struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL, (LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL, - (LTE_MBSFN_AreaInfoList_r9_t *) NULL + (LTE_MBSFN_AreaInfoList_r9_t *) NULL, + (LTE_MBSFNAreaConfiguration_r9_t*) NULL ); } diff --git a/openair2/GNB_APP/RRC_nr_paramsvalues.h b/openair2/GNB_APP/RRC_nr_paramsvalues.h index 4c5da80764..231aeb34f4 100644 --- a/openair2/GNB_APP/RRC_nr_paramsvalues.h +++ b/openair2/GNB_APP/RRC_nr_paramsvalues.h @@ -38,8 +38,7 @@ /* cell configuration section name */ #define GNB_CONFIG_STRING_GNB_LIST "gNBs" -#define GNB_CONFIG_STRING_SSBSUBCARRIEROFFSET "ssb_SubcarrierOffset" -#define GNB_CONFIG_STRING_PDSCHANTENNAPORTS "pdsch_AntennaPorts" + #define GNB_CONFIG_STRING_SERVINGCELLCONFIGCOMMON "servingCellConfigCommon" #define GNB_CONFIG_STRING_PHYSCELLID "physCellId" #define GNB_CONFIG_STRING_NTIMINGADVANCEOFFSET "n_TimingAdvanceOffset" @@ -133,7 +132,8 @@ #define GNB_CONFIG_STRING_PRACHROOTSEQUENCEINDEXPR "prach_RootSequenceIndex_PR" #define GNB_CONFIG_STRING_PRACHROOTSEQUENCEINDEX "prach_RootSequenceIndex" #define GNB_CONFIG_STRING_MSG1SUBCARRIERSPACING "msg1_SubcarrierSpacing" -#define GNB_CONFIG_STRING_RESTRICTEDSETCONFIG "restrictedSetConfig" +#define GNB_CONFIG_STRING_RESTRICTEDSETCONFIG "restrictedSetConfig" +#define GNB_CONFIG_STRING_MSG3TRANSFPREC "msg3_transformPrecoder" #define GNB_CONFIG_STRING_PUSCHTIMEDOMAINALLOCATIONLIST "puschTimeDomainAllocationList" #define GNB_CONFIG_STRING_MSG3DELTAPREABMLE "msg3_DeltaPreamble" #define GNB_CONFIG_STRING_P0NOMINALWITHGRANT "p0_NominalWithGrant" @@ -222,9 +222,6 @@ #define GNB_CONFIG_DLCARRIERBANDWIDTH_IDX 10 -#define SSBPARAMS_DESC {{GNB_CONFIG_STRING_SSBSUBCARRIEROFFSET,NULL,0,iptr:&ssb_SubcarrierOffset,defintval:0,TYPE_INT,0}} -#define PDSCHANTENNAPARAMS_DESC {{GNB_CONFIG_STRING_PDSCHANTENNAPORTS,NULL,0,iptr:&pdsch_AntennaPorts,defintval:1,TYPE_INT,0}} - #define SCCPARAMS_DESC(scc) { \ {GNB_CONFIG_STRING_PHYSCELLID,NULL,0,i64ptr:scc->physCellId,defint64val:0,TYPE_INT64,0/*0*/}, \ {GNB_CONFIG_STRING_NTIMINGADVANCEOFFSET,NULL,0,i64ptr:scc->n_TimingAdvanceOffset,defint64val:NR_ServingCellConfigCommon__n_TimingAdvanceOffset_n0,TYPE_INT64,0/*1*/},\ @@ -246,7 +243,7 @@ {GNB_CONFIG_STRING_INITIALDLBWPSTARTSYMBOLANDLENGTH_0,NULL,0,i64ptr:&scc->downlinkConfigCommon->initialDownlinkBWP->pdsch_ConfigCommon->choice.setup->pdsch_TimeDomainAllocationList->list.array[0]->startSymbolAndLength,defint64val:-1,TYPE_INT64,0/*17*/},\ {GNB_CONFIG_STRING_INITIALDLBWPK0_1,NULL,0,i64ptr:scc->downlinkConfigCommon->initialDownlinkBWP->pdsch_ConfigCommon->choice.setup->pdsch_TimeDomainAllocationList->list.array[1]->k0,defint64val:-1,TYPE_INT64,0/*18*/},\ {GNB_CONFIG_STRING_INITIALDLBWPMAPPINGTYPE_1,NULL,0,i64ptr:&scc->downlinkConfigCommon->initialDownlinkBWP->pdsch_ConfigCommon->choice.setup->pdsch_TimeDomainAllocationList->list.array[1]->mappingType,defint64val:NR_PDSCH_TimeDomainResourceAllocation__mappingType_typeA,TYPE_INT64,0/*19*/},\ -{GNB_CONFIG_STRING_INITIALDLBWPSTARTSYMBOLANDLENGTH_0,NULL,0,i64ptr:&scc->downlinkConfigCommon->initialDownlinkBWP->pdsch_ConfigCommon->choice.setup->pdsch_TimeDomainAllocationList->list.array[1]->startSymbolAndLength,defint64val:53,TYPE_INT64,0/*20*/}, \ +{GNB_CONFIG_STRING_INITIALDLBWPSTARTSYMBOLANDLENGTH_1,NULL,0,i64ptr:&scc->downlinkConfigCommon->initialDownlinkBWP->pdsch_ConfigCommon->choice.setup->pdsch_TimeDomainAllocationList->list.array[1]->startSymbolAndLength,defint64val:53,TYPE_INT64,0/*20*/}, \ {GNB_CONFIG_STRING_INITIALDLBWPK0_2,NULL,0,i64ptr:scc->downlinkConfigCommon->initialDownlinkBWP->pdsch_ConfigCommon->choice.setup->pdsch_TimeDomainAllocationList->list.array[2]->k0,defint64val:-1,TYPE_INT64,0/*21*/},\ {GNB_CONFIG_STRING_INITIALDLBWPMAPPINGTYPE_2,NULL,0,i64ptr:&scc->downlinkConfigCommon->initialDownlinkBWP->pdsch_ConfigCommon->choice.setup->pdsch_TimeDomainAllocationList->list.array[2]->mappingType,defint64val:NR_PDSCH_TimeDomainResourceAllocation__mappingType_typeA,TYPE_INT64,0/*22*/},\ {GNB_CONFIG_STRING_INITIALDLBWPSTARTSYMBOLANDLENGTH_2,NULL,0,i64ptr:&scc->downlinkConfigCommon->initialDownlinkBWP->pdsch_ConfigCommon->choice.setup->pdsch_TimeDomainAllocationList->list.array[2]->startSymbolAndLength,defint64val:54,TYPE_INT64,0/*23*/},\ @@ -311,11 +308,12 @@ {GNB_CONFIG_STRING_RSRPTHRESHOLDSSB,NULL,0,i64ptr:scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->rsrp_ThresholdSSB,defint64val:19,TYPE_INT64,0/*82*/},\ {GNB_CONFIG_STRING_PRACHROOTSEQUENCEINDEXPR,NULL,0,uptr:&scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->prach_RootSequenceIndex.present,defuintval:NR_RACH_ConfigCommon__prach_RootSequenceIndex_PR_l139,TYPE_UINT,0/*83*/},\ {GNB_CONFIG_STRING_PRACHROOTSEQUENCEINDEX,NULL,0,i64ptr:&scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->prach_RootSequenceIndex.choice.l139,defint64val:0,TYPE_INT64,0/*84*/},\ -{GNB_CONFIG_STRING_MSG1SUBCARRIERSPACING,NULL,0,i64ptr:&scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->restrictedSetConfig,defintval:NR_RACH_ConfigCommon__restrictedSetConfig_unrestrictedSet,TYPE_INT64,0/*85*/}, \ -{GNB_CONFIG_STRING_INITIALULBWPK2_0,NULL,0,i64ptr:scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[0]->k2,defint64val:-1,TYPE_INT64,0/*86*/},\ -{GNB_CONFIG_STRING_INITIALULBWPMAPPINGTYPE_0,NULL,0,i64ptr:&scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[0]->mappingType,defint64val:NR_PDSCH_TimeDomainResourceAllocation__mappingType_typeB,TYPE_INT64,/*87*/},\ -{GNB_CONFIG_STRING_INITIALULBWPSTARTSYMBOLANDLENGTH_0,NULL,0,i64ptr:&scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[0]->startSymbolAndLength,defint64val:55,TYPE_INT64,0/*88*/},\ -{GNB_CONFIG_STRING_INITIALULBWPK2_1,NULL,0,i64ptr:scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[1]->k2,defint64val:-1,TYPE_INT64,0/*89*/}, \ +{GNB_CONFIG_STRING_RESTRICTEDSETCONFIG,NULL,0,i64ptr:&scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->restrictedSetConfig,defintval:NR_RACH_ConfigCommon__restrictedSetConfig_unrestrictedSet,TYPE_INT64,0/*85*/}, \ +{GNB_CONFIG_STRING_MSG3TRANSFPREC,NULL,0,i64ptr:scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->msg3_transformPrecoder,defintval:1,TYPE_INT64,0/*86*/}, \ +{GNB_CONFIG_STRING_INITIALULBWPK2_0,NULL,0,i64ptr:scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[0]->k2,defint64val:-1,TYPE_INT64,0/*87*/},\ +{GNB_CONFIG_STRING_INITIALULBWPMAPPINGTYPE_0,NULL,0,i64ptr:&scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[0]->mappingType,defint64val:NR_PDSCH_TimeDomainResourceAllocation__mappingType_typeB,TYPE_INT64,/*88*/},\ +{GNB_CONFIG_STRING_INITIALULBWPSTARTSYMBOLANDLENGTH_0,NULL,0,i64ptr:&scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[0]->startSymbolAndLength,defint64val:55,TYPE_INT64,0/*89*/},\ +{GNB_CONFIG_STRING_INITIALULBWPK2_1,NULL,0,i64ptr:scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[1]->k2,defint64val:-1,TYPE_INT64,0/*90*/}, \ {GNB_CONFIG_STRING_INITIALULBWPMAPPINGTYPE_1,NULL,0,i64ptr:&scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[1]->mappingType,defint64val:NR_PUSCH_TimeDomainResourceAllocation__mappingType_typeB,TYPE_INT64,0},\ {GNB_CONFIG_STRING_INITIALULBWPSTARTSYMBOLANDLENGTH_1,NULL,0,i64ptr:&scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[1]->startSymbolAndLength,defint64val:53,TYPE_INT64,0},\ {GNB_CONFIG_STRING_INITIALULBWPK2_2,NULL,0,i64ptr:scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[2]->k2,defint64val:-1,TYPE_INT64,0},\ @@ -325,7 +323,7 @@ {GNB_CONFIG_STRING_INITIALULBWPMAPPINGTYPE_3,NULL,0,i64ptr:&scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[3]->mappingType,defint64val:NR_PUSCH_TimeDomainResourceAllocation__mappingType_typeB,TYPE_INT64,0},\ {GNB_CONFIG_STRING_INITIALULBWPSTARTSYMBOLANDLENGTH_3,NULL,0,i64ptr:&scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[3]->startSymbolAndLength,defint64val:53,TYPE_INT64,0},\ {GNB_CONFIG_STRING_INITIALULBWPK2_4,NULL,0,i64ptr:scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[4]->k2,defint64val:-1,TYPE_INT64,0},\ -{GNB_CONFIG_STRING_INITIALULBWPMAPPINGTYPE_4,NULL,0,i64ptr:&scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[4]->mappingType,defint64val:NR_PDSCH_TimeDomainResourceAllocation__mappingType_typeB,TYPE_INT64,0 /*99*/}, \ +{GNB_CONFIG_STRING_INITIALULBWPMAPPINGTYPE_4,NULL,0,i64ptr:&scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[4]->mappingType,defint64val:NR_PDSCH_TimeDomainResourceAllocation__mappingType_typeB,TYPE_INT64,0 /*100*/}, \ {GNB_CONFIG_STRING_INITIALULBWPSTARTSYMBOLANDLENGTH_4,NULL,0,i64ptr:&scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[4]->startSymbolAndLength,defint64val:55,TYPE_INT64,0},\ {GNB_CONFIG_STRING_INITIALULBWPK2_5,NULL,0,i64ptr:scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[5]->k2,defint64val:-1,TYPE_INT64,0},\ {GNB_CONFIG_STRING_INITIALULBWPMAPPINGTYPE_5,NULL,0,i64ptr:&scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[5]->mappingType,defint64val:NR_PUSCH_TimeDomainResourceAllocation__mappingType_typeB,TYPE_INT64,0},\ @@ -335,7 +333,7 @@ {GNB_CONFIG_STRING_INITIALULBWPSTARTSYMBOLANDLENGTH_6,NULL,0,i64ptr:&scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[6]->startSymbolAndLength,defint64val:55,TYPE_INT64,0},\ {GNB_CONFIG_STRING_INITIALULBWPK2_7,NULL,0,i64ptr:scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[7]->k2,defint64val:-1,TYPE_INT64,0},\ {GNB_CONFIG_STRING_INITIALULBWPMAPPINGTYPE_7,NULL,0,i64ptr:&scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[7]->mappingType,defint64val:NR_PUSCH_TimeDomainResourceAllocation__mappingType_typeB,TYPE_INT64,0},\ -{GNB_CONFIG_STRING_INITIALULBWPSTARTSYMBOLANDLENGTH_7,NULL,0,i64ptr:&scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[7]->startSymbolAndLength,defint64val:53,TYPE_INT64,0/*109*/}, \ +{GNB_CONFIG_STRING_INITIALULBWPSTARTSYMBOLANDLENGTH_7,NULL,0,i64ptr:&scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[7]->startSymbolAndLength,defint64val:53,TYPE_INT64,0/*110*/}, \ {GNB_CONFIG_STRING_INITIALULBWPK2_8,NULL,0,i64ptr:scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[8]->k2,defint64val:-1,TYPE_INT64,0},\ {GNB_CONFIG_STRING_INITIALULBWPMAPPINGTYPE_8,NULL,0,i64ptr:&scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[8]->mappingType,defint64val:NR_PDSCH_TimeDomainResourceAllocation__mappingType_typeB,TYPE_INT64,0},\ {GNB_CONFIG_STRING_INITIALULBWPSTARTSYMBOLANDLENGTH_8,NULL,0,i64ptr:&scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[8]->startSymbolAndLength,defint64val:55,TYPE_INT64,0},\ @@ -345,7 +343,7 @@ {GNB_CONFIG_STRING_INITIALULBWPK2_10,NULL,0,i64ptr:scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[10]->k2,defint64val:-1,TYPE_INT64,0},\ {GNB_CONFIG_STRING_INITIALULBWPMAPPINGTYPE_10,NULL,0,i64ptr:&scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[10]->mappingType,defint64val:NR_PDSCH_TimeDomainResourceAllocation__mappingType_typeB,TYPE_INT64,0},\ {GNB_CONFIG_STRING_INITIALULBWPSTARTSYMBOLANDLENGTH_10,NULL,0,i64ptr:&scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[10]->startSymbolAndLength,defint64val:55,TYPE_INT64,0},\ -{GNB_CONFIG_STRING_INITIALULBWPK2_11,NULL,0,i64ptr:scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[11]->k2,defint64val:-1,TYPE_INT64,0/*119*/}, \ +{GNB_CONFIG_STRING_INITIALULBWPK2_11,NULL,0,i64ptr:scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[11]->k2,defint64val:-1,TYPE_INT64,0/*120*/}, \ {GNB_CONFIG_STRING_INITIALULBWPMAPPINGTYPE_11,NULL,0,i64ptr:&scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[11]->mappingType,defint64val:NR_PUSCH_TimeDomainResourceAllocation__mappingType_typeB,TYPE_INT64,0},\ {GNB_CONFIG_STRING_INITIALULBWPSTARTSYMBOLANDLENGTH_11,NULL,0,i64ptr:&scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[11]->startSymbolAndLength,defint64val:53,TYPE_INT64,0},\ {GNB_CONFIG_STRING_INITIALULBWPK2_12,NULL,0,i64ptr:scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[12]->k2,defint64val:-1,TYPE_INT64,0},\ @@ -355,7 +353,7 @@ {GNB_CONFIG_STRING_INITIALULBWPMAPPINGTYPE_13,NULL,0,i64ptr:&scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[13]->mappingType,defint64val:NR_PUSCH_TimeDomainResourceAllocation__mappingType_typeB,TYPE_INT64,0},\ {GNB_CONFIG_STRING_INITIALULBWPSTARTSYMBOLANDLENGTH_13,NULL,0,i64ptr:&scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[13]->startSymbolAndLength,defint64val:53,TYPE_INT64,0},\ {GNB_CONFIG_STRING_INITIALULBWPK2_14,NULL,0,i64ptr:scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[14]->k2,defint64val:-1,TYPE_INT64,0},\ -{GNB_CONFIG_STRING_INITIALULBWPMAPPINGTYPE_14,NULL,0,i64ptr:&scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[14]->mappingType,defint64val:NR_PDSCH_TimeDomainResourceAllocation__mappingType_typeB,TYPE_INT64,0 /*129*/}, \ +{GNB_CONFIG_STRING_INITIALULBWPMAPPINGTYPE_14,NULL,0,i64ptr:&scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[14]->mappingType,defint64val:NR_PDSCH_TimeDomainResourceAllocation__mappingType_typeB,TYPE_INT64,0 /*130*/}, \ {GNB_CONFIG_STRING_INITIALULBWPSTARTSYMBOLANDLENGTH_14,NULL,0,i64ptr:&scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[14]->startSymbolAndLength,defint64val:55,TYPE_INT64,0},\ {GNB_CONFIG_STRING_INITIALULBWPK2_15,NULL,0,i64ptr:scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[15]->k2,defint64val:-1,TYPE_INT64,0},\ {GNB_CONFIG_STRING_INITIALULBWPMAPPINGTYPE_15,NULL,0,i64ptr:&scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[15]->mappingType,defint64val:NR_PUSCH_TimeDomainResourceAllocation__mappingType_typeB,TYPE_INT64,0},\ @@ -365,7 +363,7 @@ {GNB_CONFIG_STRING_PUCCHGROUPHOPPING, NULL,0,i64ptr:&scc->uplinkConfigCommon->initialUplinkBWP->pucch_ConfigCommon->choice.setup->pucch_GroupHopping,defint64val:NR_PUCCH_ConfigCommon__pucch_GroupHopping_neither,TYPE_INT64,0},\ {GNB_CONFIG_STRING_HOPPINGID, NULL,0,i64ptr:scc->uplinkConfigCommon->initialUplinkBWP->pucch_ConfigCommon->choice.setup->hoppingId,defint64val:40,TYPE_INT64,0},\ {GNB_CONFIG_STRING_P0NOMINAL, NULL,0,i64ptr:scc->uplinkConfigCommon->initialUplinkBWP->pucch_ConfigCommon->choice.setup->p0_nominal,defint64val:1,TYPE_INT64,0},\ -{GNB_CONFIG_STRING_SSBPOSITIONSINBURSTPR,NULL,0,uptr:&scc->ssb_PositionsInBurst->present,defuintval:NR_ServingCellConfigCommon__ssb_PositionsInBurst_PR_mediumBitmap,TYPE_UINT,0/*139*/}, \ +{GNB_CONFIG_STRING_SSBPOSITIONSINBURSTPR,NULL,0,uptr:&scc->ssb_PositionsInBurst->present,defuintval:NR_ServingCellConfigCommon__ssb_PositionsInBurst_PR_mediumBitmap,TYPE_UINT,0/*140*/}, \ {GNB_CONFIG_STRING_SSBPOSITIONSINBURST,NULL,0,u64ptr:&ssb_bitmap,defintval:0xff,TYPE_UINT64,0}, \ {GNB_CONFIG_STRING_REFERENCESUBCARRIERSPACING,NULL,0,i64ptr:&scc->tdd_UL_DL_ConfigurationCommon->referenceSubcarrierSpacing,defint64val:NR_SubcarrierSpacing_kHz30,TYPE_INT64,0},\ {GNB_CONFIG_STRING_DLULTRANSMISSIONPERIODICITY,NULL,0,i64ptr:&scc->tdd_UL_DL_ConfigurationCommon->pattern1.dl_UL_TransmissionPeriodicity,defint64val:NR_TDD_UL_DL_Pattern__dl_UL_TransmissionPeriodicity_ms0p5,TYPE_INT64,0},\ @@ -379,7 +377,7 @@ {GNB_CONFIG_STRING_NROFUPLINKSLOTS2,NULL,0,i64ptr:&scc->tdd_UL_DL_ConfigurationCommon->pattern2->nrofUplinkSlots,defint64val:-1,TYPE_INT64,0},\ {GNB_CONFIG_STRING_NROFUPLINKSYMBOLS2,NULL,0,i64ptr:&scc->tdd_UL_DL_ConfigurationCommon->pattern2->nrofUplinkSymbols,defint64val:-1,TYPE_INT64,0},\ {GNB_CONFIG_STRING_SSPBCHBLOCKPOWER,NULL,0,i64ptr:&scc->ss_PBCH_BlockPower,defint64val:20,TYPE_INT64,0}, \ -{GNB_CONFIG_STRING_MSG1SUBCARRIERSPACING,NULL,0,i64ptr:scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->msg1_SubcarrierSpacing,defintval:-1,TYPE_INT64,0/*86*/}} +{GNB_CONFIG_STRING_MSG1SUBCARRIERSPACING,NULL,0,i64ptr:scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->msg1_SubcarrierSpacing,defintval:-1,TYPE_INT64,0}} diff --git a/openair2/GNB_APP/gnb_app.c b/openair2/GNB_APP/gnb_app.c index f11e302771..9bdd709262 100644 --- a/openair2/GNB_APP/gnb_app.c +++ b/openair2/GNB_APP/gnb_app.c @@ -71,30 +71,30 @@ static void configure_nr_rrc(uint32_t gnb_id) /*------------------------------------------------------------------------------*/ -/* + static uint32_t gNB_app_register(uint32_t gnb_id_start, uint32_t gnb_id_end)//, const Enb_properties_array_t *enb_properties) { uint32_t gnb_id; - MessageDef *msg_p; + //MessageDef *msg_p; uint32_t register_gnb_pending = 0; for (gnb_id = gnb_id_start; (gnb_id < gnb_id_end) ; gnb_id++) { { - s1ap_register_enb_req_t *s1ap_register_gNB; //Type Temporarily reuse + //s1ap_register_enb_req_t *s1ap_register_gNB; //Type Temporarily reuse // note: there is an implicit relationship between the data structure and the message name - msg_p = itti_alloc_new_message (TASK_GNB_APP, S1AP_REGISTER_ENB_REQ); //Message Temporarily reuse + /*msg_p = itti_alloc_new_message (TASK_GNB_APP, S1AP_REGISTER_ENB_REQ); //Message Temporarily reuse - RCconfig_NR_S1(msg_p, gnb_id); + RCconfig_NR_S1(msg_p, gnb_id);*/ if (gnb_id == 0) RCconfig_nr_gtpu(); - s1ap_register_gNB = &S1AP_REGISTER_ENB_REQ(msg_p); //Message Temporarily reuse - LOG_I(GNB_APP,"default drx %d\n",s1ap_register_gNB->default_drx); + /*s1ap_register_gNB = &S1AP_REGISTER_ENB_REQ(msg_p); //Message Temporarily reuse + LOG_I(GNB_APP,"default drx %d\n",s1ap_register_gNB->default_drx);*/ LOG_I(GNB_APP,"[gNB %d] gNB_app_register for instance %d\n", gnb_id, GNB_MODULE_ID_TO_INSTANCE(gnb_id)); - itti_send_msg_to_task (TASK_S1AP, GNB_MODULE_ID_TO_INSTANCE(gnb_id), msg_p); + //itti_send_msg_to_task (TASK_S1AP, GNB_MODULE_ID_TO_INSTANCE(gnb_id), msg_p); register_gnb_pending++; } @@ -102,7 +102,7 @@ static uint32_t gNB_app_register(uint32_t gnb_id_start, uint32_t gnb_id_end)//, return register_gnb_pending; } -*/ + /*------------------------------------------------------------------------------*/ static uint32_t gNB_app_register_x2(uint32_t gnb_id_start, uint32_t gnb_id_end) { @@ -131,7 +131,7 @@ void *gNB_app_task(void *args_p) uint32_t gnb_nb = RC.nb_nr_inst; uint32_t gnb_id_start = 0; uint32_t gnb_id_end = gnb_id_start + gnb_nb; - uint32_t x2_register_gnb_pending = 0; + uint32_t gnb_id; MessageDef *msg_p = NULL; const char *msg_name = NULL; @@ -170,13 +170,13 @@ void *gNB_app_task(void *args_p) if (is_x2ap_enabled() ) { //&& !NODE_IS_DU(RC.rrc[0]->node_type) LOG_I(X2AP, "X2AP enabled \n"); - x2_register_gnb_pending = gNB_app_register_x2 (gnb_id_start, gnb_id_end); + __attribute__((unused)) uint32_t x2_register_gnb_pending = gNB_app_register_x2 (gnb_id_start, gnb_id_end); } if (EPC_MODE_ENABLED) { /* Try to register each gNB */ //registered_gnb = 0; - //register_gnb_pending = gNB_app_register (gnb_id_start, gnb_id_end);//, gnb_properties_p); + __attribute__((unused)) uint32_t register_gnb_pending = gNB_app_register (gnb_id_start, gnb_id_end);//, gnb_properties_p); } else { /* Start L2L1 task */ msg_p = itti_alloc_new_message(TASK_GNB_APP, INITIALIZE_MESSAGE); diff --git a/openair2/GNB_APP/gnb_config.c b/openair2/GNB_APP/gnb_config.c index 0e51350036..91f5d1865c 100644 --- a/openair2/GNB_APP/gnb_config.c +++ b/openair2/GNB_APP/gnb_config.c @@ -54,7 +54,8 @@ #include "common/config/config_userapi.h" //#include "RRC_config_tools.h" #include "gnb_paramdef.h" -#include "LAYER2/NR_MAC_gNB/mac_proto.h" +#include "NR_MAC_gNB/mac_proto.h" + #include "NR_asn_constant.h" #include "executables/thread-common.h" #include "NR_SCS-SpecificCarrier.h" @@ -254,10 +255,9 @@ void fix_scc(NR_ServingCellConfigCommon_t *scc,uint64_t ssbmap) { scc->uplinkConfigCommon->frequencyInfoUL->absoluteFrequencyPointA = NULL; } - // fix libconfig (asn1c uses long) - scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->rach_ConfigGeneric.preambleReceivedTargetPower-=((long)1<<32); - *scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->p0_NominalWithGrant-=((long)1<<32); - *scc->uplinkConfigCommon->initialUplinkBWP->pucch_ConfigCommon->choice.setup->p0_nominal-=((long)1<<32); + // default value for msg3 precoder is NULL (0 means enabled) + if (*scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->msg3_transformPrecoder!=0) + scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->msg3_transformPrecoder = NULL; // fix DL and UL Allocation lists @@ -520,17 +520,11 @@ void RCconfig_NRRRC(MessageDef *msg_p, uint32_t i, gNB_RRC_INST *rrc) { paramlist_def_t GNBParamList = {GNB_CONFIG_STRING_GNB_LIST,NULL,0}; NR_ServingCellConfigCommon_t *scc = calloc(1,sizeof(NR_ServingCellConfigCommon_t)); - int ssb_SubcarrierOffset = 31; - int pdsch_AntennaPorts = 1; uint64_t ssb_bitmap=0xff; memset((void*)scc,0,sizeof(NR_ServingCellConfigCommon_t)); prepare_scc(scc); paramdef_t SCCsParams[] = SCCPARAMS_DESC(scc); paramlist_def_t SCCsParamList = {GNB_CONFIG_STRING_SERVINGCELLCONFIGCOMMON, NULL, 0}; - paramdef_t SSBsParams[] = SSBPARAMS_DESC; - paramlist_def_t SSBsParamList = {GNB_CONFIG_STRING_SSBSUBCARRIEROFFSET, NULL, 0}; - paramdef_t PDSCHANTENNAParams[] = PDSCHANTENNAPARAMS_DESC; - paramlist_def_t PDSCHANTENNAParamList = {GNB_CONFIG_STRING_PDSCHANTENNAPORTS, NULL, 0}; ////////// Physical parameters @@ -579,12 +573,6 @@ void RCconfig_NRRRC(MessageDef *msg_p, uint32_t i, gNB_RRC_INST *rrc) { } sprintf(aprefix, "%s.[%i]", GNB_CONFIG_STRING_GNB_LIST, 0); - config_getlist(&SSBsParamList, NULL, 0, aprefix); - if (SSBsParamList.numelt > 0) config_get(SSBsParams,sizeof(SSBsParams)/sizeof(paramdef_t),aprefix); - - config_getlist(&PDSCHANTENNAParamList, NULL, 0, aprefix); - if (PDSCHANTENNAParamList.numelt > 0) config_get(PDSCHANTENNAParams,sizeof(PDSCHANTENNAParams)/sizeof(paramdef_t),aprefix); - config_getlist(&SCCsParamList, NULL, 0, aprefix); if (SCCsParamList.numelt > 0) { @@ -660,15 +648,16 @@ void RCconfig_NRRRC(MessageDef *msg_p, uint32_t i, gNB_RRC_INST *rrc) { (NRRRC_CONFIGURATION_REQ (msg_p).mnc_digit_length[l] == 3),"BAD MNC DIGIT LENGTH %d", NRRRC_CONFIGURATION_REQ (msg_p).mnc_digit_length[l]); } - - // Parse optional physical parameters - sprintf(gnbpath,"%s.[%i]",GNB_CONFIG_STRING_GNB_LIST,k), + printf("SSB SCO %d\n",*GNBParamList.paramarray[i][GNB_SSB_SUBCARRIEROFFSET_IDX].iptr); + NRRRC_CONFIGURATION_REQ (msg_p).ssb_SubcarrierOffset = *GNBParamList.paramarray[i][GNB_SSB_SUBCARRIEROFFSET_IDX].iptr; + printf("pdsch_AntennaPorts %d\n",*GNBParamList.paramarray[i][GNB_PDSCH_ANTENNAPORTS_IDX].iptr); + NRRRC_CONFIGURATION_REQ (msg_p).pdsch_AntennaPorts = *GNBParamList.paramarray[i][GNB_PDSCH_ANTENNAPORTS_IDX].iptr; + printf("pusch_TargetSNRx10 %d\n",*GNBParamList.paramarray[i][GNB_PUSCH_TARGETPOW_X10_IDX].iptr); + NRRRC_CONFIGURATION_REQ (msg_p).pusch_TargetSNRx10 = *GNBParamList.paramarray[i][GNB_PUSCH_TARGETPOW_X10_IDX].iptr; + printf("pucch_TargetSNRx10 %d\n",*GNBParamList.paramarray[i][GNB_PUCCH_TARGETPOW_X10_IDX].iptr); + NRRRC_CONFIGURATION_REQ (msg_p).pucch_TargetSNRx10 = *GNBParamList.paramarray[i][GNB_PUCCH_TARGETPOW_X10_IDX].iptr; + NRRRC_CONFIGURATION_REQ (msg_p).scc = scc; - printf("SSB SCO %d\n",ssb_SubcarrierOffset); - NRRRC_CONFIGURATION_REQ (msg_p).ssb_SubcarrierOffset = ssb_SubcarrierOffset; - printf("pdsch_AntennaPorts %d\n",pdsch_AntennaPorts); - NRRRC_CONFIGURATION_REQ (msg_p).pdsch_AntennaPorts = pdsch_AntennaPorts; - NRRRC_CONFIGURATION_REQ (msg_p).scc = scc; }// }//End for (k=0; k enb_ip_address_for_S1u_S12_S4_up, "BAD IP ADDRESS FORMAT FOR eNB S1_U !\n" ); - LOG_I(GTPU,"Configuring GTPu address : %s -> %x\n",address,RC.gtpv1u_data_g->enb_ip_address_for_S1u_S12_S4_up); - GTPV1U_ENB_S1_REQ(message).enb_port_for_S1u_S12_S4_up = gnb_port_for_S1U; - itti_send_msg_to_task (TASK_GTPV1_U, 0, message); // data model is wrong: gtpu doesn't have enb_id (or module_id) + // IPV4_STR_ADDR_TO_INT_NWBO ( address, RC.gtpv1u_data_g->enb_ip_address_for_S1u_S12_S4_up, "BAD IP ADDRESS FORMAT FOR eNB S1_U !\n" ); + // LOG_I(GTPU,"Configuring GTPu address : %s -> %x\n",address,RC.gtpv1u_data_g->enb_ip_address_for_S1u_S12_S4_up); + + + IPV4_STR_ADDR_TO_INT_NWBO ( address, GTPV1U_ENB_S1_REQ(message).enb_ip_address_for_S1u_S12_S4_up, "BAD IP ADDRESS FORMAT FOR eNB S1_U !\n" ); + LOG_I(GTPU,"Configuring GTPu address : %s -> %x\n",address,GTPV1U_ENB_S1_REQ(message).enb_ip_address_for_S1u_S12_S4_up); + GTPV1U_ENB_S1_REQ(message).enb_port_for_S1u_S12_S4_up = gnb_port_for_S1U; + itti_send_msg_to_task (TASK_GTPV1_U, 0, message); // data model is wrong: gtpu doesn't have enb_id (or module_id) } else LOG_E(GTPU,"invalid address for S1U\n"); @@ -773,11 +766,7 @@ int RCconfig_NR_S1(MessageDef *msg_p, uint32_t i) { if (GNBSParams[GNB_ACTIVE_GNBS_IDX].numelt>0) { // Output a list of all gNBs. config_getlist( &GNBParamList,GNBParams,sizeof(GNBParams)/sizeof(paramdef_t),NULL); - - - - - + if (GNBParamList.numelt > 0) { for (k = 0; k < GNBParamList.numelt; k++) { if (GNBParamList.paramarray[k][GNB_GNB_ID_IDX].uptr == NULL) { diff --git a/openair2/GNB_APP/gnb_paramdef.h b/openair2/GNB_APP/gnb_paramdef.h index 84045fc622..84da1de530 100644 --- a/openair2/GNB_APP/gnb_paramdef.h +++ b/openair2/GNB_APP/gnb_paramdef.h @@ -113,6 +113,11 @@ typedef enum { #define GNB_CONFIG_STRING_REMOTE_S_PORTC "remote_s_portc" #define GNB_CONFIG_STRING_LOCAL_S_PORTD "local_s_portd" #define GNB_CONFIG_STRING_REMOTE_S_PORTD "remote_s_portd" +#define GNB_CONFIG_STRING_SSBSUBCARRIEROFFSET "ssb_SubcarrierOffset" +#define GNB_CONFIG_STRING_PDSCHANTENNAPORTS "pdsch_AntennaPorts" +#define GNB_CONFIG_STRING_PUSCHTARGETPOWX10 "pusch_TargetSNRx10" +#define GNB_CONFIG_STRING_PUCCHTARGETPOWX10 "pucch_TargetSNRx10" + typedef struct ccparams_nr_x2 { char *frame_type; @@ -156,7 +161,12 @@ typedef struct ccparams_nr_x2 { {GNB_CONFIG_STRING_REMOTE_S_PORTC, NULL, 0, uptr:NULL, defuintval:50000, TYPE_UINT, 0}, \ {GNB_CONFIG_STRING_LOCAL_S_PORTD, NULL, 0, uptr:NULL, defuintval:50001, TYPE_UINT, 0}, \ {GNB_CONFIG_STRING_REMOTE_S_PORTD, NULL, 0, uptr:NULL, defuintval:50001, TYPE_UINT, 0}, \ +{GNB_CONFIG_STRING_SSBSUBCARRIEROFFSET, NULL, 0, iptr:NULL, defintval:31, TYPE_INT, 0}, \ +{GNB_CONFIG_STRING_PDSCHANTENNAPORTS, NULL, 0, iptr:NULL, defintval:1, TYPE_INT, 0}, \ +{GNB_CONFIG_STRING_PUSCHTARGETPOWX10, NULL, 0, iptr:NULL, defintval:200, TYPE_INT, 0}, \ +{GNB_CONFIG_STRING_PUCCHTARGETPOWX10, NULL, 0, iptr:NULL, defintval:200, TYPE_INT, 0}, \ } + #define GNB_GNB_ID_IDX 0 #define GNB_CELL_TYPE_IDX 1 #define GNB_GNB_NAME_IDX 2 @@ -171,6 +181,10 @@ typedef struct ccparams_nr_x2 { #define GNB_REMOTE_S_PORTC_IDX 11 #define GNB_LOCAL_S_PORTD_IDX 12 #define GNB_REMOTE_S_PORTD_IDX 13 +#define GNB_SSB_SUBCARRIEROFFSET_IDX 14 +#define GNB_PDSCH_ANTENNAPORTS_IDX 15 +#define GNB_PUSCH_TARGETPOW_X10_IDX 16 +#define GNB_PUCCH_TARGETPOW_X10_IDX 17 #define TRACKING_AREA_CODE_OKRANGE {0x0001,0xFFFD} #define GNBPARAMS_CHECK { \ diff --git a/openair2/LAYER2/MAC/config.c b/openair2/LAYER2/MAC/config.c index 49949bd771..781347abaa 100644 --- a/openair2/LAYER2/MAC/config.c +++ b/openair2/LAYER2/MAC/config.c @@ -660,7 +660,7 @@ config_sib2_mbsfn_part( int Mod_idP, if (mbsfn_SubframeConfigListP->list.array[i]->subframeAllocation.present == LTE_MBSFN_SubframeConfig__subframeAllocation_PR_oneFrame) { phycfg.cfg->embms_mbsfn_config.fourframes_flag[i] = 0; phycfg.cfg->embms_mbsfn_config.mbsfn_subframeconfig[i] = mbsfn_SubframeConfigListP->list.array[i]->subframeAllocation.choice.oneFrame.buf[0]; // 6-bit subframe configuration - LOG_I (MAC, "[CONFIG] MBSFN_SubframeConfig[%d] pattern is %d\n", i, phycfg.cfg->embms_mbsfn_config.mbsfn_subframeconfig[i]); + LOG_I (MAC, "[CONFIG] MBSFN_SubframeConfig[%d] oneFrame pattern is %d\n", i, phycfg.cfg->embms_mbsfn_config.mbsfn_subframeconfig[i]); } else if (mbsfn_SubframeConfigListP->list.array[i]->subframeAllocation.present == LTE_MBSFN_SubframeConfig__subframeAllocation_PR_fourFrames) { // 24-bit subframe configuration phycfg.cfg->embms_mbsfn_config.fourframes_flag[i] = 1; phycfg.cfg->embms_mbsfn_config.mbsfn_subframeconfig[i] = @@ -668,7 +668,7 @@ config_sib2_mbsfn_part( int Mod_idP, (mbsfn_SubframeConfigListP->list.array[i]->subframeAllocation.choice.oneFrame.buf[1]<<8)| (mbsfn_SubframeConfigListP->list.array[i]->subframeAllocation.choice.oneFrame.buf[0]<<16); - LOG_I(MAC, "[CONFIG] MBSFN_SubframeConfig[%d] pattern is %x\n", i, + LOG_I(MAC, "[CONFIG] MBSFN_SubframeConfig[%d] fourFrame pattern is %x\n", i, phycfg.cfg->embms_mbsfn_config.mbsfn_subframeconfig[i]); } } @@ -777,7 +777,8 @@ int rrc_mac_config_req_eNB(module_id_t Mod_idP, LTE_SchedulingInfo_MBMS_r14_t *schedulingInfo_fembms, struct LTE_NonMBSFN_SubframeConfig_r14 *nonMBSFN_SubframeConfig, LTE_SystemInformationBlockType1_MBMS_r14_t *sib1_mbms_r14_fembms, - LTE_MBSFN_AreaInfoList_r9_t *mbsfn_AreaInfoList_fembms + LTE_MBSFN_AreaInfoList_r9_t *mbsfn_AreaInfoList_fembms, + LTE_MBSFNAreaConfiguration_r9_t*mbms_AreaConfig ) { int i; int UE_id = -1; @@ -989,6 +990,7 @@ int rrc_mac_config_req_eNB(module_id_t Mod_idP, cfg->num_tlv++; //We need to reuse current MCH scheduler //TOCHECK whether we can simply reuse current mbsfn_SubframeConfig stuff + RC.mac[Mod_idP]->common_channels[0].FeMBMS_flag = FeMBMS_Flag; } if (mbsfn_AreaInfoList != NULL) { @@ -1005,6 +1007,21 @@ int rrc_mac_config_req_eNB(module_id_t Mod_idP, } } + if(mbms_AreaConfig != NULL) { + RC.mac[Mod_idP]->common_channels[0].commonSF_AllocPeriod_r9 = mbms_AreaConfig->commonSF_AllocPeriod_r9; + LOG_I(MAC, "[eNB %d][CONFIG] LTE_MBSFNAreaConfiguration_r9_t(%p) commonSF_AllocPeriod_r9(%d)\n",Mod_idP,mbms_AreaConfig, RC.mac[Mod_idP]->common_channels[0].commonSF_AllocPeriod_r9); + for(i=0; i < mbms_AreaConfig->commonSF_Alloc_r9.list.count; i++){ + RC.mac[Mod_idP]->common_channels[0].commonSF_Alloc_r9_mbsfn_SubframeConfig[i] = mbms_AreaConfig->commonSF_Alloc_r9.list.array[i]; + LOG_I(RRC,"[eNB %d][CONFIG] MBSFNArea[%d] commonSF_Alloc_r9: radioframeAllocationPeriod(%ldn),radioframeAllocationOffset(%ld), subframeAllocation(%x,%x,%x)\n" + ,Mod_idP,i + ,RC.mac[Mod_idP]->common_channels[0].commonSF_Alloc_r9_mbsfn_SubframeConfig[i]->radioframeAllocationPeriod + ,RC.mac[Mod_idP]->common_channels[0].commonSF_Alloc_r9_mbsfn_SubframeConfig[i]->radioframeAllocationOffset + ,RC.mac[Mod_idP]->common_channels[0].commonSF_Alloc_r9_mbsfn_SubframeConfig[i]->subframeAllocation.choice.oneFrame.buf[0] + ,RC.mac[Mod_idP]->common_channels[0].commonSF_Alloc_r9_mbsfn_SubframeConfig[i]->subframeAllocation.choice.oneFrame.buf[1] + ,RC.mac[Mod_idP]->common_channels[0].commonSF_Alloc_r9_mbsfn_SubframeConfig[i]->subframeAllocation.choice.oneFrame.buf[2]); + } + } + if (pmch_InfoList != NULL) { // LOG_I(MAC,"DUY: lcid when entering rrc_mac config_req is %02d\n",(pmch_InfoList->list.array[0]->mbms_SessionInfoList_r9.list.array[0]->logicalChannelIdentity_r9)); LOG_I(MAC, "[CONFIG] Number of PMCH in this MBSFN Area %d\n", diff --git a/openair2/LAYER2/MAC/config_ue.c b/openair2/LAYER2/MAC/config_ue.c index 897afbf62b..1c5e706218 100644 --- a/openair2/LAYER2/MAC/config_ue.c +++ b/openair2/LAYER2/MAC/config_ue.c @@ -530,6 +530,7 @@ rrc_mac_config_req_ue(module_id_t Mod_idP, LOG_I(MAC, "[UE %d] Configuring LTE_NonMBSFN \n", Mod_idP); phy_config_sib1_fembms_ue(Mod_idP, CC_idP, 0, nonMBSFN_SubframeConfig); + UE_mac_inst[Mod_idP].non_mbsfn_SubframeConfig = nonMBSFN_SubframeConfig; } VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME diff --git a/openair2/LAYER2/MAC/eNB_scheduler.c b/openair2/LAYER2/MAC/eNB_scheduler.c index c46005ee2d..8f5aab99a7 100644 --- a/openair2/LAYER2/MAC/eNB_scheduler.c +++ b/openair2/LAYER2/MAC/eNB_scheduler.c @@ -547,7 +547,7 @@ copy_ulreq(module_id_t module_idP, frame_t frameP, sub_frame_t subframeP) { ul_req_tmp->ul_config_request_body.number_of_pdus = 0; if (ul_req->ul_config_request_body.number_of_pdus>0) { - LOG_D(PHY, "%s() active NOW (frameP:%d subframeP:%d) pdus:%d\n", __FUNCTION__, frameP, subframeP, ul_req->ul_config_request_body.number_of_pdus); + LOG_D(MAC, "%s() active NOW (frameP:%d subframeP:%d) pdus:%d\n", __FUNCTION__, frameP, subframeP, ul_req->ul_config_request_body.number_of_pdus); } memcpy((void *)ul_req->ul_config_request_body.ul_config_pdu_list, @@ -556,6 +556,11 @@ copy_ulreq(module_id_t module_idP, frame_t frameP, sub_frame_t subframeP) { } } +extern int16_t find_dlsch(uint16_t rnti, PHY_VARS_eNB *eNB,find_type_t type); +extern int16_t find_ulsch(uint16_t rnti, PHY_VARS_eNB *eNB,find_type_t type); +extern void clean_eNb_ulsch(LTE_eNB_ULSCH_t *ulsch); +extern void clean_eNb_dlsch(LTE_eNB_DLSCH_t *dlsch); + void eNB_dlsch_ulsch_scheduler(module_id_t module_idP, frame_t frameP, @@ -843,6 +848,7 @@ eNB_dlsch_ulsch_scheduler(module_id_t module_idP, } /* Note: This should not be done in the MAC! */ + /* for (int ii=0; iiulsch[ii]; @@ -862,6 +868,17 @@ eNB_dlsch_ulsch_scheduler(module_id_t module_idP, clean_eNb_dlsch(dlsch); } } + */ + + int id; + + // clean ULSCH entries for rnti + id = find_ulsch(rnti,RC.eNB[module_idP][CC_id],SEARCH_EXIST); + if (id>=0) clean_eNb_ulsch(RC.eNB[module_idP][CC_id]->ulsch[id]); + + // clean DLSCH entries for rnti + id = find_dlsch(rnti,RC.eNB[module_idP][CC_id],SEARCH_EXIST); + if (id>=0) clean_eNb_dlsch(RC.eNB[module_idP][CC_id]->dlsch[id][0]); for (int j = 0; j < 10; j++) { nfapi_ul_config_request_body_t *ul_req_tmp = NULL; @@ -904,6 +921,7 @@ eNB_dlsch_ulsch_scheduler(module_id_t module_idP, } #endif + int do_fembms_si=0; for (CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++) { if (cc[CC_id].MBMS_flag > 0) { start_meas(&RC.mac[module_idP]->schedule_mch); @@ -914,6 +932,10 @@ eNB_dlsch_ulsch_scheduler(module_id_t module_idP, } stop_meas(&RC.mac[module_idP]->schedule_mch); } + if (cc[CC_id].FeMBMS_flag > 0) { + do_fembms_si = 1; + } + } static int debug_flag = 0; @@ -935,12 +957,22 @@ eNB_dlsch_ulsch_scheduler(module_id_t module_idP, } /* This schedules MIB */ - if ((subframeP == 0) && (frameP & 3) == 0) - schedule_mib(module_idP, frameP, subframeP); + if(!do_fembms_si/*get_softmodem_params()->fembms*/){ + if ((subframeP == 0) && (frameP & 3) == 0) + schedule_mib(module_idP, frameP, subframeP); + }else{ + if ((subframeP == 0) && (frameP & 15) == 0 ){ + schedule_fembms_mib(module_idP, frameP, subframeP); + //schedule_SI_MBMS(module_idP, frameP, subframeP); + } + } if (get_softmodem_params()->phy_test == 0) { /* This schedules SI for legacy LTE and eMTC starting in subframeP */ - schedule_SI(module_idP, frameP, subframeP); + if(!do_fembms_si/*get_softmodem_params()->fembms*/) + schedule_SI(module_idP, frameP, subframeP); + else + schedule_SI_MBMS(module_idP, frameP, subframeP); /* This schedules Paging in subframeP */ schedule_PCH(module_idP,frameP,subframeP); /* This schedules Random-Access for legacy LTE and eMTC starting in subframeP */ diff --git a/openair2/LAYER2/MAC/eNB_scheduler_bch.c b/openair2/LAYER2/MAC/eNB_scheduler_bch.c index 5b99578d57..e4b9a7a65b 100644 --- a/openair2/LAYER2/MAC/eNB_scheduler_bch.c +++ b/openair2/LAYER2/MAC/eNB_scheduler_bch.c @@ -731,6 +731,7 @@ schedule_SI_MBMS(module_id_t module_idP, frame_t frameP, if (subframeP == 0) { for (CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++) { cc = &eNB->common_channels[CC_id]; + //printf("*cc->sib1_MBMS->si_WindowLength_r14 %d \n", *cc->sib1_MBMS->si_WindowLength_r14); vrb_map = (void *) &cc->vrb_map; N_RB_DL = to_prb(cc->mib->message.dl_Bandwidth); dl_config_request = &eNB->DL_req[CC_id]; @@ -911,6 +912,64 @@ schedule_SI_MBMS(module_id_t module_idP, frame_t frameP, stop_meas(&eNB->schedule_si_mbms); } +void +schedule_fembms_mib(module_id_t module_idP, frame_t frameP, sub_frame_t subframeP) { + eNB_MAC_INST *eNB = RC.mac[module_idP]; + COMMON_channels_t *cc; + nfapi_dl_config_request_pdu_t *dl_config_pdu; + nfapi_tx_request_pdu_t *TX_req; + int mib_sdu_length; + int CC_id; + nfapi_dl_config_request_t *dl_config_request; + nfapi_dl_config_request_body_t *dl_req; + uint16_t sfn_sf = frameP << 4 | subframeP; + AssertFatal(subframeP == 0, "Subframe must be 0\n"); + AssertFatal((frameP & 15) == 0, "Frame must be a multiple of 16\n"); + + for (CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++) { + dl_config_request = &eNB->DL_req[CC_id]; + dl_req = &dl_config_request->dl_config_request_body; + cc = &eNB->common_channels[CC_id]; + mib_sdu_length = mac_rrc_data_req(module_idP, CC_id, frameP, MIBCH_MBMS, 0xFFFF, 1, &cc->MIB_pdu.payload[0], 0); // not used in this case + LOG_D(MAC, "Frame %d, subframe %d: BCH PDU length %d\n", frameP, subframeP, mib_sdu_length); + + if (mib_sdu_length > 0) { + LOG_D(MAC, "Frame %d, subframe %d: Adding BCH PDU in position %d (length %d)\n", frameP, subframeP, dl_req->number_pdu, mib_sdu_length); + + if ((frameP & 1023) < 40) + LOG_D(MAC, + "[eNB %d] Frame %d : MIB->BCH CC_id %d, Received %d bytes (cc->mib->message.schedulingInfoSIB1_BR_r13 %d)\n", + module_idP, frameP, CC_id, mib_sdu_length, + (int) cc->mib->message.schedulingInfoSIB1_BR_r13); + + dl_config_pdu = &dl_req->dl_config_pdu_list[dl_req->number_pdu]; + memset((void *) dl_config_pdu, 0, + sizeof(nfapi_dl_config_request_pdu_t)); + dl_config_pdu->pdu_type = NFAPI_DL_CONFIG_BCH_PDU_TYPE, dl_config_pdu->pdu_size = + 2 + sizeof(nfapi_dl_config_bch_pdu); + dl_config_pdu->bch_pdu.bch_pdu_rel8.tl.tag = NFAPI_DL_CONFIG_REQUEST_BCH_PDU_REL8_TAG; + dl_config_pdu->bch_pdu.bch_pdu_rel8.length = mib_sdu_length; + dl_config_pdu->bch_pdu.bch_pdu_rel8.pdu_index = eNB->pdu_index[CC_id]; + dl_config_pdu->bch_pdu.bch_pdu_rel8.transmission_power = 6000; + dl_req->tl.tag = NFAPI_DL_CONFIG_REQUEST_BODY_TAG; + dl_req->number_pdu++; + dl_config_request->header.message_id = NFAPI_DL_CONFIG_REQUEST; + dl_config_request->sfn_sf = sfn_sf; + LOG_D(MAC, "eNB->DL_req[0].number_pdu %d (%p)\n", dl_req->number_pdu, &dl_req->number_pdu); + // DL request + TX_req = &eNB->TX_req[CC_id].tx_request_body.tx_pdu_list[eNB->TX_req[CC_id].tx_request_body.number_of_pdus]; + TX_req->pdu_length = 3; + TX_req->pdu_index = eNB->pdu_index[CC_id]++; + TX_req->num_segments = 1; + TX_req->segments[0].segment_length = 3; + TX_req->segments[0].segment_data = cc[CC_id].MIB_pdu.payload; + eNB->TX_req[CC_id].tx_request_body.number_of_pdus++; + eNB->TX_req[CC_id].sfn_sf = sfn_sf; + eNB->TX_req[CC_id].tx_request_body.tl.tag = NFAPI_TX_REQUEST_BODY_TAG; + eNB->TX_req[CC_id].header.message_id = NFAPI_TX_REQUEST; + } + } +} void schedule_mib(module_id_t module_idP, frame_t frameP, sub_frame_t subframeP) { diff --git a/openair2/LAYER2/MAC/eNB_scheduler_dlsch.c b/openair2/LAYER2/MAC/eNB_scheduler_dlsch.c index 7621994ab2..1f99f50ece 100644 --- a/openair2/LAYER2/MAC/eNB_scheduler_dlsch.c +++ b/openair2/LAYER2/MAC/eNB_scheduler_dlsch.c @@ -573,10 +573,7 @@ schedule_ue_spec(module_id_t module_idP, VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_PREPROCESSOR, VCD_FUNCTION_IN); start_meas(&eNB->schedule_dlsch_preprocessor); - dlsch_scheduler_pre_processor(module_idP, - CC_id, - frameP, - subframeP); + eNB->pre_processor_dl.dl(module_idP, CC_id, frameP, subframeP); stop_meas(&eNB->schedule_dlsch_preprocessor); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_PREPROCESSOR, VCD_FUNCTION_OUT); @@ -588,6 +585,7 @@ schedule_ue_spec(module_id_t module_idP, UE_sched_ctrl_t *ue_sched_ctrl = &UE_info->UE_sched_ctrl[UE_id]; UE_TEMPLATE *ue_template = &UE_info->UE_template[CC_id][UE_id]; eNB_UE_STATS *eNB_UE_stats = &UE_info->eNB_UE_stats[CC_id][UE_id]; + eNB_UE_stats->TBS = 0; const rnti_t rnti = ue_template->rnti; // If TDD @@ -679,15 +677,15 @@ schedule_ue_spec(module_id_t module_idP, const uint32_t rbc = allocate_prbs_sub( nb_rb, N_RB_DL, N_RBG, ue_sched_ctrl->rballoc_sub_UE[CC_id]); - if (nb_rb > ue_sched_ctrl->pre_nb_available_rbs[CC_id]) { - LOG_D(MAC, - "[eNB %d] Frame %d CC_id %d : don't schedule UE %d, its retransmission takes more resources than we have\n", + if (nb_rb > ue_sched_ctrl->pre_nb_available_rbs[CC_id]) + LOG_W(MAC, + "[eNB %d] %d.%d CC_id %d : should not schedule UE %d, its " + "retransmission takes more resources than we have\n", module_idP, frameP, + subframeP, CC_id, UE_id); - continue; - } /* CDRX */ ue_sched_ctrl->harq_rtt_timer[CC_id][harq_pid] = 1; // restart HARQ RTT timer @@ -799,6 +797,7 @@ schedule_ue_spec(module_id_t module_idP, eNB_UE_stats->rbs_used_retx = nb_rb; eNB_UE_stats->total_rbs_used_retx += nb_rb; eNB_UE_stats->dlsch_mcs2 = eNB_UE_stats->dlsch_mcs1; + eNB_UE_stats->TBS = TBS; } else { // Now check RLC information to compute number of required RBs // get maximum TBS size for RLC request @@ -842,13 +841,18 @@ schedule_ue_spec(module_id_t module_idP, if (ue_sched_ctrl->dl_lc_bytes[i] == 0) // no data in this LC! continue; - LOG_D(MAC, "[eNB %d] SFN/SF %d.%d, LC%d->DLSCH CC_id %d, Requesting %d bytes from RLC (RRC message)\n", + const uint32_t data = + min(ue_sched_ctrl->dl_lc_bytes[i], + TBS - ta_len - header_length_total - sdu_length_total - 3); + LOG_D(MAC, + "[eNB %d] SFN/SF %d.%d, LC%d->DLSCH CC_id %d, Requesting %d " + "bytes from RLC (RRC message)\n", module_idP, frameP, subframeP, lcid, CC_id, - TBS - ta_len - header_length_total - sdu_length_total - 3); + data); sdu_lengths[num_sdus] = mac_rlc_data_req(module_idP, rnti, @@ -857,7 +861,7 @@ schedule_ue_spec(module_id_t module_idP, ENB_FLAG_YES, MBMS_FLAG_NO, lcid, - TBS - ta_len - header_length_total - sdu_length_total - 3, + data, (char *)&dlsch_buffer[sdu_length_total], 0, 0 diff --git a/openair2/LAYER2/MAC/eNB_scheduler_fairRR.c b/openair2/LAYER2/MAC/eNB_scheduler_fairRR.c index 00fd40109d..f6220fa46d 100644 --- a/openair2/LAYER2/MAC/eNB_scheduler_fairRR.c +++ b/openair2/LAYER2/MAC/eNB_scheduler_fairRR.c @@ -2240,7 +2240,7 @@ void ulsch_scheduler_pre_ue_select_fairRR( uint8_t first_ue_total[MAX_NUM_CCs][20]; uint8_t first_ue_id[MAX_NUM_CCs][20]; uint8_t ul_inactivity_num[MAX_NUM_CCs]; - uint8_t ul_inactivity_id[MAX_NUM_CCs][20]={0}; + uint8_t ul_inactivity_id[MAX_NUM_CCs][20]={{0}}; // LTE_DL_FRAME_PARMS *frame_parms; uint8_t ulsch_ue_max_num[MAX_NUM_CCs]; uint16_t saved_ulsch_dci[MAX_NUM_CCs]; diff --git a/openair2/LAYER2/MAC/eNB_scheduler_mch.c b/openair2/LAYER2/MAC/eNB_scheduler_mch.c index eb5d78fd3f..0c686a6475 100644 --- a/openair2/LAYER2/MAC/eNB_scheduler_mch.c +++ b/openair2/LAYER2/MAC/eNB_scheduler_mch.c @@ -66,7 +66,11 @@ get_mbsfn_sf_alloction(module_id_t module_idP, uint8_t CC_id, "[eNB %d] CC_id %d MBSFN synchronization area %d out of range\n ", module_idP, CC_id, mbsfn_sync_area); return -1; - } else if (RC.mac[module_idP]-> + }else if (RC.mac[module_idP]-> + common_channels[CC_id].non_mbsfn_SubframeConfig + != NULL) { + return mbsfn_sync_area; + }else if (RC.mac[module_idP]-> common_channels[CC_id].mbsfn_SubframeConfig[mbsfn_sync_area] != NULL) { return mbsfn_sync_area; @@ -80,14 +84,30 @@ get_mbsfn_sf_alloction(module_id_t module_idP, uint8_t CC_id, static uint32_t bytes_in_buffer=0; static uint32_t msi_pmch_stop=0; -//static uint8_t msi_active=0; -//static uint8_t msi_pmch_stop2=0; -uint16_t mbms_rab_id = 2047; +uint16_t mbms_rab_id=2047;//[8] = {2047,2047,2047,2047,2047,2047,2047,2047}; static uint32_t msi_sfs=0; //MSI_ELEMENT * ptr =NULL; +static int check_CAS_sf(frame_t frameP,sub_frame_t subframeP){ + if( ((frameP&3)==0) && (subframeP == 0)) + return 1; + else + return 0; +} +static int check_nonMBSFN_sf(frame_t frameP,COMMON_channels_t *cc,int sf){ + uint32_t non_mbsfn_SubframeConfig = (cc->non_mbsfn_SubframeConfig->subframeAllocation_r14.buf[0]<<1 | cc->non_mbsfn_SubframeConfig->subframeAllocation_r14.buf[0]>>7); + if( frameP % (4<non_mbsfn_SubframeConfig->radioFrameAllocationPeriod_r14) == cc->non_mbsfn_SubframeConfig->radioFrameAllocationOffset_r14 ){ + return (non_mbsfn_SubframeConfig & (0x200>>(sf)))==(0x200 >> (sf)); + } + return 0; +} + + +static int x=0; +static int mbms_mch_i=0; + int schedule_MBMS_NFAPI(module_id_t module_idP, uint8_t CC_id, frame_t frameP, sub_frame_t subframeP) @@ -99,29 +119,28 @@ schedule_MBMS_NFAPI(module_id_t module_idP, uint8_t CC_id, frame_t frameP, int mcch_flag = 0, mtch_flag = 0, msi_flag = 0; int mbsfn_period = 0; // 1<<(RC.mac[module_idP]->mbsfn_SubframeConfig[0]->radioframeAllocationPeriod); int mcch_period = 0; //32<<(RC.mac[module_idP]->mbsfn_AreaInfo[0]->mcch_Config_r9.mcch_RepetitionPeriod_r9); + //TOCHECK mtch index here if(RC.mac[module_idP]->common_channels[CC_id]. pmch_Config[0] == NULL ) - return 0; - - - + //TOCHECK mtch index here int mch_scheduling_period = 8 << (RC.mac[module_idP]->common_channels[CC_id]. pmch_Config[0]->mch_SchedulingPeriod_r9); + unsigned char mcch_sdu_length; unsigned char header_len_mcch = 0, header_len_msi = 0, header_len_mtch = 0, header_len_mtch_temp = 0, header_len_mcch_temp = 0, header_len_msi_temp = 0; - int ii = 0, msi_pos = 0; + int ii = 0, msi_pos = -1; int mcch_mcs = -1; + int shifted_sf = 0; uint16_t TBS, j = -1, padding = 0, post_padding = 0; mac_rlc_status_resp_t rlc_status; - //mac_rlc_status_resp_t rlc_status2; - int num_mtch; + int num_mtch=0; int msi_length=0, i, k; - //uint8_t l =0; + unsigned char sdu_lcids[11], num_sdus = 0, offset = 0; uint16_t sdu_lengths[11], sdu_length_total = 0; unsigned char mch_buffer[MAX_DLSCH_PAYLOAD_BYTES]; // check the max value, this is for dlsch only @@ -136,358 +155,535 @@ schedule_MBMS_NFAPI(module_id_t module_idP, uint8_t CC_id, frame_t frameP, return 0; } - mbsfn_period = - 1 << (cc->mbsfn_SubframeConfig[j]->radioframeAllocationPeriod); - mcch_period = - 32 << (cc->mbsfn_AreaInfo[i]-> - mcch_Config_r9.mcch_RepetitionPeriod_r9); - msi_pos = 0; - ii = 0; - LOG_D(MAC, - "[eNB %d] CC_id %d Frame %d subframeP %d : Checking MBSFN Sync Area %d/%d with SF allocation %d/%d for MCCH and MTCH (mbsfn period %d, mcch period %d)\n", - module_idP, CC_id, frameP, subframeP, i, - cc->num_active_mbsfn_area, j, cc->num_sf_allocation_pattern, - mbsfn_period, mcch_period); + if(cc->non_mbsfn_SubframeConfig){ + int alloc_offset=0; + uint32_t period; + uint32_t non_mbsfn_SubframeConfig = (cc->non_mbsfn_SubframeConfig->subframeAllocation_r14.buf[0]<<1 | cc->non_mbsfn_SubframeConfig->subframeAllocation_r14.buf[0]>>7); + long mcch_offset = cc->mbsfn_AreaInfo[i]->mcch_Config_r9.mcch_Offset_r9; - switch (cc->mbsfn_AreaInfo[i]->mcch_Config_r9.signallingMCS_r9) { - case 0: - mcch_mcs = 2; - break; + period = 4<non_mbsfn_SubframeConfig->radioFrameAllocationPeriod_r14; + alloc_offset = cc->non_mbsfn_SubframeConfig->radioFrameAllocationOffset_r14; + mcch_period = 32 << cc->mbsfn_AreaInfo[i]->mcch_Config_r9.mcch_RepetitionPeriod_r9; + + // get the real MCS value + switch (cc->mbsfn_AreaInfo[i]->mcch_Config_r9.signallingMCS_r9) { + case 0: + mcch_mcs = 2; + break; - case 1: - mcch_mcs = 7; - break; + case 1: + mcch_mcs = 7; + break; - case 2: - mcch_mcs = 13; - break; + case 2: + mcch_mcs = 13; + break; - case 3: - mcch_mcs = 19; - break; - } + case 3: + mcch_mcs = 19; + break; + } + + if (cc->pmch_Config[0]) { + mch_scheduling_period = 8 << cc->pmch_Config[0]->mch_SchedulingPeriod_r9; + } - // 1st: Check the MBSFN subframes from SIB2 info (SF allocation pattern i, max 8 non-overlapping patterns exist) - if (frameP % mbsfn_period == cc->mbsfn_SubframeConfig[j]->radioframeAllocationOffset) { // MBSFN frameP - if (cc->mbsfn_SubframeConfig[j]->subframeAllocation.present == LTE_MBSFN_SubframeConfig__subframeAllocation_PR_oneFrame) { // one-frameP format - - // Find the first subframeP in this MCH to transmit MSI - if (frameP % mch_scheduling_period == - cc->mbsfn_SubframeConfig[j]-> - radioframeAllocationOffset) { - while (ii == 0) { - ii = cc-> - mbsfn_SubframeConfig[j]->subframeAllocation. - choice.oneFrame.buf[0] & (0x80 >> msi_pos); + LOG_D(MAC,"frameP %d subframe %d period %d alloc_offset %d mcch_mcs %d mcch_period %d mcch_offset %ld buf %x mch_scheduling_period %d\n",frameP, subframeP, period, alloc_offset,mcch_mcs, mcch_period, mcch_offset,(cc->mbsfn_AreaInfo[i]->mcch_Config_r9.sf_AllocInfo_r9.buf[0]),mch_scheduling_period); + //if( (frameP % (4 << cc->commonSF_AllocPeriod_r9) ) == 0 ){ + // if((subframeP==0)){ + // x=0; + // mbms_mch_i=0; + // } + //} + //if (frameP % (4 << cc->commonSF_AllocPeriod_r9 ) == 0) { + // if((subframeP==0)){ + // x=0; + // mbms_mch_i=0; + // } + //} + if (cc->pmch_Config[0]) { + // Find the first subframe in this MCH to transmit MSI + if (frameP % 1 == 0) { + if (frameP % mch_scheduling_period == 0) { + msi_pos=0; + if((frameP&3)==0) msi_pos++; - } + while((non_mbsfn_SubframeConfig & (0x100 >> msi_pos)) == (0x100>>msi_pos)) + msi_pos++; + mbms_mch_i=0; - LOG_D(MAC, - "[eNB %d] CC_id %d Frame %d subframeP %d : sync area %d sf allocation pattern %d sf alloc %x msi pos is %d \n", - module_idP, CC_id, frameP, subframeP, i, j, - cc->mbsfn_SubframeConfig[j]-> - subframeAllocation.choice.oneFrame.buf[0], - msi_pos); + if((subframeP==0)){ + x=0; + mbms_mch_i=0; + } + } - // Check if the subframeP is for MSI, MCCH or MTCHs and Set the correspoding flag to 1 - switch (subframeP) { - case 1: - if (cc->tdd_Config == NULL) { - if ((cc-> - mbsfn_SubframeConfig[j]->subframeAllocation. - choice.oneFrame.buf[0] & MBSFN_FDD_SF1) == - MBSFN_FDD_SF1) { - if (msi_pos == 1) { - msi_flag = 1; - } + } + } - if ((frameP % mcch_period == - cc->mbsfn_AreaInfo[i]-> - mcch_Config_r9.mcch_Offset_r9) - && - ((cc->mbsfn_AreaInfo[i]-> - mcch_Config_r9.sf_AllocInfo_r9. - buf[0] & MBSFN_FDD_SF1) == - MBSFN_FDD_SF1)) { - mcch_flag = 1; - } + if(cc->pmch_Config[mbms_mch_i+1]!=NULL){ + if( x == cc->pmch_Config[mbms_mch_i]->sf_AllocEnd_r9+shifted_sf){ - mtch_flag = 1; - } - } - - break; - - case 2: - if (cc->tdd_Config == NULL) { - if ((cc-> - mbsfn_SubframeConfig[j]->subframeAllocation. - choice.oneFrame.buf[0] & MBSFN_FDD_SF2) == - MBSFN_FDD_SF2) { - if (msi_pos == 2) { - msi_flag = 1; - } - - if ((frameP % mcch_period == - cc->mbsfn_AreaInfo[i]-> - mcch_Config_r9.mcch_Offset_r9) - && - ((cc->mbsfn_AreaInfo[i]-> - mcch_Config_r9.sf_AllocInfo_r9. - buf[0] & MBSFN_FDD_SF2) == - MBSFN_FDD_SF2)) { - mcch_flag = 1; - } - - mtch_flag = 1; - } - } - - break; - - case 3: - if (cc->tdd_Config != NULL) { // TDD - if ((cc-> - mbsfn_SubframeConfig[j]->subframeAllocation. - choice.oneFrame.buf[0] & MBSFN_TDD_SF3) == - MBSFN_TDD_SF3) { - if (msi_pos == 1) { - msi_flag = 1; - } - - if ((frameP % mcch_period == - cc->mbsfn_AreaInfo[i]-> - mcch_Config_r9.mcch_Offset_r9) - && - ((cc->mbsfn_AreaInfo[i]-> - mcch_Config_r9.sf_AllocInfo_r9. - buf[0] & MBSFN_TDD_SF3) == - MBSFN_TDD_SF3)) { - mcch_flag = 1; - } - - mtch_flag = 1; - } - } else { // FDD - if ((cc-> - mbsfn_SubframeConfig[j]->subframeAllocation. - choice.oneFrame.buf[0] & MBSFN_FDD_SF3) == - MBSFN_FDD_SF3) { - if (msi_pos == 3) { - msi_flag = 1; - } - - if ((frameP % mcch_period == - cc->mbsfn_AreaInfo[i]-> - mcch_Config_r9.mcch_Offset_r9) - && - ((cc->mbsfn_AreaInfo[i]-> - mcch_Config_r9.sf_AllocInfo_r9. - buf[0] & MBSFN_FDD_SF3) == - MBSFN_FDD_SF3)) { - mcch_flag = 1; - } - - mtch_flag = 1; - } - } - - break; - - case 4: - if (cc->tdd_Config != NULL) { - if ((cc-> - mbsfn_SubframeConfig[j]->subframeAllocation. - choice.oneFrame.buf[0] & MBSFN_TDD_SF4) == - MBSFN_TDD_SF4) { - if (msi_pos == 2) { - msi_flag = 1; - } - - if ((frameP % mcch_period == - cc->mbsfn_AreaInfo[i]-> - mcch_Config_r9.mcch_Offset_r9) - && - ((cc->mbsfn_AreaInfo[i]-> - mcch_Config_r9.sf_AllocInfo_r9. - buf[0] & MBSFN_TDD_SF4) == - MBSFN_TDD_SF4)) { - mcch_flag = 1; - } - - mtch_flag = 1; - } - } - - break; - - case 6: - if (cc->tdd_Config == NULL) { - if ((cc-> - mbsfn_SubframeConfig[j]->subframeAllocation. - choice.oneFrame.buf[0] & MBSFN_FDD_SF6) == - MBSFN_FDD_SF6) { - if (msi_pos == 4) { - msi_flag = 1; - } - - if ((frameP % mcch_period == - cc->mbsfn_AreaInfo[i]-> - mcch_Config_r9.mcch_Offset_r9) - && - ((cc->mbsfn_AreaInfo[i]-> - mcch_Config_r9.sf_AllocInfo_r9. - buf[0] & MBSFN_FDD_SF6) == - MBSFN_FDD_SF6)) { - mcch_flag = 1; - } - - mtch_flag = 1; - } - } - - break; - - case 7: - if (cc->tdd_Config != NULL) { // TDD - if ((cc-> - mbsfn_SubframeConfig[j]->subframeAllocation. - choice.oneFrame.buf[0] & MBSFN_TDD_SF7) == - MBSFN_TDD_SF7) { - if (msi_pos == 3) { - msi_flag = 1; - } - - if ((frameP % mcch_period == - cc->mbsfn_AreaInfo[i]-> - mcch_Config_r9.mcch_Offset_r9) - && - ((cc->mbsfn_AreaInfo[i]-> - mcch_Config_r9.sf_AllocInfo_r9. - buf[0] & MBSFN_TDD_SF7) == - MBSFN_TDD_SF7)) { - mcch_flag = 1; - } - - mtch_flag = 1; - } - } else { // FDD - if ((cc-> - mbsfn_SubframeConfig[j]->subframeAllocation. - choice.oneFrame.buf[0] & MBSFN_FDD_SF7) == - MBSFN_FDD_SF7) { - if (msi_pos == 5) { - msi_flag = 1; - } - - if ((frameP % mcch_period == - cc->mbsfn_AreaInfo[i]-> - mcch_Config_r9.mcch_Offset_r9) - && - ((cc->mbsfn_AreaInfo[i]-> - mcch_Config_r9.sf_AllocInfo_r9. - buf[0] & MBSFN_FDD_SF7) == - MBSFN_FDD_SF7)) { - mcch_flag = 1; - } - - mtch_flag = 1; - } - } - - break; - - case 8: - if (cc->tdd_Config != NULL) { //TDD - if ((cc-> - mbsfn_SubframeConfig[j]->subframeAllocation. - choice.oneFrame.buf[0] & MBSFN_TDD_SF8) == - MBSFN_TDD_SF8) { - if (msi_pos == 4) { - msi_flag = 1; - } - - if ((frameP % mcch_period == - cc->mbsfn_AreaInfo[i]-> - mcch_Config_r9.mcch_Offset_r9) - && - ((cc->mbsfn_AreaInfo[i]-> - mcch_Config_r9.sf_AllocInfo_r9. - buf[0] & MBSFN_TDD_SF8) == - MBSFN_TDD_SF8)) { - mcch_flag = 1; - } - - mtch_flag = 1; - } - } else { // FDD - if ((cc-> - mbsfn_SubframeConfig[j]->subframeAllocation. - choice.oneFrame.buf[0] & MBSFN_FDD_SF8) == - MBSFN_FDD_SF8) { - if (msi_pos == 6) { - msi_flag = 1; - } - - if ((frameP % mcch_period == - cc->mbsfn_AreaInfo[i]-> - mcch_Config_r9.mcch_Offset_r9) - && - ((cc->mbsfn_AreaInfo[i]-> - mcch_Config_r9.sf_AllocInfo_r9. - buf[0] & MBSFN_FDD_SF8) == - MBSFN_FDD_SF8)) { - mcch_flag = 1; - } - - mtch_flag = 1; - } - } - - break; - - case 9: - if (cc->tdd_Config != NULL) { - if ((cc-> - mbsfn_SubframeConfig[j]->subframeAllocation. - choice.oneFrame.buf[0] & MBSFN_TDD_SF9) == - MBSFN_TDD_SF9) { - if (msi_pos == 5) { - msi_flag = 1; - } - - if ((frameP % mcch_period == - cc->mbsfn_AreaInfo[i]-> - mcch_Config_r9.mcch_Offset_r9) - && - ((cc->mbsfn_AreaInfo[i]-> - mcch_Config_r9.sf_AllocInfo_r9. - buf[0] & MBSFN_TDD_SF9) == - MBSFN_TDD_SF9)) { - mcch_flag = 1; - } - - mtch_flag = 1; - } - } - - break; - } // end switch - - // sf allocation is non-overlapping - if ((msi_flag == 1) || (mcch_flag == 1) - || (mtch_flag == 1)) { - LOG_D(MAC, - "[eNB %d] CC_id %d Frame %d Subframe %d: sync area %d SF alloc %d: msi flag %d, mcch flag %d, mtch flag %d\n", - module_idP, CC_id, frameP, subframeP, i, j, - msi_flag, mcch_flag, mtch_flag); - break; + shifted_sf = check_nonMBSFN_sf(frameP,cc,subframeP)+check_CAS_sf(frameP,subframeP); + msi_pos=subframeP+shifted_sf; + if(shifted_sf==0) + mbms_mch_i++; + LOG_D(MAC,"MSP, frameP %d subframeP %d msi_pos(%d) mbms_mch_i %d shifted_sf %d\n",frameP, subframeP, msi_pos,mbms_mch_i,shifted_sf); } - } else { // four-frameP format } - } - } // end of for loop + + // Check if the subframe is for MSI, MCCH or MTCHs and Set the correspoding flag to 1 + switch (subframeP) { + case 0: + if (msi_pos == 0) { + msi_flag = 1; + } + mtch_flag = 1; + break; + case 1: + if (msi_pos == 1) { + msi_flag = 1; + } + if ((frameP % mcch_period == mcch_offset) && ((cc->mbsfn_AreaInfo[i]->mcch_Config_r9.sf_AllocInfo_r9.buf[0] & MBSFN_FDD_SF1) == MBSFN_FDD_SF1)) { + mcch_flag = 1; + } + mtch_flag = 1; + break; + + case 2: + if (msi_pos == 2) { + msi_flag = 1; + } + if ((frameP % mcch_period == mcch_offset) && ((cc->mbsfn_AreaInfo[i]->mcch_Config_r9.sf_AllocInfo_r9.buf[0] & MBSFN_FDD_SF2) == MBSFN_FDD_SF2)) { + mcch_flag = 1; + } + mtch_flag = 1; + + break; + + case 3: + if (msi_pos == 3) { + msi_flag = 1; + } + if ((frameP % mcch_period == mcch_offset) && ((cc->mbsfn_AreaInfo[i]->mcch_Config_r9.sf_AllocInfo_r9.buf[0] & MBSFN_FDD_SF3) == MBSFN_FDD_SF3)) { + mcch_flag = 1; + } + mtch_flag = 1; + break; + + case 4: + if (msi_pos == 4) { + msi_flag = 1; + } + mtch_flag = 1; + break; + + case 5: + if (msi_pos == 5) { + msi_flag = 1; + } + mtch_flag = 1; + break; + + case 6: + if (msi_pos == 6) { + msi_flag = 1; + } + if ((frameP % mcch_period == mcch_offset) && ((cc->mbsfn_AreaInfo[i]->mcch_Config_r9.sf_AllocInfo_r9.buf[0] & MBSFN_FDD_SF6) == MBSFN_FDD_SF6)) { + mcch_flag = 1; + } + mtch_flag = 1; + break; + + case 7: + if (msi_pos == 7) { + msi_flag = 1; + } + if ((frameP % mcch_period == mcch_offset) && ((cc->mbsfn_AreaInfo[i]->mcch_Config_r9.sf_AllocInfo_r9.buf[0] & MBSFN_FDD_SF7) == MBSFN_FDD_SF7)) { + mcch_flag = 1; + } + mtch_flag = 1; + break; + + case 8: + if (msi_pos == 8) { + msi_flag = 1; + } + if ((frameP % mcch_period == mcch_offset) && ((cc->mbsfn_AreaInfo[i]->mcch_Config_r9.sf_AllocInfo_r9.buf[0] & MBSFN_FDD_SF8) == MBSFN_FDD_SF8)) { + mcch_flag = 1; + } + mtch_flag = 1; + break; + + case 9: + if (msi_pos == 9) { + msi_flag = 1; + } + mtch_flag = 1; + break; + }// end switch + + if ((msi_flag == 1) || (mcch_flag == 1) || (mtch_flag == 1)) { + LOG_D(MAC, + "[eNB %d] CC_id %d Frame %d Subframe %d: sync area %d SF alloc %d: msi flag %d, mcch flag %d, mtch flag %d\n", + module_idP, CC_id, frameP, subframeP, i, j, + msi_flag, mcch_flag, mtch_flag); + } + + //TODO quitar la subframe 0 del otro switch ... está mal interpretado ? + // if((frameP&3) == 0){ + // mtch_flag=0;mcch_flag=0;msi_flag=0; + // } + + if((frameP % period ) == alloc_offset){ + LOG_D(MAC,"non_mbsfn_SubframeConfig %x\n",non_mbsfn_SubframeConfig); + switch(subframeP){ + case 0:{ + mtch_flag=0;mcch_flag=0;msi_flag=0; + } + break; + case 1:{ + if ((non_mbsfn_SubframeConfig & 0x100) > 0) + {mtch_flag=0;mcch_flag=0;msi_flag=0;} + } + break; + case 2:{ + if ((non_mbsfn_SubframeConfig & 0x80) > 0) + {mtch_flag=0;mcch_flag=0;msi_flag=0;} + } + break; + case 3:{ + if ((non_mbsfn_SubframeConfig & 0x40) > 0) + {mtch_flag=0;mcch_flag=0;msi_flag=0;} + } + break; + case 4:{ + if ((non_mbsfn_SubframeConfig & 0x20) > 0) + {mtch_flag=0;mcch_flag=0;msi_flag=0;} + } + break; + case 5:{ + if ((non_mbsfn_SubframeConfig & 0x10) > 0) + {mtch_flag=0;mcch_flag=0;msi_flag=0;} + } + break; + case 6:{ + if ((non_mbsfn_SubframeConfig & 0x8) > 0) + {mtch_flag=0;mcch_flag=0;msi_flag=0;} + } + break; + case 7:{ + if ((non_mbsfn_SubframeConfig & 0x4) > 0) + {mtch_flag=0;mcch_flag=0;msi_flag=0;} + } + break; + case 8:{ + if ((non_mbsfn_SubframeConfig & 0x2) > 0) + {mtch_flag=0;mcch_flag=0;msi_flag=0;} + } + break; + case 9:{ + if ((non_mbsfn_SubframeConfig & 0x1) > 0) + {mtch_flag=0;mcch_flag=0;msi_flag=0;} + } + break; + } + } + // sf allocation is non-overlapping + if ((msi_flag == 1) || (mcch_flag == 1) || (mtch_flag == 1)) { + x++; + //if( (msi_flag!=1 && mcch_flag!=1) || (msi_flag!=1 && mcch_flag!=1 && mtch_flag!=1) ){ + //x++; + //} + + if(msi_flag==1){ + if ( (/*AJ*/ (/*V*/ ( /*U*/ (frameP %( 4 << cc->commonSF_AllocPeriod_r9)) ) / 8 ) % ((8 << cc->pmch_Config[mbms_mch_i]->mch_SchedulingPeriod_r9) / 8 ) ) != 0 ){ + msi_flag=0; + LOG_D(MAC,"frameP %d subframeP %d reset(%d)\n",frameP, subframeP, mbms_mch_i); + } + + } + + LOG_D(MAC,"[eNB %d] CC_id %d Frame %d Subframe %d: sync area %d SF alloc %d: msi flag %d, mcch flag %d, mtch flag %d, x %d\n", + module_idP, CC_id, frameP, subframeP, i, j, + msi_flag, mcch_flag, mtch_flag,x); + break; + } + + + }else if(cc->mbsfn_SubframeConfig[j]){ + + mbsfn_period = + 1 << (cc->mbsfn_SubframeConfig[j]->radioframeAllocationPeriod); + mcch_period = + 32 << (cc->mbsfn_AreaInfo[i]-> + mcch_Config_r9.mcch_RepetitionPeriod_r9); + msi_pos = 0; + ii = 0; + LOG_D(MAC, "[eNB %d] CC_id %d Frame %d subframeP %d : Checking MBSFN Sync Area %d/%d with SF allocation %d/%d for MCCH and MTCH (mbsfn period %d, mcch period %d)\n", + module_idP, CC_id, frameP, subframeP, i, + cc->num_active_mbsfn_area, j, cc->num_sf_allocation_pattern, + mbsfn_period, mcch_period); + + switch (cc->mbsfn_AreaInfo[i]->mcch_Config_r9.signallingMCS_r9) { + case 0: + mcch_mcs = 2; + break; + + case 1: + mcch_mcs = 7; + break; + + case 2: + mcch_mcs = 13; + break; + + case 3: + mcch_mcs = 19; + break; + } + + // 1st: Check the MBSFN subframes from SIB2 info (SF allocation pattern i, max 8 non-overlapping patterns exist) + if (frameP % mbsfn_period == cc->mbsfn_SubframeConfig[j]->radioframeAllocationOffset) { // MBSFN frameP + if (cc->mbsfn_SubframeConfig[j]->subframeAllocation.present == LTE_MBSFN_SubframeConfig__subframeAllocation_PR_oneFrame) { // one-frameP format + // Find the first subframeP in this MCH to transmit MSI + if (frameP % mch_scheduling_period == cc->mbsfn_SubframeConfig[j]->radioframeAllocationOffset) { + while (ii == 0) { + ii = cc-> + mbsfn_SubframeConfig[j]->subframeAllocation. + choice.oneFrame.buf[0] & (0x80 >> msi_pos); + msi_pos++; + } + LOG_D(MAC, "[eNB %d] CC_id %d Frame %d subframeP %d : sync area %d sf allocation pattern %d sf alloc %x msi pos is %d \n", + module_idP, CC_id, frameP, subframeP, i, j, + cc->mbsfn_SubframeConfig[j]->subframeAllocation.choice.oneFrame.buf[0], + msi_pos); + if((subframeP==1)){ + x=0; + mbms_mch_i=0; + LOG_D(MAC,"MSP, frameP %d subframeP %d msi_pos(%d) mbms_mch_i %d\n",frameP, subframeP, msi_pos,mbms_mch_i); + } + } + + // Check if the subframeP is for MSI, MCCH or MTCHs and Set the correspoding flag to 1 + switch (subframeP) { + case 1: + if (cc->tdd_Config == NULL) { + if ((cc->mbsfn_SubframeConfig[j]->subframeAllocation.choice.oneFrame.buf[0] & MBSFN_FDD_SF1) == MBSFN_FDD_SF1) { + if(cc->pmch_Config[mbms_mch_i+1]!=NULL){ + if( x == cc->pmch_Config[mbms_mch_i]->sf_AllocEnd_r9){ + msi_pos=1; + mbms_mch_i++; + LOG_D(MAC,"MSP, frameP %d subframeP %d msi_pos(%d) mbms_mch_i %d\n",frameP, subframeP, msi_pos,mbms_mch_i); + } + } + if (msi_pos == 1) { + msi_flag = 1; + } + if ( (frameP % mcch_period == cc->mbsfn_AreaInfo[i]->mcch_Config_r9.mcch_Offset_r9) + && ( (cc->mbsfn_AreaInfo[i]->mcch_Config_r9.sf_AllocInfo_r9.buf[0] & MBSFN_FDD_SF1) == MBSFN_FDD_SF1) ) { + mcch_flag = 1; + } + mtch_flag = 1; + } + } + break; + case 2: + if (cc->tdd_Config == NULL) { + if ((cc->mbsfn_SubframeConfig[j]->subframeAllocation.choice.oneFrame.buf[0] & MBSFN_FDD_SF2) == MBSFN_FDD_SF2) { + if(cc->pmch_Config[mbms_mch_i+1]!=NULL){ + if( x == cc->pmch_Config[mbms_mch_i]->sf_AllocEnd_r9){ + msi_pos=2; + mbms_mch_i++; + LOG_D(MAC,"MSP, frameP %d subframeP %d msi_pos(%d) mbms_mch_i %d\n",frameP, subframeP, msi_pos,mbms_mch_i); + } + } + + if (msi_pos == 2) { + msi_flag = 1; + } + if ( (frameP % mcch_period == cc->mbsfn_AreaInfo[i]->mcch_Config_r9.mcch_Offset_r9) + && ((cc->mbsfn_AreaInfo[i]->mcch_Config_r9.sf_AllocInfo_r9.buf[0] & MBSFN_FDD_SF2) == MBSFN_FDD_SF2)) { + mcch_flag = 1; + } + mtch_flag = 1; + } + } + break; + case 3: + if (cc->tdd_Config != NULL) { + if ((cc->mbsfn_SubframeConfig[j]->subframeAllocation.choice.oneFrame.buf[0] & MBSFN_TDD_SF3) == MBSFN_TDD_SF3) { + if (msi_pos == 1) { + msi_flag = 1; + } + if ((frameP % mcch_period == cc->mbsfn_AreaInfo[i]->mcch_Config_r9.mcch_Offset_r9) + &&((cc->mbsfn_AreaInfo[i]->mcch_Config_r9.sf_AllocInfo_r9.buf[0] & MBSFN_TDD_SF3) == MBSFN_TDD_SF3)) { + mcch_flag = 1; + } + mtch_flag = 1; + } + } else { // FDD + if ((cc->mbsfn_SubframeConfig[j]->subframeAllocation.choice.oneFrame.buf[0] & MBSFN_FDD_SF3) == MBSFN_FDD_SF3) { + if(cc->pmch_Config[mbms_mch_i+1]!=NULL){ + if( x == cc->pmch_Config[mbms_mch_i]->sf_AllocEnd_r9){ + msi_pos=3; + mbms_mch_i++; + LOG_D(MAC,"MSP, frameP %d subframeP %d msi_pos(%d) mbms_mch_i %d\n",frameP, subframeP, msi_pos,mbms_mch_i); + } + } + if (msi_pos == 3) { + msi_flag = 1; + } + if ((frameP % mcch_period == cc->mbsfn_AreaInfo[i]->mcch_Config_r9.mcch_Offset_r9) + &&((cc->mbsfn_AreaInfo[i]->mcch_Config_r9.sf_AllocInfo_r9.buf[0] & MBSFN_FDD_SF3) == MBSFN_FDD_SF3)) { + mcch_flag = 1; + } + mtch_flag = 1; + } + } + break; + case 4: + if (cc->tdd_Config != NULL) { + if ((cc->mbsfn_SubframeConfig[j]->subframeAllocation.choice.oneFrame.buf[0] & MBSFN_TDD_SF4) == MBSFN_TDD_SF4) { + if (msi_pos == 2) { + msi_flag = 1; + } + if ((frameP % mcch_period == cc->mbsfn_AreaInfo[i]->mcch_Config_r9.mcch_Offset_r9) + &&((cc->mbsfn_AreaInfo[i]->mcch_Config_r9.sf_AllocInfo_r9.buf[0] & MBSFN_TDD_SF4) == MBSFN_TDD_SF4)) { + mcch_flag = 1; + } + mtch_flag = 1; + } + } + break; + case 6: + if (cc->tdd_Config == NULL) { + if ((cc->mbsfn_SubframeConfig[j]->subframeAllocation.choice.oneFrame.buf[0] & MBSFN_FDD_SF6) == MBSFN_FDD_SF6) { + if(cc->pmch_Config[mbms_mch_i+1]!=NULL){ + if( x == cc->pmch_Config[mbms_mch_i]->sf_AllocEnd_r9){ + msi_pos=4; + mbms_mch_i++; + LOG_D(MAC,"MSP, frameP %d subframeP %d msi_pos(%d) mbms_mch_i %d\n",frameP, subframeP, msi_pos,mbms_mch_i); + } + } + if (msi_pos == 4) { + msi_flag = 1; + } + if ((frameP % mcch_period == cc->mbsfn_AreaInfo[i]->mcch_Config_r9.mcch_Offset_r9) + &&((cc->mbsfn_AreaInfo[i]->mcch_Config_r9.sf_AllocInfo_r9.buf[0] & MBSFN_FDD_SF6) == MBSFN_FDD_SF6)) { + mcch_flag = 1; + } + mtch_flag = 1; + } + } + break; + case 7: + if (cc->tdd_Config != NULL) { // TDD + if ((cc->mbsfn_SubframeConfig[j]->subframeAllocation.choice.oneFrame.buf[0] & MBSFN_TDD_SF7) == MBSFN_TDD_SF7) { + if (msi_pos == 3) { + msi_flag = 1; + } + if ((frameP % mcch_period == cc->mbsfn_AreaInfo[i]->mcch_Config_r9.mcch_Offset_r9) + &&((cc->mbsfn_AreaInfo[i]->mcch_Config_r9.sf_AllocInfo_r9.buf[0] & MBSFN_TDD_SF7) == MBSFN_TDD_SF7)) { + mcch_flag = 1; + } + mtch_flag = 1; + } + } else { // FDD + if ((cc->mbsfn_SubframeConfig[j]->subframeAllocation.choice.oneFrame.buf[0] & MBSFN_FDD_SF7) == MBSFN_FDD_SF7) { + if(cc->pmch_Config[mbms_mch_i+1]!=NULL){ + if( x == cc->pmch_Config[mbms_mch_i]->sf_AllocEnd_r9){ + msi_pos=5; + mbms_mch_i++; + LOG_D(MAC,"MSP, frameP %d subframeP %d msi_pos(%d) mbms_mch_i %d\n",frameP, subframeP, msi_pos,mbms_mch_i); + } + } + + if (msi_pos == 5) { + msi_flag = 1; + } + if ((frameP % mcch_period == cc->mbsfn_AreaInfo[i]->mcch_Config_r9.mcch_Offset_r9) + &&((cc->mbsfn_AreaInfo[i]->mcch_Config_r9.sf_AllocInfo_r9.buf[0] & MBSFN_FDD_SF7) == MBSFN_FDD_SF7)) { + mcch_flag = 1; + } + mtch_flag = 1; + } + } + break; + case 8: + if (cc->tdd_Config != NULL) { //TDD + if ((cc->mbsfn_SubframeConfig[j]->subframeAllocation.choice.oneFrame.buf[0] & MBSFN_TDD_SF8) == MBSFN_TDD_SF8) { + if (msi_pos == 4) { + msi_flag = 1; + } + if ((frameP % mcch_period == cc->mbsfn_AreaInfo[i]->mcch_Config_r9.mcch_Offset_r9) + &&((cc->mbsfn_AreaInfo[i]->mcch_Config_r9.sf_AllocInfo_r9.buf[0] & MBSFN_TDD_SF8) == MBSFN_TDD_SF8)) { + mcch_flag = 1; + } + mtch_flag = 1; + } + } else { // FDD + if ((cc->mbsfn_SubframeConfig[j]->subframeAllocation.choice.oneFrame.buf[0] & MBSFN_FDD_SF8) == MBSFN_FDD_SF8) { + if(cc->pmch_Config[mbms_mch_i+1]!=NULL){ + if( x == cc->pmch_Config[mbms_mch_i]->sf_AllocEnd_r9){ + msi_pos=6; + mbms_mch_i++; + LOG_D(MAC,"MSP, frameP %d subframeP %d msi_pos(%d) mbms_mch_i %d\n",frameP, subframeP, msi_pos,mbms_mch_i); + } + } + if (msi_pos == 6) { + msi_flag = 1; + } + if ((frameP % mcch_period == cc->mbsfn_AreaInfo[i]->mcch_Config_r9.mcch_Offset_r9) + &&((cc->mbsfn_AreaInfo[i]->mcch_Config_r9.sf_AllocInfo_r9.buf[0] & MBSFN_FDD_SF8) == MBSFN_FDD_SF8)) { + mcch_flag = 1; + } + mtch_flag = 1; + } + } + break; + case 9: + if (cc->tdd_Config != NULL) { + if ((cc->mbsfn_SubframeConfig[j]->subframeAllocation.choice.oneFrame.buf[0] & MBSFN_TDD_SF9) == MBSFN_TDD_SF9) { + if (msi_pos == 5) { + msi_flag = 1; + } + if ((frameP % mcch_period == cc->mbsfn_AreaInfo[i]->mcch_Config_r9.mcch_Offset_r9) + &&((cc->mbsfn_AreaInfo[i]->mcch_Config_r9.sf_AllocInfo_r9.buf[0] & MBSFN_TDD_SF9) == MBSFN_TDD_SF9)) { + mcch_flag = 1; + } + mtch_flag = 1; + } + } + break; + } // end switch + // sf allocation is non-overlapping + if ((msi_flag == 1) || (mcch_flag == 1) || (mtch_flag == 1)) { + x++; + //if( (msi_flag!=1 && mcch_flag!=1) || (msi_flag!=1 && mcch_flag!=1 && mtch_flag!=1) ){ + //x++; + //} + if(msi_flag==1){ + if ( (/*AJ*/ (/*V*/ ( /*U*/ (frameP %( 4 << cc->commonSF_AllocPeriod_r9)) ) / 8 ) % ((8 << cc->pmch_Config[mbms_mch_i]->mch_SchedulingPeriod_r9) / 8 ) ) != 0 ){ + msi_flag=0; + LOG_D(MAC,"frameP %d subframeP %d reset(%d)\n",frameP, subframeP, mbms_mch_i); + } + + } + + LOG_D(MAC,"[eNB %d] CC_id %d Frame %d Subframe %d: sync area %d SF alloc %d: msi flag %d, mcch flag %d, mtch flag %d x %d\n", + module_idP, CC_id, frameP, subframeP, i, j, + msi_flag, mcch_flag, mtch_flag,x); + break; + } + } else {// four-frameP format + printf("Hola\n"); + AssertFatal(1==0,"four-frameP format: not implemented yet\n"); + } + } + } // MBMS format + }// end of for loop cc->msi_active = 0; cc->mcch_active = 0; @@ -497,7 +693,7 @@ schedule_MBMS_NFAPI(module_id_t module_idP, uint8_t CC_id, frame_t frameP, if ((msi_flag == 1) || (mcch_flag == 1)) { cc->MCH_pdu.mcs = mcch_mcs; } else if (mtch_flag == 1) { // only MTCH in this subframeP - cc->MCH_pdu.mcs = cc->pmch_Config[0]->dataMCS_r9; + cc->MCH_pdu.mcs = cc->pmch_Config[mbms_mch_i]->dataMCS_r9; } @@ -510,26 +706,14 @@ schedule_MBMS_NFAPI(module_id_t module_idP, uint8_t CC_id, frame_t frameP, // there is MSI (MCH Scheduling Info) uint16_t msi_control_element[29], *msi_ptr; + // MSI buffer pointer char *buffer_pointer=NULL; if (msi_flag == 1) { // Create MSI here - //uint16_t msi_control_element[29], *msi_ptr; - msi_ptr = &msi_control_element[0]; - //((MSI_ELEMENT *) msi_ptr)->lcid = MCCH_LCHANID; //MCCH - - //if (mcch_flag == 1) { - // ((MSI_ELEMENT *) msi_ptr)->stop_sf_MSB = 0; - // ((MSI_ELEMENT *) msi_ptr)->stop_sf_LSB = 0; - //} else { // no mcch for this MSP - // ((MSI_ELEMENT *) msi_ptr)->stop_sf_MSB = 0x7; // stop value is 2047 - // ((MSI_ELEMENT *) msi_ptr)->stop_sf_LSB = 0xff; - //} - - //msi_ptr += sizeof(MSI_ELEMENT); //Header for MTCHs - num_mtch = cc->mbms_SessionList[0]->list.count; + num_mtch = cc->mbms_SessionList[mbms_mch_i]->list.count; TBS = get_TBS_DL(cc->MCH_pdu.mcs, to_prb(cc->mib->message.dl_Bandwidth)); @@ -537,7 +721,7 @@ schedule_MBMS_NFAPI(module_id_t module_idP, uint8_t CC_id, frame_t frameP, for (k = 0; k < num_mtch; k++) { // loop for all session in this MCH (MCH[0]) at this moment - ((MSI_ELEMENT *) msi_ptr)->lcid = cc->mbms_SessionList[0]->list.array[k]->logicalChannelIdentity_r9; //mtch_lcid; + ((MSI_ELEMENT *) msi_ptr)->lcid = cc->mbms_SessionList[mbms_mch_i]->list.array[k]->logicalChannelIdentity_r9; //mtch_lcid; if( msi_sfs != 0 ) msi_pmch_stop = msi_sfs-1; @@ -546,22 +730,15 @@ schedule_MBMS_NFAPI(module_id_t module_idP, uint8_t CC_id, frame_t frameP, msi_pmch_stop = msi_sfs; - //if( msi_pmch_stop > cc->pmch_Config[0]->sf_AllocEnd_r9) - //LOG_W(MAC,"e-MBMS Buffer Overflow\n"); - if(msi_pmch_stop>=num_sf_alloc /*&& msi_pmch_stop <=cc->pmch_Config[0]->sf_AllocEnd_r9*/) { - ((MSI_ELEMENT *) msi_ptr)->stop_sf_MSB = 0; // last subframeP of this mtch (only one mtch now) & stop_sf limited to 256 - //((MSI_ELEMENT *) msi_ptr)->stop_sf_LSB = msi_pmch_stop; - ((MSI_ELEMENT *) msi_ptr)->stop_sf_LSB = (msi_pmch_stop <=cc->pmch_Config[0]->sf_AllocEnd_r9 ? msi_pmch_stop: cc->pmch_Config[0]->sf_AllocEnd_r9); - msi_pmch_stop = (msi_pmch_stop <=cc->pmch_Config[0]->sf_AllocEnd_r9 ? msi_pmch_stop: cc->pmch_Config[0]->sf_AllocEnd_r9); + ((MSI_ELEMENT *) msi_ptr)->stop_sf_MSB = (((msi_pmch_stop <=cc->pmch_Config[mbms_mch_i]->sf_AllocEnd_r9 ? msi_pmch_stop: cc->pmch_Config[mbms_mch_i]->sf_AllocEnd_r9) >> 8) & 0x7f); + ((MSI_ELEMENT *) msi_ptr)->stop_sf_LSB = ((msi_pmch_stop <=cc->pmch_Config[mbms_mch_i]->sf_AllocEnd_r9 ? msi_pmch_stop: cc->pmch_Config[mbms_mch_i]->sf_AllocEnd_r9) & 0xff); + msi_pmch_stop = (msi_pmch_stop <=cc->pmch_Config[mbms_mch_i]->sf_AllocEnd_r9 ? msi_pmch_stop: cc->pmch_Config[mbms_mch_i]->sf_AllocEnd_r9); }else{ ((MSI_ELEMENT *) msi_ptr)->stop_sf_MSB = 0x7; // last subframeP of this mtch (only one mtch now) ((MSI_ELEMENT *) msi_ptr)->stop_sf_LSB = 0xFF; msi_pmch_stop=0; } - - - msi_ptr += sizeof(MSI_ELEMENT); } @@ -573,15 +750,11 @@ schedule_MBMS_NFAPI(module_id_t module_idP, uint8_t CC_id, frame_t frameP, header_len_msi = 3; } - LOG_D(MAC, - "[eNB %d] CC_id %d Frame %d : MSI->MCH, length of MSI is %d bytes TBS %d, bytes in buffer %d stop_sf_LSB %d msi_sfs %d cc->pmch_Config[0]->sf_AllocEnd_r9 %ld\n", - module_idP, CC_id, frameP, msi_length,TBS, bytes_in_buffer,msi_pmch_stop,msi_sfs,cc->pmch_Config[0]->sf_AllocEnd_r9); + LOG_D(MAC, "[eNB %d] CC_id %d Frame %d : MSI->MCH, length of MSI is %d bytes TBS %d, bytes in buffer %d stop_sf_LSB %d msi_sfs %d cc->pmch_Config[0]->sf_AllocEnd_r9 %ld\n", + module_idP, CC_id, frameP, msi_length,TBS, bytes_in_buffer,msi_pmch_stop,msi_sfs,cc->pmch_Config[mbms_mch_i]->sf_AllocEnd_r9); msi_sfs = 0; - //LOG_D(MAC,"Scheduler: MSI is transmitted in this subframeP \n" ); - - // LOG_D(MAC,"Scheduler: MSI length is %d bytes\n",msi_length); // Store MSI data to mch_buffer[0] memcpy((char *) &mch_buffer[sdu_length_total], msi_control_element, msi_length); @@ -598,75 +771,93 @@ schedule_MBMS_NFAPI(module_id_t module_idP, uint8_t CC_id, frame_t frameP, } // there is MCCH if (mcch_flag == 1) { + //MCCH scheduling if !FeMBMS + if(!cc->non_mbsfn_SubframeConfig){ + mcch_sdu_length = mac_rrc_data_req(module_idP, CC_id, frameP, MCCH_COUNTING, 0xFFFC, 1, &cc->MCCH_pdu.payload[0], + i); // this is the mbsfn sync area index + if(mcch_sdu_length>0) + LOG_I(MAC, "[eNB %d] CC_id %d Frame %d Subframe %d: Schedule MCCH MESSAGE COUNTING (area %d, sfAlloc %d)\n", + module_idP, CC_id, frameP, subframeP, i, j); - //LOG_E(MAC, - //"[eNB %d] CC_id %d Frame %d Subframe %d: Schedule MCCH MESSAGE COUNTING (mod %d)\n",module_idP, CC_id, frameP, subframeP,frameP%2==0); - if(1/*frameP%2==0*/){ - LOG_D(MAC, - "[eNB %d] CC_id %d Frame %d Subframe %d: Schedule MCCH MESSAGE (area %d, sfAlloc %d)\n", - module_idP, CC_id, frameP, subframeP, i, j); + if (mcch_sdu_length > 0) { + mcch_sdu_length+=1; //RLC ? + LOG_D(MAC, "[eNB %d] CC_id %d Frame %d subframeP %d : MCCH->MCH, Received %d bytes from RRC \n", + module_idP, CC_id, frameP, subframeP, mcch_sdu_length); - mcch_sdu_length = mac_rrc_data_req(module_idP, CC_id, frameP, MCCH, 0xFFFC, 1, &cc->MCCH_pdu.payload[0], - i); // this is the mbsfn sync area index - } - else{ - LOG_E(MAC, - "[eNB %d] CC_id %d Frame %d Subframe %d: Schedule MCCH MESSAGE COUNTING (area %d, sfAlloc %d)\n", - module_idP, CC_id, frameP, subframeP, i, j); + header_len_mcch = 2; -// -// mcch_sdu_length = mac_rrc_data_req(module_idP, CC_id, frameP, MCCH_COUNTING, 0xFFFC, 1, &cc->MCCH_pdu.payload[0], -// i); // this is the mbsfn sync area index + if (cc->tdd_Config != NULL) { + LOG_D(MAC,"[eNB %d] CC_id %d Frame %d subframeP %d: Scheduling MCCH->MCH (TDD) for MCCH message %d bytes (mcs %d )\n", + module_idP, CC_id, frameP, subframeP, + mcch_sdu_length, mcch_mcs); + } else { + LOG_D(MAC,"[eNB %d] CC_id %d Frame %d subframeP %d: Scheduling MCCH->MCH (FDD) for MCCH message %d bytes (mcs %d)\n", + module_idP, CC_id, frameP, subframeP, + mcch_sdu_length, mcch_mcs); + } + + cc->mcch_active = 1; + + memcpy((char *) &mch_buffer[sdu_length_total]+1, + &cc->MCCH_pdu.payload[0], mcch_sdu_length); + sdu_lcids[num_sdus] = MCCH_LCHANID; + sdu_lengths[num_sdus] = mcch_sdu_length; + + if (sdu_lengths[num_sdus] > 128) { + header_len_mcch = 3; + } + + sdu_length_total += sdu_lengths[num_sdus]; + LOG_D(MAC, + "[eNB %d] CC_id %d Got %d bytes for MCCH from RRC \n", + module_idP, CC_id, sdu_lengths[num_sdus]); + num_sdus++; + } } - mcch_sdu_length+=1; //RLC ? + //MCCH scheduling ... do it anyway + { + LOG_I(MAC, "[eNB %d] CC_id %d Frame %d Subframe %d: Schedule MCCH MESSAGE (area %d, sfAlloc %d)\n", + module_idP, CC_id, frameP, subframeP, i, j); - if (mcch_sdu_length > 0) { - LOG_D(MAC, - "[eNB %d] CC_id %d Frame %d subframeP %d : MCCH->MCH, Received %d bytes from RRC \n", - module_idP, CC_id, frameP, subframeP, mcch_sdu_length); + mcch_sdu_length = mac_rrc_data_req(module_idP, CC_id, frameP, MCCH, 0xFFFC, 1, &cc->MCCH_pdu.payload[0], + i); // this is the mbsfn sync area index - header_len_mcch = 2; + if (mcch_sdu_length > 0) { + mcch_sdu_length+=1; //RLC ? + LOG_D(MAC,"[eNB %d] CC_id %d Frame %d subframeP %d : MCCH->MCH, Received %d bytes from RRC \n", + module_idP, CC_id, frameP, subframeP, mcch_sdu_length); - if (cc->tdd_Config != NULL) { - LOG_D(MAC, - "[eNB %d] CC_id %d Frame %d subframeP %d: Scheduling MCCH->MCH (TDD) for MCCH message %d bytes (mcs %d )\n", - module_idP, CC_id, frameP, subframeP, - mcch_sdu_length, mcch_mcs); - } else { - LOG_D(MAC, - "[eNB %d] CC_id %d Frame %d subframeP %d: Scheduling MCCH->MCH (FDD) for MCCH message %d bytes (mcs %d)\n", - module_idP, CC_id, frameP, subframeP, - mcch_sdu_length, mcch_mcs); + header_len_mcch = 2; + + if (cc->tdd_Config != NULL) { + LOG_D(MAC,"[eNB %d] CC_id %d Frame %d subframeP %d: Scheduling MCCH->MCH (TDD) for MCCH message %d bytes (mcs %d )\n", + module_idP, CC_id, frameP, subframeP, + mcch_sdu_length, mcch_mcs); + } else { + LOG_D(MAC,"[eNB %d] CC_id %d Frame %d subframeP %d: Scheduling MCCH->MCH (FDD) for MCCH message %d bytes (mcs %d)\n", + module_idP, CC_id, frameP, subframeP, + mcch_sdu_length, mcch_mcs); + } + + cc->mcch_active = 1; + + memcpy((char *) &mch_buffer[sdu_length_total]+1, + &cc->MCCH_pdu.payload[0], mcch_sdu_length); + sdu_lcids[num_sdus] = MCCH_LCHANID; + sdu_lengths[num_sdus] = mcch_sdu_length; + + if (sdu_lengths[num_sdus] > 128) { + header_len_mcch = 3; + } + + sdu_length_total += sdu_lengths[num_sdus]; + LOG_D(MAC,"[eNB %d] CC_id %d Got %d bytes for MCCH from RRC \n", + module_idP, CC_id, sdu_lengths[num_sdus]); + num_sdus++; } - - cc->mcch_active = 1; - - memcpy((char *) &mch_buffer[sdu_length_total]+1, - &cc->MCCH_pdu.payload[0], mcch_sdu_length); - sdu_lcids[num_sdus] = MCCH_LCHANID; - sdu_lengths[num_sdus] = mcch_sdu_length; - - // LOG_W(MAC,"MCCH RLC %x:",(unsigned char)mch_buffer[sdu_length_total]); - // for (int kk = 7; kk >= 0; kk--) - // { - // printf("%d",(((unsigned char)mch_buffer[sdu_length_total]) >> kk) & 1 ? '1' : '0'); - // } - // printf("\n"); - //mch_buffer[sdu_length_total] = (unsigned char)0; - - - if (sdu_lengths[num_sdus] > 128) { - header_len_mcch = 3; - } - - sdu_length_total += sdu_lengths[num_sdus]; - LOG_D(MAC, - "[eNB %d] CC_id %d Got %d bytes for MCCH from RRC \n", - module_idP, CC_id, sdu_lengths[num_sdus]); - num_sdus++; } - } + }// mcch_flag TBS = @@ -678,154 +869,108 @@ schedule_MBMS_NFAPI(module_id_t module_idP, uint8_t CC_id, frame_t frameP, // there is MTCHs, loop if there are more than 1 if (mtch_flag == 1 ) { // Calculate TBS - /* if ((msi_flag==1) || (mcch_flag==1)) { - TBS = mac_xface->get_TBS(mcch_mcs, mac_xface->frame_parms->N_RB_DL); - } - else { // only MTCH in this subframeP - TBS = mac_xface->get_TBS(RC.mac[module_idP]->pmch_Config[0]->dataMCS_r9, mac_xface->frame_parms->N_RB_DL); - } - - // get MTCH data from RLC (like for DTCH) - LOG_D(MAC,"[eNB %d] CC_id %d Frame %d subframe %d: Schedule MTCH (area %d, sfAlloc %d)\n",Mod_id,CC_id,frame,subframe,i,j); - - header_len_mtch = 3; - LOG_D(MAC,"[eNB %d], CC_id %d, Frame %d, MTCH->MCH, Checking RLC status (rab %d, tbs %d, len %d)\n", - Mod_id,CC_id,frame,MTCH,TBS, - TBS-header_len_mcch-header_len_msi-sdu_length_total-header_len_mtch); - - rlc_status = mac_rlc_status_ind(Mod_id,frame,1,RLC_MBMS_YES,MTCH+ (maxDRB + 3) * MAX_MOBILES_PER_RG, - TBS-header_len_mcch-header_len_msi-sdu_length_total-header_len_mtch); - printf("frame %d, subframe %d, rlc_status.bytes_in_buffer is %d\n",frame,subframe, rlc_status.bytes_in_buffer); - - */ - // get MTCH data from RLC (like for DTCH) - LOG_D(MAC, - "[eNB %d] CC_id %d Frame %d subframeP %d: Schedule MTCH (area %d, sfAlloc %d)\n", + LOG_D(MAC,"[eNB %d] CC_id %d Frame %d subframeP %d: Schedule MTCH (area %d, sfAlloc %d)\n", module_idP, CC_id, frameP, subframeP, i, j); header_len_mtch = 3; - LOG_D(MAC, - "[eNB %d], CC_id %d, Frame %d, MTCH->MCH, Checking RLC status (rab %d, tbs %d, len %d)\n", + LOG_D(MAC,"[eNB %d], CC_id %d, Frame %d, MTCH->MCH, Checking RLC status (rab %d, tbs %d, len %d)\n", module_idP, CC_id, frameP, MTCH, TBS, TBS - header_len_mcch - header_len_msi - sdu_length_total - header_len_mtch); - mbms_rab_id = cc->mbms_SessionList[0]->list.array[0]->logicalChannelIdentity_r9; + //TODO + mbms_rab_id = cc->mbms_SessionList[0/*mbms_mch_i*/]->list.array[0]->logicalChannelIdentity_r9; rlc_status = mac_rlc_status_ind(module_idP, 0xfffd, frameP, subframeP, module_idP, ENB_FLAG_YES, MBMS_FLAG_YES, - cc->mbms_SessionList[0]->list.array[0]->logicalChannelIdentity_r9, + cc->mbms_SessionList[mbms_mch_i]->list.array[0]->logicalChannelIdentity_r9, //MTCH, 0, 0 ); + bytes_in_buffer = rlc_status.bytes_in_buffer; - + //TOCHECK is this really neede? if( !(mcch_flag==1 || msi_flag==1) ) msi_sfs = rlc_status.bytes_in_buffer/(TBS- header_len_mcch - header_len_msi -sdu_length_total - header_len_mtch)+(rlc_status.bytes_in_buffer%(TBS- header_len_mcch - header_len_msi -sdu_length_total - header_len_mtch)?1:0); - //uint16_t msi_control_element[29], *msi_ptr; - // - // - uint16_t TBS_MTCH = - get_TBS_DL(cc->pmch_Config[0]->dataMCS_r9, to_prb(cc->mib->message.dl_Bandwidth)); + + uint16_t TBS_MTCH = + get_TBS_DL(cc->pmch_Config[mbms_mch_i]->dataMCS_r9, to_prb(cc->mib->message.dl_Bandwidth)); + if(msi_flag==1 && buffer_pointer!=NULL){ - msi_ptr = &msi_control_element[0]; + // msi_ptr = &msi_control_element[0]; - //memcpy(buffer_pointer, - // msi_control_element, msi_length); - - // msi_pmch_stop = rlc_status.bytes_in_buffer/TBS+(rlc_status.bytes_in_buffer%TBS?1:0); msi_pmch_stop = (rlc_status.bytes_in_buffer - header_len_mcch - header_len_msi -sdu_length_total - header_len_mtch)/(TBS_MTCH/*- header_len_mcch - header_len_msi -sdu_length_total*/ - header_len_mtch)+((rlc_status.bytes_in_buffer-TBS-header_len_mcch - header_len_msi -sdu_length_total)%(TBS_MTCH/*- header_len_mcch - header_len_msi -sdu_length_total*/ - header_len_mtch)?0:0); - if( msi_pmch_stop > cc->pmch_Config[0]->sf_AllocEnd_r9) - LOG_E(MAC,"e-MBMS Buffer Overflow\n"); - if(msi_pmch_stop>=num_sf_alloc /*&& msi_pmch_stop <=cc->pmch_Config[0]->sf_AllocEnd_r9*/) { - ((MSI_ELEMENT *) msi_ptr)->stop_sf_MSB = 0; // last subframeP of this mtch (only one mtch now) & stop_sf limited to 256 - //((MSI_ELEMENT *) msi_ptr)->stop_sf_LSB = msi_pmch_stop; - ((MSI_ELEMENT *) msi_ptr)->stop_sf_LSB = (msi_pmch_stop <=cc->pmch_Config[0]->sf_AllocEnd_r9 ? msi_pmch_stop: cc->pmch_Config[0]->sf_AllocEnd_r9); - msi_pmch_stop = (msi_pmch_stop <=cc->pmch_Config[0]->sf_AllocEnd_r9 ? msi_pmch_stop: cc->pmch_Config[0]->sf_AllocEnd_r9); - }else{ - ((MSI_ELEMENT *) msi_ptr)->stop_sf_MSB = 0x7; // last subframeP of this mtch (only one mtch now) - ((MSI_ELEMENT *) msi_ptr)->stop_sf_LSB = 0xFF; - msi_pmch_stop=0; - } - LOG_I(MAC,"frameP %d, subframeP %d rlc_status.bytes_in_buffer %d stop_sf_LSB %d\n",frameP,subframeP,rlc_status.bytes_in_buffer,((MSI_ELEMENT *) msi_ptr)->stop_sf_LSB); - //LOG_W(MAC,"frameP %d, subframeP %d rlc_status.bytes_in_buffer %d stop_sf_LSB %d msi_calc:%d remainder %d\n",frameP,subframeP,rlc_status.bytes_in_buffer,((MSI_ELEMENT *) msi_ptr)->stop_sf_LSB,rlc_status.bytes_in_buffer/(TBS_MTCH/*- header_len_mcch - header_len_msi -sdu_length_total*/ - header_len_mtch)+((rlc_status.bytes_in_buffer-TBS-header_len_mcch - header_len_msi -sdu_length_total)%(TBS_MTCH/*- header_len_mcch - header_len_msi -sdu_length_total*/ - header_len_mtch)?0:0),((rlc_status.bytes_in_buffer-TBS-header_len_mcch - header_len_msi -sdu_length_total)%(TBS_MTCH/*- header_len_mcch - header_len_msi -sdu_length_total*/ - header_len_mtch)?0:0)); + for (k = 0; k < num_mtch; k++) { // loop for all session in this MCH (MCH[0]) at this moment + msi_ptr = &msi_control_element[k]; - memcpy(buffer_pointer, + ((MSI_ELEMENT *) msi_ptr)->lcid = cc->mbms_SessionList[mbms_mch_i]->list.array[k]->logicalChannelIdentity_r9; //mtch_lcid; + + if( msi_pmch_stop > cc->pmch_Config[mbms_mch_i]->sf_AllocEnd_r9) + LOG_E(MAC,"e-MBMS Buffer Overflow\n"); + + if(msi_pmch_stop>=num_sf_alloc /*&& msi_pmch_stop <=cc->pmch_Config[0]->sf_AllocEnd_r9*/) { + ((MSI_ELEMENT *) msi_ptr)->stop_sf_MSB = (((msi_pmch_stop <=cc->pmch_Config[mbms_mch_i]->sf_AllocEnd_r9 ? msi_pmch_stop: cc->pmch_Config[mbms_mch_i]->sf_AllocEnd_r9) >> 8) & 0x7f); + ((MSI_ELEMENT *) msi_ptr)->stop_sf_LSB = ((msi_pmch_stop <=cc->pmch_Config[mbms_mch_i]->sf_AllocEnd_r9 ? msi_pmch_stop: cc->pmch_Config[mbms_mch_i]->sf_AllocEnd_r9) & 0xff); + msi_pmch_stop = (msi_pmch_stop <=cc->pmch_Config[mbms_mch_i]->sf_AllocEnd_r9 ? msi_pmch_stop: cc->pmch_Config[mbms_mch_i]->sf_AllocEnd_r9); + }else{ + ((MSI_ELEMENT *) msi_ptr)->stop_sf_MSB = 0x7; // last subframeP of this mtch (only one mtch now) + ((MSI_ELEMENT *) msi_ptr)->stop_sf_LSB = 0xFF; + msi_pmch_stop=0; + } + LOG_I(MAC,"frameP %d, subframeP %d LCID %d rlc_status.bytes_in_buffer %d stop_sf_LSB %d stop_sf_MSB %d msi_pmch_stop %d sf_AllocEnd_r9 %ld, msi_length %d\n",frameP,subframeP,((MSI_ELEMENT *) msi_ptr)->lcid,rlc_status.bytes_in_buffer,((MSI_ELEMENT *) msi_ptr)->stop_sf_LSB,((MSI_ELEMENT *) msi_ptr)->stop_sf_MSB, msi_pmch_stop,cc->pmch_Config[mbms_mch_i]->sf_AllocEnd_r9, msi_length); + } + + memcpy((char*)buffer_pointer, msi_control_element, msi_length); - } - LOG_D(MAC, - "e-MBMS log channel %u frameP %d, subframeP %d, rlc_status.bytes_in_buffer is %d TBS_MTCH %d pmch_stop %d msi_sfs %d\n", + LOG_D(MAC, "e-MBMS log channel %u frameP %d, subframeP %d, rlc_status.bytes_in_buffer is %d TBS_MTCH %d pmch_stop %d msi_sfs %d\n", MTCH, frameP, subframeP, rlc_status.bytes_in_buffer,TBS_MTCH,msi_pmch_stop,msi_sfs); - if ((rlc_status.bytes_in_buffer > 0 && msi_pmch_stop > 0) && ((msi_flag!=1 || mcch_flag!=1)) /*|| (rlc_status.bytes_in_buffer > 0 && (msi_flag==1 || mcch_flag==1))*//*|| msi_sfs > cc->pmch_Config[0]->sf_AllocEnd_r9 */ /*msi_pmch_stop>=num_sf_alloc*/ ) { - //if(rlc_status.bytes_in_buffer > 0){ - LOG_D(MAC, - "[eNB %d][MBMS USER-PLANE], CC_id %d, Frame %d, MTCH->MCH, Requesting %d bytes from RLC (header len mtch %d) rlc_status.bytes_in_buffer %d\n", - module_idP, CC_id, frameP, + //TODO not sure whether msi and mch MCH should be precluded ... keep in mind this konditions just in case if ((rlc_status.bytes_in_buffer > 0 && msi_pmch_stop > 0) && ((msi_flag!=1 || mcch_flag!=1)) + if ((rlc_status.bytes_in_buffer > 0 && msi_pmch_stop > 0) /*&& ((msi_flag!=1 || mcch_flag!=1))*/ /*|| (rlc_status.bytes_in_buffer > 0 && (msi_flag==1 || mcch_flag==1))*//*|| msi_sfs > cc->pmch_Config[0]->sf_AllocEnd_r9 */ /*msi_pmch_stop>=num_sf_alloc*/ ) { + LOG_I(MAC,"[eNB %d][MBMS USER-PLANE], CC_id %d, Frame %d, Subframe %d MTCH->MCH, Requesting %d bytes from RLC (header len mtch %d) rlc_status.bytes_in_buffer %d, LCID %ld\n", + module_idP, CC_id, frameP, subframeP, TBS - header_len_mcch - header_len_msi - - sdu_length_total - header_len_mtch, header_len_mtch, rlc_status.bytes_in_buffer); + sdu_length_total - header_len_mtch, header_len_mtch, rlc_status.bytes_in_buffer,cc->mbms_SessionList[mbms_mch_i]->list.array[0]->logicalChannelIdentity_r9); - sdu_lengths[num_sdus] = mac_rlc_data_req(module_idP, 0xfffd, module_idP, frameP, ENB_FLAG_YES, MBMS_FLAG_YES,cc->mbms_SessionList[0]->list.array[0]->logicalChannelIdentity_r9, + sdu_lengths[num_sdus] = mac_rlc_data_req(module_idP, 0xfffd, module_idP, frameP, ENB_FLAG_YES, MBMS_FLAG_YES,cc->mbms_SessionList[mbms_mch_i]->list.array[0]->logicalChannelIdentity_r9, TBS - header_len_mcch - header_len_msi - sdu_length_total - header_len_mtch, (char *) &mch_buffer[sdu_length_total] ,0, 0 ); - - // LOG_I(MAC,"RLC %x:",(unsigned char)mch_buffer[sdu_length_total]); - // for (int kk = 7; kk >= 0; kk--) - // { - // printf("%d",(((unsigned char)mch_buffer[sdu_length_total]) >> kk) & 1 ? '1' : '0'); - // } - // printf("\n"); - - //sdu_lengths[num_sdus] = mac_rlc_data_req(module_idP,frameP, MBMS_FLAG_NO, MTCH+(MAX_NUM_RB*(MAX_MOBILES_PER_ENB+1)), (char*)&mch_buffer[sdu_length_total]); - LOG_D(MAC, - "[eNB %d][MBMS USER-PLANE] CC_id %d Got %d bytes for MTCH %d msi_pmch_stop %d msi_sfs %d sdu_lengths[num_sdus] %d\n", + LOG_D(MAC,"[eNB %d][MBMS USER-PLANE] CC_id %d Got %d bytes for MTCH %d msi_pmch_stop %d msi_sfs %d sdu_lengths[num_sdus] %d\n", module_idP, CC_id, sdu_lengths[num_sdus], MTCH,msi_pmch_stop,msi_sfs, sdu_lengths[num_sdus]); + cc->mtch_active = 1; - sdu_lcids[num_sdus] = cc->mbms_SessionList[0]->list.array[0]->logicalChannelIdentity_r9/*MTCH*/; + + sdu_lcids[num_sdus] = cc->mbms_SessionList[mbms_mch_i]->list.array[0]->logicalChannelIdentity_r9/*MTCH*/; sdu_length_total += sdu_lengths[num_sdus]; if (msi_pmch_stop != 0 && msi_flag !=1) msi_pmch_stop--; - if (sdu_lengths[num_sdus] < 128) { header_len_mtch = 2; } num_sdus++; - //} } else { - // LOG_E(MAC, - // "[eNB %d][MBMS USER-PLANE] CC_id %d Got %d bytes for MTCH %d msi_pmch_stop %d msi_buffer %d msi_sfs %ld msi_buffer_act %ld sdu_lengths[num_sdus] %d\n", - // module_idP, CC_id, sdu_lengths[num_sdus], MTCH,msi_pmch_stop,msi_sfs,msi_buffer_act, sdu_lengths[num_sdus]); - header_len_mtch = 0; } } - // } // FINAL STEP: Prepare and multiplexe MSI, MCCH and MTCHs - if ((sdu_length_total + header_len_msi + header_len_mcch + - header_len_mtch) > 0) { + if ((sdu_length_total + header_len_msi + header_len_mcch + header_len_mtch) > 0) { + // Adjust the last subheader - /* if ((msi_flag==1) || (mcch_flag==1)) { - RC.mac[module_idP]->MCH_pdu.mcs = mcch_mcs; - } - else if (mtch_flag == 1) { // only MTCH in this subframeP - RC.mac[module_idP]->MCH_pdu.mcs = RC.mac[module_idP]->pmch_Config[0]->dataMCS_r9; - } - */ header_len_mtch_temp = header_len_mtch; header_len_mcch_temp = header_len_mcch; header_len_msi_temp = header_len_msi; @@ -881,12 +1026,10 @@ schedule_MBMS_NFAPI(module_id_t module_idP, uint8_t CC_id, frame_t frameP, cc->MCH_pdu.msi_active = cc->msi_active; cc->MCH_pdu.mcch_active = cc->mcch_active; cc->MCH_pdu.mtch_active = cc->mtch_active; - LOG_D(MAC, - " MCS for this sf is %d (mcch active %d, mtch active %d)\n", + LOG_D(MAC, " MCS for this sf is %d (mcch active %d, mtch active %d)\n", cc->MCH_pdu.mcs, cc->MCH_pdu.mcch_active, cc->MCH_pdu.mtch_active); - LOG_D(MAC, - "[eNB %d][MBMS USER-PLANE ] CC_id %d Generate header : sdu_length_total %d, num_sdus %d, sdu_lengths[0] %d, sdu_lcids[0] %d => payload offset %d,padding %d,post_padding %d (mcs %d, TBS %d), header MTCH %d, header MCCH %d, header MSI %d\n", + LOG_D(MAC, "[eNB %d][MBMS USER-PLANE ] CC_id %d Generate header : sdu_length_total %d, num_sdus %d, sdu_lengths[0] %d, sdu_lcids[0] %d => payload offset %d,padding %d,post_padding %d (mcs %d, TBS %d), header MTCH %d, header MCCH %d, header MSI %d\n", module_idP, CC_id, sdu_length_total, num_sdus, sdu_lengths[0], sdu_lcids[0], offset, padding, post_padding, cc->MCH_pdu.mcs, TBS, header_len_mtch, header_len_mcch, @@ -902,20 +1045,15 @@ schedule_MBMS_NFAPI(module_id_t module_idP, uint8_t CC_id, frame_t frameP, /* Tracing of PDU is done on UE side */ //if (opt_enabled == 1) { - trace_pdu(DIRECTION_DOWNLINK, (uint8_t *) cc->MCH_pdu.payload, TBS, module_idP, WS_M_RNTI , 0xfffd, // M_RNTI = 6 in wirehsark - RC.mac[module_idP]->frame, - RC.mac[module_idP]->subframe, 0, 0); - LOG_D(OPT, - "[eNB %d][MCH] CC_id %d Frame %d : MAC PDU with size %d\n", + trace_pdu(DIRECTION_DOWNLINK, (uint8_t *) cc->MCH_pdu.payload, TBS, module_idP, WS_M_RNTI , 0xfffd, // M_RNTI = 6 in wirehsark + RC.mac[module_idP]->frame, + RC.mac[module_idP]->subframe, 0, 0); + LOG_D(OPT, "[eNB %d][MCH] CC_id %d Frame %d : MAC PDU with size %d\n", module_idP, CC_id, frameP, TBS); //} eNB_MAC_INST *eNB = RC.mac[module_idP]; dl_req = &eNB->DL_req[CC_id].dl_config_request_body; - // dl_config_pdu = &dl_req->dl_config_pdu_list[dl_req->number_pdu]; - // memset((void *) dl_config_pdu, - // 0, - // sizeof(nfapi_dl_config_request_pdu_t)); dl_req->tl.tag = NFAPI_DL_CONFIG_REQUEST_BODY_TAG; fill_nfapi_mch_config( dl_req, @@ -934,12 +1072,6 @@ schedule_MBMS_NFAPI(module_id_t module_idP, uint8_t CC_id, frame_t frameP, TBS, eNB->pdu_index[CC_id], (uint8_t*)cc->MCH_pdu.payload); - - - /* - for (j=0;jMCH_pdu.payload[j+offset]); - printf(" \n"); */ return 1; } else { cc->MCH_pdu.Pdu_size = 0; @@ -947,21 +1079,8 @@ schedule_MBMS_NFAPI(module_id_t module_idP, uint8_t CC_id, frame_t frameP, cc->MCH_pdu.msi_active = 0; cc->MCH_pdu.mcch_active = 0; cc->MCH_pdu.mtch_active = 0; - // for testing purpose, fill with random data - //for (j=0;j<(TBS-sdu_length_total-offset);j++) - // RC.mac[module_idP]->MCH_pdu.payload[offset+sdu_length_total+j] = (char)(taus()&0xff); return 0; } - - //this is for testing - /* - if (mtch_flag == 1) { - // LOG_D(MAC,"DUY: mch_buffer length so far is : %ld\n", &mch_buffer[sdu_length_total]-&mch_buffer[0]); - return 1; - } - else - return 0; - */ } int schedule_MBMS(module_id_t module_idP, uint8_t CC_id, frame_t frameP, diff --git a/openair2/LAYER2/MAC/eNB_scheduler_primitives.c b/openair2/LAYER2/MAC/eNB_scheduler_primitives.c index 78d6f6a3d7..89c2ecc83d 100644 --- a/openair2/LAYER2/MAC/eNB_scheduler_primitives.c +++ b/openair2/LAYER2/MAC/eNB_scheduler_primitives.c @@ -2131,33 +2131,36 @@ dump_ue_list(UE_list_t *listP) { * Add a UE to UE_list listP */ inline void add_ue_list(UE_list_t *listP, int UE_id) { - if (listP->head == -1) { - listP->head = UE_id; - listP->next[UE_id] = -1; - } else { - int i = listP->head; - while (listP->next[i] >= 0) - i = listP->next[i]; - listP->next[i] = UE_id; - listP->next[UE_id] = -1; - } + int *cur = &listP->head; + while (*cur >= 0) + cur = &listP->next[*cur]; + *cur = UE_id; } //------------------------------------------------------------------------------ /* - * Remove a UE from the UE_list listP, return the previous element + * Remove a UE from the UE_list listP */ inline int remove_ue_list(UE_list_t *listP, int UE_id) { - listP->next[UE_id] = -1; - if (listP->head == UE_id) { - listP->head = listP->next[UE_id]; - return -1; - } + int *cur = &listP->head; + while (*cur != -1 && *cur != UE_id) + cur = &listP->next[*cur]; + if (*cur == -1) + return 0; + int *next = &listP->next[*cur]; + *cur = listP->next[*cur]; + *next = -1; + return 1; +} - int previous = prev(listP, UE_id); - if (previous != -1) - listP->next[previous] = listP->next[UE_id]; - return previous; +//------------------------------------------------------------------------------ +/* + * Initialize the UE_list listP + */ +inline void init_ue_list(UE_list_t *listP) { + listP->head = -1; + for (int i = 0; i < MAX_MOBILES_PER_ENB; ++i) + listP->next[i] = -1; } //------------------------------------------------------------------------------ @@ -2196,6 +2199,12 @@ add_new_ue(module_id_t mod_idP, UE_info->active[UE_id] = TRUE; add_ue_list(&UE_info->list, UE_id); dump_ue_list(&UE_info->list); + pp_impl_param_t* dl = &RC.mac[mod_idP]->pre_processor_dl; + if (dl->slices) // inform slice implementation about new UE + dl->add_UE(dl->slices, UE_id); + pp_impl_param_t* ul = &RC.mac[mod_idP]->pre_processor_ul; + if (ul->slices) // inform slice implementation about new UE + ul->add_UE(ul->slices, UE_id); if (IS_SOFTMODEM_IQPLAYER)// not specific to record/playback ? UE_info->UE_template[cc_idP][UE_id].pre_assigned_mcs_ul = 0; UE_info->UE_template[cc_idP][UE_id].rach_resource_type = rach_resource_type; @@ -2259,6 +2268,12 @@ rrc_mac_remove_ue(module_id_t mod_idP, UE_info->num_UEs--; remove_ue_list(&UE_info->list, UE_id); + pp_impl_param_t* dl = &RC.mac[mod_idP]->pre_processor_dl; + if (dl->slices) // inform slice implementation about new UE + dl->remove_UE(dl->slices, UE_id); + pp_impl_param_t* ul = &RC.mac[mod_idP]->pre_processor_ul; + if (ul->slices) // inform slice implementation about new UE + ul->remove_UE(ul->slices, UE_id); /* Clear all remaining pending transmissions */ memset(&UE_info->UE_template[pCC_id][UE_id], 0, sizeof(UE_TEMPLATE)); diff --git a/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c b/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c index 3062e5c964..2de45db856 100644 --- a/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c +++ b/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c @@ -1301,11 +1301,11 @@ schedule_ulsch_rnti(module_id_t module_idP, /* * ULSCH preprocessor: set UE_template-> - * pre_allocated_nb_rb_ul[slice_idx] + * pre_allocated_nb_rb_ul * pre_assigned_mcs_ul * pre_allocated_rb_table_index_ul */ - ulsch_scheduler_pre_processor(module_idP, CC_id, frameP, subframeP, sched_frame, sched_subframeP); + mac->pre_processor_ul.ul(module_idP, CC_id, frameP, subframeP, sched_frame, sched_subframeP); for (int UE_id = UE_info->list.head; UE_id >= 0; UE_id = UE_info->list.next[UE_id]) { if (UE_info->UE_template[CC_id][UE_id].rach_resource_type > 0) diff --git a/openair2/LAYER2/MAC/mac.h b/openair2/LAYER2/MAC/mac.h index 329e262c82..7eccc6222d 100644 --- a/openair2/LAYER2/MAC/mac.h +++ b/openair2/LAYER2/MAC/mac.h @@ -56,6 +56,7 @@ #include "LTE_MobilityControlInfo.h" #include "LTE_MBSFN-AreaInfoList-r9.h" #include "LTE_MBSFN-SubframeConfigList.h" +#include "LTE_MBSFNAreaConfiguration-r9.h" #include "LTE_PMCH-InfoList-r9.h" #include "LTE_SCellToAddMod-r10.h" #include "LTE_SystemInformationBlockType1-v1310-IEs.h" @@ -155,9 +156,6 @@ /*!\brief minimum MAC data needed for transmitting 1 min RLC PDU size + 1 byte MAC subHeader */ #define MIN_MAC_HDR_RLC_SIZE (1 + MIN_RLC_PDU_SIZE) -/*!\brief maximum number of slices / groups */ -#define MAX_NUM_SLICES 10 - #define U_PLANE_INACTIVITY_VALUE 0 /* defined 10ms order (zero means infinity) */ @@ -412,9 +410,11 @@ typedef struct { /*!\brief Values of BCCH SIB_BR logical channel (fake) */ #define BCCH_SI_BR 7 // SI-BR /*!\brief Values of BCCH SIB1_MBMS logical channel (fake) */ -#define BCCH_SIB1_MBMS 60 // SIB1_MBMS //TODO better armonize index +#define MIBCH_MBMS 10 // SIB1_MBMS //TODO better armonize index +#define BCCH_SIB1_MBMS 12 // SIB1_MBMS //TODO better armonize index /*!\brief Values of BCCH SI_MBMS logical channel (fake) */ -#define BCCH_SI_MBMS 61 // SIB_MBMS //TODO better armonize index +#define BCCH_SI_MBMS 13 // SIB_MBMS //TODO better armonize index +#define MCCH_COUNTING 14 /*!\brief Value of CCCH / SRB0 logical channel */ #define CCCH 0 // srb0 /*!\brief DCCH / SRB1 logical channel */ @@ -543,7 +543,6 @@ typedef enum { SCHED_MODE_FAIR_RR /// fair raund robin } SCHEDULER_MODES; - /*! \brief temporary struct for ULSCH sched */ typedef struct { rnti_t rnti; @@ -1150,9 +1149,6 @@ typedef struct { UE_list_t list; int num_UEs; boolean_t active[MAX_MOBILES_PER_ENB]; - - /// Sorting criteria for the UE list in the MAC preprocessor - uint16_t sorting_criteria[MAX_NUM_SLICES][CR_NUM]; } UE_info_t; /*! \brief deleting control information*/ @@ -1171,101 +1167,6 @@ typedef struct { int tail_freelist; ///the tail position of the delete list } UE_free_list_t; -/** - * slice specific scheduler for the DL - */ -typedef void (*slice_scheduler_dl)(module_id_t mod_id, - int slice_idx, - frame_t frame, - sub_frame_t subframe, - int *mbsfn_flag); - -typedef struct { - slice_id_t id; - - /// RB share for each slice - float pct; - - /// whether this slice is isolated from the others - int isol; - - int prio; - - /// Frequency ranges for slice positioning - int pos_low; - int pos_high; - - // max mcs for each slice - int maxmcs; - - /// criteria for sorting policies of the slices - uint32_t sorting; - - /// Accounting policy (just greedy(1) or fair(0) setting for now) - int accounting; - - /// name of available scheduler - char *sched_name; - - /// pointer to the slice specific scheduler in DL - slice_scheduler_dl sched_cb; - -} slice_sched_conf_dl_t; - -typedef void (*slice_scheduler_ul)(module_id_t mod_id, - int slice_idx, - frame_t frame, - sub_frame_t subframe, - unsigned char sched_subframe, - uint16_t *first_rb); - -typedef struct { - slice_id_t id; - - /// RB share for each slice - float pct; - - // MAX MCS for each slice - int maxmcs; - - /// criteria for sorting policies of the slices - uint32_t sorting; - - /// starting RB (RB offset) of UL scheduling - int first_rb; - - /// name of available scheduler - char *sched_name; - - /// pointer to the slice specific scheduler in UL - slice_scheduler_ul sched_cb; - -} slice_sched_conf_ul_t; - - -typedef struct { - /// counter used to indicate when all slices have pre-allocated UEs - //int slice_counter; - - /// indicates whether remaining RBs after first intra-slice allocation will - /// be allocated to UEs of the same slice - int intraslice_share_active; - /// indicates whether remaining RBs after slice allocation will be - /// allocated to UEs of another slice. Isolated slices will be ignored - int interslice_share_active; - - /// number of active DL slices - int n_dl; - slice_sched_conf_dl_t dl[MAX_NUM_SLICES]; - - /// number of active UL slices - int n_ul; - slice_sched_conf_ul_t ul[MAX_NUM_SLICES]; - - /// common rb allocation list between slices - uint8_t rballoc_sub[NFAPI_CC_MAX][N_RBG_MAX]; -} slice_info_t; - /** * describes contiguous RBs */ @@ -1274,6 +1175,82 @@ typedef struct { int length; } contig_rbs_t; +/** + * definition of a scheduling algorithm implementation used in the + * default DL scheduler + */ +typedef struct { + char *name; + void *(*setup)(void); + void (*unset)(void **); + int (*run)( + module_id_t, int, int, int, UE_list_t *, int, int, uint8_t *, void *); + void *data; +} default_sched_dl_algo_t; + +/** + * definition of a scheduling algorithm implementation used in the + * default UL scheduler + */ +typedef struct { + char *name; + void *(*setup)(void); + void (*unset)(void **); + int (*run)( + module_id_t, int, int, int, int, int, UE_list_t *, int, int, contig_rbs_t *, void *); + void *data; +} default_sched_ul_algo_t; + +typedef void (*pp_impl_dl)(module_id_t mod_id, + int CC_id, + frame_t frame, + sub_frame_t subframe); +typedef void (*pp_impl_ul)(module_id_t mod_id, + int CC_id, + frame_t frame, + sub_frame_t subframe, + frame_t sched_frame, + sub_frame_t sched_subframe); + +struct slice_info_s; +typedef struct { + int algorithm; + + /// inform the slice algorithm about a new UE + void (*add_UE)(struct slice_info_s *s, int UE_id); + /// inform the slice algorithm about a UE that disconnected + void (*remove_UE)(struct slice_info_s *s, int UE_id); + /// move a UE to a slice in DL/UL, -1 means don't move (no-op). + void (*move_UE)(struct slice_info_s *s, int UE_id, int idx); + + /// Adds a new slice through admission control. slice_params are + /// algorithm-specific parameters. sched is either a default_sched_ul_algo_t + /// or default_sched_dl_algo_t, depending on whether this implementation + /// handles UL/DL. If slice at index exists, updates existing + /// slice. Returns index of new slice or -1 on failure. + int (*addmod_slice)(struct slice_info_s *s, + int id, + char *label, + void *sched, + void *slice_params); + /// Returns slice through slice_idx. 1 if successful, 0 if not. + int (*remove_slice)(struct slice_info_s *s, uint8_t slice_idx); + + union { + pp_impl_dl dl; + pp_impl_ul ul; + }; + + union { + default_sched_ul_algo_t ul_algo; + default_sched_dl_algo_t dl_algo; + }; + + void (*destroy)(struct slice_info_s **s); + + struct slice_info_s *slices; +} pp_impl_param_t; + /*! \brief eNB common channels */ typedef struct { int physCellId; @@ -1312,6 +1289,8 @@ typedef struct { /// MBSFN SubframeConfig struct LTE_MBSFN_SubframeConfig *mbsfn_SubframeConfig[8]; struct LTE_NonMBSFN_SubframeConfig_r14 *non_mbsfn_SubframeConfig; + struct LTE_MBSFN_SubframeConfig *commonSF_Alloc_r9_mbsfn_SubframeConfig[8]; // FIXME replace 8 by MAX_MBSFN_AREA? + uint8_t commonSF_AllocPeriod_r9; /// number of subframe allocation pattern available for MBSFN sync area uint8_t num_sf_allocation_pattern; /// MBMS Flag @@ -1395,9 +1374,6 @@ typedef struct eNB_MAC_INST_s { uint32_t ul_handle; UE_info_t UE_info; - /// slice-related configuration - slice_info_t slice_info; - ///subband bitmap configuration SBMAP_CONF sbmap_conf; /// CCE table used to build DCI scheduling information @@ -1432,6 +1408,11 @@ typedef struct eNB_MAC_INST_s { UE_free_list_t UE_free_list; /// for scheduling selection SCHEDULER_MODES scheduler_mode; + /// Default scheduler: Pre-processor implementation. Algorithms for UL/DL + /// are called by ULSCH/DLSCH, respectively. Pro-processor implementation can + /// encapsulate slicing. + pp_impl_param_t pre_processor_dl; + pp_impl_param_t pre_processor_ul; int32_t puSch10xSnr; int32_t puCch10xSnr; diff --git a/openair2/LAYER2/MAC/mac_proto.h b/openair2/LAYER2/MAC/mac_proto.h index 2cb86c25af..b92ce85608 100644 --- a/openair2/LAYER2/MAC/mac_proto.h +++ b/openair2/LAYER2/MAC/mac_proto.h @@ -33,6 +33,16 @@ #include "PHY/defs_common.h" // for PRACH_RESOURCES_t and lte_subframe_t #include "openair2/COMMON/mac_messages_types.h" +/** \fn void schedule_fembms_mib(module_id_t module_idP,frame_t frameP,sub_frame_t subframe); +\brief MIB scheduling for PBCH. This function requests the MIB from RRC and provides it to L1. +@param Mod_id Instance ID of eNB +@param frame Frame index +@param subframe Subframe number on which to act + +*/ + +void schedule_fembms_mib(module_id_t module_idP, + frame_t frameP, sub_frame_t subframeP); /** \addtogroup _mac * @{ @@ -187,8 +197,6 @@ void add_msg3(module_id_t module_idP, int CC_id, RA_t *ra, frame_t frameP, void init_UE_info(UE_info_t *UE_info); -void init_slice_info(slice_info_t *sli); - int mac_top_init(int eMBMS_active, char *uecap_xer, uint8_t cba_group_active, uint8_t HO_active); @@ -534,6 +542,10 @@ int ue_query_mch(module_id_t Mod_id, uint8_t CC_id, uint32_t frame, sub_frame_t subframe, uint8_t eNB_index, uint8_t *sync_area, uint8_t *mcch_active); +int ue_query_mch_fembms(module_id_t Mod_id, uint8_t CC_id, uint32_t frame, + sub_frame_t subframe, uint8_t eNB_index, + uint8_t * sync_area, uint8_t * mcch_active); + /* \brief Called by PHY to get sdu for PUSCH transmission. It performs the following operations: Checks BSR for DCCH, DCCH1 and DTCH corresponding to previous values computed either in SR or BSR procedures. It gets rlc status indications on DCCH,DCCH1 and DTCH and forms BSR elements and PHR in MAC header. CRNTI element is not supported yet. It computes transport block for up to 3 SDUs and generates header and forms the complete MAC SDU. @param Mod_id Instance id of UE in machine @@ -661,6 +673,7 @@ int prev(UE_list_t *listP, int nodeP); void add_ue_list(UE_list_t *listP, int UE_id); int remove_ue_list(UE_list_t *listP, int UE_id); void dump_ue_list(UE_list_t *listP); +void init_ue_list(UE_list_t *listP); int UE_num_active_CC(UE_info_t *listP, int ue_idP); int UE_PCCID(module_id_t mod_idP, int ue_idP); rnti_t UE_RNTI(module_id_t mod_idP, int ue_idP); @@ -675,10 +688,10 @@ void set_ul_DAI(int module_idP, void ulsch_scheduler_pre_processor(module_id_t module_idP, int CC_id, - int frameP, + frame_t frameP, sub_frame_t subframeP, - int sched_frameP, - unsigned char sched_subframeP); + frame_t sched_frameP, + sub_frame_t sched_subframeP); int phy_stats_exist(module_id_t Mod_id, int rnti); @@ -900,6 +913,7 @@ int generate_dlsch_header(unsigned char *mac_header, @param non_MBSFN_SubframeConfig pointer to FeMBMS Non MBSFN Subframe Config @param sib1_mbms_r14_fembms pointer SI Scheduling infomration for SI-MBMS @param mbsfn_AreaInfoList_fembms pointer to FeMBMS MBSFN Area Info list from SIB1-MBMS +@param mbms_AreaConfiguration pointer to eMBMS MBSFN Area Configuration */ int rrc_mac_config_req_eNB(module_id_t module_idP, @@ -936,7 +950,8 @@ int rrc_mac_config_req_eNB(module_id_t module_idP, LTE_SchedulingInfo_MBMS_r14_t *schedulingInfo_fembms, struct LTE_NonMBSFN_SubframeConfig_r14 *nonMBSFN_SubframeConfig, LTE_SystemInformationBlockType1_MBMS_r14_t *sib1_mbms_r14_fembms, - LTE_MBSFN_AreaInfoList_r9_t *mbsfn_AreaInfoList_fembms + LTE_MBSFN_AreaInfoList_r9_t *mbsfn_AreaInfoList_fembms, + LTE_MBSFNAreaConfiguration_r9_t * mbms_AreaConfiguration ); /** \brief RRC eNB Configuration primitive for PHY/MAC. Allows configuration of PHY/MAC resources based on System Information (SI), RRCConnectionSetup and RRCConnectionReconfiguration messages. diff --git a/openair2/LAYER2/MAC/main.c b/openair2/LAYER2/MAC/main.c index 1a88623a1f..af6d1a7ac3 100644 --- a/openair2/LAYER2/MAC/main.c +++ b/openair2/LAYER2/MAC/main.c @@ -45,11 +45,8 @@ extern RAN_CONTEXT_t RC; void init_UE_info(UE_info_t *UE_info) { - int list_el; UE_info->num_UEs = 0; - UE_info->list.head = -1; - for (list_el = 0; list_el < MAX_MOBILES_PER_ENB; list_el++) - UE_info->list.next[list_el] = -1; + init_ue_list(&UE_info->list); memset(UE_info->DLSCH_pdu, 0, sizeof(UE_info->DLSCH_pdu)); memset(UE_info->UE_template, 0, sizeof(UE_info->UE_template)); memset(UE_info->eNB_UE_stats, 0, sizeof(UE_info->eNB_UE_stats)); @@ -57,32 +54,6 @@ void init_UE_info(UE_info_t *UE_info) memset(UE_info->active, 0, sizeof(UE_info->active)); } -void init_slice_info(slice_info_t *sli) -{ - sli->intraslice_share_active = 1; - sli->interslice_share_active = 1; - - sli->n_dl = 1; - memset(sli->dl, 0, sizeof(slice_sched_conf_dl_t) * MAX_NUM_SLICES); - sli->dl[0].pct = 1.0; - sli->dl[0].prio = 10; - sli->dl[0].pos_high = N_RBG_MAX; - sli->dl[0].maxmcs = 28; - sli->dl[0].sorting = 0x012345; - sli->dl[0].sched_name = "schedule_ue_spec"; - sli->dl[0].sched_cb = dlsym(NULL, sli->dl[0].sched_name); - AssertFatal(sli->dl[0].sched_cb, "DLSCH scheduler callback is NULL\n"); - - sli->n_ul = 1; - memset(sli->ul, 0, sizeof(slice_sched_conf_ul_t) * MAX_NUM_SLICES); - sli->ul[0].pct = 1.0; - sli->ul[0].maxmcs = 20; - sli->ul[0].sorting = 0x0123; - sli->ul[0].sched_name = "schedule_ulsch_rnti"; - sli->ul[0].sched_cb = dlsym(NULL, sli->ul[0].sched_name); - AssertFatal(sli->ul[0].sched_cb, "ULSCH scheduler callback is NULL\n"); -} - void mac_top_init_eNB(void) { module_id_t i, j; @@ -129,8 +100,23 @@ void mac_top_init_eNB(void) mac[i]->if_inst = IF_Module_init(i); + mac[i]->pre_processor_dl.algorithm = 0; + mac[i]->pre_processor_dl.dl = dlsch_scheduler_pre_processor; + char *s = "round_robin_dl"; + void *d = dlsym(NULL, s); + AssertFatal(d, "%s(): no scheduler algo '%s' found\n", __func__, s); + mac[i]->pre_processor_dl.dl_algo = *(default_sched_dl_algo_t *) d; + mac[i]->pre_processor_dl.dl_algo.data = mac[i]->pre_processor_dl.dl_algo.setup(); + + mac[i]->pre_processor_ul.algorithm = 0; + mac[i]->pre_processor_ul.ul = ulsch_scheduler_pre_processor; + s = "round_robin_ul"; + d = dlsym(NULL, s); + AssertFatal(d, "%s(): no scheduler algo '%s' found\n", __func__, s); + mac[i]->pre_processor_ul.ul_algo = *(default_sched_ul_algo_t *) d; + mac[i]->pre_processor_ul.ul_algo.data = mac[i]->pre_processor_ul.ul_algo.setup(); + init_UE_info(&mac[i]->UE_info); - init_slice_info(&mac[i]->slice_info); } RC.mac = mac; diff --git a/openair2/LAYER2/MAC/pre_processor.c b/openair2/LAYER2/MAC/pre_processor.c index 8569d8f166..6477d60021 100644 --- a/openair2/LAYER2/MAC/pre_processor.c +++ b/openair2/LAYER2/MAC/pre_processor.c @@ -69,31 +69,367 @@ int get_rbg_size_last(module_id_t Mod_id, int CC_id) { return RBGsize; } -int g_start_ue_dl = -1; -int round_robin_dl(module_id_t Mod_id, - int CC_id, - int frame, - int subframe, - UE_list_t *UE_list, - int max_num_ue, - int n_rbg_sched, - uint8_t *rbgalloc_mask) { +void *rr_dl_setup(void) { + void *data = malloc(sizeof(int)); + *(int *) data = 0; + AssertFatal(data, "could not allocate data in %s()\n", __func__); + return data; +} +void rr_dl_unset(void **data) { + if (*data) + free(*data); + *data = NULL; +} +int rr_dl_run(module_id_t Mod_id, + int CC_id, + int frame, + int subframe, + UE_list_t *UE_list, + int max_num_ue, + int n_rbg_sched, + uint8_t *rbgalloc_mask, + void *data) { DevAssert(UE_list->head >= 0); DevAssert(n_rbg_sched > 0); const int N_RBG = to_rbg(RC.mac[Mod_id]->common_channels[CC_id].mib->message.dl_Bandwidth); const int RBGsize = get_min_rb_unit(Mod_id, CC_id); const int RBGlastsize = get_rbg_size_last(Mod_id, CC_id); - int num_ue_req = 0; UE_info_t *UE_info = &RC.mac[Mod_id]->UE_info; - int rb_required[MAX_MOBILES_PER_ENB]; // how much UEs request - memset(rb_required, 0, sizeof(rb_required)); - int rbg = 0; for (; !rbgalloc_mask[rbg]; rbg++) ; /* fast-forward to first allowed RBG */ - // Calculate the amount of RBs every UE wants to send. + /* just start with the UE after the one we had last time. If it does not + * exist, this will start at the head */ + int *start_ue = data; + *start_ue = next_ue_list_looped(UE_list, *start_ue); + + int UE_id = *start_ue; + UE_list_t UE_sched; + int *cur_UE = &UE_sched.head; + // Allocate retransmissions, and mark UEs with new transmissions + do { + // check whether there are HARQ retransmissions + const COMMON_channels_t *cc = &RC.mac[Mod_id]->common_channels[CC_id]; + const uint8_t harq_pid = frame_subframe2_dl_harq_pid(cc->tdd_Config, frame, subframe); + UE_sched_ctrl_t *ue_ctrl = &UE_info->UE_sched_ctrl[UE_id]; + const uint8_t round = ue_ctrl->round[CC_id][harq_pid]; + if (round != 8) { // retransmission: allocate + const int nb_rb = UE_info->UE_template[CC_id][UE_id].nb_rb[harq_pid]; + if (nb_rb == 0) + goto skip_ue; + int nb_rbg = (nb_rb + (nb_rb % RBGsize)) / RBGsize; + // needs more RBGs than we can allocate + if (nb_rbg > n_rbg_sched) { + LOG_D(MAC, + "retransmission of UE %d needs more RBGs (%d) than we have (%d)\n", + UE_id, nb_rbg, n_rbg_sched); + goto skip_ue; + } + // ensure that the number of RBs can be contained by the RBGs (!), i.e. + // if we allocate the last RBG this one should have the full RBGsize + if ((nb_rb % RBGsize) == 0 && nb_rbg == n_rbg_sched + && rbgalloc_mask[N_RBG - 1] && RBGlastsize != RBGsize) { + LOG_D(MAC, + "retransmission of UE %d needs %d RBs, but the last RBG %d is too small (%d, normal %d)\n", + UE_id, nb_rb, N_RBG - 1, RBGlastsize, RBGsize); + goto skip_ue; + } + const uint8_t cqi = ue_ctrl->dl_cqi[CC_id]; + const int idx = CCE_try_allocate_dlsch(Mod_id, CC_id, subframe, UE_id, cqi); + if (idx < 0) + goto skip_ue; // cannot allocate CCE + ue_ctrl->pre_dci_dl_pdu_idx = idx; + // retransmissions: directly allocate + n_rbg_sched -= nb_rbg; + ue_ctrl->pre_nb_available_rbs[CC_id] += nb_rb; + for (; nb_rbg > 0; rbg++) { + if (!rbgalloc_mask[rbg]) + continue; + ue_ctrl->rballoc_sub_UE[CC_id][rbg] = 1; + rbgalloc_mask[rbg] = 0; + nb_rbg--; + } + LOG_D(MAC, + "%4d.%d n_rbg_sched %d after retransmission reservation for UE %d " + "round %d retx nb_rb %d pre_nb_available_rbs %d\n", + frame, subframe, n_rbg_sched, UE_id, round, + UE_info->UE_template[CC_id][UE_id].nb_rb[harq_pid], + ue_ctrl->pre_nb_available_rbs[CC_id]); + /* if there are no more RBG to give, return */ + if (n_rbg_sched <= 0) + return 0; + max_num_ue--; + /* if there are no UEs that can be allocated anymore, return */ + if (max_num_ue == 0) + return n_rbg_sched; + for (; !rbgalloc_mask[rbg]; rbg++) /* fast-forward */ ; + } else { + if (UE_info->UE_template[CC_id][UE_id].dl_buffer_total > 0) { + *cur_UE = UE_id; + cur_UE = &UE_sched.next[UE_id]; + } + } + +skip_ue: + UE_id = next_ue_list_looped(UE_list, UE_id); + } while (UE_id != *start_ue); + *cur_UE = -1; // mark end + + if (UE_sched.head < 0) + return n_rbg_sched; // no UE has a transmission + + // after allocating retransmissions: pre-allocate CCE, compute number of + // requested RBGs + max_num_ue = min(max_num_ue, n_rbg_sched); + int rb_required[MAX_MOBILES_PER_ENB]; // how much UEs request + cur_UE = &UE_sched.head; + while (*cur_UE >= 0 && max_num_ue > 0) { + const int UE_id = *cur_UE; + cur_UE = &UE_sched.next[UE_id]; // go to next + const uint8_t cqi = UE_info->UE_sched_ctrl[UE_id].dl_cqi[CC_id]; + const int idx = CCE_try_allocate_dlsch(Mod_id, CC_id, subframe, UE_id, cqi); + if (idx < 0) { + LOG_D(MAC, "cannot allocate CCE for UE %d, skipping\n", UE_id); + continue; + } + UE_info->UE_sched_ctrl[UE_id].pre_dci_dl_pdu_idx = idx; + const int mcs = cqi_to_mcs[cqi]; + UE_info->eNB_UE_stats[CC_id][UE_id].dlsch_mcs1 = mcs; + const uint32_t B = UE_info->UE_template[CC_id][UE_id].dl_buffer_total; + rb_required[UE_id] = find_nb_rb_DL(mcs, B, n_rbg_sched * RBGsize, RBGsize); + max_num_ue--; + } + *cur_UE = -1; // not all UEs might be allocated, mark end + + /* for one UE after the next: allocate resources */ + cur_UE = &UE_sched.head; + while (*cur_UE >= 0) { + const int UE_id = *cur_UE; + UE_sched_ctrl_t *ue_ctrl = &UE_info->UE_sched_ctrl[UE_id]; + ue_ctrl->rballoc_sub_UE[CC_id][rbg] = 1; + rbgalloc_mask[rbg] = 0; + const int sRBG = rbg == N_RBG - 1 ? RBGlastsize : RBGsize; + ue_ctrl->pre_nb_available_rbs[CC_id] += sRBG; + rb_required[UE_id] -= sRBG; + if (rb_required[UE_id] <= 0) { + *cur_UE = UE_sched.next[*cur_UE]; + if (*cur_UE < 0) + cur_UE = &UE_sched.head; + } else { + cur_UE = UE_sched.next[*cur_UE] < 0 ? &UE_sched.head : &UE_sched.next[*cur_UE]; + } + n_rbg_sched--; + if (n_rbg_sched <= 0) + break; + for (rbg++; !rbgalloc_mask[rbg]; rbg++) /* fast-forward */ ; + } + + return n_rbg_sched; +} +default_sched_dl_algo_t round_robin_dl = { + .name = "round_robin_dl", + .setup = rr_dl_setup, + .unset = rr_dl_unset, + .run = rr_dl_run, + .data = NULL +}; + + +void *pf_dl_setup(void) { + void *data = calloc(MAX_MOBILES_PER_ENB, sizeof(float)); + for (int i = 0; i < MAX_MOBILES_PER_ENB; i++) + *(float *) data = 0.0f; + AssertFatal(data, "could not allocate data in %s()\n", __func__); + return data; +} +void pf_dl_unset(void **data) { + if (*data) + free(*data); + *data = NULL; +} +int pf_wbcqi_dl_run(module_id_t Mod_id, + int CC_id, + int frame, + int subframe, + UE_list_t *UE_list, + int max_num_ue, + int n_rbg_sched, + uint8_t *rbgalloc_mask, + void *data) { + DevAssert(UE_list->head >= 0); + DevAssert(n_rbg_sched > 0); + const int N_RBG = to_rbg(RC.mac[Mod_id]->common_channels[CC_id].mib->message.dl_Bandwidth); + const int RBGsize = get_min_rb_unit(Mod_id, CC_id); + const int RBGlastsize = get_rbg_size_last(Mod_id, CC_id); + UE_info_t *UE_info = &RC.mac[Mod_id]->UE_info; + + int rbg = 0; + for (; !rbgalloc_mask[rbg]; rbg++) + ; /* fast-forward to first allowed RBG */ + + UE_list_t UE_sched; // UEs that could be scheduled + int *uep = &UE_sched.head; + float *thr_ue = data; + float coeff_ue[MAX_MOBILES_PER_ENB]; + + for (int UE_id = UE_list->head; UE_id >= 0; UE_id = UE_list->next[UE_id]) { + const float a = 0.0005f; // corresponds to 200ms window + const uint32_t b = UE_info->eNB_UE_stats[CC_id][UE_id].TBS; + thr_ue[UE_id] = (1 - a) * thr_ue[UE_id] + a * b; + + // check whether there are HARQ retransmissions + const COMMON_channels_t *cc = &RC.mac[Mod_id]->common_channels[CC_id]; + const uint8_t harq_pid = frame_subframe2_dl_harq_pid(cc->tdd_Config, frame, subframe); + UE_sched_ctrl_t *ue_ctrl = &UE_info->UE_sched_ctrl[UE_id]; + const uint8_t round = ue_ctrl->round[CC_id][harq_pid]; + if (round != 8) { // retransmission: allocate + const int nb_rb = UE_info->UE_template[CC_id][UE_id].nb_rb[harq_pid]; + if (nb_rb == 0) + continue; + int nb_rbg = (nb_rb + (nb_rb % RBGsize)) / RBGsize; + // needs more RBGs than we can allocate + if (nb_rbg > n_rbg_sched) { + LOG_D(MAC, + "retransmission of UE %d needs more RBGs (%d) than we have (%d)\n", + UE_id, nb_rbg, n_rbg_sched); + continue; + } + // ensure that the number of RBs can be contained by the RBGs (!), i.e. + // if we allocate the last RBG this one should have the full RBGsize + if ((nb_rb % RBGsize) == 0 && nb_rbg == n_rbg_sched + && rbgalloc_mask[N_RBG - 1] && RBGlastsize != RBGsize) { + LOG_D(MAC, + "retransmission of UE %d needs %d RBs, but the last RBG %d is too small (%d, normal %d)\n", + UE_id, nb_rb, N_RBG - 1, RBGlastsize, RBGsize); + continue; + } + const uint8_t cqi = ue_ctrl->dl_cqi[CC_id]; + const int idx = CCE_try_allocate_dlsch(Mod_id, CC_id, subframe, UE_id, cqi); + if (idx < 0) + continue; // cannot allocate CCE + ue_ctrl->pre_dci_dl_pdu_idx = idx; + // retransmissions: directly allocate + n_rbg_sched -= nb_rbg; + ue_ctrl->pre_nb_available_rbs[CC_id] += nb_rb; + for (; nb_rbg > 0; rbg++) { + if (!rbgalloc_mask[rbg]) + continue; + ue_ctrl->rballoc_sub_UE[CC_id][rbg] = 1; + rbgalloc_mask[rbg] = 0; + nb_rbg--; + } + LOG_D(MAC, + "%4d.%d n_rbg_sched %d after retransmission reservation for UE %d " + "round %d retx nb_rb %d pre_nb_available_rbs %d\n", + frame, subframe, n_rbg_sched, UE_id, round, + UE_info->UE_template[CC_id][UE_id].nb_rb[harq_pid], + ue_ctrl->pre_nb_available_rbs[CC_id]); + /* if there are no more RBG to give, return */ + if (n_rbg_sched <= 0) + return 0; + max_num_ue--; + /* if there are no UEs that can be allocated anymore, return */ + if (max_num_ue == 0) + return n_rbg_sched; + for (; !rbgalloc_mask[rbg]; rbg++) /* fast-forward */ ; + } else { + if (UE_info->UE_template[CC_id][UE_id].dl_buffer_total == 0) + continue; + + const int mcs = cqi_to_mcs[UE_info->UE_sched_ctrl[UE_id].dl_cqi[CC_id]]; + const uint32_t tbs = get_TBS_DL(mcs, RBGsize); + coeff_ue[UE_id] = (float) tbs / thr_ue[UE_id]; + //LOG_I(MAC, " pf UE %d: old TBS %d thr %f MCS %d TBS %d coeff %f\n", + // UE_id, b, thr_ue[UE_id], mcs, tbs, coeff_ue[UE_id]); + *uep = UE_id; + uep = &UE_sched.next[UE_id]; + } + } + *uep = -1; + + while (max_num_ue > 0 && n_rbg_sched > 0 && UE_sched.head >= 0) { + int *max = &UE_sched.head; /* assume head is max */ + int *p = &UE_sched.next[*max]; + while (*p >= 0) { + /* if the current one has larger coeff, save for later */ + if (coeff_ue[*p] > coeff_ue[*max]) + max = p; + p = &UE_sched.next[*p]; + } + /* remove the max one */ + const int UE_id = *max; + p = &UE_sched.next[*max]; + *max = UE_sched.next[*max]; + *p = -1; + + const uint8_t cqi = UE_info->UE_sched_ctrl[UE_id].dl_cqi[CC_id]; + const int idx = CCE_try_allocate_dlsch(Mod_id, CC_id, subframe, UE_id, cqi); + if (idx < 0) + continue; + UE_info->UE_sched_ctrl[UE_id].pre_dci_dl_pdu_idx = idx; + + max_num_ue--; + + /* allocate as much as possible */ + const int mcs = cqi_to_mcs[cqi]; + UE_info->eNB_UE_stats[CC_id][UE_id].dlsch_mcs1 = mcs; + int req = find_nb_rb_DL(mcs, + UE_info->UE_template[CC_id][UE_id].dl_buffer_total, + n_rbg_sched * RBGsize, + RBGsize); + UE_sched_ctrl_t *ue_ctrl = &UE_info->UE_sched_ctrl[UE_id]; + while (req > 0 && n_rbg_sched > 0) { + ue_ctrl->rballoc_sub_UE[CC_id][rbg] = 1; + rbgalloc_mask[rbg] = 0; + const int sRBG = rbg == N_RBG - 1 ? RBGlastsize : RBGsize; + ue_ctrl->pre_nb_available_rbs[CC_id] += sRBG; + req -= sRBG; + n_rbg_sched--; + for (rbg++; n_rbg_sched > 0 && !rbgalloc_mask[rbg]; rbg++) /* fast-forward */ ; + } + } + + return n_rbg_sched; +} +default_sched_dl_algo_t proportional_fair_wbcqi_dl = { + .name = "proportional_fair_wbcqi_dl", + .setup = pf_dl_setup, + .unset = pf_dl_unset, + .run = pf_wbcqi_dl_run, + .data = NULL +}; + +void *mt_dl_setup(void) { + return NULL; +} +void mt_dl_unset(void **data) { + *data = NULL; +} +int mt_wbcqi_dl_run(module_id_t Mod_id, + int CC_id, + int frame, + int subframe, + UE_list_t *UE_list, + int max_num_ue, + int n_rbg_sched, + uint8_t *rbgalloc_mask, + void *data) { + DevAssert(UE_list->head >= 0); + DevAssert(n_rbg_sched > 0); + const int N_RBG = to_rbg(RC.mac[Mod_id]->common_channels[CC_id].mib->message.dl_Bandwidth); + const int RBGsize = get_min_rb_unit(Mod_id, CC_id); + const int RBGlastsize = get_rbg_size_last(Mod_id, CC_id); + UE_info_t *UE_info = &RC.mac[Mod_id]->UE_info; + + int rbg = 0; + for (; !rbgalloc_mask[rbg]; rbg++) + ; /* fast-forward to first allowed RBG */ + + UE_list_t UE_sched; // UEs that could be scheduled + int *uep = &UE_sched.head; + for (int UE_id = UE_list->head; UE_id >= 0; UE_id = UE_list->next[UE_id]) { // check whether there are HARQ retransmissions const COMMON_channels_t *cc = &RC.mac[Mod_id]->common_channels[CC_id]; @@ -133,6 +469,7 @@ int round_robin_dl(module_id_t Mod_id, if (!rbgalloc_mask[rbg]) continue; ue_ctrl->rballoc_sub_UE[CC_id][rbg] = 1; + rbgalloc_mask[rbg] = 0; nb_rbg--; } LOG_D(MAC, @@ -150,90 +487,69 @@ int round_robin_dl(module_id_t Mod_id, return n_rbg_sched; for (; !rbgalloc_mask[rbg]; rbg++) /* fast-forward */ ; } else { - const int dlsch_mcs1 = cqi_to_mcs[UE_info->UE_sched_ctrl[UE_id].dl_cqi[CC_id]]; - UE_info->eNB_UE_stats[CC_id][UE_id].dlsch_mcs1 = dlsch_mcs1; - rb_required[UE_id] = - find_nb_rb_DL(dlsch_mcs1, - UE_info->UE_template[CC_id][UE_id].dl_buffer_total, - n_rbg_sched * RBGsize, - RBGsize); - if (rb_required[UE_id] > 0) - num_ue_req++; - LOG_D(MAC, - "%d/%d UE_id %d rb_required %d n_rbg_sched %d\n", - frame, - subframe, - UE_id, - rb_required[UE_id], - n_rbg_sched); + if (UE_info->UE_template[CC_id][UE_id].dl_buffer_total == 0) + continue; + *uep = UE_id; + uep = &UE_sched.next[UE_id]; } } + *uep = -1; - if (num_ue_req == 0) - return n_rbg_sched; // no UE has a transmission + while (max_num_ue > 0 && n_rbg_sched > 0 && UE_sched.head >= 0) { + int *max = &UE_sched.head; /* assume head is max */ + int *p = &UE_sched.next[*max]; + while (*p >= 0) { + /* if the current one has better CQI, or the same and more data */ + const uint8_t maxCqi = UE_info->UE_sched_ctrl[*max].dl_cqi[CC_id]; + const uint32_t maxB = UE_info->UE_template[CC_id][*max].dl_buffer_total; + const uint8_t pCqi = UE_info->UE_sched_ctrl[*p].dl_cqi[CC_id]; + const uint32_t pB = UE_info->UE_template[CC_id][*p].dl_buffer_total; + if (pCqi > maxCqi || (pCqi == maxCqi && pB > maxB)) + max = p; + p = &UE_sched.next[*p]; + } + /* remove the max one */ + const int UE_id = *max; + p = &UE_sched.next[*max]; + *max = UE_sched.next[*max]; + *p = -1; - // after allocating retransmissions: build list of UE to allocate. - // if start_UE does not exist anymore (detach etc), start at first UE - if (g_start_ue_dl == -1) - g_start_ue_dl = UE_list->head; - int UE_id = g_start_ue_dl; - UE_list_t UE_sched; - int rb_required_total = 0; - int num_ue_sched = 0; - max_num_ue = min(min(max_num_ue, num_ue_req), n_rbg_sched); - int *cur_UE = &UE_sched.head; - while (num_ue_sched < max_num_ue) { - while (rb_required[UE_id] == 0) - UE_id = next_ue_list_looped(UE_list, UE_id); const uint8_t cqi = UE_info->UE_sched_ctrl[UE_id].dl_cqi[CC_id]; const int idx = CCE_try_allocate_dlsch(Mod_id, CC_id, subframe, UE_id, cqi); - if (idx < 0) { - LOG_D(MAC, "cannot allocate CCE for UE %d, skipping\n", UE_id); - num_ue_req--; - max_num_ue = min(min(max_num_ue, num_ue_req), n_rbg_sched); - UE_id = next_ue_list_looped(UE_list, UE_id); // next candidate + if (idx < 0) continue; - } UE_info->UE_sched_ctrl[UE_id].pre_dci_dl_pdu_idx = idx; - *cur_UE = UE_id; - cur_UE = &UE_sched.next[UE_id]; - rb_required_total += rb_required[UE_id]; - num_ue_sched++; - UE_id = next_ue_list_looped(UE_list, UE_id); // next candidate - } - *cur_UE = -1; - /* for one UE after the next: allocate resources */ - for (int UE_id = UE_sched.head; UE_id >= 0; - UE_id = next_ue_list_looped(&UE_sched, UE_id)) { - if (rb_required[UE_id] <= 0) - continue; + max_num_ue--; + + /* allocate as much as possible */ + const int mcs = cqi_to_mcs[cqi]; + UE_info->eNB_UE_stats[CC_id][UE_id].dlsch_mcs1 = mcs; + int req = find_nb_rb_DL(mcs, + UE_info->UE_template[CC_id][UE_id].dl_buffer_total, + n_rbg_sched * RBGsize, + RBGsize); UE_sched_ctrl_t *ue_ctrl = &UE_info->UE_sched_ctrl[UE_id]; - ue_ctrl->rballoc_sub_UE[CC_id][rbg] = 1; - const int sRBG = rbg == N_RBG - 1 ? RBGlastsize : RBGsize; - ue_ctrl->pre_nb_available_rbs[CC_id] += sRBG; - rb_required[UE_id] -= sRBG; - rb_required_total -= sRBG; - if (rb_required_total <= 0) - break; - n_rbg_sched--; - if (n_rbg_sched <= 0) - break; - for (rbg++; !rbgalloc_mask[rbg]; rbg++) /* fast-forward */ ; - } - - /* if not all UEs could be allocated in this round */ - if (num_ue_req > max_num_ue) { - /* go to the first one we missed */ - for (int i = 0; i < max_num_ue; ++i) - g_start_ue_dl = next_ue_list_looped(UE_list, g_start_ue_dl); - } else { - /* else, just start with the next UE next time */ - g_start_ue_dl = next_ue_list_looped(UE_list, g_start_ue_dl); + while (req > 0 && n_rbg_sched > 0) { + ue_ctrl->rballoc_sub_UE[CC_id][rbg] = 1; + rbgalloc_mask[rbg] = 0; + const int sRBG = rbg == N_RBG - 1 ? RBGlastsize : RBGsize; + ue_ctrl->pre_nb_available_rbs[CC_id] += sRBG; + req -= sRBG; + n_rbg_sched--; + for (rbg++; n_rbg_sched > 0 && !rbgalloc_mask[rbg]; rbg++) /* fast-forward */ ; + } } return n_rbg_sched; } +default_sched_dl_algo_t maximum_throughput_wbcqi_dl = { + .name = "maximum_throughput_wbcqi_dl", + .setup = mt_dl_setup, + .unset = mt_dl_unset, + .run = mt_wbcqi_dl_run, + .data = NULL +}; // This function stores the downlink buffer for all the logical channels void @@ -295,6 +611,18 @@ store_dlsch_buffer(module_id_t Mod_id, #endif } + /* hack: in schedule_ue_spec, 3 bytes are "reserved" (this should be + * done better). An RLC AM entity may ask for only 2 bytes for + * ACKing and get a TBS of 32 bits and due to these 3 reserved bytes we may + * end up with only 1 byte left for RLC, which is not enough. This hack + * prevents the problem. To be done better at some point. If the function + * schedule_ue_spec is (has been) reworked, this hack can be removed. + * Dig for "TBS - ta_len - header_length_total - sdu_length_total - 3" + * in schedule_ue_spec. + */ + if (UE_template->dl_buffer_total > 0 && UE_template->dl_buffer_total <= 2) + UE_template->dl_buffer_total += 3; + if (UE_template->dl_buffer_total > 0) LOG_D(MAC, "[eNB %d] Frame %d Subframe %d : RLC status for UE %d : total DL buffer size %d and total number of pdu %d \n", @@ -311,19 +639,18 @@ dlsch_scheduler_pre_processor(module_id_t Mod_id, int CC_id, frame_t frameP, sub_frame_t subframeP) { - UE_info_t *UE_info = &RC.mac[Mod_id]->UE_info; - const int N_RBG = to_rbg(RC.mac[Mod_id]->common_channels[CC_id].mib->message.dl_Bandwidth); + eNB_MAC_INST *mac = RC.mac[Mod_id]; + UE_info_t *UE_info = &mac->UE_info; + const int N_RBG = to_rbg(mac->common_channels[CC_id].mib->message.dl_Bandwidth); const int RBGsize = get_min_rb_unit(Mod_id, CC_id); store_dlsch_buffer(Mod_id, CC_id, frameP, subframeP); UE_list_t UE_to_sched; - UE_to_sched.head = -1; for (int i = 0; i < MAX_MOBILES_PER_ENB; ++i) UE_to_sched.next[i] = -1; + int *cur = &UE_to_sched.head; - int first = 1; - int last_UE_id = -1; for (int UE_id = UE_info->list.head; UE_id >= 0; UE_id = UE_info->list.next[UE_id]) { UE_sched_ctrl_t *ue_sched_ctrl = &UE_info->UE_sched_ctrl[UE_id]; const UE_TEMPLATE *ue_template = &UE_info->UE_template[CC_id][UE_id]; @@ -356,20 +683,15 @@ dlsch_scheduler_pre_processor(module_id_t Mod_id, } /* define UEs to schedule */ - if (first) { - first = 0; - UE_to_sched.head = UE_id; - } else { - UE_to_sched.next[last_UE_id] = UE_id; - } - UE_to_sched.next[UE_id] = -1; - last_UE_id = UE_id; + *cur = UE_id; + cur = &UE_to_sched.next[UE_id]; } + *cur = -1; if (UE_to_sched.head < 0) return; - uint8_t *vrb_map = RC.mac[Mod_id]->common_channels[CC_id].vrb_map; + uint8_t *vrb_map = mac->common_channels[CC_id].vrb_map; uint8_t rbgalloc_mask[N_RBG_MAX]; int n_rbg_sched = 0; for (int i = 0; i < N_RBG; i++) { @@ -381,14 +703,15 @@ dlsch_scheduler_pre_processor(module_id_t Mod_id, n_rbg_sched += rbgalloc_mask[i]; } - round_robin_dl(Mod_id, - CC_id, - frameP, - subframeP, - &UE_to_sched, - 4, // max_num_ue - n_rbg_sched, - rbgalloc_mask); + mac->pre_processor_dl.dl_algo.run(Mod_id, + CC_id, + frameP, + subframeP, + &UE_to_sched, + 4, // max_num_ue + n_rbg_sched, + rbgalloc_mask, + mac->pre_processor_dl.dl_algo.data); // the following block is meant for validation of the pre-processor to check // whether all UE allocations are non-overlapping and is not necessary for @@ -500,17 +823,28 @@ int pp_find_rb_table_index(int approximate) { return p + 1; } -int g_start_ue_ul = -1; -int round_robin_ul(module_id_t Mod_id, - int CC_id, - int frame, - int subframe, - int sched_frame, - int sched_subframe, - UE_list_t *UE_list, - int max_num_ue, - int num_contig_rb, - contig_rbs_t *rbs) { +void *rr_ul_setup(void) { + void *data = malloc(sizeof(int)); + *(int *) data = 0; + AssertFatal(data, "could not allocate data in %s()\n", __func__); + return data; +} +void rr_ul_unset(void **data) { + if (*data) + free(*data); + *data = NULL; +} +int rr_ul_run(module_id_t Mod_id, + int CC_id, + int frame, + int subframe, + int sched_frame, + int sched_subframe, + UE_list_t *UE_list, + int max_num_ue, + int num_contig_rb, + contig_rbs_t *rbs, + void *data) { AssertFatal(num_contig_rb <= 2, "cannot handle more than two contiguous RB regions\n"); UE_info_t *UE_info = &RC.mac[Mod_id]->UE_info; const int max_rb = num_contig_rb > 1 ? MAX(rbs[0].length, rbs[1].length) : rbs[0].length; @@ -650,9 +984,10 @@ int round_robin_ul(module_id_t Mod_id, end = la > lb ? 2 : -1; } - if (g_start_ue_ul == -1) - g_start_ue_ul = UE_list->head; - int sUE_id = g_start_ue_ul; + int *start_ue = data; + if (*start_ue == -1) + *start_ue = UE_list->head; + int sUE_id = *start_ue; int rb_idx_given[MAX_MOBILES_PER_ENB]; memset(rb_idx_given, 0, sizeof(rb_idx_given)); @@ -730,35 +1065,35 @@ int round_robin_ul(module_id_t Mod_id, } } - /* if not all UEs could be allocated in this round */ - if (num_ue_req > max_num_ue) { - /* go to the first one we missed */ - for (int i = 0; i < max_num_ue; ++i) - g_start_ue_ul = next_ue_list_looped(UE_list, g_start_ue_ul); - } else { - /* else, just start with the next UE next time */ - g_start_ue_ul = next_ue_list_looped(UE_list, g_start_ue_ul); - } + /* just start with the next UE next time */ + *start_ue = next_ue_list_looped(UE_list, *start_ue); return rbs[0].length + (num_contig_rb > 1 ? rbs[1].length : 0); } +default_sched_ul_algo_t round_robin_ul = { + .name = "round_robin_ul", + .setup = rr_ul_setup, + .unset = rr_ul_unset, + .run = rr_ul_run, + .data = NULL +}; void ulsch_scheduler_pre_processor(module_id_t Mod_id, int CC_id, - int frameP, + frame_t frameP, sub_frame_t subframeP, - int sched_frameP, - unsigned char sched_subframeP) { - UE_info_t *UE_info = &RC.mac[Mod_id]->UE_info; - const int N_RB_UL = to_prb(RC.mac[Mod_id]->common_channels[CC_id].ul_Bandwidth); - COMMON_channels_t *cc = &RC.mac[Mod_id]->common_channels[CC_id]; + frame_t sched_frameP, + sub_frame_t sched_subframeP) { + eNB_MAC_INST *mac = RC.mac[Mod_id]; + UE_info_t *UE_info = &mac->UE_info; + const int N_RB_UL = to_prb(mac->common_channels[CC_id].ul_Bandwidth); + COMMON_channels_t *cc = &mac->common_channels[CC_id]; UE_list_t UE_to_sched; - UE_to_sched.head = -1; for (int i = 0; i < MAX_MOBILES_PER_ENB; ++i) UE_to_sched.next[i] = -1; + int *cur = &UE_to_sched.head; - int last_UE_id = -1; for (int UE_id = UE_info->list.head; UE_id >= 0; UE_id = UE_info->list.next[UE_id]) { UE_TEMPLATE *UE_template = &UE_info->UE_template[CC_id][UE_id]; UE_sched_ctrl_t *ue_sched_ctrl = &UE_info->UE_sched_ctrl[UE_id]; @@ -781,13 +1116,10 @@ void ulsch_scheduler_pre_processor(module_id_t Mod_id, continue; /* define UEs to schedule */ - if (UE_to_sched.head < 0) - UE_to_sched.head = UE_id; - else - UE_to_sched.next[last_UE_id] = UE_id; - UE_to_sched.next[UE_id] = -1; - last_UE_id = UE_id; + *cur = UE_id; + cur = &UE_to_sched.next[UE_id]; } + *cur = -1; if (UE_to_sched.head < 0) return; @@ -808,16 +1140,17 @@ void ulsch_scheduler_pre_processor(module_id_t Mod_id, } } - round_robin_ul(Mod_id, - CC_id, - frameP, - subframeP, - sched_frameP, - sched_subframeP, - &UE_to_sched, - 4, // max_num_ue - n_contig, - rbs); + mac->pre_processor_ul.ul_algo.run(Mod_id, + CC_id, + frameP, + subframeP, + sched_frameP, + sched_subframeP, + &UE_to_sched, + 4, // max_num_ue + n_contig, + rbs, + mac->pre_processor_ul.ul_algo.data); // the following block is meant for validation of the pre-processor to check // whether all UE allocations are non-overlapping and is not necessary for @@ -836,7 +1169,7 @@ void ulsch_scheduler_pre_processor(module_id_t Mod_id, continue; print = 1; - uint8_t harq_pid = subframe2harqpid(&RC.mac[Mod_id]->common_channels[CC_id], + uint8_t harq_pid = subframe2harqpid(&mac->common_channels[CC_id], sched_frameP, sched_subframeP); LOG_D(MAC, "%4d.%d UE%d %d RBs (index %d) at start %d, pre MCS %d %s\n", frameP, diff --git a/openair2/LAYER2/MAC/slicing/slicing.c b/openair2/LAYER2/MAC/slicing/slicing.c new file mode 100644 index 0000000000..9c88f6cffb --- /dev/null +++ b/openair2/LAYER2/MAC/slicing/slicing.c @@ -0,0 +1,601 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! + * \file slicing.c + * \brief Generic slicing helper functions and Static Slicing Implementation + * \author Robert Schmidt + * \date 2020 + * \email robert.schmidt@eurecom.fr + */ + +#define _GNU_SOURCE +#include +#include + +#include "assertions.h" +#include "common/utils/LOG/log.h" + +#include "slicing.h" +#include "slicing_internal.h" + +#include "common/ran_context.h" +extern RAN_CONTEXT_t RC; + +#define RET_FAIL(ret, x...) do { LOG_E(MAC, x); return ret; } while (0) + +int slicing_get_UE_slice_idx(slice_info_t *si, int UE_id) { + return si->UE_assoc_slice[UE_id]; +} + +void slicing_add_UE(slice_info_t *si, int UE_id) { + add_ue_list(&si->s[0]->UEs, UE_id); + si->UE_assoc_slice[UE_id] = 0; +} + +void _remove_UE(slice_t **s, uint8_t *assoc, int UE_id) { + const uint8_t i = assoc[UE_id]; + DevAssert(remove_ue_list(&s[i]->UEs, UE_id)); + assoc[UE_id] = -1; +} + +void slicing_remove_UE(slice_info_t *si, int UE_id) { + _remove_UE(si->s, si->UE_assoc_slice, UE_id); +} + +void _move_UE(slice_t **s, uint8_t *assoc, int UE_id, int to) { + const uint8_t i = assoc[UE_id]; + const int ri = remove_ue_list(&s[i]->UEs, UE_id); + if (!ri) + LOG_W(MAC, "did not find UE %d in DL slice index %d\n", UE_id, i); + add_ue_list(&s[to]->UEs, UE_id); + assoc[UE_id] = to; +} + +void slicing_move_UE(slice_info_t *si, int UE_id, int idx) { + DevAssert(idx >= -1 && idx < si->num); + if (idx >= 0) + _move_UE(si->s, si->UE_assoc_slice, UE_id, idx); +} + +int _exists_slice(uint8_t n, slice_t **s, int id) { + for (int i = 0; i < n; ++i) + if (s[i]->id == id) + return i; + return -1; +} + +slice_t *_add_slice(uint8_t *n, slice_t **s) { + s[*n] = calloc(1, sizeof(slice_t)); + if (!s[*n]) + return NULL; + init_ue_list(&s[*n]->UEs); + *n += 1; + return s[*n - 1]; +} + +slice_t *_remove_slice(uint8_t *n, slice_t **s, uint8_t *assoc, int idx) { + if (idx >= *n) + return NULL; + + slice_t *sr = s[idx]; + while (sr->UEs.head >= 0) + _move_UE(s, assoc, sr->UEs.head, 0); + + for (int i = idx + 1; i < *n; ++i) + s[i - 1] = s[i]; + *n -= 1; + s[*n] = NULL; + + for (int i = 0; i < MAX_MOBILES_PER_ENB; ++i) + if (assoc[i] > idx) + assoc[i] -= 1; + + if (sr->label) + free(sr->label); + + return sr; +} + +/************************ Static Slicing Implementation ************************/ + +int addmod_static_slice_dl(slice_info_t *si, + int id, + char *label, + void *algo, + void *slice_params_dl) { + static_slice_param_t *dl = slice_params_dl; + if (dl && dl->posLow > dl->posHigh) + RET_FAIL(-1, "%s(): slice id %d posLow > posHigh\n", __func__, id); + + uint8_t rbgMap[25] = { 0 }; + int index = _exists_slice(si->num, si->s, id); + if (index >= 0) { + for (int s = 0; s < si->num; ++s) { + static_slice_param_t *sd = dl && si->s[s]->id == id ? dl : si->s[s]->algo_data; + for (int i = sd->posLow; i <= sd->posHigh; ++i) { + if (rbgMap[i]) + RET_FAIL(-33, "%s(): overlap of slices detected at RBG %d\n", __func__, i); + rbgMap[i] = 1; + } + } + /* no problem, can allocate */ + slice_t *s = si->s[index]; + if (label) { + if (s->label) free(s->label); + s->label = label; + } + if (algo) { + s->dl_algo.unset(&s->dl_algo.data); + s->dl_algo = *(default_sched_dl_algo_t *) algo; + if (!s->dl_algo.data) + s->dl_algo.data = s->dl_algo.setup(); + } + if (dl) { + free(s->algo_data); + s->algo_data = dl; + } + return index; + } + + if (!dl) + RET_FAIL(-100, "%s(): no parameters for new slice %d, aborting\n", __func__, id); + + if (si->num >= MAX_STATIC_SLICES) + RET_FAIL(-2, "%s(): cannot have more than %d slices\n", __func__, MAX_STATIC_SLICES); + for (int s = 0; s < si->num; ++s) { + static_slice_param_t *sd = si->s[s]->algo_data; + for (int i = sd->posLow; i <= sd->posHigh; ++i) + rbgMap[i] = 1; + } + + for (int i = dl->posLow; i <= dl->posHigh; ++i) + if (rbgMap[i]) + RET_FAIL(-3, "%s(): overlap of slices detected at RBG %d\n", __func__, i); + + if (!algo) + RET_FAIL(-14, "%s(): no scheduler algorithm provided\n", __func__); + + slice_t *ns = _add_slice(&si->num, si->s); + if (!ns) + RET_FAIL(-4, "%s(): could not create new slice\n", __func__); + ns->id = id; + ns->label = label; + ns->dl_algo = *(default_sched_dl_algo_t *) algo; + if (!ns->dl_algo.data) + ns->dl_algo.data = ns->dl_algo.setup(); + ns->algo_data = dl; + + return si->num - 1; +} + +int addmod_static_slice_ul(slice_info_t *si, + int id, + char *label, + void *algo, + void *slice_params_ul) { + static_slice_param_t *ul = slice_params_ul; + /* Minimum 3RBs, because LTE stack requires this */ + if (ul && ul->posLow + 2 > ul->posHigh) + RET_FAIL(-1, "%s(): slice id %d posLow + 2 > posHigh\n", __func__, id); + + uint8_t rbMap[110] = { 0 }; + int index = _exists_slice(si->num, si->s, id); + if (index >= 0) { + for (int s = 0; s < si->num; ++s) { + static_slice_param_t *su = ul && si->s[s]->id == id && ul ? ul : si->s[s]->algo_data; + for (int i = su->posLow; i <= su->posHigh; ++i) { + if (rbMap[i]) + RET_FAIL(-33, "%s(): overlap of slices detected at RBG %d\n", __func__, i); + rbMap[i] = 1; + } + } + /* no problem, can allocate */ + slice_t *s = si->s[index]; + if (algo) { + s->ul_algo.unset(&s->ul_algo.data); + s->ul_algo = *(default_sched_ul_algo_t *) algo; + if (!s->ul_algo.data) + s->ul_algo.data = s->ul_algo.setup(); + } + if (label) { + if (s->label) free(s->label); + s->label = label; + } + if (ul) { + free(s->algo_data); + s->algo_data = ul; + } + return index; + } + + if (!ul) + RET_FAIL(-100, "%s(): no parameters for new slice %d, aborting\n", __func__, id); + + if (si->num >= MAX_STATIC_SLICES) + RET_FAIL(-2, "%s(): cannot have more than %d slices\n", __func__, MAX_STATIC_SLICES); + for (int s = 0; s < si->num; ++s) { + static_slice_param_t *sd = si->s[s]->algo_data; + for (int i = sd->posLow; i <= sd->posHigh; ++i) + rbMap[i] = 1; + } + + for (int i = ul->posLow; i <= ul->posHigh; ++i) + if (rbMap[i]) + RET_FAIL(-3, "%s(): overlap of slices detected at RBG %d\n", __func__, i); + + if (!algo) + RET_FAIL(-14, "%s(): no scheduler algorithm provided\n", __func__); + + slice_t *ns = _add_slice(&si->num, si->s); + if (!ns) + RET_FAIL(-4, "%s(): could not create new slice\n", __func__); + ns->id = id; + ns->label = label; + ns->ul_algo = *(default_sched_ul_algo_t *) algo; + if (!ns->ul_algo.data) + ns->ul_algo.data = ns->ul_algo.setup(); + ns->algo_data = ul; + + return si->num - 1; +} + +int remove_static_slice_dl(slice_info_t *si, uint8_t slice_idx) { + if (slice_idx == 0) + return 0; + slice_t *sr = _remove_slice(&si->num, si->s, si->UE_assoc_slice, slice_idx); + if (!sr) + return 0; + free(sr->algo_data); + sr->dl_algo.unset(&sr->dl_algo.data); + free(sr); + return 1; +} + +int remove_static_slice_ul(slice_info_t *si, uint8_t slice_idx) { + if (slice_idx == 0) + return 0; + slice_t *sr = _remove_slice(&si->num, si->s, si->UE_assoc_slice, slice_idx); + if (!sr) + return 0; + free(sr->algo_data); + sr->ul_algo.unset(&sr->ul_algo.data); + free(sr); + return 1; +} + +void static_dl(module_id_t mod_id, + int CC_id, + frame_t frame, + sub_frame_t subframe) { + UE_info_t *UE_info = &RC.mac[mod_id]->UE_info; + + store_dlsch_buffer(mod_id, CC_id, frame, subframe); + + for (int UE_id = UE_info->list.head; UE_id >= 0; UE_id = UE_info->list.next[UE_id]) { + UE_sched_ctrl_t *ue_sched_ctrl = &UE_info->UE_sched_ctrl[UE_id]; + + /* initialize per-UE scheduling information */ + ue_sched_ctrl->pre_nb_available_rbs[CC_id] = 0; + ue_sched_ctrl->dl_pow_off[CC_id] = 2; + memset(ue_sched_ctrl->rballoc_sub_UE[CC_id], 0, sizeof(ue_sched_ctrl->rballoc_sub_UE[CC_id])); + ue_sched_ctrl->pre_dci_dl_pdu_idx = -1; + } + + const int N_RBG = to_rbg(RC.mac[mod_id]->common_channels[CC_id].mib->message.dl_Bandwidth); + const int RBGsize = get_min_rb_unit(mod_id, CC_id); + uint8_t *vrb_map = RC.mac[mod_id]->common_channels[CC_id].vrb_map; + uint8_t rbgalloc_mask[N_RBG_MAX]; + for (int i = 0; i < N_RBG; i++) { + // calculate mask: init to one + "AND" with vrb_map: + // if any RB in vrb_map is blocked (1), the current RBG will be 0 + rbgalloc_mask[i] = 1; + for (int j = 0; j < RBGsize; j++) + rbgalloc_mask[i] &= !vrb_map[RBGsize * i + j]; + } + + slice_info_t *s = RC.mac[mod_id]->pre_processor_dl.slices; + int max_num_ue; + switch (s->num) { + case 1: + max_num_ue = 4; + break; + case 2: + max_num_ue = 2; + break; + default: + max_num_ue = 1; + break; + } + for (int i = 0; i < s->num; ++i) { + if (s->s[i]->UEs.head < 0) + continue; + uint8_t rbgalloc_slice_mask[N_RBG_MAX]; + memset(rbgalloc_slice_mask, 0, sizeof(rbgalloc_slice_mask)); + static_slice_param_t *p = s->s[i]->algo_data; + int n_rbg_sched = 0; + for (int rbg = p->posLow; rbg <= p->posHigh && rbg <= N_RBG; ++rbg) { + rbgalloc_slice_mask[rbg] = rbgalloc_mask[rbg]; + n_rbg_sched += rbgalloc_mask[rbg]; + } + + s->s[i]->dl_algo.run(mod_id, + CC_id, + frame, + subframe, + &s->s[i]->UEs, + max_num_ue, // max_num_ue + n_rbg_sched, + rbgalloc_slice_mask, + s->s[i]->dl_algo.data); + } + + // the following block is meant for validation of the pre-processor to check + // whether all UE allocations are non-overlapping and is not necessary for + // scheduling functionality + char t[26] = "_________________________"; + t[N_RBG] = 0; + for (int i = 0; i < N_RBG; i++) + for (int j = 0; j < RBGsize; j++) + if (vrb_map[RBGsize*i+j] != 0) + t[i] = 'x'; + int print = 0; + for (int UE_id = UE_info->list.head; UE_id >= 0; UE_id = UE_info->list.next[UE_id]) { + const UE_sched_ctrl_t *ue_sched_ctrl = &UE_info->UE_sched_ctrl[UE_id]; + + if (ue_sched_ctrl->pre_nb_available_rbs[CC_id] == 0) + continue; + + LOG_D(MAC, + "%4d.%d UE%d %d RBs allocated, pre MCS %d\n", + frame, + subframe, + UE_id, + ue_sched_ctrl->pre_nb_available_rbs[CC_id], + UE_info->eNB_UE_stats[CC_id][UE_id].dlsch_mcs1); + + print = 1; + + for (int i = 0; i < N_RBG; i++) { + if (!ue_sched_ctrl->rballoc_sub_UE[CC_id][i]) + continue; + for (int j = 0; j < RBGsize; j++) { + if (vrb_map[RBGsize*i+j] != 0) { + LOG_I(MAC, "%4d.%d DL scheduler allocation list: %s\n", frame, subframe, t); + LOG_E(MAC, "%4d.%d: UE %d allocated at locked RB %d/RBG %d\n", frame, + subframe, UE_id, RBGsize * i + j, i); + } + vrb_map[RBGsize*i+j] = 1; + } + t[i] = '0' + UE_id; + } + } + if (print) + LOG_D(MAC, "%4d.%d DL scheduler allocation list: %s\n", frame, subframe, t); +} + +void static_ul(module_id_t mod_id, + int CC_id, + frame_t frame, + sub_frame_t subframe, + frame_t sched_frame, + sub_frame_t sched_subframe) { + UE_info_t *UE_info = &RC.mac[mod_id]->UE_info; + const int N_RB_UL = to_prb(RC.mac[mod_id]->common_channels[CC_id].ul_Bandwidth); + COMMON_channels_t *cc = &RC.mac[mod_id]->common_channels[CC_id]; + + for (int UE_id = UE_info->list.head; UE_id >= 0; UE_id = UE_info->list.next[UE_id]) { + UE_TEMPLATE *UE_template = &UE_info->UE_template[CC_id][UE_id]; + UE_template->pre_assigned_mcs_ul = 0; + UE_template->pre_allocated_nb_rb_ul = 0; + UE_template->pre_allocated_rb_table_index_ul = -1; + UE_template->pre_first_nb_rb_ul = 0; + UE_template->pre_dci_ul_pdu_idx = -1; + } + + slice_info_t *s = RC.mac[mod_id]->pre_processor_ul.slices; + int max_num_ue; + switch (s->num) { + case 1: + max_num_ue = 4; + break; + case 2: + max_num_ue = 2; + break; + default: + max_num_ue = 1; + break; + } + for (int i = 0; i < s->num; ++i) { + if (s->s[i]->UEs.head < 0) + continue; + int last_rb_blocked = 1; + int n_contig = 0; + contig_rbs_t rbs[2]; // up to two contig RBs for PRACH in between + static_slice_param_t *p = s->s[i]->algo_data; + for (int rb = p->posLow; rb <= p->posHigh && rb < N_RB_UL; ++rb) { + if (cc->vrb_map_UL[rb] == 0 && last_rb_blocked) { + last_rb_blocked = 0; + n_contig++; + AssertFatal(n_contig <= 2, "cannot handle more than two contiguous RB regions\n"); + rbs[n_contig - 1].start = rb; + } + if (cc->vrb_map_UL[rb] == 1 && !last_rb_blocked) { + last_rb_blocked = 1; + rbs[n_contig - 1].length = rb - rbs[n_contig - 1].start; + } + } + if (!last_rb_blocked) + rbs[n_contig - 1].length = p->posHigh - rbs[n_contig - 1].start + 1; + + s->s[i]->ul_algo.run(mod_id, + CC_id, + frame, + subframe, + sched_frame, + sched_subframe, + &s->s[i]->UEs, + max_num_ue, // max_num_ue + n_contig, + rbs, + s->s[i]->ul_algo.data); + } + + // the following block is meant for validation of the pre-processor to check + // whether all UE allocations are non-overlapping and is not necessary for + // scheduling functionality + char t[101] = "__________________________________________________" + "__________________________________________________"; + t[N_RB_UL] = 0; + for (int j = 0; j < N_RB_UL; j++) + if (cc->vrb_map_UL[j] != 0) + t[j] = 'x'; + int print = 0; + for (int UE_id = UE_info->list.head; UE_id >= 0; UE_id = UE_info->list.next[UE_id]) { + UE_TEMPLATE *UE_template = &UE_info->UE_template[CC_id][UE_id]; + if (UE_template->pre_allocated_nb_rb_ul == 0) + continue; + + print = 1; + uint8_t harq_pid = subframe2harqpid(&RC.mac[mod_id]->common_channels[CC_id], + sched_frame, sched_subframe); + LOG_D(MAC, "%4d.%d UE%d %d RBs (index %d) at start %d, pre MCS %d %s\n", + frame, + subframe, + UE_id, + UE_template->pre_allocated_nb_rb_ul, + UE_template->pre_allocated_rb_table_index_ul, + UE_template->pre_first_nb_rb_ul, + UE_template->pre_assigned_mcs_ul, + UE_info->UE_sched_ctrl[UE_id].round_UL[CC_id][harq_pid] > 0 ? "(retx)" : ""); + + for (int i = 0; i < UE_template->pre_allocated_nb_rb_ul; ++i) { + /* only check if this is not a retransmission */ + if (UE_info->UE_sched_ctrl[UE_id].round_UL[CC_id][harq_pid] == 0 + && cc->vrb_map_UL[UE_template->pre_first_nb_rb_ul + i] == 1) { + + LOG_I(MAC, "%4d.%d UL scheduler allocation list: %s\n", frame, subframe, t); + LOG_E(MAC, + "%4d.%d: UE %d allocated at locked RB %d (is: allocated start " + "%d/length %d)\n", + frame, subframe, UE_id, UE_template->pre_first_nb_rb_ul + i, + UE_template->pre_first_nb_rb_ul, + UE_template->pre_allocated_nb_rb_ul); + } + cc->vrb_map_UL[UE_template->pre_first_nb_rb_ul + i] = 1; + t[UE_template->pre_first_nb_rb_ul + i] = UE_id + '0'; + } + } + if (print) + LOG_D(MAC, + "%4d.%d UL scheduler allocation list: %s\n", + sched_frame, + sched_subframe, + t); +} + +void static_destroy(slice_info_t **si) { + const int n = (*si)->num; + (*si)->num = 0; + for (int i = 0; i < n; ++i) { + slice_t *s = (*si)->s[i]; + if (s->label) + free(s->label); + free(s->algo_data); + free(s); + } + free((*si)->s); + free(*si); +} + +pp_impl_param_t static_dl_init(module_id_t mod_id, int CC_id) { + slice_info_t *si = calloc(1, sizeof(slice_info_t)); + DevAssert(si); + + si->num = 0; + si->s = calloc(MAX_STATIC_SLICES, sizeof(slice_t)); + DevAssert(si->s); + for (int i = 0; i < MAX_MOBILES_PER_ENB; ++i) + si->UE_assoc_slice[i] = -1; + + /* insert default slice, all resources */ + static_slice_param_t *dlp = malloc(sizeof(static_slice_param_t)); + dlp->posLow = 0; + dlp->posHigh = to_rbg(RC.mac[mod_id]->common_channels[CC_id].mib->message.dl_Bandwidth) - 1; + default_sched_dl_algo_t *algo = &RC.mac[mod_id]->pre_processor_dl.dl_algo; + algo->data = NULL; + DevAssert(0 == addmod_static_slice_dl(si, 0, strdup("default"), algo, dlp)); + const UE_list_t *UE_list = &RC.mac[mod_id]->UE_info.list; + for (int UE_id = UE_list->head; UE_id >= 0; UE_id = UE_list->next[UE_id]) + slicing_add_UE(si, UE_id); + + pp_impl_param_t sttc; + sttc.algorithm = STATIC_SLICING; + sttc.add_UE = slicing_add_UE; + sttc.remove_UE = slicing_remove_UE; + sttc.move_UE = slicing_move_UE; + sttc.addmod_slice = addmod_static_slice_dl; + sttc.remove_slice = remove_static_slice_dl; + sttc.dl = static_dl; + // current DL algo becomes default scheduler + sttc.dl_algo = *algo; + sttc.destroy = static_destroy; + sttc.slices = si; + + return sttc; +} + +pp_impl_param_t static_ul_init(module_id_t mod_id, int CC_id) { + slice_info_t *si = calloc(1, sizeof(slice_info_t)); + DevAssert(si); + + si->num = 0; + si->s = calloc(MAX_STATIC_SLICES, sizeof(slice_t)); + DevAssert(si->s); + for (int i = 0; i < MAX_MOBILES_PER_ENB; ++i) + si->UE_assoc_slice[i] = -1; + + /* insert default slice, all resources */ + static_slice_param_t *ulp = malloc(sizeof(static_slice_param_t)); + ulp->posLow = 0; + ulp->posHigh = to_prb(RC.mac[mod_id]->common_channels[CC_id].ul_Bandwidth) - 1; + default_sched_ul_algo_t *algo = &RC.mac[mod_id]->pre_processor_ul.ul_algo; + algo->data = NULL; + DevAssert(0 == addmod_static_slice_ul(si, 0, strdup("default"), algo, ulp)); + const UE_list_t *UE_list = &RC.mac[mod_id]->UE_info.list; + for (int UE_id = UE_list->head; UE_id >= 0; UE_id = UE_list->next[UE_id]) + slicing_add_UE(si, UE_id); + + pp_impl_param_t sttc; + sttc.algorithm = STATIC_SLICING; + sttc.add_UE = slicing_add_UE; + sttc.remove_UE = slicing_remove_UE; + sttc.move_UE = slicing_move_UE; + sttc.addmod_slice = addmod_static_slice_ul; + sttc.remove_slice = remove_static_slice_ul; + sttc.ul = static_ul; + // current DL algo becomes default scheduler + sttc.ul_algo = *algo; + sttc.destroy = static_destroy; + sttc.slices = si; + + return sttc; +} diff --git a/openair2/LAYER2/MAC/slicing/slicing.h b/openair2/LAYER2/MAC/slicing/slicing.h new file mode 100644 index 0000000000..1099b50ea0 --- /dev/null +++ b/openair2/LAYER2/MAC/slicing/slicing.h @@ -0,0 +1,74 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! + * \file slicing.h + * \brief General slice definition and helper parameters + * \author Robert Schmidt + * \date 2020 + * \email robert.schmidt@eurecom.fr + */ + +#ifndef __SLICING_H__ +#define __SLICING_H__ + +#include "openair2/LAYER2/MAC/mac.h" + +typedef struct slice_s { + /// Arbitrary ID + slice_id_t id; + /// Arbitrary label + char *label; + + union { + default_sched_dl_algo_t dl_algo; + default_sched_ul_algo_t ul_algo; + }; + + /// A specific algorithm's implementation parameters + void *algo_data; + /// Internal data that might be kept alongside a slice's params + void *int_data; + + // list of users in this slice + UE_list_t UEs; +} slice_t; + +typedef struct slice_info_s { + uint8_t num; + slice_t **s; + uint8_t UE_assoc_slice[MAX_MOBILES_PER_ENB]; +} slice_info_t; + +int slicing_get_UE_slice_idx(slice_info_t *si, int UE_id); + +#define STATIC_SLICING 10 +/* only four static slices for UL, DL resp. (not enough DCIs) */ +#define MAX_STATIC_SLICES 4 +typedef struct { + uint16_t posLow; + uint16_t posHigh; +} static_slice_param_t; +pp_impl_param_t static_dl_init(module_id_t mod_id, int CC_id); +pp_impl_param_t static_ul_init(module_id_t mod_id, int CC_id); + + +#endif /* __SLICING_H__ */ diff --git a/openair2/LAYER2/MAC/slicing/slicing_internal.h b/openair2/LAYER2/MAC/slicing/slicing_internal.h new file mode 100644 index 0000000000..744f8924d9 --- /dev/null +++ b/openair2/LAYER2/MAC/slicing/slicing_internal.h @@ -0,0 +1,46 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! + * \file slicing_internal.h + * \brief Internal slice helper functions + * \author Robert Schmidt + * \date 2020 + * \email robert.schmidt@eurecom.fr + */ + +#ifndef __SLICING_INTERNAL_H__ +#define __SLICING_INTERNAL_H__ + +#include "slicing.h" + +void slicing_add_UE(slice_info_t *si, int UE_id); + +void _remove_UE(slice_t **s, uint8_t *assoc, int UE_id); +void slicing_remove_UE(slice_info_t *si, int UE_id); + +void _move_UE(slice_t **s, uint8_t *assoc, int UE_id, int to); +void slicing_move_UE(slice_info_t *si, int UE_id, int idx); + +slice_t *_add_slice(uint8_t *n, slice_t **s); +slice_t *_remove_slice(uint8_t *n, slice_t **s, uint8_t *assoc, int idx); + +#endif /* __SLICING_INTERNAL_H__ */ diff --git a/openair2/LAYER2/MAC/ue_procedures.c b/openair2/LAYER2/MAC/ue_procedures.c index 24630c0fe2..e97f1bebdd 100644 --- a/openair2/LAYER2/MAC/ue_procedures.c +++ b/openair2/LAYER2/MAC/ue_procedures.c @@ -72,7 +72,10 @@ extern UL_IND_t *UL_INFO; extern int next_ra_frame; extern module_id_t next_Mod_id; -int mbms_rab_id = 2047; +int mbms_rab_id=2047;//[8] = {2047,2047,2047,2047,2047,2047,2047,2047}; +static int mbms_mch_i=0; +//static int num_msi_per_CSA[28]; + /* * @@ -753,8 +756,9 @@ ue_send_mch_sdu(module_id_t module_idP, uint8_t CC_id, frame_t frameP, LOG_E(MAC,"MCH Scheduling Information MAC Control Element should have an even size\n"); } - LOG_D(MAC,"MCH Scheduling Information, len(%d)\n",rx_lengths[i]); + LOG_D(MAC,"MCH Scheduling Information, len(%d)\n",rx_lengths[i]); + for (j=0; j> 3; @@ -768,7 +772,7 @@ ue_send_mch_sdu(module_id_t module_idP, uint8_t CC_id, frame_t frameP, UE_mac_inst[module_idP].msi_status_v[j] = 0; if (UE_mac_inst[module_idP].mcch_status==1) { - LOG_D(MAC,"[UE %d] Frame %d : MCH->MSI for sync area %d (eNB %d, %d bytes), i(%d)\n", module_idP, frameP, sync_area, eNB_index, rx_lengths[i], UE_mac_inst[module_idP].pmch_stop_mtch[j]); + LOG_D(MAC,"[UE %d] Frame %d : MCH->MSI for sync area %d (eNB %d, %d bytes), LCID(%d)(%d)\n", module_idP, frameP, sync_area, eNB_index, rx_lengths[i], UE_mac_inst[module_idP].pmch_lcids[j] , UE_mac_inst[module_idP].pmch_stop_mtch[j]); if (UE_mac_inst[module_idP].pmch_stop_mtch[j] < 2043) { UE_mac_inst[module_idP].pmch_stop_mtch[j] += UE_mac_inst[module_idP].msi_current_alloc; @@ -794,7 +798,7 @@ ue_send_mch_sdu(module_id_t module_idP, uint8_t CC_id, frame_t frameP, } if (j<28 && UE_mac_inst[module_idP].msi_status_v[j]==1) { - LOG_D(MAC,"[UE %d] Frame %d : MCH->MTCH for sync area %d (eNB %d, %d bytes), j=%d\n", module_idP, frameP, sync_area, eNB_index, rx_lengths[i], j); + LOG_D(MAC,"[UE %d] Frame %d : MCH->MTCH for sync area %d (eNB %d, %d bytes), j=%d lcid %d\n", module_idP, frameP, sync_area, eNB_index, rx_lengths[i], j,rx_lcids[i]); //This sucks I know ... workaround ! mbms_rab_id = rx_lcids[i]; //end sucks :-( @@ -951,7 +955,9 @@ int ue_query_p_mch_info(module_id_t module_idP, uint32_t frameP, uint32_t subfra } } else { //more that one MCH ?? check better this condition //msi and mtch are mutally excluded then the break is safe + //TODO if ((num_sf_alloc == UE_mac_inst[module_idP].pmch_Config[i-1]->sf_AllocEnd_r9 + 1) && (sf_AllocEnd_r9 >= (num_sf_alloc+1))) { + //if ((num_sf_alloc == UE_mac_inst[module_idP].pmch_Config[i-1]->sf_AllocEnd_r9) && (sf_AllocEnd_r9 >= (num_sf_alloc))) { //msi should be just after msi_flag = 1; LOG_D(MAC,"msi(%d) should be allocated:frame(%d),submframe(%d),num_sf_alloc(%d),sf_AllocEnd_r9(%d),common_num_sf_alloc(%d)\n",i,frameP,subframe,num_sf_alloc,sf_AllocEnd_r9, @@ -986,6 +992,458 @@ int ue_query_p_mch_info(module_id_t module_idP, uint32_t frameP, uint32_t subfra return mtch_mcs; } +//static int common_num_sf_alloc=0; +//static int x=0; +int ue_query_mch_fembms(module_id_t module_idP, uint8_t CC_id, uint32_t frameP, uint32_t subframe, uint8_t eNB_index,uint8_t *sync_area, uint8_t *mcch_active) { + int i = 0, j = 0,/* ii = 0,*/ msi_pos = -1, mcch_mcs = -1, mtch_mcs = -1, l=0/*,ii=0*/; + int mcch_flag = 0, mtch_flag = 0, msi_flag = 0; + int alloc_offset=0; + uint32_t period; + //uint16_t num_non_mbsfn_SubframeConfig=0; + long mch_scheduling_period = -1; + uint8_t mch_lcid = 0; + //int first_pos=0; + + if(UE_mac_inst[module_idP].non_mbsfn_SubframeConfig == NULL ) + return -1; + + int non_mbsfn_SubframeConfig = (UE_mac_inst[module_idP].non_mbsfn_SubframeConfig->subframeAllocation_r14.buf[0]<<1 | UE_mac_inst[module_idP].non_mbsfn_SubframeConfig->subframeAllocation_r14.buf[0]>>7); + + period = 4<radioFrameAllocationPeriod_r14; + alloc_offset = UE_mac_inst[module_idP].non_mbsfn_SubframeConfig->radioFrameAllocationOffset_r14; + + long mcch_period = 32 << UE_mac_inst[module_idP].mbsfn_AreaInfo[i]->mcch_Config_r9.mcch_RepetitionPeriod_r9; + long mcch_offset = UE_mac_inst[module_idP].mbsfn_AreaInfo[i]->mcch_Config_r9.mcch_Offset_r9; + + if (UE_mac_inst[module_idP].pmch_Config[0]) { + mch_scheduling_period = 8 << UE_mac_inst[module_idP].pmch_Config[0]->mch_SchedulingPeriod_r9; + } + + +// for(l=0;l<8;l++){ +// if(UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[l]!=NULL){ +// if(frameP%(4<> msi_pos)) == (0x100>>msi_pos)) +// first_pos++; +// if(first_pos == subframe){ +// ii=0; +// while(UE_mac_inst[module_idP].pmch_Config[ii]!=NULL){ +// num_msi_per_CSA[ii]= ( ( 4 << UE_mac_inst[module_idP].commonSF_AllocPeriod_r9) / (8 << UE_mac_inst[module_idP].pmch_Config[ii]->mch_SchedulingPeriod_r9) ); +// ii++; +// LOG_D(MAC,"frameP %d subframe %d num_msi_per_CSA[%d] %d\n",frameP,subframe,ii,num_msi_per_CSA[ii]); +// } +// } +// +// } +// } +// } +// + + // get the real MCS value + switch (UE_mac_inst[module_idP].mbsfn_AreaInfo[i]->mcch_Config_r9.signallingMCS_r9) { + case 0: + mcch_mcs = 2; + break; + + case 1: + mcch_mcs = 7; + break; + + case 2: + mcch_mcs = 13; + break; + + case 3: + mcch_mcs = 19; + break; + } + LOG_D(MAC,"frameP %d subframe %d period %d alloc_offset %d mcch_mcs %d mcch_period %ld mcch_offset %ld buf %x mch_scheduling_period %ld\n",frameP, subframe, period, alloc_offset,mcch_mcs, mcch_period, mcch_offset,(UE_mac_inst[module_idP].mbsfn_AreaInfo[i]->mcch_Config_r9.sf_AllocInfo_r9.buf[0]),mch_scheduling_period); + + if((frameP % period ) == alloc_offset){ + switch(subframe){ + case 0: + return (-1); + break; + case 1: + if ((non_mbsfn_SubframeConfig & 0x100) > 0) + return (-1); + break; + case 2: + if ((non_mbsfn_SubframeConfig & 0x80) > 0) + return (-1); + break; + case 3: + if ((non_mbsfn_SubframeConfig & 0x40) > 0) + return (-1); + break; + case 4: + if ((non_mbsfn_SubframeConfig & 0x20) > 0) + return (-1); + break; + case 5: + if ((non_mbsfn_SubframeConfig & 0x10) > 0) + return (-1); + break; + case 6: + if ((non_mbsfn_SubframeConfig & 0x8) > 0) + return (-1); + break; + case 7: + if ((non_mbsfn_SubframeConfig & 0x4) > 0) + return (-1); + break; + case 8: + if ((non_mbsfn_SubframeConfig & 0x2) > 0) + return (-1); + break; + case 9: + if ((non_mbsfn_SubframeConfig & 0x1) > 0) + return (-1); + break; + } + } + + if (UE_mac_inst[module_idP].pmch_Config[0]) { + // Find the first subframe in this MCH to transmit MSI + if (frameP % 1 == 0) { + if (frameP % mch_scheduling_period == 0) { + msi_pos=0; + if((frameP&3)==0) + msi_pos++; + while((non_mbsfn_SubframeConfig & (0x100 >> msi_pos)) == (0x100>>msi_pos)) + msi_pos++; + if(msi_pos == subframe){ + UE_mac_inst[module_idP].common_num_sf_alloc=0; + mbms_mch_i=0; + //LOG_W(MAC,"MSP, frameP %d subframeP %d msi_pos(%d) mbms_mch_i %d\n",frameP, subframe, msi_pos,mbms_mch_i); + } + } + } + } + + if(UE_mac_inst[module_idP].pmch_Config[mbms_mch_i+1]!=NULL){ + if( UE_mac_inst[module_idP].common_num_sf_alloc == UE_mac_inst[module_idP].pmch_Config[mbms_mch_i]->sf_AllocEnd_r9){ + msi_pos=subframe; + mbms_mch_i++; + // LOG_W(MAC,"MSP, frameP %d subframeP %d msi_pos(%d) mbms_mch_i %d\n",frameP, subframe, msi_pos,mbms_mch_i); + } + } + + + // Check if the subframe is for MSI, MCCH or MTCHs and Set the correspoding flag to 1 + switch (subframe) { + case 0: + if (msi_pos == 0) { + msi_flag = 1; + } + mtch_flag = 1; + break; + case 1: + if (msi_pos == 1) { + msi_flag = 1; + } + if ((frameP % mcch_period == mcch_offset) && + ((UE_mac_inst[module_idP].mbsfn_AreaInfo[i]->mcch_Config_r9.sf_AllocInfo_r9.buf[0] & MBSFN_FDD_SF1) == MBSFN_FDD_SF1)) { + mcch_flag = 1; + } + + mtch_flag = 1; + break; + + case 2: + if (msi_pos == 2) { + msi_flag = 1; + } + if ((frameP % mcch_period == mcch_offset) && + ((UE_mac_inst[module_idP].mbsfn_AreaInfo[i]->mcch_Config_r9.sf_AllocInfo_r9.buf[0] & MBSFN_FDD_SF2) == MBSFN_FDD_SF2)) { + mcch_flag = 1; + } + + mtch_flag = 1; + + break; + + case 3: + if (msi_pos == 3) { + msi_flag = 1; + } + if ((frameP % mcch_period == mcch_offset) && + ((UE_mac_inst[module_idP].mbsfn_AreaInfo[i]->mcch_Config_r9.sf_AllocInfo_r9.buf[0] & MBSFN_FDD_SF3) == MBSFN_FDD_SF3)) { + mcch_flag = 1; + } + + mtch_flag = 1; + + break; + case 4: + if (msi_pos == 4) { + msi_flag = 1; + } + mtch_flag = 1; + break; + case 5: + if (msi_pos == 5) { + msi_flag = 1; + } + mtch_flag = 1; + break; + + case 6: + if (msi_pos == 6) { + msi_flag = 1; + } + if ((frameP % mcch_period == mcch_offset) && + ((UE_mac_inst[module_idP].mbsfn_AreaInfo[i]->mcch_Config_r9.sf_AllocInfo_r9.buf[0] & MBSFN_FDD_SF6) == MBSFN_FDD_SF6)) { + mcch_flag = 1; + } + + mtch_flag = 1; + + break; + + case 7: + if (msi_pos == 7) { + msi_flag = 1; + } + if ((frameP % mcch_period == mcch_offset) && + ((UE_mac_inst[module_idP].mbsfn_AreaInfo[i]->mcch_Config_r9.sf_AllocInfo_r9.buf[0] & MBSFN_FDD_SF7) == MBSFN_FDD_SF7)) { + mcch_flag = 1; + } + + mtch_flag = 1; + + break; + + case 8: + if (msi_pos == 8) { + msi_flag = 1; + } + if ((frameP % mcch_period == mcch_offset) && + ((UE_mac_inst[module_idP].mbsfn_AreaInfo[i]->mcch_Config_r9.sf_AllocInfo_r9.buf[0] & MBSFN_FDD_SF8) == MBSFN_FDD_SF8)) { + mcch_flag = 1; + } + + mtch_flag = 1; + break; + + case 9: + if (msi_pos == 9) { + msi_flag = 1; + } + mtch_flag = 1; + break; + }// end switch + + if( (msi_flag == 1) || (mcch_flag == 1) || (mtch_flag == 1) ){ + UE_mac_inst[module_idP].common_num_sf_alloc++; + //if( (msi_flag!=1 && mcch_flag!=1) || (msi_flag!=1 && mcch_flag!=1 && mtch_flag!=1) ){ + //UE_mac_inst[module_idP].common_num_sf_alloc++; + //if(msi_flag == 1) + // if((num_msi_per_CSA[mbms_mch_i]--)==0){ + // LOG_E(MAC,"Both MSI and MTCH Should be reset?\n"); + // msi_flag=0; + //} + //} + + } + + + + +#ifdef OLD + // Acount for sf_allocable in CSA + int num_sf_alloc = 0; + + for (l = 0; l < 8; l++) { + if (UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[l] == NULL) + continue; + + if (UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[l]->subframeAllocation.present != LTE_MBSFN_SubframeConfig__subframeAllocation_PR_oneFrame) + continue; + + uint32_t common_mbsfn_SubframeConfig = UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[l]->subframeAllocation.choice.oneFrame.buf[0]; + + + for (j = 0; j < 6; j++) + num_sf_alloc += ((common_mbsfn_SubframeConfig & (0x80 >> j)) == (0x80 >> j)); + //num_sf_alloc=1; + } + + num_sf_alloc = 10; + + num_non_mbsfn_SubframeConfig = (UE_mac_inst[module_idP].non_mbsfn_SubframeConfig->subframeAllocation_r14.buf[0]<<1 | UE_mac_inst[module_idP].non_mbsfn_SubframeConfig->subframeAllocation_r14.buf[0]>>7); + int ones=0; + for(j=0; j < 16; j++){ + if(num_non_mbsfn_SubframeConfig & 1) + ones++; + num_non_mbsfn_SubframeConfig>>=1; + } + + for (l = 0; l < 28; l++) { + if (UE_mac_inst[module_idP].pmch_stop_mtch[l] >= 1/*num_sf_alloc*/) { + if (UE_mac_inst[module_idP].pmch_stop_mtch[l] != 2047) { + if (UE_mac_inst[module_idP].pmch_Config[UE_mac_inst[module_idP].msi_pmch] != NULL){ + mtch_mcs = UE_mac_inst[module_idP].pmch_Config[UE_mac_inst[module_idP].msi_pmch]->dataMCS_r9; + //int common_mbsfn_alloc_offset = UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[0]->radioframeAllocationOffset; + long common_mbsfn_period = 1 << UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[0]->radioframeAllocationPeriod; + long commonSF_AllocPeriod = 4 << UE_mac_inst[module_idP].commonSF_AllocPeriod_r9; + if(UE_mac_inst[module_idP].common_num_sf_alloc >= UE_mac_inst[module_idP].pmch_stop_mtch[l]){ + //LOG_E(MAC,"Attemp to UE_mac_inst[module_idP].common_num_sf_alloc %d\n",UE_mac_inst[module_idP].common_num_sf_alloc); + + mtch_mcs = -1; + }/*else + OG_W(MAC,"Attemp to UE_mac_inst[module_idP].common_num_sf_alloc %d\n",UE_mac_inst[module_idP].common_num_sf_alloc);*/ + LOG_D(MAC,"Attemp to UE_mac_inst[module_idP].common_num_sf_alloc %d num_sf_alloc %d commonSF_AllocPeriod %ld, common_mbsfn_period %ld num_non_mbsfn_SubframeConfig %x ones %d\n",UE_mac_inst[module_idP].common_num_sf_alloc,num_sf_alloc, commonSF_AllocPeriod,common_mbsfn_period,num_non_mbsfn_SubframeConfig,ones); + UE_mac_inst[module_idP].common_num_sf_alloc++; + UE_mac_inst[module_idP].common_num_sf_alloc = UE_mac_inst[module_idP].common_num_sf_alloc % (num_sf_alloc * commonSF_AllocPeriod / common_mbsfn_period-(1+ones)*(commonSF_AllocPeriod/4)); //TODO + } + else + mtch_mcs = -1; + + mch_lcid = (uint8_t)l; + break; + } + } + } +#endif + +{ + // Acount for sf_allocable in Common SF Allocation + int num_sf_alloc = 0; + + for (l = 0; l < 8; l++) { + if (UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[l] == NULL) + continue; + + if (UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[l]->subframeAllocation.present != LTE_MBSFN_SubframeConfig__subframeAllocation_PR_oneFrame) + continue; + + //int common_mbsfn_alloc_offset = UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[l]->radioframeAllocationOffset; + long common_mbsfn_period = 1 << UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[l]->radioframeAllocationPeriod; + long commonSF_AllocPeriod = 4 << UE_mac_inst[module_idP].commonSF_AllocPeriod_r9; + + + num_sf_alloc =10*commonSF_AllocPeriod/common_mbsfn_period; + num_sf_alloc -=1*((commonSF_AllocPeriod/common_mbsfn_period)/4); //CAS sfs + uint32_t num_non_mbsfn_SubframeConfig2 = (UE_mac_inst[module_idP].non_mbsfn_SubframeConfig->subframeAllocation_r14.buf[0]<<1 | UE_mac_inst[module_idP].non_mbsfn_SubframeConfig->subframeAllocation_r14.buf[0]>>7); + for (j = 0; j < 10; j++) + num_sf_alloc -= ((num_non_mbsfn_SubframeConfig2 & (0x200 >> j)) == (0x200 >> j))*((commonSF_AllocPeriod/common_mbsfn_period)/period); + + } + + for (l = 0; l < 8; l++) { + if (UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[l] == NULL) + continue; + + if (UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[l]->subframeAllocation.present != LTE_MBSFN_SubframeConfig__subframeAllocation_PR_oneFrame) + continue; + + //int common_mbsfn_alloc_offset = UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[l]->radioframeAllocationOffset; + long common_mbsfn_period = 1 << UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[l]->radioframeAllocationPeriod; + //long commonSF_AllocPeriod = 4 << UE_mac_inst[module_idP].commonSF_AllocPeriod_r9; + + + if(msi_flag==1 && UE_mac_inst[module_idP].pmch_Config[mbms_mch_i] != NULL){ + LOG_D(MAC,"msi(%d) should be allocated:frame(%d),submframe(%d),num_sf_alloc(%d),sf_AllocEnd_r9(%ld),common_num_sf_alloc(%d)\n",mbms_mch_i,frameP,subframe,num_sf_alloc,UE_mac_inst[module_idP].pmch_Config[mbms_mch_i]->sf_AllocEnd_r9, + UE_mac_inst[module_idP].common_num_sf_alloc); + UE_mac_inst[module_idP].msi_current_alloc = UE_mac_inst[module_idP].common_num_sf_alloc;//num_sf_alloc; + UE_mac_inst[module_idP].msi_pmch = mbms_mch_i; + }else if(UE_mac_inst[module_idP].pmch_Config[mbms_mch_i] != NULL){ + if (UE_mac_inst[module_idP].pmch_stop_mtch[mbms_mch_i] >= UE_mac_inst[module_idP].common_num_sf_alloc/*num_sf_alloc*/) { + if (UE_mac_inst[module_idP].pmch_stop_mtch[mbms_mch_i] != 2047) { + mtch_flag = 1; + if (UE_mac_inst[module_idP].pmch_Config[UE_mac_inst[module_idP].msi_pmch] != NULL) + mtch_mcs = UE_mac_inst[module_idP].pmch_Config[UE_mac_inst[module_idP].msi_pmch]->dataMCS_r9; + else + mtch_mcs = -1; + mch_lcid = (uint8_t)mbms_mch_i; + LOG_D(MAC,"mtch should be allocated:frame(%d),submframe(%d),num_sf_alloc(%d),mtch_mcs(%d),pmch_stop_mtch(%d),lcid(%d),msi_pmch(%d)\n",frameP,subframe,num_sf_alloc,mtch_mcs, + UE_mac_inst[module_idP].pmch_stop_mtch[mbms_mch_i],UE_mac_inst[module_idP].pmch_lcids[mbms_mch_i],UE_mac_inst[module_idP].msi_pmch); + } + } + } + UE_mac_inst[module_idP].common_num_sf_alloc = UE_mac_inst[module_idP].common_num_sf_alloc % ((num_sf_alloc-mbms_mch_i) /** commonSF_AllocPeriod *// common_mbsfn_period);//48; + + if(mtch_flag) + break; + } + if(msi_flag==1){ + for (l = 0; l < 8; l++) { + if (UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[l] == NULL) + continue; + + if ( (/*AJ*/ (/*V*/ ( /*U*/ (frameP %(4 << UE_mac_inst[module_idP].commonSF_AllocPeriod_r9)) ) / 8 ) % ((8 <mch_SchedulingPeriod_r9) / 8 ) ) != 0 ){ + msi_flag=0; + LOG_D(MAC,"frameP %d subframeP %d reset(%d)\n",frameP, subframe, mbms_mch_i); + } + } + } +} + + // sf allocation is non-overlapping + if ((msi_flag==1) || (mcch_flag==1) || (mtch_flag==1)) { + LOG_D(MAC,"[UE %d] Frame %d Subframe %d: sync area %d SF alloc %d: msi flag %d, mcch flag %d, mtch flag %d\n", + module_idP, frameP, subframe,l,j,msi_flag,mcch_flag,mtch_flag); + *sync_area=i; + } + + //if(msi_flag == 1) + // if((num_msi_per_CSA[mbms_mch_i]--)==0){ + // LOG_E(MAC,"Both MSI and MTCH Should be reset?\n"); + // msi_flag=mtch_flag=0; + //} + + + if ((mcch_flag == 1)) { // || (msi_flag==1)) + *mcch_active = 1; + } + + if ( (mcch_flag==1) || ((msi_flag==1) && (UE_mac_inst[module_idP].mcch_status==1)) ) { + if (msi_flag!=1) { + for (i=0; i<8; i++) + UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[i] = NULL; + + for (i=0; i<15; i++) + UE_mac_inst[module_idP].pmch_Config[i] = NULL; + + for (i=0; i<28 ; i++) { + UE_mac_inst[module_idP].pmch_lcids[i] = -1; + UE_mac_inst[module_idP].pmch_stop_mtch[i] = 2047; + UE_mac_inst[module_idP].msi_status_v[i] = 0; + } + } else { + for (i=0; i<28; i++) { + UE_mac_inst[module_idP].pmch_lcids[i] = -1; + UE_mac_inst[module_idP].pmch_stop_mtch[i] = 2047; + UE_mac_inst[module_idP].msi_status_v[i] = 0; + } + } + + return mcch_mcs; + } else if ((mtch_flag==1) && (UE_mac_inst[module_idP].msi_status_v[(mch_lcid > 27) ? 27 : mch_lcid] == 1)) { + return mtch_mcs; + } else { + return -1; + } + + + + // if(mcch_flag == 1 || msi_flag == 1 ){ + // *mcch_active = 1; + // return (mcch_mcs); + // }else if(mtch_flag == 1){ + // mtch_mcs=-1; + // return (mtch_mcs); + // } + + // return -1; + +} + + int ue_query_p_mch(module_id_t module_idP, uint32_t frameP, uint32_t subframe, int *mtch_active, int *msi_active, uint8_t *mch_lcid) { int i, j, mtch_mcs = -1; int mtch_flag = 0; @@ -1100,6 +1558,7 @@ int ue_query_p_mch(module_id_t module_idP, uint32_t frameP, uint32_t subframe, i return mtch_mcs; } + int ue_query_mch(module_id_t module_idP, uint8_t CC_id, uint32_t frameP, uint32_t subframe, uint8_t eNB_index,uint8_t *sync_area, uint8_t *mcch_active) { int i = 0, j = 0, ii = 0, jj = 0, msi_pos = 0, mcch_mcs = -1, mtch_mcs = -1; int l =0; @@ -1162,6 +1621,11 @@ int ue_query_mch(module_id_t module_idP, uint8_t CC_id, uint32_t frameP, uint32_ ii = UE_mac_inst[module_idP].mbsfn_SubframeConfig[j]->subframeAllocation.choice.oneFrame.buf[0] & (0x80 >> msi_pos); msi_pos++; } + if(msi_pos == subframe){ + UE_mac_inst[module_idP].common_num_sf_alloc=0; + mbms_mch_i=0; + LOG_D(MAC,"MSP, frameP %d subframeP %d msi_pos(%d) mbms_mch_i %d\n",frameP, subframe, msi_pos,mbms_mch_i); + } } } @@ -1170,6 +1634,14 @@ int ue_query_mch(module_id_t module_idP, uint8_t CC_id, uint32_t frameP, uint32_ case 1: if (UE_mac_inst[module_idP].tdd_Config == NULL) { if ((UE_mac_inst[module_idP].mbsfn_SubframeConfig[j]->subframeAllocation.choice.oneFrame.buf[0] & MBSFN_FDD_SF1) == MBSFN_FDD_SF1) { + if(UE_mac_inst[module_idP].pmch_Config[mbms_mch_i+1]!=NULL){ + if( UE_mac_inst[module_idP].common_num_sf_alloc == UE_mac_inst[module_idP].pmch_Config[mbms_mch_i]->sf_AllocEnd_r9){ + msi_pos=1; + mbms_mch_i++; + LOG_D(MAC,"MSP, frameP %d subframeP %d msi_pos(%d) mbms_mch_i %d\n",frameP, subframe, msi_pos,mbms_mch_i); + } + } + if (msi_pos == 1) { msi_flag = 1; } @@ -1188,6 +1660,14 @@ int ue_query_mch(module_id_t module_idP, uint8_t CC_id, uint32_t frameP, uint32_ case 2: if (UE_mac_inst[module_idP].tdd_Config == NULL) { if ((UE_mac_inst[module_idP].mbsfn_SubframeConfig[j]->subframeAllocation.choice.oneFrame.buf[0] & MBSFN_FDD_SF2) == MBSFN_FDD_SF2) { + if(UE_mac_inst[module_idP].pmch_Config[mbms_mch_i+1]!=NULL){ + if( UE_mac_inst[module_idP].common_num_sf_alloc == UE_mac_inst[module_idP].pmch_Config[mbms_mch_i]->sf_AllocEnd_r9){ + msi_pos=2; + mbms_mch_i++; + LOG_D(MAC,"MSP, frameP %d subframeP %d msi_pos(%d) mbms_mch_i %d\n",frameP, subframe, msi_pos,mbms_mch_i); + } + } + if (msi_pos == 2) { msi_flag = 1; } @@ -1219,6 +1699,14 @@ int ue_query_mch(module_id_t module_idP, uint8_t CC_id, uint32_t frameP, uint32_ } } else { // FDD if ((UE_mac_inst[module_idP].mbsfn_SubframeConfig[j]->subframeAllocation.choice.oneFrame.buf[0] & MBSFN_FDD_SF3) == MBSFN_FDD_SF3) { + if(UE_mac_inst[module_idP].pmch_Config[mbms_mch_i+1]!=NULL){ + if( UE_mac_inst[module_idP].common_num_sf_alloc == UE_mac_inst[module_idP].pmch_Config[mbms_mch_i]->sf_AllocEnd_r9){ + msi_pos=3; + mbms_mch_i++; + LOG_D(MAC,"MSP, frameP %d subframeP %d msi_pos(%d) mbms_mch_i %d\n",frameP, subframe, msi_pos,mbms_mch_i); + } + } + if (msi_pos == 3) { msi_flag = 1; } @@ -1255,6 +1743,14 @@ int ue_query_mch(module_id_t module_idP, uint8_t CC_id, uint32_t frameP, uint32_ case 6: if (UE_mac_inst[module_idP].tdd_Config == NULL) { if ((UE_mac_inst[module_idP].mbsfn_SubframeConfig[j]->subframeAllocation.choice.oneFrame.buf[0] & MBSFN_FDD_SF6) == MBSFN_FDD_SF6) { + if(UE_mac_inst[module_idP].pmch_Config[mbms_mch_i+1]!=NULL){ + if( UE_mac_inst[module_idP].common_num_sf_alloc == UE_mac_inst[module_idP].pmch_Config[mbms_mch_i]->sf_AllocEnd_r9){ + msi_pos=6; + mbms_mch_i++; + LOG_D(MAC,"MSP, frameP %d subframeP %d msi_pos(%d) mbms_mch_i %d\n",frameP, subframe, msi_pos,mbms_mch_i); + } + } + if (msi_pos == 4) { msi_flag = 1; } @@ -1286,6 +1782,14 @@ int ue_query_mch(module_id_t module_idP, uint8_t CC_id, uint32_t frameP, uint32_ } } else { // FDD if ((UE_mac_inst[module_idP].mbsfn_SubframeConfig[j]->subframeAllocation.choice.oneFrame.buf[0] & MBSFN_FDD_SF7) == MBSFN_FDD_SF7) { + if(UE_mac_inst[module_idP].pmch_Config[mbms_mch_i+1]!=NULL){ + if( UE_mac_inst[module_idP].common_num_sf_alloc == UE_mac_inst[module_idP].pmch_Config[mbms_mch_i]->sf_AllocEnd_r9){ + msi_pos=5; + mbms_mch_i++; + LOG_D(MAC,"MSP, frameP %d subframeP %d msi_pos(%d) mbms_mch_i %d\n",frameP, subframe, msi_pos,mbms_mch_i); + } + } + if (msi_pos == 5) { msi_flag = 1; } @@ -1317,6 +1821,13 @@ int ue_query_mch(module_id_t module_idP, uint8_t CC_id, uint32_t frameP, uint32_ } } else { // FDD if ((UE_mac_inst[module_idP].mbsfn_SubframeConfig[j]->subframeAllocation.choice.oneFrame.buf[0] & MBSFN_FDD_SF8) == MBSFN_FDD_SF8) { + if(UE_mac_inst[module_idP].pmch_Config[mbms_mch_i+1]!=NULL){ + if( UE_mac_inst[module_idP].common_num_sf_alloc == UE_mac_inst[module_idP].pmch_Config[mbms_mch_i]->sf_AllocEnd_r9){ + msi_pos=6; + mbms_mch_i++; + LOG_D(MAC,"MSP, frameP %d subframeP %d msi_pos(%d) mbms_mch_i %d\n",frameP, subframe, msi_pos,mbms_mch_i); + } + } if (msi_pos == 6) { msi_flag = 1; } @@ -1351,6 +1862,14 @@ int ue_query_mch(module_id_t module_idP, uint8_t CC_id, uint32_t frameP, uint32_ break; }// end switch + if( (msi_flag == 1) || (mcch_flag == 1) || (mtch_flag == 1) ){ + UE_mac_inst[module_idP].common_num_sf_alloc++; + //if( (msi_flag!=1 && mcch_flag!=1) || (msi_flag!=1 && mcch_flag!=1 && mtch_flag!=1) ){ + //UE_mac_inst[module_idP].common_num_sf_alloc++; + //} + } + +#ifdef OLD // Acount for sf_allocable in CSA int num_sf_alloc = 0; @@ -1392,11 +1911,86 @@ int ue_query_mch(module_id_t module_idP, uint8_t CC_id, uint32_t frameP, uint32_ } } } +#endif + +{ + // Acount for sf_allocable in Common SF Allocation + int num_sf_alloc = 0; + + for (l = 0; l < 8; l++) { + if (UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[l] == NULL) + continue; + + if (UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[l]->subframeAllocation.present != LTE_MBSFN_SubframeConfig__subframeAllocation_PR_oneFrame) + continue; + + //int common_mbsfn_alloc_offset = UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[l]->radioframeAllocationOffset; + //long common_mbsfn_period = 1 << UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[l]->radioframeAllocationPeriod; + //long commonSF_AllocPeriod = 4 << UE_mac_inst[module_idP].commonSF_AllocPeriod_r9; + + uint32_t common_mbsfn_SubframeConfig = UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[l]->subframeAllocation.choice.oneFrame.buf[0]; + + for (j = 0; j < 6; j++) + num_sf_alloc += ((common_mbsfn_SubframeConfig & (0x80 >> j)) == (0x80 >> j)); + } + + + for (l = 0; l < 8; l++) { + if (UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[l] == NULL) + continue; + + if (UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[l]->subframeAllocation.present != LTE_MBSFN_SubframeConfig__subframeAllocation_PR_oneFrame) + continue; + + //int common_mbsfn_alloc_offset = UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[l]->radioframeAllocationOffset; + long common_mbsfn_period = 1 << UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[l]->radioframeAllocationPeriod; + long commonSF_AllocPeriod = 4 << UE_mac_inst[module_idP].commonSF_AllocPeriod_r9; + + + if(msi_flag==1 && UE_mac_inst[module_idP].pmch_Config[mbms_mch_i] != NULL){ + LOG_D(MAC,"msi(%d) should be allocated:frame(%d),submframe(%d),num_sf_alloc(%d),sf_AllocEnd_r9(%ld),common_num_sf_alloc(%d)\n",mbms_mch_i,frameP,subframe,num_sf_alloc,UE_mac_inst[module_idP].pmch_Config[mbms_mch_i]->sf_AllocEnd_r9, + UE_mac_inst[module_idP].common_num_sf_alloc); + UE_mac_inst[module_idP].msi_current_alloc = UE_mac_inst[module_idP].common_num_sf_alloc;//num_sf_alloc; + UE_mac_inst[module_idP].msi_pmch = mbms_mch_i; + }else if(UE_mac_inst[module_idP].pmch_Config[mbms_mch_i] != NULL){ + if (UE_mac_inst[module_idP].pmch_stop_mtch[mbms_mch_i] >= UE_mac_inst[module_idP].common_num_sf_alloc/*num_sf_alloc*/) { + if (UE_mac_inst[module_idP].pmch_stop_mtch[mbms_mch_i] != 2047) { + mtch_flag = 1; + if (UE_mac_inst[module_idP].pmch_Config[UE_mac_inst[module_idP].msi_pmch] != NULL) + mtch_mcs = UE_mac_inst[module_idP].pmch_Config[UE_mac_inst[module_idP].msi_pmch]->dataMCS_r9; + else + mtch_mcs = -1; + mch_lcid = (uint8_t)mbms_mch_i; + LOG_D(MAC,"mtch should be allocated:frame(%d),submframe(%d),num_sf_alloc(%d),mtch_mcs(%d),pmch_stop_mtch(%d),lcid(%d),msi_pmch(%d)\n",frameP,subframe,num_sf_alloc,mtch_mcs, + UE_mac_inst[module_idP].pmch_stop_mtch[mbms_mch_i],UE_mac_inst[module_idP].pmch_lcids[mbms_mch_i],UE_mac_inst[module_idP].msi_pmch); + } + } + } + //LOG_D(MAC,"UE_mac_inst[module_idP].common_num_sf_alloc: %d num_sf_alloc %d mbms_mch_i %d commonSF_AllocPeriod %d common_mbsfn_period %d\n",UE_mac_inst[module_idP].common_num_sf_alloc,num_sf_alloc,mbms_mch_i,commonSF_AllocPeriod,common_mbsfn_period); + UE_mac_inst[module_idP].common_num_sf_alloc = UE_mac_inst[module_idP].common_num_sf_alloc % ((num_sf_alloc* commonSF_AllocPeriod-mbms_mch_i) / common_mbsfn_period);//48; + + + if(mtch_flag) + break; + } + if(msi_flag==1){ + for (l = 0; l < 8; l++) { + if (UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[l] == NULL) + continue; + + if ( (/*AJ*/ (/*V*/ ( /*U*/ (frameP %(4 << UE_mac_inst[module_idP].commonSF_AllocPeriod_r9)) ) / 8 ) % ((8 <mch_SchedulingPeriod_r9) / 8 ) ) != 0 ){ + msi_flag=0; + LOG_D(MAC,"frameP %d subframeP %d reset(%d)\n",frameP, subframe, mbms_mch_i); + } + } + } + +} // sf allocation is non-overlapping if ((msi_flag==1) || (mcch_flag==1) || (mtch_flag==1)) { - LOG_D(MAC,"[UE %d] Frame %d Subframe %d: sync area %d SF alloc %d: msi flag %d, mcch flag %d, mtch flag %d\n", - module_idP, frameP, subframe,l,j,msi_flag,mcch_flag,mtch_flag); + LOG_D(MAC,"[UE %d] Frame %d Subframe %d: sync area %d SF alloc %d: msi flag %d, mcch flag %d, mtch flag %d x %d\n", + module_idP, frameP, subframe,l,j,msi_flag,mcch_flag,mtch_flag,UE_mac_inst[module_idP].common_num_sf_alloc); *sync_area=i; break; } diff --git a/openair2/LAYER2/NR_MAC_COMMON/nr_mac.h b/openair2/LAYER2/NR_MAC_COMMON/nr_mac.h index 5801fabcfb..d8583167dd 100644 --- a/openair2/LAYER2/NR_MAC_COMMON/nr_mac.h +++ b/openair2/LAYER2/NR_MAC_COMMON/nr_mac.h @@ -24,8 +24,8 @@ * \author R. Knopp, K.H. HSU, G. Casati * \date 2019 * \version 0.1 - * \company Eurecom / NTUST / Fraunhofer IIS - * \email: knopp@eurecom.fr, kai-hsiang.hsu@eurecom.fr, guido.casati@iis.fraunhofer.de + * \company Eurecom / NTUST / Fraunhofer IIS + * \email: knopp@eurecom.fr, kai-hsiang.hsu@eurecom.fr, guido.casati@iis.fraunhofer.de * \note * \warning */ @@ -41,6 +41,10 @@ #define NR_BCCH_BCH 5 // MIB +#define CCCH_PAYLOAD_SIZE_MAX 128 + +#define RAR_PAYLOAD_SIZE_MAX 128 + // For both DL/UL-SCH // Except: // - UL/DL-SCH: fixed-size MAC CE(known by LCID) @@ -67,36 +71,234 @@ // R: Reserved bit, set to zero. typedef struct { - uint8_t LCID:6; // octet 1 [5:0] - uint8_t F:1; // octet 1 [6] - uint8_t R:1; // octet 1 [7] - uint8_t L:8; // octet 2 [7:0] + uint8_t LCID: 6; // octet 1 [5:0] + uint8_t F: 1; // octet 1 [6] + uint8_t R: 1; // octet 1 [7] + uint8_t L: 8; // octet 2 [7:0] } __attribute__ ((__packed__)) NR_MAC_SUBHEADER_SHORT; typedef struct { - uint8_t LCID:6; // octet 1 [5:0] - uint8_t F:1; // octet 1 [6] - uint8_t R:1; // octet 1 [7] - uint8_t L1:8; // octet 2 [7:0] - uint8_t L2:8; // octet 3 [7:0] + uint8_t LCID: 6; // octet 1 [5:0] + uint8_t F: 1; // octet 1 [6] + uint8_t R: 1; // octet 1 [7] + uint8_t L1: 8; // octet 2 [7:0] + uint8_t L2: 8; // octet 3 [7:0] } __attribute__ ((__packed__)) NR_MAC_SUBHEADER_LONG; typedef struct { - uint8_t LCID:6; // octet 1 [5:0] - uint8_t R:2; // octet 1 [7:6] + uint8_t LCID: 6; // octet 1 [5:0] + uint8_t R: 2; // octet 1 [7:6] } __attribute__ ((__packed__)) NR_MAC_SUBHEADER_FIXED; +// BSR MAC CEs +// TS 38.321 ch. 6.1.3.1 +// Short BSR for a specific logical channel group ID +typedef struct { + uint8_t Buffer_size: 5; // octet 1 LSB + uint8_t LcgID: 3; // octet 1 MSB +} __attribute__ ((__packed__)) NR_BSR_SHORT; + +typedef NR_BSR_SHORT NR_BSR_SHORT_TRUNCATED; + +// Long BSR for all logical channel group ID +typedef struct { + uint8_t Buffer_size7: 8; + uint8_t Buffer_size6: 8; + uint8_t Buffer_size5: 8; + uint8_t Buffer_size4: 8; + uint8_t Buffer_size3: 8; + uint8_t Buffer_size2: 8; + uint8_t Buffer_size1: 8; + uint8_t Buffer_size0: 8; + uint8_t LcgID0: 1; + uint8_t LcgID1: 1; + uint8_t LcgID2: 1; + uint8_t LcgID3: 1; + uint8_t LcgID4: 1; + uint8_t LcgID5: 1; + uint8_t LcgID6: 1; + uint8_t LcgID7: 1; +} __attribute__ ((__packed__)) NR_BSR_LONG; + +typedef NR_BSR_LONG NR_BSR_LONG_TRUNCATED; + // 38.321 ch. 6.1.3.4 typedef struct { - uint8_t TA_COMMAND:6; // octet 1 [5:0] - uint8_t TAGID:2; // octet 1 [7:6] + uint8_t TA_COMMAND: 6; // octet 1 [5:0] + uint8_t TAGID: 2; // octet 1 [7:6] } __attribute__ ((__packed__)) NR_MAC_CE_TA; +// single Entry PHR MAC CE +// TS 38.321 ch. 6.1.3.8 +typedef struct { + uint8_t PH: 6; + uint8_t R1: 2; + uint8_t PCMAX: 6; + uint8_t R2: 6; +} __attribute__ ((__packed__)) NR_SINGLE_ENTRY_PHR_MAC_CE; + + +// SP ZP CSI-RS Resource Set Activation/Deactivation MAC CE +// 38.321 ch. 6.1.3.19 +typedef struct { + uint8_t BWPID: 2; // octet 1 [1:0] + uint8_t CELLID: 5; // octet 1 [6:2] + uint8_t A_D: 1; // octet 1 [7] + uint8_t CSIRS_RSC_ID: 4; // octet 2 [3:0] + uint8_t R: 4; // octet 2 [7:4] +} __attribute__ ((__packed__)) NR_MAC_CE_SP_ZP_CSI_RS_RES_SET; + +//TS 38.321 Sec 6.1.3.15, TCI State indicaton for UE-Specific PDCCH MAC CE +typedef struct { + uint8_t CoresetId1: 3; //Octect 1 [2:0] + uint8_t ServingCellId: 5; //Octect 1 [7:3] + uint8_t TciStateId: 7; //Octect 2 [6:0] + uint8_t CoresetId2: 1; //Octect 2 [7] +} __attribute__ ((__packed__)) NR_TCI_PDCCH; + +//TS 38.321 Sec 6.1.3.14, TCI State activation/deactivation for UE Specific PDSCH MAC CE +typedef struct { + uint8_t BWP_Id: 2; //Octect 1 [1:0] + uint8_t ServingCellId: 5; //Octect 1 [6:2] + uint8_t R: 1; //Octect 1 [7] + uint8_t T[]; //Octects 2 to MAX TCI States/8 +} __attribute__ ((__packed__)) NR_TCI_PDSCH_APERIODIC_CSI; + +//TS 6.1.3.16, SP CSI reporting on PUCCH Activation/Deactivation MAC CE +typedef struct { + uint8_t BWP_Id: 2; //Octect 1 [1:0] + uint8_t ServingCellId: 5; //Octect 1 [6:2] + uint8_t R1: 1; //Octect 1 [7] + uint8_t S0: 1; //Octect 2 [0] + uint8_t S1: 1; //Octect 2 [1] + uint8_t S2: 1; //Octect 2 [2] + uint8_t S3: 1; //Octect 2 [3] + uint8_t R2: 4; //Octect 2 [7:4] +} __attribute__ ((__packed__)) NR_PUCCH_CSI_REPORTING; + + +//TS 38.321 sec 6.1.3.12 +//SP CSI-RS / CSI-IM Resource Set Activation/Deactivation MAC CE +typedef struct { + uint8_t BWP_ID: 2; + uint8_t SCID: 5; + uint8_t A_D: 1; + uint8_t SP_CSI_RSID: 6; + uint8_t IM: 1; + uint8_t R1: 1; + uint8_t SP_CSI_IMID: 6; + uint8_t R2: 2; + struct TCI_S { + uint8_t TCI_STATE_ID: 6; + uint8_t R: 2; + } __attribute__ ((__packed__)) TCI_STATE; +} __attribute__ ((__packed__)) CSI_RS_CSI_IM_ACT_DEACT_MAC_CE; + + +//* RAR MAC subheader // TS 38.321 ch. 6.1.5, 6.2.2 *// +// - E: The Extension field is a flag indicating if the MAC subPDU including this MAC subheader is the last MAC subPDU or not in the MAC PDU +// - T: The Type field is a flag indicating whether the MAC subheader contains a Random Access Preamble ID or a Backoff Indicator (0, BI) (1, RAPID) +// - R: Reserved bit, set to "0" +// - BI: The Backoff Indicator field identifies the overload condition in the cell. +// - RAPID: The Random Access Preamble IDentifier field identifies the transmitted Random Access Preamble + +/*!\brief RAR MAC subheader with RAPID */ +typedef struct { + uint8_t RAPID: 6; + uint8_t T: 1; + uint8_t E: 1; +} __attribute__ ((__packed__)) NR_RA_HEADER_RAPID; + +/*!\brief RAR MAC subheader with Backoff Indicator */ +typedef struct { + uint8_t BI: 4; + uint8_t R: 2; + uint8_t T: 1; + uint8_t E: 1; +} __attribute__ ((__packed__)) NR_RA_HEADER_BI; + +// TS 38.321 ch. 6.2.3 +typedef struct { + uint8_t TA1: 7; // octet 1 [6:0] + uint8_t R: 1; // octet 1 [7] + uint8_t UL_GRANT_1: 3; // octet 2 [2:0] + uint8_t TA2: 5; // octet 2 [7:3] + uint8_t UL_GRANT_2: 8; // octet 3 [7:0] + uint8_t UL_GRANT_3: 8; // octet 4 [7:0] + uint8_t UL_GRANT_4: 8; // octet 5 [7:0] + uint8_t TCRNTI_1: 8; // octet 6 [7:0] + uint8_t TCRNTI_2: 8; // octet 7 [7:0] +} __attribute__ ((__packed__)) NR_MAC_RAR; + +// DCI pdu structures. Used by both gNB and UE. +typedef struct { + uint16_t val; + uint8_t nbits; +} dci_field_t; + +typedef struct { + + uint8_t format_indicator; //1 bit + uint8_t ra_preamble_index; //6 bits + uint8_t ss_pbch_index; //6 bits + uint8_t prach_mask_index; //4 bits + uint8_t mcs; //5 bits + uint8_t ndi; //1 bit + uint8_t rv; //2 bits + uint8_t harq_pid; //4 bits + uint8_t tpc; //2 bits + uint8_t short_messages_indicator; //2 bits + uint8_t short_messages; //8 bits + uint8_t tb_scaling; //2 bits + uint8_t pucch_resource_indicator; //3 bits + uint8_t system_info_indicator; //1 bit + uint8_t ulsch_indicator; + uint8_t slot_format_indicator_count; + uint8_t *slot_format_indicators; + + uint8_t pre_emption_indication_count; + uint16_t *pre_emption_indications; //14 bit each + + uint8_t block_number_count; + uint8_t *block_numbers; + uint8_t padding; + + dci_field_t mcs2; //variable + dci_field_t ndi2; //variable + dci_field_t rv2; //variable + dci_field_t frequency_domain_assignment; //variable + dci_field_t time_domain_assignment; //variable + dci_field_t frequency_hopping_flag; //variable + dci_field_t vrb_to_prb_mapping; //variable + dci_field_t dai[2]; //variable + dci_field_t pdsch_to_harq_feedback_timing_indicator; //variable + dci_field_t carrier_indicator; //variable + dci_field_t bwp_indicator; //variable + dci_field_t prb_bundling_size_indicator; //variable + dci_field_t rate_matching_indicator; //variable + dci_field_t zp_csi_rs_trigger; //variable + dci_field_t transmission_configuration_indication; //variable + dci_field_t srs_request; //variable + dci_field_t cbgti; //variable + dci_field_t cbgfi; //variable + dci_field_t srs_resource_indicator; //variable + dci_field_t precoding_information; //variable + dci_field_t csi_request; //variable + dci_field_t ptrs_dmrs_association; //variable + dci_field_t beta_offset_indicator; //variable + dci_field_t cloded_loop_indicator; //variable + dci_field_t ul_sul_indicator; //variable + dci_field_t antenna_ports; //variable + dci_field_t dmrs_sequence_initialization; + dci_field_t reserved; //1_0/C-RNTI:10 bits, 1_0/P-RNTI: 6 bits, 1_0/SI-&RA-RNTI: 16 bits + +} dci_pdu_rel15_t; + // 38.321 ch6.2.1, 38.331 #define DL_SCH_LCID_CCCH 0x00 #define DL_SCH_LCID_DCCH 0x01 #define DL_SCH_LCID_DCCH1 0x02 -#define DL_SCH_LCID_DTCH 0x03 +#define DL_SCH_LCID_DTCH 0x04 #define DL_SCH_LCID_RECOMMENDED_BITRATE 0x2F #define DL_SCH_LCID_SP_ZP_CSI_RS_RES_SET_ACT 0x30 #define DL_SCH_LCID_PUCCH_SPATIAL_RELATION_ACT 0x31 @@ -105,7 +307,7 @@ typedef struct { #define DL_SCH_LCID_TCI_STATE_IND_UE_SPEC_PDCCH 0x34 #define DL_SCH_LCID_TCI_STATE_ACT_UE_SPEC_PDSCH 0x35 #define DL_SCH_LCID_APERIODIC_CSI_TRI_STATE_SUBSEL 0x36 -#define DL_SCH_LCID_SP_CSI_RS_CSI_IM_RES_SET_ACT 0X37 +#define DL_SCH_LCID_SP_CSI_RS_CSI_IM_RES_SET_ACT 0X37 #define DL_SCH_LCID_DUPLICATION_ACT 0X38 #define DL_SCH_LCID_SCell_ACT_4_OCT 0X39 #define DL_SCH_LCID_SCell_ACT_1_OCT 0X3A @@ -118,8 +320,8 @@ typedef struct { #define UL_SCH_LCID_CCCH 0x00 #define UL_SCH_LCID_SRB1 0x01 #define UL_SCH_LCID_SRB2 0x02 -#define UL_SCH_LCID_DTCH 0x03 -#define UL_SCH_LCID_SRB3 0x04 +#define UL_SCH_LCID_SRB3 0x03 +#define UL_SCH_LCID_DTCH 0x04 #define UL_SCH_LCID_CCCH_MSG3 0x21 #define UL_SCH_LCID_RECOMMENDED_BITRATE_QUERY 0x35 #define UL_SCH_LCID_MULTI_ENTRY_PHR_4_OCT 0x36 @@ -133,9 +335,9 @@ typedef struct { #define UL_SCH_LCID_L_BSR 0x3E #define UL_SCH_LCID_PADDING 0x3F -#define NR_MAX_NUM_LCID 32 -#define NR_MAX_NUM_LCGID 8 -#define MAX_RLC_SDU_SUBHEADER_SIZE 3 +#define NR_MAX_NUM_LCID 32 +#define NR_MAX_NUM_LCGID 8 +#define MAX_RLC_SDU_SUBHEADER_SIZE 3 #endif /*__LAYER2_MAC_H__ */ diff --git a/openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c b/openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c index cfde40daad..8220d088d0 100644 --- a/openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c +++ b/openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c @@ -31,6 +31,1170 @@ */ #include "LAYER2/NR_MAC_gNB/mac_proto.h" +#include + +const uint8_t nr_slots_per_frame[5] = {10, 20, 40, 80, 160}; + +// Table 6.3.3.1-5 (38.211) NCS for preamble formats with delta_f_RA = 1.25 KHz +uint16_t NCS_unrestricted_delta_f_RA_125[16] = {0,13,15,18,22,26,32,38,46,59,76,93,119,167,279,419}; +uint16_t NCS_restricted_TypeA_delta_f_RA_125[15] = {15,18,22,26,32,38,46,55,68,82,100,128,158,202,237}; // high-speed case set Type A +uint16_t NCS_restricted_TypeB_delta_f_RA_125[13] = {15,18,22,26,32,38,46,55,68,82,100,118,137}; // high-speed case set Type B + +// Table 6.3.3.1-6 (38.211) NCS for preamble formats with delta_f_RA = 5 KHz +uint16_t NCS_unrestricted_delta_f_RA_5[16] = {0,13,26,33,38,41,49,55,64,76,93,119,139,209,279,419}; +uint16_t NCS_restricted_TypeA_delta_f_RA_5[16] = {36,57,72,81,89,94,103,112,121,132,137,152,173,195,216,237}; // high-speed case set Type A +uint16_t NCS_restricted_TypeB_delta_f_RA_5[14] = {36,57,60,63,65,68,71,77,81,85,97,109,122,137}; // high-speed case set Type B + +// Table 6.3.3.1-7 (38.211) NCS for preamble formats with delta_f_RA = 15 * 2mu KHz where mu = {0,1,2,3} +uint16_t NCS_unrestricted_delta_f_RA_15[16] = {0,2,4,6,8,10,12,13,15,17,19,23,27,34,46,69}; + +const char *prachfmt[]={"A1","A2","A3","B1","B2","B3","B4","C0","C2"}; +const char *prachfmt03[]={"0","1","2","3"}; + +uint16_t get_NCS(uint8_t index, uint16_t format0, uint8_t restricted_set_config) { + + LOG_D(MAC,"get_NCS: indx %d,format0 %d, restriced_set_config %d\n", + index,format0,restricted_set_config); + + if (format0 < 3) { + switch(restricted_set_config){ + case 0: + return(NCS_unrestricted_delta_f_RA_125[index]); + case 1: + return(NCS_restricted_TypeA_delta_f_RA_125[index]); + case 2: + return(NCS_restricted_TypeB_delta_f_RA_125[index]); + default: + AssertFatal(1==0,"Invalid restricted set config value %d",restricted_set_config); + } + } + else { + if (format0 == 3) { + switch(restricted_set_config){ + case 0: + return(NCS_unrestricted_delta_f_RA_5[index]); + case 1: + return(NCS_restricted_TypeA_delta_f_RA_5[index]); + case 2: + return(NCS_restricted_TypeB_delta_f_RA_5[index]); + default: + AssertFatal(1==0,"Invalid restricted set config value %d",restricted_set_config); + } + } + else + return(NCS_unrestricted_delta_f_RA_15[index]); + } +} + + +// Table 6.3.3.2-2: Random access configurations for FR1 and paired spectrum/supplementary uplink +// the column 5, (SFN_nbr is a bitmap where we set bit to '1' in the position of the subframe where the RACH can be sent. +// E.g. in row 4, and column 5 we have set value 512 ('1000000000') which means RACH can be sent at subframe 9. +// E.g. in row 20 and column 5 we have set value 66 ('0001000010') which means RACH can be sent at subframe 1 or 6 +int64_t table_6_3_3_2_2_prachConfig_Index [256][9] = { +//format, format, x, y, SFN_nbr, star_symb, slots_sfn, occ_slot, duration +{0, -1, 16, 1, 2, 0, -1, -1, 0}, // (subframe number) 1 +{0, -1, 16, 1, 16, 0, -1, -1, 0}, // (subframe number) 4 +{0, -1, 16, 1, 128, 0, -1, -1, 0}, // (subframe number) 7 +{0, -1, 16, 1, 512, 0, -1, -1, 0}, // (subframe number) 9 +{0, -1, 8, 1, 2, 0, -1, -1, 0}, // (subframe number) 1 +{0, -1, 8, 1, 16, 0, -1, -1, 0}, // (subframe number) 4 +{0, -1, 8, 1, 128, 0, -1, -1, 0}, // (subframe number) 7 +{0, -1, 8, 1, 512, 0, -1, -1, 0}, // (subframe number) 9 +{0, -1, 4, 1, 2, 0, -1, -1, 0}, // (subframe number) 1 +{0, -1, 4, 1, 16, 0, -1, -1, 0}, // (subframe number) 4 +{0, -1, 4, 1, 128, 0, -1, -1, 0}, // (subframe number) 7 +{0, -1, 4, 1, 512, 0, -1, -1, 0}, // (subframe number) 9 +{0, -1, 2, 1, 2, 0, -1, -1, 0}, // (subframe number) 1 +{0, -1, 2, 1, 16, 0, -1, -1, 0}, // (subframe number) 4 +{0, -1, 2, 1, 128, 0, -1, -1, 0}, // (subframe number) 7 +{0, -1, 2, 1, 512, 0, -1, -1, 0}, // (subframe number) 9 +{0, -1, 1, 0, 2, 0, -1, -1, 0}, // (subframe number) 1 +{0, -1, 1, 0, 16, 0, -1, -1, 0}, // (subframe number) 4 +{0, -1, 1, 0, 128, 0, -1, -1, 0}, // (subframe number) 7 +{0, -1, 1, 0, 66, 0, -1, -1, 0}, // (subframe number) 1,6 +{0, -1, 1, 0, 132, 0, -1, -1, 0}, // (subframe number) 2,7 +{0, -1, 1, 0, 264, 0, -1, -1, 0}, // (subframe number) 3,8 +{0, -1, 1, 0, 146, 0, -1, -1, 0}, // (subframe number) 1,4,7 +{0, -1, 1, 0, 292, 0, -1, -1, 0}, // (subframe number) 2,5,8 +{0, -1, 1, 0, 584, 0, -1, -1, 0}, // (subframe number) 3, 6, 9 +{0, -1, 1, 0, 341, 0, -1, -1, 0}, // (subframe number) 0,2,4,6,8 +{0, -1, 1, 0, 682, 0, -1, -1, 0}, // (subframe number) 1,3,5,7,9 +{0, -1, 1, 0, 1023, 0, -1, -1, 0}, // (subframe number) 0,1,2,3,4,5,6,7,8,9 +{1, -1, 16, 1, 2, 0, -1, -1, 0}, // (subframe number) 1 +{1, -1, 16, 1, 16, 0, -1, -1, 0}, // (subframe number) 4 +{1, -1, 16, 1, 128, 0, -1, -1, 0}, // (subframe number) 7 +{1, -1, 16, 1, 512, 0, -1, -1, 0}, // (subframe number) 9 +{1, -1, 8, 1, 2, 0, -1, -1, 0}, // (subframe number) 1 +{1, -1, 8, 1, 16, 0, -1, -1, 0}, // (subframe number) 4 +{1, -1, 8, 1, 128, 0, -1, -1, 0}, // (subframe number) 7 +{1, -1, 8, 1, 512, 0, -1, -1, 0}, // (subframe number) 9 +{1, -1, 4, 1, 2, 0, -1, -1, 0}, // (subframe number) 1 +{1, -1, 4, 1, 16, 0, -1, -1, 0}, // (subframe number) 4 +{1, -1, 4, 1, 128, 0, -1, -1, 0}, // (subframe number) 7 +{1, -1, 4, 1, 512, 0, -1, -1, 0}, // (subframe number) 9 +{1, -1, 2, 1, 2, 0, -1, -1, 0}, // (subframe number) 1 +{1, -1, 2, 1, 16, 0, -1, -1, 0}, // (subframe number) 4 +{1, -1, 2, 1, 128, 0, -1, -1, 0}, // (subframe number) 7 +{1, -1, 2, 1, 512, 0, -1, -1, 0}, // (subframe number) 9 +{1, -1, 1, 0, 2, 0, -1, -1, 0}, // (subframe number) 1 +{1, -1, 1, 0, 16, 0, -1, -1, 0}, // (subframe number) 4 +{1, -1, 1, 0, 128, 0, -1, -1, 0}, // (subframe number) 7 +{1, -1, 1, 0, 66, 0, -1, -1, 0}, // (subframe number) 1,6 +{1, -1, 1, 0, 132, 0, -1, -1, 0}, // (subframe number) 2,7 +{1, -1, 1, 0, 264, 0, -1, -1, 0}, // (subframe number) 3,8 +{1, -1, 1, 0, 146, 0, -1, -1, 0}, // (subframe number) 1,4,7 +{1, -1, 1, 0, 292, 0, -1, -1, 0}, // (subframe number) 2,5,8 +{1, -1, 1, 0, 584, 0, -1, -1, 0}, // (subframe number) 3,6,9 +{2, -1, 16, 1, 2, 0, -1, -1, 0}, // (subframe number) 1 +{2, -1, 8, 1, 2, 0, -1, -1, 0}, // (subframe number) 1 +{2, -1, 4, 0, 2, 0, -1, -1, 0}, // (subframe number) 1 +{2, -1, 2, 0, 2, 0, -1, -1, 0}, // (subframe number) 1 +{2, -1, 2, 0, 32, 0, -1, -1, 0}, // (subframe number) 5 +{2, -1, 1, 0, 2, 0, -1, -1, 0}, // (subframe number) 1 +{2, -1, 1, 0, 32, 0, -1, -1, 0}, // (subframe number) 5 +{3, -1, 16, 1, 2, 0, -1, -1, 0}, // (subframe number) 1 +{3, -1, 16, 1, 16, 0, -1, -1, 0}, // (subframe number) 4 +{3, -1, 16, 1, 128, 0, -1, -1, 0}, // (subframe number) 7 +{3, -1, 16, 1, 512, 0, -1, -1, 0}, // (subframe number) 9 +{3, -1, 8, 1, 2, 0, -1, -1, 0}, // (subframe number) 1 +{3, -1, 8, 1, 16, 0, -1, -1, 0}, // (subframe number) 4 +{3, -1, 8, 1, 128, 0, -1, -1, 0}, // (subframe number) 7 +{3, -1, 4, 1, 2, 0, -1, -1, 0}, // (subframe number) 1 +{3, -1, 4, 1, 16, 0, -1, -1, 0}, // (subframe number) 4 +{3, -1, 4, 1, 128, 0, -1, -1, 0}, // (subframe number) 7 +{3, -1, 4, 1, 512, 0, -1, -1, 0}, // (subframe number) 9 +{3, -1, 2, 1, 2, 0, -1, -1, 0}, // (subframe number) 1 +{3, -1, 2, 1, 16, 0, -1, -1, 0}, // (subframe number) 4 +{3, -1, 2, 1, 128, 0, -1, -1, 0}, // (subframe number) 7 +{3, -1, 2, 1, 512, 0, -1, -1, 0}, // (subframe number) 9 +{3, -1, 1, 0, 2, 0, -1, -1, 0}, // (subframe number) 1 +{3, -1, 1, 0, 16, 0, -1, -1, 0}, // (subframe number) 4 +{3, -1, 1, 0, 128, 0, -1, -1, 0}, // (subframe number) 7 +{3, -1, 1, 0, 66, 0, -1, -1, 0}, // (subframe number) 1,6 +{3, -1, 1, 0, 132, 0, -1, -1, 0}, // (subframe number) 2,7 +{3, -1, 1, 0, 264, 0, -1, -1, 0}, // (subframe number) 3,8 +{3, -1, 1, 0, 146, 0, -1, -1, 0}, // (subframe number) 1,4,7 +{3, -1, 1, 0, 292, 0, -1, -1, 0}, // (subframe number) 2,5,8 +{3, -1, 1, 0, 584, 0, -1, -1, 0}, // (subframe number) 3, 6, 9 +{3, -1, 1, 0, 341, 0, -1, -1, 0}, // (subframe number) 0,2,4,6,8 +{3, -1, 1, 0, 682, 0, -1, -1, 0}, // (subframe number) 1,3,5,7,9 +{3, -1, 1, 0, 1023, 0, -1, -1, 0}, // (subframe number) 0,1,2,3,4,5,6,7,8,9 +{0xa1, -1, 16, 0, 528, 0, 1, 6, 2}, // (subframe number) 4,9 +{0xa1, -1, 16, 1, 16, 0, 2, 6, 2}, // (subframe number) 4 +{0xa1, -1, 8, 0, 528, 0, 1, 6, 2}, // (subframe number) 4,9 +{0xa1, -1, 8, 1, 16, 0, 2, 6, 2}, // (subframe number) 4 +{0xa1, -1, 4, 0, 528, 0, 1, 6, 2}, // (subframe number) 4,9 +{0xa1, -1, 4, 1, 528, 0, 1, 6, 2}, // (subframe number) 4,9 +{0xa1, -1, 4, 0, 16, 0, 2, 6, 2}, // (subframe number) 4 +{0xa1, -1, 2, 0, 528, 0, 1, 6, 2}, // (subframe number) 4,9 +{0xa1, -1, 2, 0, 2, 0, 2, 6, 2}, // (subframe number) 1 +{0xa1, -1, 2, 0, 16, 0, 2, 6, 2}, // (subframe number) 4 +{0xa1, -1, 2, 0, 128, 0, 2, 6, 2}, // (subframe number) 7 +{0xa1, -1, 1, 0, 16, 0, 1, 6, 2}, // (subframe number) 4 +{0xa1, -1, 1, 0, 66, 0, 1, 6, 2}, // (subframe number) 1,6 +{0xa1, -1, 1, 0, 528, 0, 1, 6, 2}, // (subframe number) 4,9 +{0xa1, -1, 1, 0, 2, 0, 2, 6, 2}, // (subframe number) 1 +{0xa1, -1, 1, 0, 128, 0, 2, 6, 2}, // (subframe number) 7 +{0xa1, -1, 1, 0, 132, 0, 2, 6, 2}, // (subframe number) 2,7 +{0xa1, -1, 1, 0, 146, 0, 2, 6, 2}, // (subframe number) 1,4,7 +{0xa1, -1, 1, 0, 341, 0, 2, 6, 2}, // (subframe number) 0,2,4,6,8 +{0xa1, -1, 1, 0, 1023, 0, 2, 6, 2}, // (subframe number) 0,1,2,3,4,5,6,7,8,9 +{0xa1, -1, 1, 0, 682, 0, 2, 6, 2}, // (subframe number) 1,3,5,7,9 +{0xa1, 0xb1, 2, 0, 528, 0, 1, 7, 2}, // (subframe number) 4,9 +{0xa1, 0xb1, 2, 0, 16, 0, 2, 7, 2}, // (subframe number) 4 +{0xa1, 0xb1, 1, 0, 16, 0, 1, 7, 2}, // (subframe number) 4 +{0xa1, 0xb1, 1, 0, 66, 0, 1, 7, 2}, // (subframe number) 1,6 +{0xa1, 0xb1, 1, 0, 528, 0, 1, 7, 2}, // (subframe number) 4,9 +{0xa1, 0xb1, 1, 0, 2, 0, 2, 7, 2}, // (subframe number) 1 +{0xa1, 0xb1, 1, 0, 128, 0, 2, 7, 2}, // (subframe number) 7 +{0xa1, 0xb1, 1, 0, 146, 0, 2, 7, 2}, // (subframe number) 1,4,7 +{0xa1, 0xb1, 1, 0, 341, 0, 2, 7, 2}, // (subframe number) 0,2,4,6,8 +{0xa2, -1, 16, 1, 580, 0, 1, 3, 4}, // (subframe number) 2,6,9 +{0xa2, -1, 16, 1, 16, 0, 2, 3, 4}, // (subframe number) 4 +{0xa2, -1, 8, 1, 580, 0, 1, 3, 4}, // (subframe number) 2,6,9 +{0xa2, -1, 8, 1, 16, 0, 2, 3, 4}, // (subframe number) 4 +{0xa2, -1, 4, 0, 580, 0, 1, 3, 4}, // (subframe number) 2,6,9 +{0xa2, -1, 4, 0, 16, 0, 2, 3, 4}, // (subframe number) 4 +{0xa2, -1, 2, 1, 580, 0, 1, 3, 4}, // (subframe number) 2,6,9 +{0xa2, -1, 2, 0, 2, 0, 2, 3, 4}, // (subframe number) 1 +{0xa2, -1, 2, 0, 16, 0, 2, 3, 4}, // (subframe number) 4 +{0xa2, -1, 2, 0, 128, 0, 2, 3, 4}, // (subframe number) 7 +{0xa2, -1, 1, 0, 16, 0, 1, 3, 4}, // (subframe number) 4 +{0xa2, -1, 1, 0, 66, 0, 1, 3, 4}, // (subframe number) 1,6 +{0xa2, -1, 1, 0, 528, 0, 1, 3, 4}, // (subframe number) 4,9 +{0xa2, -1, 1, 0, 2, 0, 2, 3, 4}, // (subframe number) 1 +{0xa2, -1, 1, 0, 128, 0, 2, 3, 4}, // (subframe number) 7 +{0xa2, -1, 1, 0, 132, 0, 2, 3, 4}, // (subframe number) 2,7 +{0xa2, -1, 1, 0, 146, 0, 2, 3, 4}, // (subframe number) 1,4,7 +{0xa2, -1, 1, 0, 341, 0, 2, 3, 4}, // (subframe number) 0,2,4,6,8 +{0xa2, -1, 1, 0, 1023, 0, 2, 3, 4}, // (subframe number) 0,1,2,3,4,5,6,7,8,9 +{0xa2, -1, 1, 0, 682, 0, 2, 3, 4}, // (subframe number) 1,3,5,7,9 +{0xa2, 0xb2, 2, 1, 580, 0, 1, 3, 4}, // (subframe number) 2,6,9 +{0xa2, 0xb2, 2, 0, 16, 0, 2, 3, 4}, // (subframe number) 4 +{0xa2, 0xb2, 1, 0, 16, 0, 1, 3, 4}, // (subframe number) 4 +{0xa2, 0xb2, 1, 0, 66, 0, 1, 3, 4}, // (subframe number) 1,6 +{0xa2, 0xb2, 1, 0, 528, 0, 1, 3, 4}, // (subframe number) 4,9 +{0xa2, 0xb2, 1, 0, 2, 0, 2, 3, 4}, // (subframe number) 1 +{0xa2, 0xb2, 1, 0, 128, 0, 2, 3, 4}, // (subframe number) 7 +{0xa2, 0xb2, 1, 0, 146, 0, 2, 3, 4}, // (subframe number) 1,4,7 +{0xa2, 0xb2, 1, 0, 341, 0, 2, 3, 4}, // (subframe number) 0,2,4,6,8 +{0xa2, 0xb2, 1, 0, 1023, 0, 2, 3, 4}, // (subframe number) 0,1,2,3,4,5,6,7,8,9 +{0xa3, -1, 16, 1, 528, 0, 1, 2, 6}, // (subframe number) 4,9 +{0xa3, -1, 16, 1, 16, 0, 2, 2, 6}, // (subframe number) 4 +{0xa3, -1, 8, 1, 528, 0, 1, 2, 6}, // (subframe number) 4,9 +{0xa3, -1, 8, 1, 16, 0, 2, 2, 6}, // (subframe number) 4 +{0xa3, -1, 4, 0, 528, 0, 1, 2, 6}, // (subframe number) 4,9 +{0xa3, -1, 4, 0, 16, 0, 2, 2, 6}, // (subframe number) 4 +{0xa3, -1, 2, 1, 580, 0, 2, 2, 6}, // (subframe number) 2,6,9 +{0xa3, -1, 2, 0, 2, 0, 2, 2, 6}, // (subframe number) 1 +{0xa3, -1, 2, 0, 16, 0, 2, 2, 6}, // (subframe number) 4 +{0xa3, -1, 2, 0, 128, 0, 2, 2, 6}, // (subframe number) 7 +{0xa3, -1, 1, 0, 16, 0, 1, 2, 6}, // (subframe number) 4 +{0xa3, -1, 1, 0, 66, 0, 1, 2, 6}, // (subframe number) 1,6 +{0xa3, -1, 1, 0, 528, 0, 1, 2, 6}, // (subframe number) 4,9 +{0xa3, -1, 1, 0, 2, 0, 2, 2, 6}, // (subframe number) 1 +{0xa3, -1, 1, 0, 128, 0, 2, 2, 6}, // (subframe number) 7 +{0xa3, -1, 1, 0, 132, 0, 2, 2, 6}, // (subframe number) 2,7 +{0xa3, -1, 1, 0, 146, 0, 2, 2, 6}, // (subframe number) 1,4,7 +{0xa3, -1, 1, 0, 341, 0, 2, 2, 6}, // (subframe number) 0,2,4,6,8 +{0xa3, -1, 1, 0, 1023, 0, 2, 2, 6}, // (subframe number) 0,1,2,3,4,5,6,7,8,9 +{0xa3, -1, 1, 0, 682, 0, 2, 2, 6}, // (subframe number) 1,3,5,7,9 +{0xa3, 0xb3, 2, 1, 580, 0, 2, 2, 6}, // (subframe number) 2,6,9 +{0xa3, 0xb3, 2, 0, 16, 0, 2, 2, 6}, // (subframe number) 4 +{0xa3, 0xb3, 1, 0, 16, 0, 1, 2, 6}, // (subframe number) 4 +{0xa3, 0xb3, 1, 0, 66, 0, 1, 2, 6}, // (subframe number) 1,6 +{0xa3, 0xb3, 1, 0, 528, 0, 1, 2, 6}, // (subframe number) 4,9 +{0xa3, 0xb3, 1, 0, 2, 0, 2, 2, 6}, // (subframe number) 1 +{0xa3, 0xb3, 1, 0, 128, 0, 2, 2, 6}, // (subframe number) 7 +{0xa3, 0xb3, 1, 0, 146, 0, 2, 2, 6}, // (subframe number) 1,4,7 +{0xa3, 0xb3, 1, 0, 341, 0, 2, 2, 6}, // (subframe number) 0,2,4,6,8 +{0xa3, 0xb3, 1, 0, 1023, 0, 2, 2, 6}, // (subframe number) 0,1,2,3,4,5,6,7,8,9 +{0xb1, -1, 16, 0, 528, 0, 1, 7, 2}, // (subframe number) 4,9 +{0xb1, -1, 16, 1, 16, 0, 2, 7, 2}, // (subframe number) 4 +{0xb1, -1, 8, 0, 528, 0, 1, 7, 2}, // (subframe number) 4,9 +{0xb1, -1, 8, 1, 16, 0, 2, 7, 2}, // (subframe number) 4 +{0xb1, -1, 4, 0, 528, 0, 1, 7, 2}, // (subframe number) 4,9 +{0xb1, -1, 4, 1, 528, 0, 1, 7, 2}, // (subframe number) 4,9 +{0xb1, -1, 4, 0, 16, 0, 2, 7, 2}, // (subframe number) 4 +{0xb1, -1, 2, 0, 528, 0, 1, 7, 2}, // (subframe number) 4,9 +{0xb1, -1, 2, 0, 2, 0, 2, 7, 2}, // (subframe number) 1 +{0xb1, -1, 2, 0, 16, 0, 2, 7, 2}, // (subframe number) 4 +{0xb1, -1, 2, 0, 128, 0, 2, 7, 2}, // (subframe number) 7 +{0xb1, -1, 1, 0, 16, 0, 1, 7, 2}, // (subframe number) 4 +{0xb1, -1, 1, 0, 66, 0, 1, 7, 2}, // (subframe number) 1,6 +{0xb1, -1, 1, 0, 528, 0, 1, 7, 2}, // (subframe number) 4,9 +{0xb1, -1, 1, 0, 2, 0, 2, 7, 2}, // (subframe number) 1 +{0xb1, -1, 1, 0, 128, 0, 2, 7, 2}, // (subframe number) 7 +{0xb1, -1, 1, 0, 132, 0, 2, 7, 2}, // (subframe number) 2,7 +{0xb1, -1, 1, 0, 146, 0, 2, 7, 2}, // (subframe number) 1,4,7 +{0xb1, -1, 1, 0, 341, 0, 2, 7, 2}, // (subframe number) 0,2,4,6,8 +{0xb1, -1, 1, 0, 1023, 0, 2, 7, 2}, // (subframe number) 0,1,2,3,4,5,6,7,8,9 +{0xb1, -1, 1, 0, 682, 0, 2, 7, 2}, // (subframe number) 1,3,5,7,9 +{0xb4, -1, 16, 0, 528, 0, 2, 1, 12}, // (subframe number) 4,9 +{0xb4, -1, 16, 1, 16, 0, 2, 1, 12}, // (subframe number) 4 +{0xb4, -1, 8, 0, 528, 0, 2, 1, 12}, // (subframe number) 4,9 +{0xb4, -1, 8, 1, 16, 0, 2, 1, 12}, // (subframe number) 4 +{0xb4, -1, 4, 0, 528, 0, 2, 1, 12}, // (subframe number) 4,9 +{0xb4, -1, 4, 0, 16, 0, 2, 1, 12}, // (subframe number) 4 +{0xb4, -1, 4, 1, 528, 0, 2, 1, 12}, // (subframe number) 4,9 +{0xb4, -1, 2, 0, 528, 0, 2, 1, 12}, // (subframe number) 4,9 +{0xb4, -1, 2, 0, 2, 0, 2, 1, 12}, // (subframe number) 1 +{0xb4, -1, 2, 0, 16, 0, 2, 1, 12}, // (subframe number) 4 +{0xb4, -1, 2, 0, 128, 0, 2, 1, 12}, // (subframe number) 7 +{0xb4, -1, 1, 0, 2, 0, 2, 1, 12}, // (subframe number) 1 +{0xb4, -1, 1, 0, 16, 0, 2, 1, 12}, // (subframe number) 4 +{0xb4, -1, 1, 0, 128, 0, 2, 1, 12}, // (subframe number) 7 +{0xb4, -1, 1, 0, 66, 0, 2, 1, 12}, // (subframe number) 1,6 +{0xb4, -1, 1, 0, 132, 0, 2, 1, 12}, // (subframe number) 2,7 +{0xb4, -1, 1, 0, 528, 0, 2, 1, 12}, // (subframe number) 4,9 +{0xb4, -1, 1, 0, 146, 0, 2, 1, 12}, // (subframe number) 1,4,7 +{0xb4, -1, 1, 0, 341, 0, 2, 1, 12}, // (subframe number) 0,2,4,6,8 +{0xb4, -1, 1, 0, 1023, 0, 2, 1, 12}, // (subframe number) 0,1,2,3,4,5,6,7,8,9 +{0xb4, -1, 1, 0, 682, 0, 2, 1, 12}, // (subframe number) 1,3,5,7,9 +{0xc0, -1, 8, 1, 16, 0, 2, 7, 2}, // (subframe number) 4 +{0xc0, -1, 4, 1, 528, 0, 1, 7, 2}, // (subframe number) 4,9 +{0xc0, -1, 4, 0, 16, 0, 2, 7, 2}, // (subframe number) 4 +{0xc0, -1, 2, 0, 528, 0, 1, 7, 2}, // (subframe number) 4,9 +{0xc0, -1, 2, 0, 2, 0, 2, 7, 2}, // (subframe number) 1 +{0xc0, -1, 2, 0, 16, 0, 2, 7, 2}, // (subframe number) 4 +{0xc0, -1, 2, 0, 128, 0, 2, 7, 2}, // (subframe number) 7 +{0xc0, -1, 1, 0, 16, 0, 1, 7, 2}, // (subframe number) 4 +{0xc0, -1, 1, 0, 66, 0, 1, 7, 2}, // (subframe number) 1,6 +{0xc0, -1, 1, 0, 528, 0, 1, 7, 2}, // (subframe number) 4,9 +{0xc0, -1, 1, 0, 2, 0, 2, 7, 2}, // (subframe number) 1 +{0xc0, -1, 1, 0, 128, 0, 2, 7, 2}, // (subframe number) 7 +{0xc0, -1, 1, 0, 132, 0, 2, 7, 2}, // (subframe number) 2,7 +{0xc0, -1, 1, 0, 146, 0, 2, 7, 2}, // (subframe number) 1,4,7 +{0xc0, -1, 1, 0, 341, 0, 2, 7, 2}, // (subframe number) 0,2,4,6,8 +{0xc0, -1, 1, 0, 1023, 0, 2, 7, 2}, // (subframe number) 0,1,2,3,4,5,6,7,8,9 +{0xc0, -1, 1, 0, 682, 0, 2, 7, 2}, // (subframe number) 1,3,5,7,9 +{0xc2, -1, 16, 1, 528, 0, 1, 2, 6}, // (subframe number) 4,9 +{0xc2, -1, 16, 1, 16, 0, 2, 2, 6}, // (subframe number) 4 +{0xc2, -1, 8, 1, 528, 0, 1, 2, 6}, // (subframe number) 4,9 +{0xc2, -1, 8, 1, 16, 0, 2, 2, 6}, // (subframe number) 4 +{0xc2, -1, 4, 0, 528, 0, 1, 2, 6}, // (subframe number) 4,9 +{0xc2, -1, 4, 0, 16, 0, 2, 2, 6}, // (subframe number) 4 +{0xc2, -1, 2, 1, 580, 0, 2, 2, 6}, // (subframe number) 2,6,9 +{0xc2, -1, 2, 0, 2, 0, 2, 2, 6}, // (subframe number) 1 +{0xc2, -1, 2, 0, 16, 0, 2, 2, 6}, // (subframe number) 4 +{0xc2, -1, 2, 0, 128, 0, 2, 2, 6}, // (subframe number) 7 +{0xc2, -1, 1, 0, 16, 0, 1, 2, 6}, // (subframe number) 4 +{0xc2, -1, 1, 0, 66, 0, 1, 2, 6}, // (subframe number) 1,6 +{0xc2, -1, 1, 0, 528, 0, 1, 2, 6}, // (subframe number) 4,9 +{0xc2, -1, 1, 0, 2, 0, 2, 2, 6}, // (subframe number) 1 +{0xc2, -1, 1, 0, 128, 0, 2, 2, 6}, // (subframe number) 7 +{0xc2, -1, 1, 0, 132, 0, 2, 2, 6}, // (subframe number) 2,7 +{0xc2, -1, 1, 0, 146, 0, 2, 2, 6}, // (subframe number) 1,4,7 +{0xc2, -1, 1, 0, 341, 0, 2, 2, 6}, // (subframe number) 0,2,4,6,8 +{0xc2, -1, 1, 0, 1023, 0, 2, 2, 6}, // (subframe number) 0,1,2,3,4,5,6,7,8,9 +{0xc2, -1, 1, 0, 682, 0, 2, 2, 6} // (subframe number) 1,3,5,7,9 +}; +// Table 6.3.3.2-3: Random access configurations for FR1 and unpaired spectrum +int64_t table_6_3_3_2_3_prachConfig_Index [256][9] = { +//format, format, x, y, SFN_nbr, star_symb, slots_sfn, occ_slot, duration +{0, -1, 16, 1, 512, 0, -1, -1, 0}, // (subrame number 9) +{0, -1, 8, 1, 512, 0, -1, -1, 0}, // (subrame number 9) +{0, -1, 4, 1, 512, 0, -1, -1, 0}, // (subrame number 9) +{0, -1, 2, 0, 512, 0, -1, -1, 0}, // (subrame number 9) +{0, -1, 2, 1, 512, 0, -1, -1, 0}, // (subrame number 9) +{0, -1, 2, 0, 16, 0, -1, -1, 0}, // (subrame number 4) +{0, -1, 2, 1, 16, 0, -1, -1, 0}, // (subrame number 4) +{0, -1, 1, 0, 512, 0, -1, -1, 0}, // (subrame number 9) +{0, -1, 1, 0, 256, 0, -1, -1, 0}, // (subrame number 8) +{0, -1, 1, 0, 128, 0, -1, -1, 0}, // (subrame number 7) +{0, -1, 1, 0, 64, 0, -1, -1, 0}, // (subrame number 6) +{0, -1, 1, 0, 32, 0, -1, -1, 0}, // (subrame number 5) +{0, -1, 1, 0, 16, 0, -1, -1, 0}, // (subrame number 4) +{0, -1, 1, 0, 8, 0, -1, -1, 0}, // (subrame number 3) +{0, -1, 1, 0, 4, 0, -1, -1, 0}, // (subrame number 2) +{0, -1, 1, 0, 66, 0, -1, -1, 0}, // (subrame number 1,6) +{0, -1, 1, 0, 66, 7, -1, -1, 0}, // (subrame number 1,6) +{0, -1, 1, 0, 528, 0, -1, -1, 0}, // (subrame number 4,9) +{0, -1, 1, 0, 264, 0, -1, -1, 0}, // (subrame number 3,8) +{0, -1, 1, 0, 132, 0, -1, -1, 0}, // (subrame number 2,7) +{0, -1, 1, 0, 768, 0, -1, -1, 0}, // (subrame number 8,9) +{0, -1, 1, 0, 784, 0, -1, -1, 0}, // (subrame number 4,8,9) +{0, -1, 1, 0, 536, 0, -1, -1, 0}, // (subrame number 3,4,9) +{0, -1, 1, 0, 896, 0, -1, -1, 0}, // (subrame number 7,8,9) +{0, -1, 1, 0, 792, 0, -1, -1, 0}, // (subrame number 3,4,8,9) +{0, -1, 1, 0, 960, 0, -1, -1, 0}, // (subrame number 6,7,8,9) +{0, -1, 1, 0, 594, 0, -1, -1, 0}, // (subrame number 1,4,6,9) +{0, -1, 1, 0, 682, 0, -1, -1, 0}, // (subrame number 1,3,5,7,9) +{1, -1, 16, 1, 128, 0, -1, -1, 0}, // (subrame number 7) +{1, -1, 8, 1, 128, 0, -1, -1, 0}, // (subrame number 7) +{1, -1, 4, 1, 128, 0, -1, -1, 0}, // (subrame number 7) +{1, -1, 2, 0, 128, 0, -1, -1, 0}, // (subrame number 7) +{1, -1, 2, 1, 128, 0, -1, -1, 0}, // (subrame number 7) +{1, -1, 1, 0, 128, 0, -1, -1, 0}, // (subrame number 7) +{2, -1, 16, 1, 64, 0, -1, -1, 0}, // (subrame number 6) +{2, -1, 8, 1, 64, 0, -1, -1, 0}, // (subrame number 6) +{2, -1, 4, 1, 64, 0, -1, -1, 0}, // (subrame number 6) +{2, -1, 2, 0, 64, 7, -1, -1, 0}, // (subrame number 6) +{2, -1, 2, 1, 64, 7, -1, -1, 0}, // (subrame number 6) +{2, -1, 1, 0, 64, 7, -1, -1, 0}, // (subrame number 6) +{3, -1, 16, 1, 512, 0, -1, -1, 0}, // (subrame number 9) +{3, -1, 8, 1, 512, 0, -1, -1, 0}, // (subrame number 9) +{3, -1, 4, 1, 512, 0, -1, -1, 0}, // (subrame number 9) +{3, -1, 2, 0, 512, 0, -1, -1, 0}, // (subrame number 9) +{3, -1, 2, 1, 512, 0, -1, -1, 0}, // (subrame number 9) +{3, -1, 2, 0, 16, 0, -1, -1, 0}, // (subrame number 4) +{3, -1, 2, 1, 16, 0, -1, -1, 0}, // (subrame number 4) +{3, -1, 1, 0, 512, 0, -1, -1, 0}, // (subrame number 9) +{3, -1, 1, 0, 256, 0, -1, -1, 0}, // (subrame number 8) +{3, -1, 1, 0, 128, 0, -1, -1, 0}, // (subrame number 7) +{3, -1, 1, 0, 64, 0, -1, -1, 0}, // (subrame number 6) +{3, -1, 1, 0, 32, 0, -1, -1, 0}, // (subrame number 5) +{3, -1, 1, 0, 16, 0, -1, -1, 0}, // (subrame number 4) +{3, -1, 1, 0, 8, 0, -1, -1, 0}, // (subrame number 3) +{3, -1, 1, 0, 4, 0, -1, -1, 0}, // (subrame number 2) +{3, -1, 1, 0, 66, 0, -1, -1, 0}, // (subrame number 1,6) +{3, -1, 1, 0, 66, 7, -1, -1, 0}, // (subrame number 1,6) +{3, -1, 1, 0, 528, 0, -1, -1, 0}, // (subrame number 4,9) +{3, -1, 1, 0, 264, 0, -1, -1, 0}, // (subrame number 3,8) +{3, -1, 1, 0, 132, 0, -1, -1, 0}, // (subrame number 2,7) +{3, -1, 1, 0, 768, 0, -1, -1, 0}, // (subrame number 8,9) +{3, -1, 1, 0, 784, 0, -1, -1, 0}, // (subrame number 4,8,9) +{3, -1, 1, 0, 536, 0, -1, -1, 0}, // (subrame number 3,4,9) +{3, -1, 1, 0, 896, 0, -1, -1, 0}, // (subrame number 7,8,9) +{3, -1, 1, 0, 792, 0, -1, -1, 0}, // (subrame number 3,4,8,9) +{3, -1, 1, 0, 594, 0, -1, -1, 0}, // (subrame number 1,4,6,9) +{3, -1, 1, 0, 682, 0, -1, -1, 0}, // (subrame number 1,3,5,7,9) +{0xa1, -1, 16, 1, 512, 0, 2, 6, 2}, // (subrame number 9) +{0xa1, -1, 8, 1, 512, 0, 2, 6, 2}, // (subrame number 9) +{0xa1, -1, 4, 1, 512, 0, 1, 6, 2}, // (subrame number 9) +{0xa1, -1, 2, 1, 512, 0, 1, 6, 2}, // (subrame number 9) +{0xa1, -1, 2, 1, 528, 7, 1, 3, 2}, // (subrame number 4,9) +{0xa1, -1, 2, 1, 640, 7, 1, 3, 2}, // (subrame number 7,9) +{0xa1, -1, 2, 1, 640, 0, 1, 6, 2}, // (subrame number 7,9) +{0xa1, -1, 2, 1, 768, 0, 2, 6, 2}, // (subrame number 8,9) +{0xa1, -1, 2, 1, 528, 0, 2, 6, 2}, // (subrame number 4,9) +{0xa1, -1, 2, 1, 924, 0, 1, 6, 2}, // (subrame number 2,3,4,7,8,9) +{0xa1, -1, 1, 0, 512, 0, 2, 6, 2}, // (subrame number 9) +{0xa1, -1, 1, 0, 512, 7, 1, 3, 2}, // (subrame number 9) +{0xa1, -1, 1, 0, 512, 0, 1, 6, 2}, // (subrame number 9) +{0xa1, -1, 1, 0, 768, 0, 2, 6, 2}, // (subrame number 8,9) +{0xa1, -1, 1, 0, 528, 0, 1, 6, 2}, // (subrame number 4,9) +{0xa1, -1, 1, 0, 640, 7, 1, 3, 2}, // (subrame number 7,9) +{0xa1, -1, 1, 0, 792, 0, 1, 6, 2}, // (subrame number 3,4,8,9) +{0xa1, -1, 1, 0, 792, 0, 2, 6, 2}, // (subrame number 3,4,8,9) +{0xa1, -1, 1, 0, 682, 0, 1, 6, 2}, // (subrame number 1,3,5,7,9) +{0xa1, -1, 1, 0, 1023, 7, 1, 3, 2}, // (subrame number 0,1,2,3,4,5,6,7,8,9) +{0xa2, -1, 16, 1, 512, 0, 2, 3, 4}, // (subrame number 9) +{0xa2, -1, 8, 1, 512, 0, 2, 3, 4}, // (subrame number 9) +{0xa2, -1, 4, 1, 512, 0, 1, 3, 4}, // (subrame number 9) +{0xa2, -1, 2, 1, 640, 0, 1, 3, 4}, // (subrame number 7,9) +{0xa2, -1, 2, 1, 768, 0, 2, 3, 4}, // (subrame number 8,9) +{0xa2, -1, 2, 1, 640, 9, 1, 1, 4}, // (subrame number 7,9) +{0xa2, -1, 2, 1, 528, 9, 1, 1, 4}, // (subrame number 4,9) +{0xa2, -1, 2, 1, 528, 0, 2, 3, 4}, // (subrame number 4,9) +{0xa2, -1, 16, 1, 924, 0, 1, 3, 4}, // (subrame number 2,3,4,7,8,9) +{0xa2, -1, 1, 0, 4, 0, 1, 3, 4}, // (subrame number 2) +{0xa2, -1, 1, 0, 128, 0, 1, 3, 4}, // (subrame number 7) +{0xa2, -1, 2, 1, 512, 0, 1, 3, 4}, // (subrame number 9) +{0xa2, -1, 1, 0, 512, 0, 2, 3, 4}, // (subrame number 9) +{0xa2, -1, 1, 0, 512, 9, 1, 1, 4}, // (subrame number 9) +{0xa2, -1, 1, 0, 512, 0, 1, 3, 4}, // (subrame number 9) +{0xa2, -1, 1, 0, 132, 0, 1, 3, 4}, // (subrame number 2,7) +{0xa2, -1, 1, 0, 768, 0, 2, 3, 4}, // (subrame number 8,9) +{0xa2, -1, 1, 0, 528, 0, 1, 3, 4}, // (subrame number 4,9) +{0xa2, -1, 1, 0, 640, 9, 1, 1, 4}, // (subrame number 7,9) +{0xa2, -1, 1, 0, 792, 0, 1, 3, 4}, // (subrame number 3,4,8,9) +{0xa2, -1, 1, 0, 792, 0, 2, 3, 4}, // (subrame number 3,4,8,9) +{0xa2, -1, 1, 0, 682, 0, 1, 3, 4}, // (subrame number 1,3,5,7,9) +{0xa2, -1, 1, 0, 1023, 9, 1, 1, 4}, // (subrame number 0,1,2,3,4,5,6,7,8,9) +{0xa3, -1, 16, 1, 512, 0, 2, 2, 6}, // (subrame number 9) +{0xa3, -1, 8, 1, 512, 0, 2, 2, 6}, // (subrame number 9) +{0xa3, -1, 4, 1, 512, 0, 1, 2, 6}, // (subrame number 9) +{0xa3, -1, 2, 1, 528, 7, 1, 1, 6}, // (subrame number 4,9) +{0xa3, -1, 2, 1, 640, 7, 1, 1, 6}, // (subrame number 7,9) +{0xa3, -1, 2, 1, 640, 0, 1, 2, 6}, // (subrame number 7,9) +{0xa3, -1, 2, 1, 528, 0, 2, 2, 6}, // (subrame number 4,9) +{0xa3, -1, 2, 1, 768, 0, 2, 2, 6}, // (subrame number 8,9) +{0xa3, -1, 2, 1, 924, 0, 1, 2, 6}, // (subrame number 2,3,4,7,8,9) +{0xa3, -1, 1, 0, 4, 0, 1, 2, 6}, // (subrame number 2) +{0xa3, -1, 1, 0, 128, 0, 1, 2, 6}, // (subrame number 7) +{0xa3, -1, 2, 1, 512, 0, 1, 2, 6}, // (subrame number 9) +{0xa3, -1, 1, 0, 512, 0, 2, 2, 6}, // (subrame number 9) +{0xa3, -1, 1, 0, 512, 7, 1, 1, 6}, // (subrame number 9) +{0xa3, -1, 1, 0, 512, 0, 1, 2, 6}, // (subrame number 9) +{0xa3, -1, 1, 0, 132, 0, 1, 2, 6}, // (subrame number 2,7) +{0xa3, -1, 1, 0, 768, 0, 2, 2, 6}, // (subrame number 8,9) +{0xa3, -1, 1, 0, 528, 0, 1, 2, 6}, // (subrame number 4,9) +{0xa3, -1, 1, 0, 640, 7, 1, 1, 6}, // (subrame number 7,9) +{0xa3, -1, 1, 0, 792, 0, 1, 2, 6}, // (subrame number 3,4,8,9) +{0xa3, -1, 1, 0, 792, 0, 2, 2, 6}, // (subrame number 3,4,8,9) +{0xa3, -1, 1, 0, 682, 0, 1, 2, 6}, // (subrame number 1,3,5,7,9) +{0xa3, -1, 1, 0, 1023, 7, 1, 1, 6}, // (subrame number 0,1,2,3,4,5,6,7,8,9) +{0xb1, -1, 4, 1, 512, 2, 1, 6, 2}, // (subrame number 9) +{0xb1, -1, 2, 1, 512, 2, 1, 6, 2}, // (subrame number 9) +{0xb1, -1, 2, 1, 640, 2, 1, 6, 2}, // (subrame number 7,9) +{0xb1, -1, 2, 1, 528, 8, 1, 3, 2}, // (subrame number 4,9) +{0xb1, -1, 2, 1, 528, 2, 2, 6, 2}, // (subrame number 4,9) +{0xb1, -1, 1, 0, 512, 2, 2, 6, 2}, // (subrame number 9) +{0xb1, -1, 1, 0, 512, 8, 1, 3, 2}, // (subrame number 9) +{0xb1, -1, 1, 0, 512, 2, 1, 6, 2}, // (subrame number 9) +{0xb1, -1, 1, 0, 768, 2, 2, 6, 2}, // (subrame number 8,9) +{0xb1, -1, 1, 0, 528, 2, 1, 6, 2}, // (subrame number 4,9) +{0xb1, -1, 1, 0, 640, 8, 1, 3, 2}, // (subrame number 7,9) +{0xb1, -1, 1, 0, 682, 2, 1, 6, 2}, // (subrame number 1,3,5,7,9) +{0xb4, -1, 16, 1, 512, 0, 2, 1, 12}, // (subrame number 9) +{0xb4, -1, 8, 1, 512, 0, 2, 1, 12}, // (subrame number 9) +{0xb4, -1, 4, 1, 512, 2, 1, 1, 12}, // (subrame number 9) +{0xb4, -1, 2, 1, 512, 0, 1, 1, 12}, // (subrame number 9) +{0xb4, -1, 2, 1, 512, 2, 1, 1, 12}, // (subrame number 9) +{0xb4, -1, 2, 1, 640, 2, 1, 1, 12}, // (subrame number 7,9) +{0xb4, -1, 2, 1, 528, 2, 1, 1, 12}, // (subrame number 4,9) +{0xb4, -1, 2, 1, 528, 0, 2, 1, 12}, // (subrame number 4,9) +{0xb4, -1, 2, 1, 768, 0, 2, 1, 12}, // (subrame number 8,9) +{0xb4, -1, 2, 1, 924, 0, 1, 1, 12}, // (subrame number 2,3,4,7,8,9) +{0xb4, -1, 1, 0, 2, 0, 1, 1, 12}, // (subrame number 1) +{0xb4, -1, 1, 0, 4, 0, 1, 1, 12}, // (subrame number 2) +{0xb4, -1, 1, 0, 16, 0, 1, 1, 12}, // (subrame number 4) +{0xb4, -1, 1, 0, 128, 0, 1, 1, 12}, // (subrame number 7) +{0xb4, -1, 1, 0, 512, 0, 1, 1, 12}, // (subrame number 9) +{0xb4, -1, 1, 0, 512, 2, 1, 1, 12}, // (subrame number 9) +{0xb4, -1, 1, 0, 512, 0, 2, 1, 12}, // (subrame number 9) +{0xb4, -1, 1, 0, 528, 2, 1, 1, 12}, // (subrame number 4,9) +{0xb4, -1, 1, 0, 640, 2, 1, 1, 12}, // (subrame number 7,9) +{0xb4, -1, 1, 0, 768, 0, 2, 1, 12}, // (subrame number 8,9) +{0xb4, -1, 1, 0, 792, 2, 1, 1, 12}, // (subrame number 3,4,8,9) +{0xb4, -1, 1, 0, 682, 2, 1, 1, 12}, // (subrame number 1,3,5,7,9) +{0xb4, -1, 1, 0, 1023, 0, 2, 1, 12}, // (subrame number 0,1,2,3,4,5,6,7,8,9) +{0xb4, -1, 1, 0, 1023, 2, 1, 1, 12}, // (subrame number 0,1,2,3,4,5,6,7,8,9) +{0xc0, -1, 16, 1, 512, 2, 2, 6, 2}, // (subrame number 9) +{0xc0, -1, 8, 1, 512, 2, 2, 6, 2}, // (subrame number 9) +{0xc0, -1, 4, 1, 512, 2, 1, 6, 2}, // (subrame number 9) +{0xc0, -1, 2, 1, 512, 2, 1, 6, 2}, // (subrame number 9) +{0xc0, -1, 2, 1, 768, 2, 2, 6, 2}, // (subrame number 8,9) +{0xc0, -1, 2, 1, 640, 2, 1, 6, 2}, // (subrame number 7,9) +{0xc0, -1, 2, 1, 640, 8, 1, 3, 2}, // (subrame number 7,9) +{0xc0, -1, 2, 1, 528, 8, 1, 3, 2}, // (subrame number 4,9) +{0xc0, -1, 2, 1, 528, 2, 2, 6, 2}, // (subrame number 4,9) +{0xc0, -1, 2, 1, 924, 2, 1, 6, 2}, // (subrame number 2,3,4,7,8,9) +{0xc0, -1, 1, 0, 512, 2, 2, 6, 2}, // (subrame number 9) +{0xc0, -1, 1, 0, 512, 8, 1, 3, 2}, // (subrame number 9) +{0xc0, -1, 1, 0, 512, 2, 1, 6, 2}, // (subrame number 9) +{0xc0, -1, 1, 0, 768, 2, 2, 6, 2}, // (subrame number 8,9) +{0xc0, -1, 1, 0, 528, 2, 1, 6, 2}, // (subrame number 4,9) +{0xc0, -1, 1, 0, 640, 8, 1, 3, 2}, // (subrame number 7,9) +{0xc0, -1, 1, 0, 792, 2, 1, 6, 2}, // (subrame number 3,4,8,9) +{0xc0, -1, 1, 0, 792, 2, 2, 6, 2}, // (subrame number 3,4,8,9) +{0xc0, -1, 1, 0, 682, 2, 1, 6, 2}, // (subrame number 1,3,5,7,9) +{0xc0, -1, 1, 0, 1023, 8, 1, 3, 2}, // (subrame number 0,1,2,3,4,5,6,7,8,9) +{0xc2, -1, 16, 1, 512, 2, 2, 2, 6}, // (subrame number 9) +{0xc2, -1, 8, 1, 512, 2, 2, 2, 6}, // (subrame number 9) +{0xc2, -1, 4, 1, 512, 2, 1, 2, 6}, // (subrame number 9) +{0xc2, -1, 2, 1, 512, 2, 1, 2, 6}, // (subrame number 9) +{0xc2, -1, 2, 1, 768, 2, 2, 2, 6}, // (subrame number 8,9) +{0xc2, -1, 2, 1, 640, 2, 1, 2, 6}, // (subrame number 7,9) +{0xc2, -1, 2, 1, 640, 8, 1, 1, 6}, // (subrame number 7,9) +{0xc2, -1, 2, 1, 528, 8, 1, 1, 6}, // (subrame number 4,9) +{0xc2, -1, 2, 1, 528, 2, 2, 2, 6}, // (subrame number 4,9) +{0xc2, -1, 2, 1, 924, 2, 1, 2, 6}, // (subrame number 2,3,4,7,8,9) +{0xc2, -1, 8, 1, 512, 8, 2, 1, 6}, // (subrame number 9) +{0xc2, -1, 4, 1, 512, 8, 1, 1, 6}, // (subrame number 9) +{0xc2, -1, 1, 0, 512, 2, 2, 2, 6}, // (subrame number 9) +{0xc2, -1, 1, 0, 512, 8, 1, 1, 6}, // (subrame number 9) +{0xc2, -1, 1, 0, 512, 2, 1, 2, 6}, // (subrame number 9) +{0xc2, -1, 1, 0, 768, 2, 2, 2, 6}, // (subrame number 8,9) +{0xc2, -1, 1, 0, 528, 2, 1, 2, 6}, // (subrame number 4,9) +{0xc2, -1, 1, 0, 640, 8, 1, 1, 6}, // (subrame number 7,9) +{0xc2, -1, 1, 0, 792, 2, 1, 2, 6}, // (subrame number 3,4,8,9) +{0xc2, -1, 1, 0, 792, 2, 2, 2, 6}, // (subrame number 3,4,8,9) +{0xc2, -1, 1, 0, 682, 2, 1, 2, 6}, // (subrame number 1,3,5,7,9) +{0xc2, -1, 1, 0, 1023, 8, 1, 1, 6}, // (subrame number 0,1,2,3,4,5,6,7,8,9) +{0xa1, 0xb1, 2, 1, 512, 2, 1, 6, 2}, // (subrame number 9) +{0xa1, 0xb1, 2, 1, 528, 8, 1, 3, 2}, // (subrame number 4,9) +{0xa1, 0xb1, 2, 1, 640, 8, 1, 3, 2}, // (subrame number 7,9) +{0xa1, 0xb1, 2, 1, 640, 2, 1, 6, 2}, // (subrame number 7,9) +{0xa1, 0xb1, 2, 1, 528, 2, 2, 6, 2}, // (subrame number 4,9) +{0xa1, 0xb1, 2, 1, 768, 2, 2, 6, 2}, // (subrame number 8,9) +{0xa1, 0xb1, 1, 0, 512, 2, 2, 6, 2}, // (subrame number 9) +{0xa1, 0xb1, 1, 0, 512, 8, 1, 3, 2}, // (subrame number 9) +{0xa1, 0xb1, 1, 0, 512, 2, 1, 6, 2}, // (subrame number 9) +{0xa1, 0xb1, 1, 0, 768, 2, 2, 6, 2}, // (subrame number 8,9) +{0xa1, 0xb1, 1, 0, 528, 2, 1, 6, 2}, // (subrame number 4,9) +{0xa1, 0xb1, 1, 0, 640, 8, 1, 3, 2}, // (subrame number 7,9) +{0xa1, 0xb1, 1, 0, 792, 2, 2, 6, 2}, // (subrame number 3,4,8,9) +{0xa1, 0xb1, 1, 0, 682, 2, 1, 6, 2}, // (subrame number 1,3,5,7,9) +{0xa1, 0xb1, 1, 0, 1023, 8, 1, 3, 2}, // (subrame number 0,1,2,3,4,5,6,7,8,9) +{0xa2, 0xb2, 2, 1, 512, 0, 1, 3, 4}, // (subrame number 9) +{0xa2, 0xb2, 2, 1, 528, 6, 1, 2, 4}, // (subrame number 4,9) +{0xa2, 0xb2, 2, 1, 640, 6, 1, 2, 4}, // (subrame number 7,9) +{0xa2, 0xb2, 2, 1, 528, 0, 2, 3, 4}, // (subrame number 4,9) +{0xa2, 0xb2, 2, 1, 768, 0, 2, 3, 4}, // (subrame number 8,9) +{0xa2, 0xb2, 1, 0, 512, 0, 2, 3, 4}, // (subrame number 9) +{0xa2, 0xb2, 1, 0, 512, 6, 1, 2, 4}, // (subrame number 9) +{0xa2, 0xb2, 1, 0, 512, 0, 1, 3, 4}, // (subrame number 9) +{0xa2, 0xb2, 1, 0, 768, 0, 2, 3, 4}, // (subrame number 8,9) +{0xa2, 0xb2, 1, 0, 528, 0, 1, 3, 4}, // (subrame number 4,9) +{0xa2, 0xb2, 1, 0, 640, 6, 1, 2, 4}, // (subrame number 7,9) +{0xa2, 0xb2, 1, 0, 792, 0, 1, 3, 4}, // (subrame number 3,4,8,9) +{0xa2, 0xb2, 1, 0, 792, 0, 2, 3, 4}, // (subrame number 3,4,8,9) +{0xa2, 0xb2, 1, 0, 682, 0, 1, 3, 4}, // (subrame number 1,3,5,7,9) +{0xa2, 0xb2, 1, 0, 1023, 6, 1, 2, 4}, // (subrame number 0,1,2,3,4,5,6,7,8,9) +{0xa3, 0xb3, 2, 1, 512, 0, 1, 2, 6}, // (subrame number 9) +{0xa3, 0xb3, 2, 1, 528, 2, 1, 2, 6}, // (subrame number 4,9) +{0xa3, 0xb3, 2, 1, 640, 0, 1, 2, 6}, // (subrame number 7,9) +{0xa3, 0xb3, 2, 1, 640, 2, 1, 2, 6}, // (subrame number 7,9) +{0xa3, 0xb3, 2, 1, 528, 0, 2, 2, 6}, // (subrame number 4,9) +{0xa3, 0xb3, 2, 1, 768, 0, 2, 2, 6}, // (subrame number 8,9) +{0xa3, 0xb3, 1, 0, 512, 0, 2, 2, 6}, // (subrame number 9) +{0xa3, 0xb3, 1, 0, 512, 2, 1, 2, 6}, // (subrame number 9) +{0xa3, 0xb3, 1, 0, 512, 0, 1, 2, 6}, // (subrame number 9) +{0xa3, 0xb3, 1, 0, 768, 0, 2, 2, 6}, // (subrame number 8,9) +{0xa3, 0xb3, 1, 0, 528, 0, 1, 2, 6}, // (subrame number 4,9) +{0xa3, 0xb3, 1, 0, 640, 2, 1, 2, 6}, // (subrame number 7,9) +{0xa3, 0xb3, 1, 0, 792, 0, 2, 2, 6}, // (subrame number 3,4,8,9) +{0xa3, 0xb3, 1, 0, 682, 0, 1, 2, 6}, // (subrame number 1,3,5,7,9) +{0xa3, 0xb3, 1, 0, 1023, 2, 1, 2, 6} // (subrame number 0,1,2,3,4,5,6,7,8,9) +}; +// Table 6.3.3.2-4: Random access configurations for FR2 and unpaired spectrum +int64_t table_6_3_3_2_4_prachConfig_Index [256][10] = { +//format, format, x, y, y, SFN_nbr, star_symb, slots_sfn, occ_slot, duration +{0xa1, -1, 16, 1, -1, 567489872400, 0, 2, 6, 2}, // (subframe number :4,9,14,19,24,29,34,39) +{0xa1, -1, 16, 1, -1, 586406201480, 0, 1, 6, 2}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xa1, -1, 8, 1, 2, 550293209600, 0, 2, 6, 2}, // (subframe number :9,19,29,39) +{0xa1, -1, 8, 1, -1, 567489872400, 0, 2, 6, 2}, // (subframe number :4,9,14,19,24,29,34,39) +{0xa1, -1, 8, 1, -1, 586406201480, 0, 1, 6, 2}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xa1, -1, 4, 1, -1, 567489872400, 0, 1, 6, 2}, // (subframe number :4,9,14,19,24,29,34,39) +{0xa1, -1, 4, 1, -1, 567489872400, 0, 2, 6, 2}, // (subframe number :4,9,14,19,24,29,34,39) +{0xa1, -1, 4, 1, -1, 586406201480, 0, 1, 6, 2}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xa1, -1, 2, 1, -1, 551911719040, 0, 2, 6, 2}, // (subframe number :7,15,23,31,39) +{0xa1, -1, 2, 1, -1, 567489872400, 0, 1, 6, 2}, // (subframe number :4,9,14,19,24,29,34,39) +{0xa1, -1, 2, 1, -1, 567489872400, 0, 2, 6, 2}, // (subframe number :4,9,14,19,24,29,34,39) +{0xa1, -1, 2, 1, -1, 586406201480, 0, 1, 6, 2}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xa1, -1, 1, 0, -1, 549756338176, 7, 1, 3, 2}, // (subframe number :19,39) +{0xa1, -1, 1, 0, -1, 168, 0, 1, 6, 2}, // (subframe number :3,5,7) +{0xa1, -1, 1, 0, -1, 567489331200, 7, 1, 3, 2}, // (subframe number :24,29,34,39) +{0xa1, -1, 1, 0, -1, 550293209600, 7, 2, 3, 2}, // (subframe number :9,19,29,39) +{0xa1, -1, 1, 0, -1, 687195422720, 0, 1, 6, 2}, // (subframe number :17,19,37,39) +{0xa1, -1, 1, 0, -1, 550293209600, 0, 2, 6, 2}, // (subframe number :9,19,29,39) +{0xa1, -1, 1, 0, -1, 567489872400, 0, 1, 6, 2}, // (subframe number :4,9,14,19,24,29,34,39) +{0xa1, -1, 1, 0, -1, 567489872400, 7, 1, 3, 2}, // (subframe number :4,9,14,19,24,29,34,39) +{0xa1, -1, 1, 0, -1, 10920, 7, 1, 3, 2}, // (subframe number :3,5,7,9,11,13) +{0xa1, -1, 1, 0, -1, 586405642240, 7, 1, 3, 2}, // (subframe number :23,27,31,35,39) +{0xa1, -1, 1, 0, -1, 551911719040, 0, 1, 6, 2}, // (subframe number :7,15,23,31,39) +{0xa1, -1, 1, 0, -1, 586405642240, 0, 1, 6, 2}, // (subframe number :23,27,31,35,39) +{0xa1, -1, 1, 0, -1, 965830828032, 7, 2, 3, 2}, // (subframe number :13,14,15, 29,30,31,37,38,39) +{0xa1, -1, 1, 0, -1, 586406201480, 7, 1, 3, 2}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xa1, -1, 1, 0, -1, 586406201480, 0, 1, 6, 2}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xa1, -1, 1, 0, -1, 733007751850, 0, 1, 6, 2}, // (subframe number :1,3,5,7,…,37,39) +{0xa1, -1, 1, 0, -1, 1099511627775, 7, 1, 3, 2}, // (subframe number :0,1,2,…,39) +{0xa2, -1, 16, 1, -1, 567489872400, 0, 2, 3, 4}, // (subframe number :4,9,14,19,24,29,34,39) +{0xa2, -1, 16, 1, -1, 586406201480, 0, 1, 3, 4}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xa2, -1, 8, 1, -1, 567489872400, 0, 2, 3, 4}, // (subframe number :4,9,14,19,24,29,34,39) +{0xa2, -1, 8, 1, -1, 586406201480, 0, 1, 3, 4}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xa2, -1, 8, 1, 2, 550293209600, 0, 2, 3, 4}, // (subframe number :9,19,29,39) +{0xa2, -1, 4, 1, -1, 567489872400, 0, 1, 3, 4}, // (subframe number :4,9,14,19,24,29,34,39) +{0xa2, -1, 4, 1, -1, 567489872400, 0, 2, 3, 4}, // (subframe number :4,9,14,19,24,29,34,39) +{0xa2, -1, 4, 1, -1, 586406201480, 0, 1, 3, 4}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xa2, -1, 2, 1, -1, 551911719040, 0, 2, 3, 4}, // (subframe number :7,15,23,31,39) +{0xa2, -1, 2, 1, -1, 567489872400, 0, 1, 3, 4}, // (subframe number :4,9,14,19,24,29,34,39) +{0xa2, -1, 2, 1, -1, 567489872400, 0, 2, 3, 4}, // (subframe number :4,9,14,19,24,29,34,39) +{0xa2, -1, 2, 1, -1, 586406201480, 0, 1, 3, 4}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xa2, -1, 1, 0, -1, 549756338176, 5, 1, 2, 4}, // (subframe number :19,39) +{0xa2, -1, 1, 0, -1, 168, 0, 1, 3, 4}, // (subframe number :3,5,7) +{0xa2, -1, 1, 0, -1, 567489331200, 5, 1, 2, 4}, // (subframe number :24,29,34,39) +{0xa2, -1, 1, 0, -1, 550293209600, 5, 2, 2, 4}, // (subframe number :9,19,29,39) +{0xa2, -1, 1, 0, -1, 687195422720, 0, 1, 3, 4}, // (subframe number :17,19,37,39) +{0xa2, -1, 1, 0, -1, 550293209600, 0, 2, 3, 4}, // (subframe number :9, 19, 29, 39) +{0xa2, -1, 1, 0, -1, 551911719040, 0, 1, 3, 4}, // (subframe number :7,15,23,31,39) +{0xa2, -1, 1, 0, -1, 586405642240, 5, 1, 2, 4}, // (subframe number :23,27,31,35,39) +{0xa2, -1, 1, 0, -1, 586405642240, 0, 1, 3, 4}, // (subframe number :23,27,31,35,39) +{0xa2, -1, 1, 0, -1, 10920, 5, 1, 2, 4}, // (subframe number :3,5,7,9,11,13) +{0xa2, -1, 1, 0, -1, 10920, 0, 1, 3, 4}, // (subframe number :3,5,7,9,11,13) +{0xa2, -1, 1, 0, -1, 567489872400, 5, 1, 2, 4}, // (subframe number :4,9,14,19,24,29,34,39) +{0xa2, -1, 1, 0, -1, 567489872400, 0, 1, 3, 4}, // (subframe number :4,9,14,19,24,29,34,39) +{0xa2, -1, 1, 0, -1, 965830828032, 5, 2, 2, 4}, // (subframe number :13,14,15, 29,30,31,37,38,39) +{0xa2, -1, 1, 0, -1, 586406201480, 5, 1, 2, 4}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xa2, -1, 1, 0, -1, 586406201480, 0, 1, 3, 4}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xa2, -1, 1, 0, -1, 733007751850, 0, 1, 3, 4}, // (subframe number :1,3,5,7,…,37,39) +{0xa2, -1, 1, 0, -1, 1099511627775, 5, 1, 2, 4}, // (subframe number :0,1,2,…,39) +{0xa3, -1, 16, 1, -1, 567489872400, 0, 2, 2, 6}, // (subframe number :4,9,14,19,24,29,34,39) +{0xa3, -1, 16, 1, -1, 586406201480, 0, 1, 2, 6}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xa3, -1, 8, 1, -1, 567489872400, 0, 2, 2, 6}, // (subframe number :4,9,14,19,24,29,34,39) +{0xa3, -1, 8, 1, -1, 586406201480, 0, 1, 2, 6}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xa3, -1, 8, 1, 2, 550293209600, 0, 2, 2, 6}, // (subframe number :9,19,29,39) +{0xa3, -1, 4, 1, -1, 567489872400, 0, 1, 2, 6}, // (subframe number :4,9,14,19,24,29,34,39) +{0xa3, -1, 4, 1, -1, 567489872400, 0, 2, 2, 6}, // (subframe number :4,9,14,19,24,29,34,39) +{0xa3, -1, 4, 1, -1, 586406201480, 0, 1, 2, 6}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xa3, -1, 2, 1, -1, 567489872400, 0, 1, 2, 6}, // (subframe number :4,9,14,19,24,29,34,39) +{0xa3, -1, 2, 1, -1, 567489872400, 0, 2, 2, 6}, // (subframe number :4,9,14,19,24,29,34,39) +{0xa3, -1, 2, 1, -1, 586406201480, 0, 1, 2, 6}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xa3, -1, 1, 0, -1, 549756338176, 7, 1, 1, 6}, // (subframe number :19,39) +{0xa3, -1, 1, 0, -1, 168, 0, 1, 2, 6}, // (subframe number :3,5,7) +{0xa3, -1, 1, 0, -1, 10752, 2, 1, 2, 6}, // (subframe number :9,11,13) +{0xa3, -1, 1, 0, -1, 567489331200, 7, 1, 1, 6}, // (subframe number :24,29,34,39) +{0xa3, -1, 1, 0, -1, 550293209600, 7, 2, 1, 6}, // (subframe number :9,19,29,39) +{0xa3, -1, 1, 0, -1, 687195422720, 0, 1, 2, 6}, // (subframe number :17,19,37,39) +{0xa3, -1, 1, 0, -1, 550293209600, 0, 2, 2, 6}, // (subframe number :9,19,29,39) +{0xa3, -1, 1, 0, -1, 551911719040, 0, 1, 2, 6}, // (subframe number :7,15,23,31,39) +{0xa3, -1, 1, 0, -1, 586405642240, 7, 1, 1, 6}, // (subframe number :23,27,31,35,39) +{0xa3, -1, 1, 0, -1, 586405642240, 0, 1, 2, 6}, // (subframe number :23,27,31,35,39) +{0xa3, -1, 1, 0, -1, 10920, 0, 1, 2, 6}, // (subframe number :3,5,7,9,11,13) +{0xa3, -1, 1, 0, -1, 10920, 7, 1, 1, 6}, // (subframe number :3,5,7,9,11,13) +{0xa3, -1, 1, 0, -1, 567489872400, 0, 1, 2, 6}, // (subframe number :4,9,14,19,24,29,34,39) +{0xa3, -1, 1, 0, -1, 567489872400, 7, 1, 1, 6}, // (subframe number :4,9,14,19,24,29,34,39) +{0xa3, -1, 1, 0, -1, 965830828032, 7, 2, 1, 6}, // (subframe number :13,14,15, 29,30,31,37,38,39) +{0xa3, -1, 1, 0, -1, 586406201480, 7, 1, 1, 6}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xa3, -1, 1, 0, -1, 586406201480, 0, 1, 2, 6}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xa3, -1, 1, 0, -1, 733007751850, 0, 1, 2, 6}, // (subframe number :1,3,5,7,…,37,39) +{0xa3, -1, 1, 0, -1, 1099511627775, 7, 1, 1, 6}, // (subframe number :0,1,2,…,39) +{0xb1, -1, 16, 1, -1, 567489872400, 2, 2, 6, 2}, // (subframe number :4,9,14,19,24,29,34,39) +{0xb1, -1, 8, 1, -1, 567489872400, 2, 2, 6, 2}, // (subframe number :4,9,14,19,24,29,34,39) +{0xb1, -1, 8, 1, 2, 550293209600, 2, 2, 6, 2}, // (subframe number :9,19,29,39) +{0xb1, -1, 4, 1, -1, 567489872400, 2, 2, 6, 2}, // (subframe number :4,9,14,19,24,29,34,39) +{0xb1, -1, 2, 1, -1, 567489872400, 2, 2, 6, 2}, // (subframe number :4,9,14,19,24,29,34,39) +{0xb1, -1, 2, 1, -1, 586406201480, 2, 1, 6, 2}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xb1, -1, 1, 0, -1, 549756338176, 8, 1, 3, 2}, // (subframe number :19,39) +{0xb1, -1, 1, 0, -1, 168, 2, 1, 6, 2}, // (subframe number :3,5,7) +{0xb1, -1, 1, 0, -1, 567489331200, 8, 1, 3, 2}, // (subframe number :24,29,34,39) +{0xb1, -1, 1, 0, -1, 550293209600, 8, 2, 3, 2}, // (subframe number :9,19,29,39) +{0xb1, -1, 1, 0, -1, 687195422720, 2, 1, 6, 2}, // (subframe number :17,19,37,39) +{0xb1, -1, 1, 0, -1, 550293209600, 2, 2, 6, 2}, // (subframe number :9,19,29,39) +{0xb1, -1, 1, 0, -1, 551911719040, 2, 1, 6, 2}, // (subframe number :7,15,23,31,39) +{0xb1, -1, 1, 0, -1, 586405642240, 8, 1, 3, 2}, // (subframe number :23,27,31,35,39) +{0xb1, -1, 1, 0, -1, 586405642240, 2, 1, 6, 2}, // (subframe number :23,27,31,35,39) +{0xb1, -1, 1, 0, -1, 10920, 8, 1, 3, 2}, // (subframe number :3,5,7,9,11,13) +{0xb1, -1, 1, 0, -1, 567489872400, 8, 1, 3, 2}, // (subframe number :4,9,14,19,24,29,34,39) +{0xb1, -1, 1, 0, -1, 567489872400, 2, 1, 6, 2}, // (subframe number :4,9,14,19,24,29,34,39) +{0xb1, -1, 1, 0, -1, 586406201480, 8, 1, 3, 2}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xb1, -1, 1, 0, -1, 965830828032, 8, 2, 3, 2}, // (subframe number :13,14,15, 29,30,31,37,38,39) +{0xb1, -1, 1, 0, -1, 586406201480, 2, 1, 6, 2}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xb1, -1, 1, 0, -1, 733007751850, 2, 1, 6, 2}, // (subframe number :1,3,5,7,…,37,39) +{0xb1, -1, 1, 0, -1, 1099511627775, 8, 1, 3, 2}, // (subframe number :0,1,2,…,39) +{0xb4, -1, 16, 1, 2, 567489872400, 0, 2, 1, 12}, // (subframe number :4,9,14,19,24,29,34,39) +{0xb4, -1, 16, 1, 2, 586406201480, 0, 1, 1, 12}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xb4, -1, 8, 1, 2, 567489872400, 0, 2, 1, 12}, // (subframe number :4,9,14,19,24,29,34,39) +{0xb4, -1, 8, 1, 2, 586406201480, 0, 1, 1, 12}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xb4, -1, 8, 1, 2, 550293209600, 0, 2, 1, 12}, // (subframe number :9,19,29,39) +{0xb4, -1, 4, 1, -1, 567489872400, 0, 1, 1, 12}, // (subframe number :4,9,14,19,24,29,34,39) +{0xb4, -1, 4, 1, -1, 567489872400, 0, 2, 1, 12}, // (subframe number :4,9,14,19,24,29,34,39) +{0xb4, -1, 4, 1, 2, 586406201480, 0, 1, 1, 12}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xb4, -1, 2, 1, -1, 551911719040, 2, 2, 1, 12}, // (subframe number :7,15,23,31,39) +{0xb4, -1, 2, 1, -1, 567489872400, 0, 1, 1, 12}, // (subframe number :4,9,14,19,24,29,34,39) +{0xb4, -1, 2, 1, -1, 567489872400, 0, 2, 1, 12}, // (subframe number :4,9,14,19,24,29,34,39) +{0xb4, -1, 2, 1, -1, 586406201480, 0, 1, 1, 12}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xb4, -1, 1, 0, -1, 549756338176, 2, 2, 1, 12}, // (subframe number :19, 39) +{0xb4, -1, 1, 0, -1, 687195422720, 0, 1, 1, 12}, // (subframe number :17, 19, 37, 39) +{0xb4, -1, 1, 0, -1, 567489331200, 2, 1, 1, 12}, // (subframe number :24,29,34,39) +{0xb4, -1, 1, 0, -1, 550293209600, 2, 2, 1, 12}, // (subframe number :9,19,29,39) +{0xb4, -1, 1, 0, -1, 550293209600, 0, 2, 1, 12}, // (subframe number :9,19,29,39) +{0xb4, -1, 1, 0, -1, 551911719040, 0, 1, 1, 12}, // (subframe number :7,15,23,31,39) +{0xb4, -1, 1, 0, -1, 551911719040, 0, 2, 1, 12}, // (subframe number :7,15,23,31,39) +{0xb4, -1, 1, 0, -1, 586405642240, 0, 1, 1, 12}, // (subframe number :23,27,31,35,39) +{0xb4, -1, 1, 0, -1, 586405642240, 2, 2, 1, 12}, // (subframe number :23,27,31,35,39) +{0xb4, -1, 1, 0, -1, 698880, 0, 1, 1, 12}, // (subframe number :9,11,13,15,17,19) +{0xb4, -1, 1, 0, -1, 10920, 2, 1, 1, 12}, // (subframe number :3,5,7,9,11,13) +{0xb4, -1, 1, 0, -1, 567489872400, 0, 1, 1, 12}, // (subframe number :4,9,14,19,24,29,34,39) +{0xb4, -1, 1, 0, -1, 567489872400, 2, 2, 1, 12}, // (subframe number :4,9,14,19,24,29,34,39) +{0xb4, -1, 1, 0, -1, 965830828032, 2, 2, 1, 12}, // (subframe number :13,14,15, 29,30,31,37,38,39) +{0xb4, -1, 1, 0, -1, 586406201480, 0, 1, 1, 12}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xb4, -1, 1, 0, -1, 586406201480, 2, 1, 1, 12}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xb4, -1, 1, 0, -1, 44739240, 2, 1, 1, 12}, // (subframe number :3, 5, 7, …, 23,25) +{0xb4, -1, 1, 0, -1, 44739240, 0, 2, 1, 12}, // (subframe number :3, 5, 7, …, 23,25) +{0xb4, -1, 1, 0, -1, 733007751850, 0, 1, 1, 12}, // (subframe number :1,3,5,7,…,37,39) +{0xb4, -1, 1, 0, -1, 1099511627775, 2, 1, 1, 12}, // (subframe number :0, 1, 2,…, 39) +{0xc0, -1, 16, 1, -1, 567489872400, 0, 2, 7, 2}, // (subframe number :4,9,14,19,24,29,34,39) +{0xc0, -1, 16, 1, -1, 586406201480, 0, 1, 7, 2}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xc0, -1, 8, 1, -1, 567489872400, 0, 1, 7, 2}, // (subframe number :4,9,14,19,24,29,34,39) +{0xc0, -1, 8, 1, -1, 586406201480, 0, 1, 7, 2}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xc0, -1, 8, 1, 2, 550293209600, 0, 2, 7, 2}, // (subframe number :9,19,29,39) +{0xc0, -1, 4, 1, -1, 567489872400, 0, 1, 7, 2}, // (subframe number :4,9,14,19,24,29,34,39) +{0xc0, -1, 4, 1, -1, 567489872400, 0, 2, 7, 2}, // (subframe number :4,9,14,19,24,29,34,39) +{0xc0, -1, 4, 1, -1, 586406201480, 0, 1, 7, 2}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xc0, -1, 2, 1, -1, 551911719040, 0, 2, 7, 2}, // (subframe number :7,15,23,31,39) +{0xc0, -1, 2, 1, -1, 567489872400, 0, 1, 7, 2}, // (subframe number :4,9,14,19,24,29,34,39) +{0xc0, -1, 2, 1, -1, 567489872400, 0, 2, 7, 2}, // (subframe number :4,9,14,19,24,29,34,39) +{0xc0, -1, 2, 1, -1, 586406201480, 0, 1, 7, 2}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xc0, -1, 1, 0, -1, 549756338176, 8, 1, 3, 2}, // (subframe number :19,39) +{0xc0, -1, 1, 0, -1, 168, 0, 1, 7, 2}, // (subframe number :3,5,7) +{0xc0, -1, 1, 0, -1, 567489331200, 8, 1, 3, 2}, // (subframe number :24,29,34,39) +{0xc0, -1, 1, 0, -1, 550293209600, 8, 2, 3, 2}, // (subframe number :9,19,29,39) +{0xc0, -1, 1, 0, -1, 687195422720, 0, 1, 7, 2}, // (subframe number :17,19,37,39) +{0xc0, -1, 1, 0, -1, 550293209600, 0, 2, 7, 2}, // (subframe number :9,19,29,39) +{0xc0, -1, 1, 0, -1, 586405642240, 8, 1, 3, 2}, // (subframe number :23,27,31,35,39) +{0xc0, -1, 1, 0, -1, 551911719040, 0, 1, 7, 2}, // (subframe number :7,15,23,31,39) +{0xc0, -1, 1, 0, -1, 586405642240, 0, 1, 7, 2}, // (subframe number :23,27,31,35,39) +{0xc0, -1, 1, 0, -1, 10920, 8, 1, 3, 2}, // (subframe number :3,5,7,9,11,13) +{0xc0, -1, 1, 0, -1, 567489872400, 8, 1, 3, 2}, // (subframe number :4,9,14,19,24,29,34,39) +{0xc0, -1, 1, 0, -1, 567489872400, 0, 1, 7, 2}, // (subframe number :4,9,14,19,24,29,34,39) +{0xc0, -1, 1, 0, -1, 965830828032, 8, 2, 3, 2}, // (subframe number :13,14,15, 29,30,31,37,38,39) +{0xc0, -1, 1, 0, -1, 586406201480, 8, 1, 3, 2}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xc0, -1, 1, 0, -1, 586406201480, 0, 1, 7, 2}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xc0, -1, 1, 0, -1, 733007751850, 0, 1, 7, 2}, // (subframe number :1,3,5,7,…,37,39) +{0xc0, -1, 1, 0, -1, 1099511627775, 8, 1, 3, 2}, // (subframe number :0,1,2,…,39) +{0xc2, -1, 16, 1, -1, 567489872400, 0, 2, 2, 6}, // (subframe number :4,9,14,19,24,29,34,39) +{0xc2, -1, 16, 1, -1, 586406201480, 0, 1, 2, 6}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xc2, -1, 8, 1, -1, 567489872400, 0, 2, 2, 6}, // (subframe number :4,9,14,19,24,29,34,39) +{0xc2, -1, 8, 1, -1, 586406201480, 0, 1, 2, 6}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xc2, -1, 8, 1, 2, 550293209600, 0, 2, 2, 6}, // (subframe number :9,19,29,39) +{0xc2, -1, 4, 1, -1, 567489872400, 0, 1, 2, 6}, // (subframe number :4,9,14,19,24,29,34,39) +{0xc2, -1, 4, 1, -1, 567489872400, 0, 2, 2, 6}, // (subframe number :4,9,14,19,24,29,34,39) +{0xc2, -1, 4, 1, -1, 586406201480, 0, 1, 2, 6}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xc2, -1, 2, 1, -1, 551911719040, 2, 2, 2, 6}, // (subframe number :7,15,23,31,39) +{0xc2, -1, 2, 1, -1, 567489872400, 0, 1, 2, 6}, // (subframe number :4,9,14,19,24,29,34,39) +{0xc2, -1, 2, 1, -1, 567489872400, 0, 2, 2, 6}, // (subframe number :4,9,14,19,24,29,34,39) +{0xc2, -1, 2, 1, -1, 586406201480, 0, 1, 2, 6}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xc2, -1, 1, 0, -1, 549756338176, 2, 1, 2, 6}, // (subframe number :19,39) +{0xc2, -1, 1, 0, -1, 168, 0, 1, 2, 6}, // (subframe number :3,5,7) +{0xc2, -1, 1, 0, -1, 567489331200, 7, 1, 1, 6}, // (subframe number :24,29,34,39) +{0xc2, -1, 1, 0, -1, 550293209600, 7, 2, 1, 6}, // (subframe number :9,19,29,39) +{0xc2, -1, 1, 0, -1, 687195422720, 0, 1, 2, 6}, // (subframe number :17,19,37,39) +{0xc2, -1, 1, 0, -1, 550293209600, 2, 2, 2, 6}, // (subframe number :9,19,29,39) +{0xc2, -1, 1, 0, -1, 551911719040, 2, 1, 2, 6}, // (subframe number :7,15,23,31,39) +{0xc2, -1, 1, 0, -1, 10920, 7, 1, 1, 6}, // (subframe number :3,5,7,9,11,13) +{0xc2, -1, 1, 0, -1, 586405642240, 7, 2, 1, 6}, // (subframe number :23,27,31,35,39) +{0xc2, -1, 1, 0, -1, 586405642240, 0, 1, 2, 6}, // (subframe number :23,27,31,35,39) +{0xc2, -1, 1, 0, -1, 567489872400, 7, 2, 1, 6}, // (subframe number :4,9,14,19,24,29,34,39) +{0xc2, -1, 1, 0, -1, 567489872400, 2, 1, 2, 6}, // (subframe number :4,9,14,19,24,29,34,39) +{0xc2, -1, 1, 0, -1, 965830828032, 7, 2, 1, 6}, // (subframe number :13,14,15, 29,30,31,37,38,39) +{0xc2, -1, 1, 0, -1, 586406201480, 7, 1, 1, 6}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xc2, -1, 1, 0, -1, 586406201480, 0, 1, 2, 6}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xc2, -1, 1, 0, -1, 733007751850, 0, 1, 2, 6}, // (subframe number :1,3,5,7,…,37,39) +{0xc2, -1, 1, 0, -1, 1099511627775, 7, 1, 1, 6}, // (subframe number :0,1,2,…,39) +{0xa1, 0xb1, 16, 1, -1, 567489872400, 2, 1, 6, 2}, // (subframe number :4,9,14,19,24,29,34,39) +{0xa1, 0xb1, 16, 1, -1, 586406201480, 2, 1, 6, 2}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xa1, 0xb1, 8, 1, -1, 567489872400, 2, 1, 6, 2}, // (subframe number :4,9,14,19,24,29,34,39) +{0xa1, 0xb1, 8, 1, -1, 586406201480, 2, 1, 6, 2}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xa1, 0xb1, 4, 1, -1, 567489872400, 2, 1, 6, 2}, // (subframe number :4,9,14,19,24,29,34,39) +{0xa1, 0xb1, 4, 1, -1, 586406201480, 2, 1, 6, 2}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xa1, 0xb1, 2, 1, -1, 567489872400, 2, 1, 6, 2}, // (subframe number :4,9,14,19,24,29,34,39) +{0xa1, 0xb1, 1, 0, -1, 549756338176, 8, 1, 3, 2}, // (subframe number :19,39) +{0xa1, 0xb1, 1, 0, -1, 550293209600, 8, 1, 3, 2}, // (subframe number :9,19,29,39) +{0xa1, 0xb1, 1, 0, -1, 687195422720, 2, 1, 6, 2}, // (subframe number :17,19,37,39) +{0xa1, 0xb1, 1, 0, -1, 550293209600, 2, 2, 6, 2}, // (subframe number :9,19,29,39) +{0xa1, 0xb1, 1, 0, -1, 586405642240, 8, 1, 3, 2}, // (subframe number :23,27,31,35,39) +{0xa1, 0xb1, 1, 0, -1, 551911719040, 2, 1, 6, 2}, // (subframe number :7,15,23,31,39) +{0xa1, 0xb1, 1, 0, -1, 586405642240, 2, 1, 6, 2}, // (subframe number :23,27,31,35,39) +{0xa1, 0xb1, 1, 0, -1, 567489872400, 8, 1, 3, 2}, // (subframe number :4,9,14,19,24,29,34,39) +{0xa1, 0xb1, 1, 0, -1, 567489872400, 2, 1, 6, 2}, // (subframe number :4,9,14,19,24,29,34,39) +{0xa1, 0xb1, 1, 0, -1, 586406201480, 2, 1, 6, 2}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xa1, 0xb1, 1, 0, -1, 733007751850, 2, 1, 6, 2}, // (subframe number :1,3,5,7,…,37,39) +{0xa2, 0xb2, 16, 1, -1, 567489872400, 2, 1, 3, 4}, // (subframe number :4,9,14,19,24,29,34,39) +{0xa2, 0xb2, 16, 1, -1, 586406201480, 2, 1, 3, 4}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xa2, 0xb2, 8, 1, -1, 567489872400, 2, 1, 3, 4}, // (subframe number :4,9,14,19,24,29,34,39) +{0xa2, 0xb2, 8, 1, -1, 586406201480, 2, 1, 3, 4}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xa2, 0xb2, 4, 1, -1, 567489872400, 2, 1, 3, 4}, // (subframe number :4,9,14,19,24,29,34,39) +{0xa2, 0xb2, 4, 1, -1, 586406201480, 2, 1, 3, 4}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xa2, 0xb2, 2, 1, -1, 567489872400, 2, 1, 3, 4}, // (subframe number :4,9,14,19,24,29,34,39) +{0xa2, 0xb2, 1, 0, -1, 549756338176, 6, 1, 2, 4}, // (subframe number :19,39) +{0xa2, 0xb2, 1, 0, -1, 550293209600, 6, 1, 2, 4}, // (subframe number :9,19,29,39) +{0xa2, 0xb2, 1, 0, -1, 687195422720, 2, 1, 3, 4}, // (subframe number :17,19,37,39) +{0xa2, 0xb2, 1, 0, -1, 550293209600, 2, 2, 3, 4}, // (subframe number :9,19,29,39) +{0xa2, 0xb2, 1, 0, -1, 586405642240, 6, 1, 2, 4}, // (subframe number :23,27,31,35,39) +{0xa2, 0xb2, 1, 0, -1, 551911719040, 2, 1, 3, 4}, // (subframe number :7,15,23,31,39) +{0xa2, 0xb2, 1, 0, -1, 586405642240, 2, 1, 3, 4}, // (subframe number :23,27,31,35,39) +{0xa2, 0xb2, 1, 0, -1, 567489872400, 6, 1, 2, 4}, // (subframe number :4,9,14,19,24,29,34,39) +{0xa2, 0xb2, 1, 0, -1, 567489872400, 2, 1, 3, 4}, // (subframe number :4,9,14,19,24,29,34,39) +{0xa2, 0xb2, 1, 0, -1, 586406201480, 2, 1, 3, 4}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xa2, 0xb2, 1, 0, -1, 733007751850, 2, 1, 3, 4}, // (subframe number :1,3,5,7,…,37,39) +{0xa3, 0xb3, 16, 1, -1, 567489872400, 2, 1, 2, 6}, // (subframe number :4,9,14,19,24,29,34,39) +{0xa3, 0xb3, 16, 1, -1, 586406201480, 2, 1, 2, 6}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xa3, 0xb3, 8, 1, -1, 567489872400, 2, 1, 2, 6}, // (subframe number :4,9,14,19,24,29,34,39) +{0xa3, 0xb3, 8, 1, -1, 586406201480, 2, 1, 2, 6}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xa3, 0xb3, 4, 1, -1, 567489872400, 2, 1, 2, 6}, // (subframe number :4,9,14,19,24,29,34,39) +{0xa3, 0xb3, 4, 1, -1, 586406201480, 2, 1, 2, 6}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xa3, 0xb3, 2, 1, -1, 567489872400, 2, 1, 2, 6}, // (subframe number :4,9,14,19,24,29,34,39) +{0xa3, 0xb3, 1, 0, -1, 549756338176, 2, 1, 2, 6}, // (subframe number :19,39) +{0xa3, 0xb3, 1, 0, -1, 550293209600, 2, 1, 2, 6}, // (subframe number :9,19,29,39) +{0xa3, 0xb3, 1, 0, -1, 687195422720, 2, 1, 2, 6}, // (subframe number :17,19,37,39) +{0xa3, 0xb3, 1, 0, -1, 550293209600, 2, 2, 2, 6}, // (subframe number :9,19,29,39) +{0xa3, 0xb3, 1, 0, -1, 551911719040, 2, 1, 2, 6}, // (subframe number :7,15,23,31,39) +{0xa3, 0xb3, 1, 0, -1, 586405642240, 2, 1, 2, 6}, // (subframe number :23,27,31,35,39) +{0xa3, 0xb3, 1, 0, -1, 586405642240, 2, 2, 2, 6}, // (subframe number :23,27,31,35,39) +{0xa3, 0xb3, 1, 0, -1, 567489872400, 2, 1, 2, 6}, // (subframe number :4,9,14,19,24,29,34,39) +{0xa3, 0xb3, 1, 0, -1, 567489872400, 2, 2, 2, 6}, // (subframe number :4,9,14,19,24,29,34,39) +{0xa3, 0xb3, 1, 0, -1, 586406201480, 2, 1, 2, 6}, // (subframe number :3,7,11,15,19,23,27,31,35,39) +{0xa3, 0xb3, 1, 0, -1, 733007751850, 2, 1, 2, 6} // (subframe number :1,3,5,7,…,37,39) +}; + + +int get_format0(uint8_t index, + uint8_t unpaired){ + + uint16_t format; + if (unpaired) + format = table_6_3_3_2_3_prachConfig_Index[index][0]; + else + format = table_6_3_3_2_2_prachConfig_Index[index][0]; + + return format; +} + +void find_monitoring_periodicity_offset_common(NR_SearchSpace_t *ss, + uint16_t *slot_period, + uint16_t *offset) { + + switch(ss->monitoringSlotPeriodicityAndOffset->present) { + case NR_SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl1: + *slot_period = 1; + *offset = 0; + break; + case NR_SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl2: + *slot_period = 2; + *offset = ss->monitoringSlotPeriodicityAndOffset->choice.sl2; + break; + case NR_SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl4: + *slot_period = 4; + *offset = ss->monitoringSlotPeriodicityAndOffset->choice.sl4; + break; + case NR_SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl5: + *slot_period = 5; + *offset = ss->monitoringSlotPeriodicityAndOffset->choice.sl5; + break; + case NR_SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl8: + *slot_period = 8; + *offset = ss->monitoringSlotPeriodicityAndOffset->choice.sl8; + break; + case NR_SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl10: + *slot_period = 10; + *offset = ss->monitoringSlotPeriodicityAndOffset->choice.sl10; + break; + case NR_SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl16: + *slot_period = 16; + *offset = ss->monitoringSlotPeriodicityAndOffset->choice.sl16; + break; + case NR_SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl20: + *slot_period = 20; + *offset = ss->monitoringSlotPeriodicityAndOffset->choice.sl20; + break; + case NR_SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl40: + *slot_period = 40; + *offset = ss->monitoringSlotPeriodicityAndOffset->choice.sl40; + break; + case NR_SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl80: + *slot_period = 80; + *offset = ss->monitoringSlotPeriodicityAndOffset->choice.sl80; + break; + case NR_SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl160: + *slot_period = 160; + *offset = ss->monitoringSlotPeriodicityAndOffset->choice.sl160; + break; + case NR_SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl320: + *slot_period = 320; + *offset = ss->monitoringSlotPeriodicityAndOffset->choice.sl320; + break; + case NR_SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl640: + *slot_period = 640; + *offset = ss->monitoringSlotPeriodicityAndOffset->choice.sl640; + break; + case NR_SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl1280: + *slot_period = 1280; + *offset = ss->monitoringSlotPeriodicityAndOffset->choice.sl1280; + break; + case NR_SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl2560: + *slot_period = 2560; + *offset = ss->monitoringSlotPeriodicityAndOffset->choice.sl2560; + break; + default: + AssertFatal(1==0,"Invalid monitoring slot periodicity and offset value\n"); + break; + } +} + +int get_nr_prach_info_from_index(uint8_t index, + int frame, + int slot, + uint32_t pointa, + uint8_t mu, + uint8_t unpaired, + uint16_t *format, + uint8_t *start_symbol, + uint8_t *N_t_slot, + uint8_t *N_dur) { + + int x,y; + int64_t s_map; + uint8_t format2 = 0xff; + + if (pointa > 2016666) { //FR2 + int y2; + uint8_t slot_60khz; + x = table_6_3_3_2_4_prachConfig_Index[index][2]; + y = table_6_3_3_2_4_prachConfig_Index[index][3]; + y2 = table_6_3_3_2_4_prachConfig_Index[index][4]; + // checking n_sfn mod x = y + if ( (frame%x)==y || (frame%x)==y2 ) { + slot_60khz = slot >> (mu-2); // in table slots are numbered wrt 60kHz + s_map = table_6_3_3_2_4_prachConfig_Index[index][5]; + if ( ((s_map>>slot_60khz)&0x01) ) { + if (mu == 3) { + if ( (table_6_3_3_2_4_prachConfig_Index[index][7] == 1) && (slot%2 == 0) ) + return 0; // no prach in even slots @ 120kHz for 1 prach per 60khz slot + } + if (start_symbol != NULL && N_t_slot != NULL && N_dur != NULL && format != NULL){ + *start_symbol = table_6_3_3_2_4_prachConfig_Index[index][6]; + *N_t_slot = table_6_3_3_2_4_prachConfig_Index[index][8]; + *N_dur = table_6_3_3_2_4_prachConfig_Index[index][9]; + if (table_6_3_3_2_4_prachConfig_Index[index][1] != -1) + format2 = (uint8_t) table_6_3_3_2_4_prachConfig_Index[index][1]; + *format = ((uint8_t) table_6_3_3_2_4_prachConfig_Index[index][0]) | (format2<<8); + LOG_D(MAC,"Frame %d slot %d: Getting PRACH info from index %d absoluteFrequencyPointA %u mu %u frame_type %u start_symbol %u N_t_slot %u N_dur %u \n", frame, + slot, + index, + pointa, + mu, + unpaired, + *start_symbol, + *N_t_slot, + *N_dur); + } + return 1; + } + else + return 0; // no prach in current slot + } + else + return 0; // no prach in current frame + } + else { + uint8_t subframe; + if (unpaired) { + x = table_6_3_3_2_3_prachConfig_Index[index][2]; + y = table_6_3_3_2_3_prachConfig_Index[index][3]; + if ( (frame%x)==y ) { + subframe = slot >> mu; + s_map = table_6_3_3_2_3_prachConfig_Index[index][4]; + if ( (s_map>>subframe)&0x01 ) { + if (mu == 1) { + if ( (table_6_3_3_2_3_prachConfig_Index[index][6] <= 1) && (slot%2 == 0) ) + return 0; // no prach in even slots @ 30kHz for 1 prach per subframe + } + if (start_symbol != NULL && N_t_slot != NULL && N_dur != NULL && format != NULL){ + *start_symbol = table_6_3_3_2_3_prachConfig_Index[index][5]; + *N_t_slot = table_6_3_3_2_3_prachConfig_Index[index][7]; + *N_dur = table_6_3_3_2_3_prachConfig_Index[index][8]; + if (table_6_3_3_2_3_prachConfig_Index[index][1] != -1) + format2 = (uint8_t) table_6_3_3_2_3_prachConfig_Index[index][1]; + *format = ((uint8_t) table_6_3_3_2_3_prachConfig_Index[index][0]) | (format2<<8); + LOG_D(MAC,"Frame %d slot %d: Getting PRACH info from index %d (col 6 %ld) absoluteFrequencyPointA %u mu %u frame_type %u start_symbol %u N_t_slot %u N_dur %u \n", frame, + slot, + index, table_6_3_3_2_3_prachConfig_Index[index][6], + pointa, + mu, + unpaired, + *start_symbol, + *N_t_slot, + *N_dur); + } + return 1; + } + else + return 0; // no prach in current slot + } + else + return 0; // no prach in current frame + } + else { // FDD + x = table_6_3_3_2_2_prachConfig_Index[index][2]; + y = table_6_3_3_2_2_prachConfig_Index[index][3]; + if ( (frame%x)==y ) { + subframe = slot >> mu; + s_map = table_6_3_3_2_2_prachConfig_Index[index][4]; + if ( (s_map>>subframe)&0x01 ) { + if (mu == 1) { + if ( (table_6_3_3_2_2_prachConfig_Index[index][6] <= 1) && (slot%2 == 0) ) + return 0; // no prach in even slots @ 30kHz for 1 prach per subframe + } + if (start_symbol != NULL && N_t_slot != NULL && N_dur != NULL && format != NULL){ + *start_symbol = table_6_3_3_2_2_prachConfig_Index[index][5]; + *N_t_slot = table_6_3_3_2_2_prachConfig_Index[index][7]; + *N_dur = table_6_3_3_2_2_prachConfig_Index[index][8]; + if (table_6_3_3_2_2_prachConfig_Index[index][1] != -1) + format2 = (uint8_t) table_6_3_3_2_2_prachConfig_Index[index][1]; + *format = ((uint8_t) table_6_3_3_2_2_prachConfig_Index[index][0]) | (format2<<8); + LOG_D(MAC,"Frame %d slot %d: Getting PRACH info from index %d absoluteFrequencyPointA %u mu %u frame_type %u start_symbol %u N_t_slot %u N_dur %u \n", frame, + slot, + index, + pointa, + mu, + unpaired, + *start_symbol, + *N_t_slot, + *N_dur); + } + return 1; + } + else + return 0; // no prach in current slot + } + else + return 0; // no prach in current frame + } + } +} + +//Table 6.3.3.1-3: Mapping from logical index i to sequence number u for preamble formats with L_RA = 839 +uint16_t table_63313[838] = { +129, 710, 140, 699, 120, 719, 210, 629, 168, 671, 84 , 755, 105, 734, 93 , 746, 70 , 769, 60 , 779, +2 , 837, 1 , 838, 56 , 783, 112, 727, 148, 691, 80 , 759, 42 , 797, 40 , 799, 35 , 804, 73 , 766, +146, 693, 31 , 808, 28 , 811, 30 , 809, 27 , 812, 29 , 810, 24 , 815, 48 , 791, 68 , 771, 74 , 765, +178, 661, 136, 703, 86 , 753, 78 , 761, 43 , 796, 39 , 800, 20 , 819, 21 , 818, 95 , 744, 202, 637, +190, 649, 181, 658, 137, 702, 125, 714, 151, 688, 217, 622, 128, 711, 142, 697, 122, 717, 203, 636, +118, 721, 110, 729, 89 , 750, 103, 736, 61 , 778, 55 , 784, 15 , 824, 14 , 825, 12 , 827, 23 , 816, +34 , 805, 37 , 802, 46 , 793, 207, 632, 179, 660, 145, 694, 130, 709, 223, 616, 228, 611, 227, 612, +132, 707, 133, 706, 143, 696, 135, 704, 161, 678, 201, 638, 173, 666, 106, 733, 83 , 756, 91 , 748, +66 , 773, 53 , 786, 10 , 829, 9 , 830, 7 , 832, 8 , 831, 16 , 823, 47 , 792, 64 , 775, 57 , 782, +104, 735, 101, 738, 108, 731, 208, 631, 184, 655, 197, 642, 191, 648, 121, 718, 141, 698, 149, 690, +216, 623, 218, 621, 152, 687, 144, 695, 134, 705, 138, 701, 199, 640, 162, 677, 176, 663, 119, 720, +158, 681, 164, 675, 174, 665, 171, 668, 170, 669, 87 , 752, 169, 670, 88 , 751, 107, 732, 81 , 758, +82 , 757, 100, 739, 98 , 741, 71 , 768, 59 , 780, 65 , 774, 50 , 789, 49 , 790, 26 , 813, 17 , 822, +13 , 826, 6 , 833, 5 , 834, 33 , 806, 51 , 788, 75 , 764, 99 , 740, 96 , 743, 97 , 742, 166, 673, +172, 667, 175, 664, 187, 652, 163, 676, 185, 654, 200, 639, 114, 725, 189, 650, 115, 724, 194, 645, +195, 644, 192, 647, 182, 657, 157, 682, 156, 683, 211, 628, 154, 685, 123, 716, 139, 700, 212, 627, +153, 686, 213, 626, 215, 624, 150, 689, 225, 614, 224, 615, 221, 618, 220, 619, 127, 712, 147, 692, +124, 715, 193, 646, 205, 634, 206, 633, 116, 723, 160, 679, 186, 653, 167, 672, 79 , 760, 85 , 754, +77 , 762, 92 , 747, 58 , 781, 62 , 777, 69 , 770, 54 , 785, 36 , 803, 32 , 807, 25 , 814, 18 , 821, +11 , 828, 4 , 835, 3 , 836, 19 , 820, 22 , 817, 41 , 798, 38 , 801, 44 , 795, 52 , 787, 45 , 794, +63 , 776, 67 , 772, 72 , 767, 76 , 763, 94 , 745, 102, 737, 90 , 749, 109, 730, 165, 674, 111, 728, +209, 630, 204, 635, 117, 722, 188, 651, 159, 680, 198, 641, 113, 726, 183, 656, 180, 659, 177, 662, +196, 643, 155, 684, 214, 625, 126, 713, 131, 708, 219, 620, 222, 617, 226, 613, 230, 609, 232, 607, +262, 577, 252, 587, 418, 421, 416, 423, 413, 426, 411, 428, 376, 463, 395, 444, 283, 556, 285, 554, +379, 460, 390, 449, 363, 476, 384, 455, 388, 451, 386, 453, 361, 478, 387, 452, 360, 479, 310, 529, +354, 485, 328, 511, 315, 524, 337, 502, 349, 490, 335, 504, 324, 515, 323, 516, 320, 519, 334, 505, +359, 480, 295, 544, 385, 454, 292, 547, 291, 548, 381, 458, 399, 440, 380, 459, 397, 442, 369, 470, +377, 462, 410, 429, 407, 432, 281, 558, 414, 425, 247, 592, 277, 562, 271, 568, 272, 567, 264, 575, +259, 580, 237, 602, 239, 600, 244, 595, 243, 596, 275, 564, 278, 561, 250, 589, 246, 593, 417, 422, +248, 591, 394, 445, 393, 446, 370, 469, 365, 474, 300, 539, 299, 540, 364, 475, 362, 477, 298, 541, +312, 527, 313, 526, 314, 525, 353, 486, 352, 487, 343, 496, 327, 512, 350, 489, 326, 513, 319, 520, +332, 507, 333, 506, 348, 491, 347, 492, 322, 517, 330, 509, 338, 501, 341, 498, 340, 499, 342, 497, +301, 538, 366, 473, 401, 438, 371, 468, 408, 431, 375, 464, 249, 590, 269, 570, 238, 601, 234, 605, +257, 582, 273, 566, 255, 584, 254, 585, 245, 594, 251, 588, 412, 427, 372, 467, 282, 557, 403, 436, +396, 443, 392, 447, 391, 448, 382, 457, 389, 450, 294, 545, 297, 542, 311, 528, 344, 495, 345, 494, +318, 521, 331, 508, 325, 514, 321, 518, 346, 493, 339, 500, 351, 488, 306, 533, 289, 550, 400, 439, +378, 461, 374, 465, 415, 424, 270, 569, 241, 598, 231, 608, 260, 579, 268, 571, 276, 563, 409, 430, +398, 441, 290, 549, 304, 535, 308, 531, 358, 481, 316, 523, 293, 546, 288, 551, 284, 555, 368, 471, +253, 586, 256, 583, 263, 576, 242, 597, 274, 565, 402, 437, 383, 456, 357, 482, 329, 510, 317, 522, +307, 532, 286, 553, 287, 552, 266, 573, 261, 578, 236, 603, 303, 536, 356, 483, 355, 484, 405, 434, +404, 435, 406, 433, 235, 604, 267, 572, 302, 537, 309, 530, 265, 574, 233, 606, 367, 472, 296, 543, +336, 503, 305, 534, 373, 466, 280, 559, 279, 560, 419, 420, 240, 599, 258, 581, 229, 610 +}; + +uint8_t compute_nr_root_seq(NR_RACH_ConfigCommon_t *rach_config, + uint8_t nb_preambles, + uint8_t unpaired) { + + uint8_t config_index = rach_config->rach_ConfigGeneric.prach_ConfigurationIndex; + uint8_t ncs_index = rach_config->rach_ConfigGeneric.zeroCorrelationZoneConfig; + uint16_t format0 = get_format0(config_index, unpaired); + uint16_t NCS = get_NCS(ncs_index, format0, rach_config->restrictedSetConfig); + uint16_t L_ra = (rach_config->prach_RootSequenceIndex.present==NR_RACH_ConfigCommon__prach_RootSequenceIndex_PR_l139) ? 139 : 839; + uint16_t r,u,index,q,d_u,n_shift_ra,n_shift_ra_bar,d_start; + uint32_t w; + uint8_t found_preambles = 0; + uint8_t found_sequences = 0; + + if (rach_config->restrictedSetConfig == 0) { + if (NCS == 0) return nb_preambles; + else { + r = L_ra/NCS; + found_sequences = (nb_preambles/r) + (nb_preambles%r!=0); //ceil(nb_preambles/r) + printf(" found_sequences %u\n", found_sequences); + return (found_sequences); + } + } + else{ + index = rach_config->prach_RootSequenceIndex.choice.l839; + while (found_preambles < nb_preambles) { + u = table_63313[index%(L_ra-1)]; + + q = 0; + while (((q*u)%L_ra) != 1) q++; + if (q < 420) d_u = q; + else d_u = L_ra - q; + + uint16_t n_group_ra = 0; + if (rach_config->restrictedSetConfig == 1) { + if ( (d_u<280) && (d_u>=NCS) ) { + n_shift_ra = d_u/NCS; + d_start = (d_u<<1) + (n_shift_ra * NCS); + n_group_ra = L_ra/d_start; + n_shift_ra_bar = max(0,(L_ra-(d_u<<1)-(n_group_ra*d_start))/L_ra); + } else if ( (d_u>=280) && (d_u<=((L_ra - NCS)>>1)) ) { + n_shift_ra = (L_ra - (d_u<<1))/NCS; + d_start = L_ra - (d_u<<1) + (n_shift_ra * NCS); + n_group_ra = d_u/d_start; + n_shift_ra_bar = min(n_shift_ra,max(0,(d_u- (n_group_ra*d_start))/NCS)); + } else { + n_shift_ra = 0; + n_shift_ra_bar = 0; + } + w = n_shift_ra*n_group_ra + n_shift_ra_bar; + found_preambles += w; + found_sequences++; + } + else { + AssertFatal(1==0,"Procedure to find nb of sequences for restricted type B not implemented yet"); + } + } + printf(" found_sequences %u\n", found_sequences); + return found_sequences; + } +} + nr_bandentry_t nr_bandtable[] = { {1, 1920000, 1980000, 2110000, 2170000, 20, 422000, 100}, @@ -373,13 +1537,23 @@ int32_t get_nr_uldl_offset(int nr_bandP) void nr_get_tbs_dl(nfapi_nr_dl_tti_pdsch_pdu *pdsch_pdu, - int x_overhead) { + int x_overhead, + uint8_t numdmrscdmgroupnodata, + uint8_t tb_scaling) { LOG_D(MAC, "TBS calculation\n"); nfapi_nr_dl_tti_pdsch_pdu_rel15_t *pdsch_rel15 = &pdsch_pdu->pdsch_pdu_rel15; uint16_t N_PRB_oh = x_overhead; - uint8_t N_PRB_DMRS = (pdsch_rel15->dmrsConfigType == NFAPI_NR_DMRS_TYPE1)?6:4; //This only works for antenna port 1000 + uint8_t N_PRB_DMRS; + if (pdsch_rel15->dmrsConfigType == NFAPI_NR_DMRS_TYPE1) { + // if no data in dmrs cdm group is 1 only even REs have no data + // if no data in dmrs cdm group is 2 both odd and even REs have no data + N_PRB_DMRS = numdmrscdmgroupnodata*6; + } + else { + N_PRB_DMRS = numdmrscdmgroupnodata*4; + } uint8_t N_sh_symb = pdsch_rel15->NrOfSymbols; uint8_t Imcs = pdsch_rel15->mcsIndex[0]; uint16_t N_RE_prime = NR_NB_SC_PER_RB*N_sh_symb - N_PRB_DMRS - N_PRB_oh; @@ -401,8 +1575,9 @@ void nr_get_tbs_dl(nfapi_nr_dl_tti_pdsch_pdu *pdsch_pdu, R, pdsch_rel15->rbSize, N_sh_symb, - N_PRB_DMRS, + N_PRB_DMRS, // FIXME // This should be multiplied by the number of dmrs symbols N_PRB_oh, + tb_scaling, pdsch_rel15->nrOfLayers)>>3; pdsch_rel15->targetCodeRate[0] = R; @@ -441,92 +1616,156 @@ uint16_t Table_61412[28][2] = {{2,30},{2,40},{2,50},{2,64},{2,78},{2,99},{2,120} uint8_t nr_get_Qm_dl(uint8_t Imcs, uint8_t table_idx) { switch(table_idx) { case 0: + if (Imcs > 28) { + LOG_E(MAC, "Invalid MCS index %d for MCS table 0 (expected range [0,28])\n", Imcs); + Imcs = 28; + } return (Table_51311[Imcs][0]); break; case 1: + if (Imcs > 27) { + LOG_E(MAC, "Invalid MCS index %d for MCS table 1 (expected range [0,27])\n", Imcs); + Imcs = 27; + } return (Table_51312[Imcs][0]); break; case 2: + if (Imcs > 28) { + LOG_E(MAC, "Invalid MCS index %d for MCS table 2 (expected range [0,28])\n", Imcs); + Imcs = 28; + } return (Table_51313[Imcs][0]); break; default: - AssertFatal(0, "Invalid MCS table index %d (expected in range [1,3])\n", table_idx); + AssertFatal(0, "Invalid MCS table index %d (expected in range [0,2])\n", table_idx); } } uint32_t nr_get_code_rate_dl(uint8_t Imcs, uint8_t table_idx) { switch(table_idx) { case 0: + if (Imcs > 28) { + LOG_E(MAC, "Invalid MCS index %d for MCS table 0 (expected range [0,28])\n", Imcs); + Imcs = 28; + } return (Table_51311[Imcs][1]); break; case 1: + if (Imcs > 27) { + LOG_E(MAC, "Invalid MCS index %d for MCS table 1 (expected range [0,27])\n", Imcs); + Imcs = 27; + } return (Table_51312[Imcs][1]); break; case 2: + if (Imcs > 28) { + LOG_E(MAC, "Invalid MCS index %d for MCS table 2 (expected range [0,28])\n", Imcs); + Imcs = 28; + } return (Table_51313[Imcs][1]); break; default: - AssertFatal(0, "Invalid MCS table index %d (expected in range [1,3])\n", table_idx); + AssertFatal(0, "Invalid MCS table index %d (expected in range [0,2])\n", table_idx); } } uint8_t nr_get_Qm_ul(uint8_t Imcs, uint8_t table_idx) { switch(table_idx) { case 0: + if (Imcs > 28) { + LOG_E(MAC, "Invalid MCS index %d for MCS table 0 (expected range [0,28])\n", Imcs); + Imcs = 28; + } return (Table_51311[Imcs][0]); break; case 1: + if (Imcs > 27) { + LOG_E(MAC, "Invalid MCS index %d for MCS table 1 (expected range [0,27])\n", Imcs); + Imcs = 27; + } return (Table_51312[Imcs][0]); break; case 2: + if (Imcs > 28) { + LOG_E(MAC, "Invalid MCS index %d for MCS table 2 (expected range [0,28])\n", Imcs); + Imcs = 28; + } return (Table_51313[Imcs][0]); break; case 3: + if (Imcs > 27) { + LOG_E(MAC, "Invalid MCS index %d for MCS table 3 (expected range [0,27])\n", Imcs); + Imcs = 27; + } return (Table_61411[Imcs][0]); break; case 4: + if (Imcs > 27) { + LOG_E(MAC, "Invalid MCS index %d for MCS table 4 (expected range [0,27])\n", Imcs); + Imcs = 27; + } return (Table_61412[Imcs][0]); break; default: - AssertFatal(0, "Invalid MCS table index %d (expected in range [1,2])\n", table_idx); + AssertFatal(0, "Invalid MCS table index %d (expected in range [0,4])\n", table_idx); } } uint32_t nr_get_code_rate_ul(uint8_t Imcs, uint8_t table_idx) { switch(table_idx) { case 0: + if (Imcs > 28) { + LOG_E(MAC, "Invalid MCS index %d for MCS table 0 (expected range [0,28])\n", Imcs); + Imcs = 28; + } return (Table_51311[Imcs][1]); break; case 1: + if (Imcs > 27) { + LOG_E(MAC, "Invalid MCS index %d for MCS table 1 (expected range [0,27])\n", Imcs); + Imcs = 27; + } return (Table_51312[Imcs][1]); break; case 2: + if (Imcs > 28) { + LOG_E(MAC, "Invalid MCS index %d for MCS table 2 (expected range [0,28])\n", Imcs); + Imcs = 28; + } return (Table_51313[Imcs][1]); break; case 3: + if (Imcs > 27) { + LOG_E(MAC, "Invalid MCS index %d for MCS table 3 (expected range [0,27])\n", Imcs); + Imcs = 27; + } return (Table_61411[Imcs][1]); break; case 4: + if (Imcs > 27) { + LOG_E(MAC, "Invalid MCS index %d for MCS table 4 (expected range [0,27])\n", Imcs); + Imcs = 27; + } return (Table_61412[Imcs][1]); break; default: - AssertFatal(0, "Invalid MCS table index %d (expected in range [1,2])\n", table_idx); + AssertFatal(0, "Invalid MCS table index %d (expected in range [0,4])\n", table_idx); } } @@ -558,6 +1797,48 @@ int get_num_dmrs(uint16_t dmrs_mask ) { return(num_dmrs); } +// Table 5.1.2.2.1-1 38.214 +uint8_t getRBGSize(uint16_t bwp_size, long rbg_size_config) { + + AssertFatal(bwp_size<276,"BWP Size > 275\n"); + + if (bwp_size < 37) return (rbg_size_config ? 4 : 2); + if (bwp_size < 73) return (rbg_size_config ? 8 : 4); + if (bwp_size < 145) return (rbg_size_config ? 16 : 8); + else return 16; +} + +uint8_t getNRBG(uint16_t bwp_size, uint16_t bwp_start, long rbg_size_config) { + + uint8_t rbg_size = getRBGSize(bwp_size,rbg_size_config); + + return (uint8_t)ceil((bwp_size+(bwp_start % rbg_size))/rbg_size); +} + +uint8_t getAntPortBitWidth(NR_SetupRelease_DMRS_DownlinkConfig_t *typeA, NR_SetupRelease_DMRS_DownlinkConfig_t *typeB) { + + uint8_t nbitsA = 0; + uint8_t nbitsB = 0; + uint8_t type,length,nbits; + + if (typeA != NULL) { + type = (typeA->choice.setup->dmrs_Type==NULL) ? 1:2; + length = (typeA->choice.setup->maxLength==NULL) ? 1:2; + nbitsA = type + length + 2; + if (typeB == NULL) return nbitsA; + } + if (typeB != NULL) { + type = (typeB->choice.setup->dmrs_Type==NULL) ? 1:2; + length = (typeB->choice.setup->maxLength==NULL) ? 1:2; + nbitsB = type + length + 2; + if (typeA == NULL) return nbitsB; + } + + nbits = (nbitsA > nbitsB) ? nbitsA : nbitsB; + return nbits; +} + + /******************************************************************* * * NAME : get_l0_ul @@ -664,11 +1945,24 @@ uint8_t get_K_ptrs(uint16_t nrb0, uint16_t nrb1, uint16_t N_RB) { return 1; } -uint16_t nr_dci_size(nr_dci_format_t format, +uint16_t nr_dci_size(NR_ServingCellConfigCommon_t *scc, + NR_CellGroupConfig_t *secondaryCellGroup, + dci_pdu_rel15_t *dci_pdu, + nr_dci_format_t format, nr_rnti_type_t rnti_type, - uint16_t N_RB) { + uint16_t N_RB, + int bwp_id) { uint16_t size = 0; + uint16_t numRBG = 0; + long rbg_size_config; + int num_entries = 0; + int pusch_antenna_ports = 1; // TODO hardcoded number of antenna ports for pusch + NR_BWP_Downlink_t *bwp=secondaryCellGroup->spCellConfig->spCellConfigDedicated->downlinkBWP_ToAddModList->list.array[bwp_id-1]; + NR_BWP_Uplink_t *ubwp=secondaryCellGroup->spCellConfig->spCellConfigDedicated->uplinkConfig->uplinkBWP_ToAddModList->list.array[bwp_id-1]; + NR_PDSCH_Config_t *pdsch_config = bwp->bwp_Dedicated->pdsch_Config->choice.setup; + NR_PUSCH_Config_t *pusch_Config = ubwp->bwp_Dedicated->pusch_Config->choice.setup; + NR_SRS_Config_t *srs_config = ubwp->bwp_Dedicated->srs_Config->choice.setup; switch(format) { /*Only sizes for 0_0 and 1_0 are correct at the moment*/ @@ -676,30 +1970,199 @@ uint16_t nr_dci_size(nr_dci_format_t format, /// fixed: Format identifier 1, Hop flag 1, MCS 5, NDI 1, RV 2, HARQ PID 4, PUSCH TPC 2 Time Domain assgnmt 4 --20 size += 20; size += (uint8_t)ceil( log2( (N_RB*(N_RB+1))>>1 ) ); // Freq domain assignment -- hopping scenario to be updated - size += nr_dci_size(NR_DL_DCI_FORMAT_1_0, rnti_type, N_RB) - size; // Padding to match 1_0 size + size += nr_dci_size(scc,secondaryCellGroup,dci_pdu,NR_DL_DCI_FORMAT_1_0, rnti_type, N_RB, bwp_id) - size; // Padding to match 1_0 size // UL/SUL indicator assumed to be 0 break; case NR_UL_DCI_FORMAT_0_1: - /// fixed: Format identifier 1, MCS 5, NDI 1, RV 2, HARQ PID 4, PUSCH TPC 2, SRS request 2 --17 - size += 17; + /// fixed: Format identifier 1, MCS 5, NDI 1, RV 2, HARQ PID 4, PUSCH TPC 2, ULSCH indicator 1 --16 + size += 16; // Carrier indicator + if (secondaryCellGroup->spCellConfig->spCellConfigDedicated->crossCarrierSchedulingConfig != NULL) { + dci_pdu->carrier_indicator.nbits=3; + size += dci_pdu->carrier_indicator.nbits; + } // UL/SUL indicator + if (secondaryCellGroup->spCellConfig->spCellConfigDedicated->supplementaryUplink != NULL) { + dci_pdu->carrier_indicator.nbits=1; + size += dci_pdu->ul_sul_indicator.nbits; + } // BWP Indicator + uint8_t n_ul_bwp = secondaryCellGroup->spCellConfig->spCellConfigDedicated->uplinkConfig->uplinkBWP_ToAddModList->list.count; + if (n_ul_bwp < 2) + dci_pdu->bwp_indicator.nbits = n_ul_bwp; + else + dci_pdu->bwp_indicator.nbits = 2; + size += dci_pdu->bwp_indicator.nbits; // Freq domain assignment + if (secondaryCellGroup->spCellConfig->spCellConfigDedicated->uplinkConfig->initialUplinkBWP->pusch_Config->choice.setup->rbg_Size != NULL) + rbg_size_config = 1; + else + rbg_size_config = 0; + numRBG = getNRBG(NRRIV2BW(ubwp->bwp_Common->genericParameters.locationAndBandwidth,275), + NRRIV2PRBOFFSET(ubwp->bwp_Common->genericParameters.locationAndBandwidth,275), + rbg_size_config); + if (pusch_Config->resourceAllocation == 0) + dci_pdu->frequency_domain_assignment.nbits = numRBG; + else if (pusch_Config->resourceAllocation == 1) + dci_pdu->frequency_domain_assignment.nbits = (int)ceil( log2( (N_RB*(N_RB+1))>>1 ) ); + else + dci_pdu->frequency_domain_assignment.nbits = ((int)ceil( log2( (N_RB*(N_RB+1))>>1 ) )>numRBG) ? (int)ceil( log2( (N_RB*(N_RB+1))>>1 ) )+1 : numRBG+1; + size += dci_pdu->frequency_domain_assignment.nbits; // Time domain assignment - // VRB to PRB mapping + if (pusch_Config->pusch_TimeDomainAllocationList==NULL) { + if (ubwp->bwp_Common->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList==NULL) + num_entries = 16; // num of entries in default table + else + num_entries = ubwp->bwp_Common->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.count; + } + else + num_entries = pusch_Config->pusch_TimeDomainAllocationList->choice.setup->list.count; + dci_pdu->time_domain_assignment.nbits = (int)ceil(log2(num_entries)); + size += dci_pdu->time_domain_assignment.nbits; // Frequency Hopping flag + if ((pusch_Config->frequencyHopping!=NULL) && (pusch_Config->resourceAllocation != NR_PUSCH_Config__resourceAllocation_resourceAllocationType0)) { + dci_pdu->frequency_hopping_flag.nbits = 1; + size += 1; + } // 1st DAI + if (secondaryCellGroup->physicalCellGroupConfig->pdsch_HARQ_ACK_Codebook==NR_PhysicalCellGroupConfig__pdsch_HARQ_ACK_Codebook_dynamic) + dci_pdu->dai[0].nbits = 2; + else + dci_pdu->dai[0].nbits = 1; + size += dci_pdu->dai[0].nbits; // 2nd DAI + if (secondaryCellGroup->spCellConfig->spCellConfigDedicated->pdsch_ServingCellConfig->choice.setup->codeBlockGroupTransmission != NULL) { //TODO not sure about that + dci_pdu->dai[1].nbits = 2; + size += dci_pdu->dai[1].nbits; + } // SRS resource indicator + if (pusch_Config->txConfig != NULL){ + int count=0; + if (*pusch_Config->txConfig == NR_PUSCH_Config__txConfig_codebook){ + for (int i=0; isrs_ResourceSetToAddModList->list.count; i++) { + if (srs_config->srs_ResourceSetToAddModList->list.array[i]->usage == NR_SRS_ResourceSet__usage_codebook) + count++; + } + if (count>1) { + dci_pdu->srs_resource_indicator.nbits = 1; + size += dci_pdu->srs_resource_indicator.nbits; + } + } + else { + int lmin,Lmax = 0; + int lsum = 0; + if ( secondaryCellGroup->spCellConfig->spCellConfigDedicated->uplinkConfig->pusch_ServingCellConfig != NULL) { + if ( secondaryCellGroup->spCellConfig->spCellConfigDedicated->uplinkConfig->pusch_ServingCellConfig->choice.setup->ext1->maxMIMO_Layers != NULL) + Lmax = *secondaryCellGroup->spCellConfig->spCellConfigDedicated->uplinkConfig->pusch_ServingCellConfig->choice.setup->ext1->maxMIMO_Layers; + else + AssertFatal(1==0,"MIMO on PUSCH not supported, maxMIMO_Layers needs to be set to 1\n"); + } + else + AssertFatal(1==0,"MIMO on PUSCH not supported, maxMIMO_Layers needs to be set to 1\n"); + for (int i=0; isrs_ResourceSetToAddModList->list.count; i++) { + if (srs_config->srs_ResourceSetToAddModList->list.array[i]->usage == NR_SRS_ResourceSet__usage_nonCodebook) + count++; + if (count < Lmax) lmin = count; + else lmin = Lmax; + for (int k=1;k<=lmin;k++) { + lsum += binomial(count,k); + } + } + dci_pdu->srs_resource_indicator.nbits = (int)ceil(log2(lsum)); + size += dci_pdu->srs_resource_indicator.nbits; + } + } // Precoding info and number of layers + long transformPrecoder; + if (pusch_Config->transformPrecoder == NULL){ + // if transform precoder is null, apply the values from msg3 + if(scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->msg3_transformPrecoder == NULL) + transformPrecoder = 1; + else + transformPrecoder = 0; + } + else + transformPrecoder = *pusch_Config->transformPrecoder; + if (pusch_Config->txConfig != NULL){ + if (*pusch_Config->txConfig == NR_PUSCH_Config__txConfig_codebook){ + if (pusch_antenna_ports > 1) { + if (pusch_antenna_ports == 4) { + if ((transformPrecoder == NR_PUSCH_Config__transformPrecoder_disabled) && (*pusch_Config->maxRank>1)) + dci_pdu->precoding_information.nbits = 6-(*pusch_Config->codebookSubset); + else { + if(*pusch_Config->codebookSubset == NR_PUSCH_Config__codebookSubset_nonCoherent) + dci_pdu->precoding_information.nbits = 2; + else + dci_pdu->precoding_information.nbits = 5-(*pusch_Config->codebookSubset); + } + } + else { + AssertFatal(pusch_antenna_ports==2,"Not valid number of antenna ports"); + if ((transformPrecoder == NR_PUSCH_Config__transformPrecoder_disabled) && (*pusch_Config->maxRank==2)) + dci_pdu->precoding_information.nbits = 4-(*pusch_Config->codebookSubset); + else + dci_pdu->precoding_information.nbits = 3-(*pusch_Config->codebookSubset); + } + } + } + } + size += dci_pdu->precoding_information.nbits; // Antenna ports + NR_DMRS_UplinkConfig_t *NR_DMRS_UplinkConfig = NULL; + int xa=0; + int xb=0; + if(pusch_Config->dmrs_UplinkForPUSCH_MappingTypeA != NULL){ + NR_DMRS_UplinkConfig = pusch_Config->dmrs_UplinkForPUSCH_MappingTypeA->choice.setup; + xa = ul_ant_bits(NR_DMRS_UplinkConfig,transformPrecoder); + } + if(pusch_Config->dmrs_UplinkForPUSCH_MappingTypeB != NULL){ + NR_DMRS_UplinkConfig = pusch_Config->dmrs_UplinkForPUSCH_MappingTypeB->choice.setup; + xb = ul_ant_bits(NR_DMRS_UplinkConfig,transformPrecoder); + } + if (xa>xb) + dci_pdu->antenna_ports.nbits = xa; + else + dci_pdu->antenna_ports.nbits = xb; + size += dci_pdu->antenna_ports.nbits; + // SRS request + if (secondaryCellGroup->spCellConfig->spCellConfigDedicated->supplementaryUplink==NULL) + dci_pdu->srs_request.nbits = 2; + else + dci_pdu->srs_request.nbits = 3; + size += dci_pdu->srs_request.nbits; // CSI request + if (secondaryCellGroup->spCellConfig->spCellConfigDedicated->csi_MeasConfig != NULL) { + if (secondaryCellGroup->spCellConfig->spCellConfigDedicated->csi_MeasConfig->choice.setup->reportTriggerSize != NULL) { + dci_pdu->csi_request.nbits = *secondaryCellGroup->spCellConfig->spCellConfigDedicated->csi_MeasConfig->choice.setup->reportTriggerSize; + size += dci_pdu->csi_request.nbits; + } + } // CBGTI + if (secondaryCellGroup->spCellConfig->spCellConfigDedicated->uplinkConfig->pusch_ServingCellConfig->choice.setup->codeBlockGroupTransmission != NULL) { + int num = secondaryCellGroup->spCellConfig->spCellConfigDedicated->uplinkConfig->pusch_ServingCellConfig->choice.setup->codeBlockGroupTransmission->choice.setup->maxCodeBlockGroupsPerTransportBlock; + dci_pdu->cbgti.nbits = 2 + (num<<1); + size += dci_pdu->cbgti.nbits; + } // PTRS - DMRS association + if ( (NR_DMRS_UplinkConfig->phaseTrackingRS == NULL && transformPrecoder == NR_PUSCH_Config__transformPrecoder_disabled) || + transformPrecoder == NR_PUSCH_Config__transformPrecoder_enabled || (*pusch_Config->maxRank==1) ) + dci_pdu->ptrs_dmrs_association.nbits = 0; + else + dci_pdu->ptrs_dmrs_association.nbits = 2; + size += dci_pdu->ptrs_dmrs_association.nbits; // beta offset indicator + if (pusch_Config->uci_OnPUSCH!=NULL){ + if (pusch_Config->uci_OnPUSCH->choice.setup->betaOffsets->present == NR_UCI_OnPUSCH__betaOffsets_PR_dynamic) { + dci_pdu->beta_offset_indicator.nbits = 2; + size += dci_pdu->beta_offset_indicator.nbits; + } + } // DMRS sequence init + if (transformPrecoder == NR_PUSCH_Config__transformPrecoder_disabled) { + dci_pdu->dmrs_sequence_initialization.nbits = 1; + size += dci_pdu->dmrs_sequence_initialization.nbits; + } break; case NR_DL_DCI_FORMAT_1_0: @@ -709,29 +2172,122 @@ uint16_t nr_dci_size(nr_dci_format_t format, break; case NR_DL_DCI_FORMAT_1_1: + // General note: 0 bits condition is ignored as default nbits is 0. + // Format identifier + size = 1; // Carrier indicator - size += 1; // Format identifier + if (secondaryCellGroup->spCellConfig->spCellConfigDedicated->crossCarrierSchedulingConfig != NULL) { + dci_pdu->carrier_indicator.nbits=3; + size += dci_pdu->carrier_indicator.nbits; + } // BWP Indicator + uint8_t n_dl_bwp = secondaryCellGroup->spCellConfig->spCellConfigDedicated->downlinkBWP_ToAddModList->list.count; + if (n_dl_bwp < 2) + dci_pdu->bwp_indicator.nbits = n_dl_bwp; + else + dci_pdu->bwp_indicator.nbits = 2; + size += dci_pdu->bwp_indicator.nbits; // Freq domain assignment - // Time domain assignment - // VRB to PRB mapping + rbg_size_config = secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->pdsch_Config->choice.setup->rbg_Size; + numRBG = getNRBG(NRRIV2BW(bwp->bwp_Common->genericParameters.locationAndBandwidth,275), + NRRIV2PRBOFFSET(bwp->bwp_Common->genericParameters.locationAndBandwidth,275), + rbg_size_config); + if (pdsch_config->resourceAllocation == 0) + dci_pdu->frequency_domain_assignment.nbits = numRBG; + else if (pdsch_config->resourceAllocation == 1) + dci_pdu->frequency_domain_assignment.nbits = (int)ceil( log2( (N_RB*(N_RB+1))>>1 ) ); + else + dci_pdu->frequency_domain_assignment.nbits = ((int)ceil( log2( (N_RB*(N_RB+1))>>1 ) )>numRBG) ? (int)ceil( log2( (N_RB*(N_RB+1))>>1 ) )+1 : numRBG+1; + size += dci_pdu->frequency_domain_assignment.nbits; + // Time domain assignment (see table 5.1.2.1.1-1 in 38.214 + if (pdsch_config->pdsch_TimeDomainAllocationList==NULL) { + if (bwp->bwp_Common->pdsch_ConfigCommon->choice.setup->pdsch_TimeDomainAllocationList==NULL) + num_entries = 16; // num of entries in default table + else + num_entries = bwp->bwp_Common->pdsch_ConfigCommon->choice.setup->pdsch_TimeDomainAllocationList->list.count; + } + else + num_entries = pdsch_config->pdsch_TimeDomainAllocationList->choice.setup->list.count; + dci_pdu->time_domain_assignment.nbits = (int)ceil(log2(num_entries)); + size += dci_pdu->time_domain_assignment.nbits; + // VRB to PRB mapping + if ((pdsch_config->resourceAllocation == 1) && (bwp->bwp_Dedicated->pdsch_Config->choice.setup->vrb_ToPRB_Interleaver != NULL)) { + dci_pdu->vrb_to_prb_mapping.nbits = 1; + size += dci_pdu->vrb_to_prb_mapping.nbits; + } // PRB bundling size indicator + if (pdsch_config->prb_BundlingType.present == NR_PDSCH_Config__prb_BundlingType_PR_dynamicBundling) { + dci_pdu->prb_bundling_size_indicator.nbits = 1; + size += dci_pdu->prb_bundling_size_indicator.nbits; + } // Rate matching indicator + NR_RateMatchPatternGroup_t *group1 = pdsch_config->rateMatchPatternGroup1; + NR_RateMatchPatternGroup_t *group2 = pdsch_config->rateMatchPatternGroup2; + if ((group1 != NULL) && (group2 != NULL)) + dci_pdu->rate_matching_indicator.nbits = 2; + if ((group1 != NULL) != (group2 != NULL)) + dci_pdu->rate_matching_indicator.nbits = 1; + size += dci_pdu->rate_matching_indicator.nbits; // ZP CSI-RS trigger - /// TB1- MCS 5, NDI 1, RV 2 + if (pdsch_config->aperiodic_ZP_CSI_RS_ResourceSetsToAddModList != NULL) { + uint8_t nZP = pdsch_config->aperiodic_ZP_CSI_RS_ResourceSetsToAddModList->list.count; + dci_pdu->zp_csi_rs_trigger.nbits = (int)ceil(log2(nZP+1)); + } + size += dci_pdu->zp_csi_rs_trigger.nbits; + // TB1- MCS 5, NDI 1, RV 2 size += 8; // TB2 - size += 4 ; // HARQ PID + long *maxCWperDCI = pdsch_config->maxNrofCodeWordsScheduledByDCI; + if ((maxCWperDCI != NULL) && (*maxCWperDCI == 2)) { + size += 8; + } + // HARQ PID + size += 4; // DAI - size += 2; // TPC PUCCH - size += 3; // PUCCH resource indicator - size += 3; // PDSCH to HARQ timing indicator + if (secondaryCellGroup->physicalCellGroupConfig->pdsch_HARQ_ACK_Codebook == NR_PhysicalCellGroupConfig__pdsch_HARQ_ACK_Codebook_dynamic) { // FIXME in case of more than one serving cell + dci_pdu->dai[0].nbits = 2; + size += dci_pdu->dai[0].nbits; + } + // TPC PUCCH + size += 2; + // PUCCH resource indicator + size += 3; + // PDSCH to HARQ timing indicator + uint8_t I = ubwp->bwp_Dedicated->pucch_Config->choice.setup->dl_DataToUL_ACK->list.count; + dci_pdu->pdsch_to_harq_feedback_timing_indicator.nbits = (int)ceil(log2(I)); + size += dci_pdu->pdsch_to_harq_feedback_timing_indicator.nbits; // Antenna ports + NR_SetupRelease_DMRS_DownlinkConfig_t *typeA = pdsch_config->dmrs_DownlinkForPDSCH_MappingTypeA; + NR_SetupRelease_DMRS_DownlinkConfig_t *typeB = pdsch_config->dmrs_DownlinkForPDSCH_MappingTypeB; + dci_pdu->antenna_ports.nbits = getAntPortBitWidth(typeA,typeB); + size += dci_pdu->antenna_ports.nbits; // Tx Config Indication - size += 2; // SRS request + long *isTciEnable = bwp->bwp_Dedicated->pdcch_Config->choice.setup->controlResourceSetToAddModList->list.array[bwp_id-1]->tci_PresentInDCI; + if (isTciEnable != NULL) { + dci_pdu->transmission_configuration_indication.nbits = 3; + size += dci_pdu->transmission_configuration_indication.nbits; + } + // SRS request + if (secondaryCellGroup->spCellConfig->spCellConfigDedicated->supplementaryUplink==NULL) + dci_pdu->srs_request.nbits = 2; + else + dci_pdu->srs_request.nbits = 3; + size += dci_pdu->srs_request.nbits; // CBGTI - // CBGFI - size += 1; // DMRS sequence init + if (secondaryCellGroup->spCellConfig->spCellConfigDedicated->pdsch_ServingCellConfig->choice.setup->codeBlockGroupTransmission != NULL) { + uint8_t maxCBGperTB = (secondaryCellGroup->spCellConfig->spCellConfigDedicated->pdsch_ServingCellConfig->choice.setup->codeBlockGroupTransmission->choice.setup->maxCodeBlockGroupsPerTransportBlock + 1) * 2; + long *maxCWperDCI_rrc = pdsch_config->maxNrofCodeWordsScheduledByDCI; + uint8_t maxCW = (maxCWperDCI_rrc == NULL) ? 1 : *maxCWperDCI_rrc; + dci_pdu->cbgti.nbits = maxCBGperTB * maxCW; + size += dci_pdu->cbgti.nbits; + // CBGFI + if (secondaryCellGroup->spCellConfig->spCellConfigDedicated->pdsch_ServingCellConfig->choice.setup->codeBlockGroupTransmission->choice.setup->codeBlockGroupFlushIndicator) { + dci_pdu->cbgfi.nbits = 1; + size += dci_pdu->cbgfi.nbits; + } + } + // DMRS sequence init + size += 1; break; case NR_DL_DCI_FORMAT_2_0: @@ -753,6 +2309,27 @@ uint16_t nr_dci_size(nr_dci_format_t format, return size; } +int ul_ant_bits(NR_DMRS_UplinkConfig_t *NR_DMRS_UplinkConfig, long transformPrecoder) { + + uint8_t type,maxl; + if(NR_DMRS_UplinkConfig->dmrs_Type == NULL) + type = 1; + else + type = 2; + if(NR_DMRS_UplinkConfig->maxLength == NULL) + maxl = 1; + else + maxl = 2; + if (transformPrecoder == NR_PUSCH_Config__transformPrecoder_disabled) + return( maxl+type+1); + else { + if (type==1) + return (maxl<<1); + else + AssertFatal(1==0,"DMRS type not valid for this choice"); + } +} + int tdd_period_to_num[8] = {500,625,1000,1250,2000,2500,5000,10000}; int is_nr_DL_slot(NR_ServingCellConfigCommon_t *scc,slot_t slot) { @@ -893,3 +2470,20 @@ int16_t fill_dmrs_mask(NR_PDSCH_Config_t *pdsch_Config,int dmrs_TypeA_Position,i AssertFatal(1==0,"Shouldn't get here\n"); return(-1); } + + +int binomial(int n, int k) { + int c = 1, i; + + if (k > n-k) + k = n-k; + + for (i = 1; i <= k; i++, n--) { + if (c/i > UINT_MAX/n) // return 0 on overflow + return 0; + + c = c / i * n + c % i * n / i; + } + return c; +} + diff --git a/openair2/LAYER2/NR_MAC_gNB/nr_mac_common.h b/openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h similarity index 50% rename from openair2/LAYER2/NR_MAC_gNB/nr_mac_common.h rename to openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h index 6b043963b0..a5e38bf128 100644 --- a/openair2/LAYER2/NR_MAC_gNB/nr_mac_common.h +++ b/openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h @@ -32,13 +32,9 @@ #ifndef __LAYER2_NR_MAC_COMMON_H__ #define __LAYER2_NR_MAC_COMMON_H__ -uint16_t config_bandwidth(int mu, int nb_rb, int nr_band); - -uint64_t from_nrarfcn(int nr_bandP, uint8_t scs_index, uint32_t dl_nrarfcn); - -uint32_t to_nrarfcn(int nr_bandP, uint64_t dl_CarrierFreq, uint8_t scs_index, uint32_t bw); - -int16_t fill_dmrs_mask(NR_PDSCH_Config_t *pdsch_Config,int dmrs_TypeA_Position,int NrOfSymbols); +#include "NR_PDSCH-Config.h" +#include "NR_CellGroupConfig.h" +#include "nr_mac.h" typedef enum { NR_DL_DCI_FORMAT_1_0 = 0, @@ -67,4 +63,58 @@ typedef enum { NR_RNTI_TPC_SRS } nr_rnti_type_t; +uint16_t config_bandwidth(int mu, int nb_rb, int nr_band); + +void get_band(uint64_t downlink_frequency, uint16_t *current_band, int32_t *current_offset, lte_frame_type_t *current_type); + +uint64_t from_nrarfcn(int nr_bandP, uint8_t scs_index, uint32_t dl_nrarfcn); + +uint32_t to_nrarfcn(int nr_bandP, uint64_t dl_CarrierFreq, uint8_t scs_index, uint32_t bw); + +int16_t fill_dmrs_mask(NR_PDSCH_Config_t *pdsch_Config,int dmrs_TypeA_Position,int NrOfSymbols); + +int is_nr_DL_slot(NR_ServingCellConfigCommon_t *scc,slot_t slotP); + +int is_nr_UL_slot(NR_ServingCellConfigCommon_t *scc,slot_t slotP); + +uint16_t nr_dci_size(NR_ServingCellConfigCommon_t *scc, + NR_CellGroupConfig_t *secondaryCellGroup, + dci_pdu_rel15_t *dci_pdu, + nr_dci_format_t format, + nr_rnti_type_t rnti_type, + uint16_t N_RB, + int bwp_id); + +void find_monitoring_periodicity_offset_common(NR_SearchSpace_t *ss, + uint16_t *slot_period, + uint16_t *offset); + +int get_nr_prach_info_from_index(uint8_t index, + int frame, + int slot, + uint32_t pointa, + uint8_t mu, + uint8_t unpaired, + uint16_t *format, + uint8_t *start_symbol, + uint8_t *N_t_slot, + uint8_t *N_dur); + +uint8_t compute_nr_root_seq(NR_RACH_ConfigCommon_t *rach_config, + uint8_t nb_preambles, + uint8_t unpaired); + +int ul_ant_bits(NR_DMRS_UplinkConfig_t *NR_DMRS_UplinkConfig,long transformPrecoder); + +int get_format0(uint8_t index, uint8_t unpaired); + +uint16_t get_NCS(uint8_t index, uint16_t format, uint8_t restricted_set_config); + +int get_num_dmrs(uint16_t dmrs_mask ); +uint8_t get_l0_ul(uint8_t mapping_type, uint8_t dmrs_typeA_position); +int32_t get_l_prime(uint8_t duration_in_symbols, uint8_t mapping_type, pusch_dmrs_AdditionalPosition_t additional_pos, pusch_maxLength_t pusch_maxLength); + +uint8_t get_L_ptrs(uint8_t mcs1, uint8_t mcs2, uint8_t mcs3, uint8_t I_mcs, uint8_t mcs_table); +uint8_t get_K_ptrs(uint16_t nrb0, uint16_t nrb1, uint16_t N_RB); + #endif diff --git a/openair2/LAYER2/NR_MAC_COMMON/nr_mac_extern.h b/openair2/LAYER2/NR_MAC_COMMON/nr_mac_extern.h index 63c81def82..5c714e4a93 100644 --- a/openair2/LAYER2/NR_MAC_COMMON/nr_mac_extern.h +++ b/openair2/LAYER2/NR_MAC_COMMON/nr_mac_extern.h @@ -19,12 +19,12 @@ * contact@openairinterface.org */ -/*! \file extern.h +/*! \file nr_mac_extern.h * \brief NR mac externs -* \author G. Casati +* \author Navid Nikaein, Raymond Knopp, Guido Casati * \date 2019 * \version 1.0 -* \email guido.casati@iis.fraunhofer.de +* \email navid.nikaein@eurecom.fr, guido.casati@iis.fraunhofer.de * @ingroup _mac */ @@ -32,10 +32,10 @@ #ifndef __NR_MAC_EXTERN_H__ #define __NR_MAC_EXTERN_H__ -//#include "PHY/defs_common.h" -#include "nr_mac.h" -#include "RRC/LTE/rrc_defs.h" #include "common/ran_context.h" +#include "nr_mac.h" + +/*#include "PHY/defs_common.h"*/ /* extern const uint32_t BSR_TABLE[BSR_TABLE_SIZE]; extern const uint32_t Extended_BSR_TABLE[BSR_TABLE_SIZE]; @@ -43,8 +43,6 @@ extern const uint8_t cqi2fmt0_agg[MAX_SUPPORTED_BW][CQI_VALUE_RANGE]; extern const uint8_t cqi2fmt1x_agg[MAX_SUPPORTED_BW][CQI_VALUE_RANGE]; extern const uint8_t cqi2fmt2x_agg[MAX_SUPPORTED_BW][CQI_VALUE_RANGE]; extern UE_RRC_INST *UE_rrc_inst; -extern eNB_ULSCH_INFO eNB_ulsch_info[NUMBER_OF_eNB_MAX][MAX_NUM_CCs][MAX_MOBILES_PER_ENB]; // eNBxUE = 8x8 -extern eNB_DLSCH_INFO eNB_dlsch_info[NUMBER_OF_eNB_MAX][MAX_NUM_CCs][MAX_MOBILES_PER_ENB]; // eNBxUE = 8x8 extern const int cqi_to_mcs[16]; extern uint32_t RRC_CONNECTION_FLAG; extern uint8_t rb_table[34]; @@ -52,6 +50,7 @@ extern mac_rlc_am_muilist_t rlc_am_mui; extern SCHEDULER_MODES global_scheduler_mode; extern unsigned char NB_UE_INST;*/ + extern unsigned char NB_INST; extern unsigned char NB_eNB_INST; extern unsigned char NB_RN_INST; @@ -60,8 +59,15 @@ extern unsigned short NODE_ID[1]; /* Scheduler */ extern RAN_CONTEXT_t RC; extern uint8_t nfapi_mode; +extern mac_rlc_am_muilist_t rlc_am_mui; +extern SCHEDULER_MODES global_scheduler_mode; /*#if defined(PRE_SCD_THREAD) +extern const int cqi_to_mcs[16]; +extern uint32_t RRC_CONNECTION_FLAG; +extern uint8_t rb_table[34]; + +#if defined(PRE_SCD_THREAD) extern uint16_t pre_nb_rbs_required[2][MAX_NUM_CCs][NUMBER_OF_UE_MAX]; extern uint8_t dlsch_ue_select_tbl_in_use; extern uint8_t new_dlsch_ue_select_tbl_in_use; @@ -69,4 +75,5 @@ extern boolean_t pre_scd_activeUE[NUMBER_OF_UE_MAX]; extern eNB_UE_STATS pre_scd_eNB_UE_stats[MAX_NUM_CCs][NUMBER_OF_UE_MAX]; #endif*/ + #endif //DEF_H diff --git a/openair2/LAYER2/NR_MAC_UE/config_ue.c b/openair2/LAYER2/NR_MAC_UE/config_ue.c index c983023034..bc98e16d39 100755 --- a/openair2/LAYER2/NR_MAC_UE/config_ue.c +++ b/openair2/LAYER2/NR_MAC_UE/config_ue.c @@ -31,12 +31,9 @@ */ //#include "mac_defs.h" -#include "mac_proto.h" - +#include "NR_MAC_UE/mac_proto.h" #include "NR_MAC-CellGroupConfig.h" - -#include "../NR_MAC_gNB/nr_mac_common.h" -#include "SCHED_NR/phy_frame_config_nr.h" +#include "LAYER2/NR_MAC_COMMON/nr_mac_common.h" int set_tdd_config_nr_ue(fapi_nr_config_request_t *cfg, int mu, @@ -151,8 +148,8 @@ void config_common_ue(NR_UE_MAC_INST_t *mac, NR_ServingCellConfigCommon_t *scc = mac->scc; int i; - mac->phy_config.Mod_id = module_id; - mac->phy_config.CC_id = cc_idP; + mac->phy_config.Mod_id = module_id; + mac->phy_config.CC_id = cc_idP; // carrier config @@ -203,12 +200,20 @@ void config_common_ue(NR_UE_MAC_INST_t *mac, } } + lte_frame_type_t frame_type; + uint16_t band; + int32_t offset; + + get_band((cfg->carrier_config.dl_frequency)*1000, + &band, + &offset, + &frame_type); + // cell config cfg->cell_config.phy_cell_id = *scc->physCellId; - cfg->cell_config.frame_duplex_type = 1; - + cfg->cell_config.frame_duplex_type = frame_type; // SSB config cfg->ssb_config.ss_pbch_power = scc->ss_PBCH_BlockPower; @@ -270,7 +275,132 @@ void config_common_ue(NR_UE_MAC_INST_t *mac, LOG_I(PHY,"TDD has been properly configurated\n"); } + // PRACH configuration + uint8_t nb_preambles = 64; + if(scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->totalNumberOfRA_Preambles != NULL) + nb_preambles = *scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->totalNumberOfRA_Preambles; + + cfg->prach_config.prach_sequence_length = scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->prach_RootSequenceIndex.present-1; + + if (scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->msg1_SubcarrierSpacing) + cfg->prach_config.prach_sub_c_spacing = *scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->msg1_SubcarrierSpacing; + else + cfg->prach_config.prach_sub_c_spacing = scc->downlinkConfigCommon->frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing; + + cfg->prach_config.restricted_set_config = scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->restrictedSetConfig; + + switch (scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->rach_ConfigGeneric.msg1_FDM) { + case 0 : + cfg->prach_config.num_prach_fd_occasions = 1; + break; + case 1 : + cfg->prach_config.num_prach_fd_occasions = 2; + break; + case 2 : + cfg->prach_config.num_prach_fd_occasions = 4; + break; + case 3 : + cfg->prach_config.num_prach_fd_occasions = 8; + break; + default: + AssertFatal(1==0,"msg1 FDM identifier %ld undefined (0,1,2,3) \n", scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->rach_ConfigGeneric.msg1_FDM); + } + + cfg->prach_config.num_prach_fd_occasions_list = (fapi_nr_num_prach_fd_occasions_t *) malloc(cfg->prach_config.num_prach_fd_occasions*sizeof(fapi_nr_num_prach_fd_occasions_t)); + for (i=0; iprach_config.num_prach_fd_occasions; i++) { + cfg->prach_config.num_prach_fd_occasions_list[i].num_prach_fd_occasions = i; + if (cfg->prach_config.prach_sequence_length) + cfg->prach_config.num_prach_fd_occasions_list[i].prach_root_sequence_index = scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->prach_RootSequenceIndex.choice.l139; + else + cfg->prach_config.num_prach_fd_occasions_list[i].prach_root_sequence_index = scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->prach_RootSequenceIndex.choice.l839; + + cfg->prach_config.num_prach_fd_occasions_list[i].k1 = scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->rach_ConfigGeneric.msg1_FrequencyStart; + cfg->prach_config.num_prach_fd_occasions_list[i].prach_zero_corr_conf = scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->rach_ConfigGeneric.zeroCorrelationZoneConfig; + cfg->prach_config.num_prach_fd_occasions_list[i].num_root_sequences = compute_nr_root_seq(scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup, nb_preambles, frame_type); + //cfg->prach_config.num_prach_fd_occasions_list[i].num_unused_root_sequences = ??? + } + + cfg->prach_config.ssb_per_rach = scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->ssb_perRACH_OccasionAndCB_PreamblesPerSSB->present-1; + +} + +/** \brief This function is relavant for the UE procedures for control. It loads the search spaces, the BWPs and the CORESETs into the MAC instance and + \brief performs assert checks on the relevant RRC configuration. + @param NR_UE_MAC_INST_t mac: pointer to local MAC instance + @returns void + */ +void config_control_ue(NR_UE_MAC_INST_t *mac){ + + uint8_t bwp_id = 1, coreset_id = 1, ss_id; + NR_ServingCellConfig_t *scd = mac->scg->spCellConfig->spCellConfigDedicated; + AssertFatal(scd->downlinkBWP_ToAddModList != NULL, "downlinkBWP_ToAddModList is null\n"); + AssertFatal(scd->downlinkBWP_ToAddModList->list.count == 1, "downlinkBWP_ToAddModList->list->count is %d\n", scd->downlinkBWP_ToAddModList->list.count); + + NR_BWP_DownlinkCommon_t *bwp_Common = scd->downlinkBWP_ToAddModList->list.array[bwp_id - 1]->bwp_Common; + AssertFatal(bwp_Common != NULL, "bwp_Common is null\n"); + + NR_BWP_DownlinkDedicated_t *dl_bwp_Dedicated = scd->downlinkBWP_ToAddModList->list.array[bwp_id - 1]->bwp_Dedicated; + AssertFatal(dl_bwp_Dedicated != NULL, "dl_bwp_Dedicated is null\n"); + + NR_SetupRelease_PDCCH_Config_t *pdcch_Config = dl_bwp_Dedicated->pdcch_Config; + AssertFatal(pdcch_Config != NULL, "pdcch_Config is null\n"); + + NR_SetupRelease_PDCCH_ConfigCommon_t *pdcch_ConfigCommon = bwp_Common->pdcch_ConfigCommon; + AssertFatal(pdcch_ConfigCommon != NULL, "pdcch_ConfigCommon is null\n"); + AssertFatal(pdcch_ConfigCommon->choice.setup->ra_SearchSpace != NULL, "ra_SearchSpace must be available in DL BWP\n"); + + struct NR_PDCCH_ConfigCommon__commonSearchSpaceList *commonSearchSpaceList = pdcch_ConfigCommon->choice.setup->commonSearchSpaceList; + AssertFatal(commonSearchSpaceList != NULL, "commonSearchSpaceList is null\n"); + AssertFatal(commonSearchSpaceList->list.count > 0, "PDCCH CSS list has 0 elements\n"); + + struct NR_PDCCH_Config__controlResourceSetToAddModList *controlResourceSetToAddModList = pdcch_Config->choice.setup->controlResourceSetToAddModList; + AssertFatal(controlResourceSetToAddModList != NULL, "controlResourceSetToAddModList is null\n"); + AssertFatal(controlResourceSetToAddModList->list.count == 1, "controlResourceSetToAddModList->list.count=%d\n", controlResourceSetToAddModList->list.count); + AssertFatal(controlResourceSetToAddModList->list.array[0] != NULL, "coreset[0][0] is null\n"); + + struct NR_PDCCH_Config__searchSpacesToAddModList *searchSpacesToAddModList = pdcch_Config->choice.setup->searchSpacesToAddModList; + AssertFatal(searchSpacesToAddModList != NULL, "searchSpacesToAddModList is null\n"); + AssertFatal(searchSpacesToAddModList->list.count > 0, "list of UE specifically configured Search Spaces is empty\n"); + AssertFatal(searchSpacesToAddModList->list.count < FAPI_NR_MAX_SS_PER_CORESET, "too many searchpaces per coreset %d\n", searchSpacesToAddModList->list.count); + + struct NR_UplinkConfig__uplinkBWP_ToAddModList *uplinkBWP_ToAddModList = scd->uplinkConfig->uplinkBWP_ToAddModList; + AssertFatal(uplinkBWP_ToAddModList != NULL, "uplinkBWP_ToAddModList is null\n"); + AssertFatal(uplinkBWP_ToAddModList->list.count == 1, "uplinkBWP_ToAddModList->list->count is %d\n", uplinkBWP_ToAddModList->list.count); + + // check pdcch_Config, pdcch_ConfigCommon and DL BWP + mac->DLbwp[0] = scd->downlinkBWP_ToAddModList->list.array[bwp_id - 1]; + mac->coreset[bwp_id - 1][coreset_id - 1] = controlResourceSetToAddModList->list.array[0]; + + // Check dedicated UL BWP and pass to MAC + mac->ULbwp[0] = uplinkBWP_ToAddModList->list.array[0]; + AssertFatal(mac->ULbwp[0]->bwp_Dedicated != NULL, "UL bwp_Dedicated is null\n"); + + // check available Search Spaces in the searchSpacesToAddModList and pass to MAC + // note: the network configures at most 10 Search Spaces per BWP per cell (including UE-specific and common Search Spaces). + for (ss_id = 0; ss_id < searchSpacesToAddModList->list.count; ss_id++) { + NR_SearchSpace_t *ss = searchSpacesToAddModList->list.array[ss_id]; + AssertFatal(ss->controlResourceSetId != NULL, "ss->controlResourceSetId is null\n"); + AssertFatal(ss->searchSpaceType != NULL, "ss->searchSpaceType is null\n"); + AssertFatal(*ss->controlResourceSetId == mac->coreset[bwp_id - 1][coreset_id - 1]->controlResourceSetId, "ss->controlResourceSetId is unknown\n"); + AssertFatal(ss->monitoringSymbolsWithinSlot != NULL, "NR_SearchSpace->monitoringSymbolsWithinSlot is null\n"); + AssertFatal(ss->monitoringSymbolsWithinSlot->buf != NULL, "NR_SearchSpace->monitoringSymbolsWithinSlot->buf is null\n"); + mac->SSpace[0][0][ss_id] = ss; + } + + // Check available CSSs in the commonSearchSpaceList (list of additional common search spaces) + // note: commonSearchSpaceList SIZE(1..4) + for (int css_id = 0; css_id < commonSearchSpaceList->list.count; css_id++) { + NR_SearchSpace_t *css = commonSearchSpaceList->list.array[css_id]; + AssertFatal(css->controlResourceSetId != NULL, "ss->controlResourceSetId is null\n"); + AssertFatal(*css->controlResourceSetId == mac->coreset[bwp_id - 1][coreset_id - 1]->controlResourceSetId, "ss->controlResourceSetId is unknown\n"); + AssertFatal(css->searchSpaceId != 0, "css->searchSpaceId is 0\n"); + AssertFatal(css->searchSpaceType != NULL, "css->searchSpaceType is null\n"); + AssertFatal(css->monitoringSymbolsWithinSlot != NULL, "css->monitoringSymbolsWithinSlot is null\n"); + AssertFatal(css->monitoringSymbolsWithinSlot->buf != NULL, "css->monitoringSymbolsWithinSlot->buf is null\n"); + mac->SSpace[0][0][ss_id] = css; + ss_id++; + } } int nr_rrc_mac_config_req_ue( @@ -281,28 +411,27 @@ int nr_rrc_mac_config_req_ue( // NR_ServingCellConfigCommon_t *sccP, // NR_MAC_CellGroupConfig_t *mac_cell_group_configP, // NR_PhysicalCellGroupConfig_t *phy_cell_group_configP, - NR_SpCellConfig_t *spCell_ConfigP ){ + NR_CellGroupConfig_t *cell_group_config ){ NR_UE_MAC_INST_t *mac = get_mac_inst(module_id); - // NR_ServingCellConfig_t *serving_cell_config = spcell_configP->spCellConfigDedicated; // TODO do something FAPI-like P5 L1/L2 config interface in config_si, config_mib, etc. - if(mibP != NULL){ mac->mib = mibP; // update by every reception } - - - if(spCell_ConfigP != NULL ){ - mac->servCellIndex = *spCell_ConfigP->servCellIndex; - if (spCell_ConfigP->reconfigurationWithSync) { - mac->scc = spCell_ConfigP->reconfigurationWithSync->spCellConfigCommon; + + if(cell_group_config != NULL ){ + mac->scg = cell_group_config; + mac->servCellIndex = *cell_group_config->spCellConfig->servCellIndex; + config_control_ue(mac); + if (cell_group_config->spCellConfig->reconfigurationWithSync) { + mac->rach_ConfigDedicated = cell_group_config->spCellConfig->reconfigurationWithSync->rach_ConfigDedicated->choice.uplink; + mac->scc = cell_group_config->spCellConfig->reconfigurationWithSync->spCellConfigCommon; config_common_ue(mac,module_id,cc_idP); - mac->crnti = spCell_ConfigP->reconfigurationWithSync->newUE_Identity; + mac->crnti = cell_group_config->spCellConfig->reconfigurationWithSync->newUE_Identity; LOG_I(MAC,"Configuring CRNTI %x\n",mac->crnti); } - mac->scd = spCell_ConfigP->spCellConfigDedicated; /* if(mac_cell_group_configP != NULL){ @@ -367,8 +496,8 @@ int nr_rrc_mac_config_req_ue( } } */ - } - + } + return 0; } diff --git a/openair2/LAYER2/NR_MAC_UE/mac_defs.h b/openair2/LAYER2/NR_MAC_UE/mac_defs.h index 405ea95eb1..e45f6a9b69 100755 --- a/openair2/LAYER2/NR_MAC_UE/mac_defs.h +++ b/openair2/LAYER2/NR_MAC_UE/mac_defs.h @@ -37,6 +37,21 @@ #include #include #include "platform_types.h" + +/* PHY */ +#include "PHY/defs_nr_common.h" + +/* IF */ +#include "NR_IF_Module.h" +#include "fapi_nr_ue_interface.h" + +/* MAC */ +#include "LAYER2/NR_MAC_COMMON/nr_mac.h" +#include "LAYER2/NR_MAC_COMMON/nr_mac_common.h" +#include "LAYER2/MAC/mac.h" +#include "NR_MAC_COMMON/nr_mac_extern.h" + +/* RRC */ #include "NR_DRX-Config.h" #include "NR_SchedulingRequestConfig.h" #include "NR_BSR-Config.h" @@ -46,13 +61,9 @@ #include "NR_MIB.h" #include "NR_MAC-CellGroupConfig.h" #include "NR_PhysicalCellGroupConfig.h" -#include "NR_SpCellConfig.h" +#include "NR_CellGroupConfig.h" #include "NR_ServingCellConfig.h" -#include "fapi_nr_ue_interface.h" -#include "NR_IF_Module.h" -#include "../NR_MAC_gNB/nr_mac_common.h" -#include "PHY/defs_nr_common.h" -#include "openair2/LAYER2/NR_MAC_COMMON/nr_mac.h" + #define NB_NR_UE_MAC_INST 1 /*!\brief Maximum number of logical channl group IDs */ @@ -61,6 +72,7 @@ /*!\brief value for indicating BSR Timer is not running */ #define NR_MAC_UE_BSR_TIMER_NOT_RUNNING (0xFFFF) + typedef enum { SFN_C_MOD_2_EQ_0, SFN_C_MOD_2_EQ_1, @@ -133,24 +145,27 @@ typedef struct { #define MAX_NUM_BWP 2 typedef enum { - RA_IDLE=0, - WAIT_RAR=1, - WAIT_CONTENTION_RESOLUTION=2 + RA_UE_IDLE = 0, + WAIT_RAR = 1, + WAIT_CONTENTION_RESOLUTION = 2, + RA_SUCCEEDED = 3 } RA_state_t; + /*!\brief Top level UE MAC structure */ typedef struct { NR_ServingCellConfigCommon_t *scc; - NR_ServingCellConfig_t *scd; + NR_CellGroupConfig_t *scg; + NR_RACH_ConfigDedicated_t *rach_ConfigDedicated; int servCellIndex; //// MAC config - NR_DRX_Config_t *drx_Config; + NR_DRX_Config_t *drx_Config; NR_SchedulingRequestConfig_t *schedulingRequestConfig; - NR_BSR_Config_t *bsr_Config; - NR_TAG_Config_t *tag_Config; - NR_PHR_Config_t *phr_Config; - NR_RNTI_Value_t *cs_RNTI; - NR_MIB_t *mib; + NR_BSR_Config_t *bsr_Config; + NR_TAG_Config_t *tag_Config; + NR_PHR_Config_t *phr_Config; + NR_RNTI_Value_t *cs_RNTI; + NR_MIB_t *mib; NR_BWP_Downlink_t *DLbwp[MAX_NUM_BWP]; NR_BWP_Uplink_t *ULbwp[MAX_NUM_BWP]; @@ -163,14 +178,69 @@ typedef struct { SFN_C_TYPE type0_pdcch_ss_sfn_c; uint32_t type0_pdcch_ss_n_c; uint32_t type0_pdcch_consecutive_slots; + + /* PDUs */ + /// Outgoing CCCH pdu for PHY + CCCH_PDU CCCH_pdu; + ULSCH_PDU ulsch_pdu; + + /* Random Access parameters */ /// state of RA procedure RA_state_t ra_state; - /// RA-rnti + /// RA rx frame offset: compensate RA rx offset introduced by OAI gNB. + uint8_t RA_offset; + /// RA-rnti uint16_t ra_rnti; - /// Temporary CRNTI + /// Temporary CRNTI uint16_t t_crnti; - /// CRNTI + /// CRNTI uint16_t crnti; + /// number of attempt for rach + uint8_t RA_attempt_number; + /// Random-access procedure flag + uint8_t RA_active; + /// Random-access window counter + int8_t RA_window_cnt; + /// Random-access Msg3 size in bytes + uint8_t RA_Msg3_size; + /// Random-access prachMaskIndex + uint8_t RA_prachMaskIndex; + /// Flag indicating Preamble set (A,B) used for first Msg3 transmission + uint8_t RA_usedGroupA; + /// BeamfailurerecoveryConfig + NR_BeamFailureRecoveryConfig_t RA_BeamFailureRecoveryConfig; + /// Preamble Tx Counter + uint8_t RA_PREAMBLE_TRANSMISSION_COUNTER; + /// Preamble Power Ramping Counter + uint8_t RA_PREAMBLE_POWER_RAMPING_COUNTER; + /// Random-access backoff counter + int16_t RA_backoff_indicator; + /// Random-access backoff counter + int16_t RA_backoff_cnt; + /// Random-access variable for window calculation (frame of last change in window counter) + uint32_t RA_tx_frame; + /// Random-access variable for window calculation (subframe of last change in window counter) + uint8_t RA_tx_subframe; + /// Random-access variable for backoff (frame of last change in backoff counter) + uint32_t RA_backoff_frame; + /// Random-access variable for backoff (subframe of last change in backoff counter) + uint8_t RA_backoff_subframe; + /// Random-access Group B maximum path-loss + uint16_t RA_maxPL; + /// Random-access Contention Resolution Timer active flag + uint8_t RA_contention_resolution_timer_active; + /// Random-access Contention Resolution Timer count value + uint8_t RA_contention_resolution_cnt; + /// Msg3 Delta Preamble + int8_t deltaPreamble_Msg3; + /// Received TPC command (in dB) from RAR + int8_t Msg3_TPC; + /// Flag to monitor if matching RAPID was received in RAR + uint8_t RA_RAPID_found; + /// Flag to monitor if BI was received in RAR + uint8_t RA_BI_found; + /// Flag for the Msg1 generation: enabled at every occurrence of nr prach slot + uint8_t generate_nr_prach; //// FAPI-like interface message fapi_nr_tx_request_t tx_request; diff --git a/openair2/LAYER2/NR_MAC_UE/mac_extern.h b/openair2/LAYER2/NR_MAC_UE/mac_extern.h index 26e0ea2667..54cdc4d149 100644 --- a/openair2/LAYER2/NR_MAC_UE/mac_extern.h +++ b/openair2/LAYER2/NR_MAC_UE/mac_extern.h @@ -90,4 +90,6 @@ extern const int32_t table_38213_10_1_1_c2[5]; // for PUSCH from TS 38.214 subclause 6.1.2.1.1 extern uint8_t table_6_1_2_1_1_2_time_dom_res_alloc_A[16][3]; // for PDSCH from TS 38.214 subclause 5.1.2.1.1 -extern uint8_t table_5_1_2_1_1_2_time_dom_res_alloc_A[16][3]; \ No newline at end of file +extern uint8_t table_5_1_2_1_1_2_time_dom_res_alloc_A[16][3]; + +extern dci_pdu_rel15_t *def_dci_pdu_rel15; diff --git a/openair2/LAYER2/NR_MAC_UE/mac_proto.h b/openair2/LAYER2/NR_MAC_UE/mac_proto.h index 3c625ec2ff..e9d7a97a5d 100755 --- a/openair2/LAYER2/NR_MAC_UE/mac_proto.h +++ b/openair2/LAYER2/NR_MAC_UE/mac_proto.h @@ -72,7 +72,7 @@ int nr_rrc_mac_config_req_ue( uint8_t gNB_index, NR_MIB_t *mibP, //NR_ServingCellConfigCommon_t *sccP, - NR_SpCellConfig_t *spCell_ConfigP); + NR_CellGroupConfig_t *cell_group_config); /**\brief initialization NR UE MAC instance(s), total number of MAC instance based on NB_NR_UE_MAC_INST*/ NR_UE_MAC_INST_t * nr_l2_init_ue(NR_UE_RRC_INST_t* rrc_inst); @@ -84,23 +84,9 @@ NR_UE_MAC_INST_t *get_mac_inst( /**\brief called at each slot, slot length based on numerology. now use u=0, scs=15kHz, slot=1ms performs BSR/SR/PHR procedures, random access procedure handler and DLSCH/ULSCH procedures. - \param module_id module id - \param gNB_index corresponding gNB index - \param cc_id component carrier id - \param rx_frame receive frame number - \param rx_slot receive slot number - \param tx_frame transmit frame number - \param tx_slot transmit slot number*/ -NR_UE_L2_STATE_t nr_ue_scheduler( - const module_id_t module_id, - const uint8_t gNB_index, - const int cc_id, - const frame_t rx_frame, - const slot_t rx_slot, - const int32_t ssb_index, - const frame_t tx_frame, - const slot_t tx_slot); - + \param dl_info DL indication + \param ul_info UL indication*/ +NR_UE_L2_STATE_t nr_ue_scheduler(nr_downlink_indication_t *dl_info, nr_uplink_indication_t *ul_info); /* \brief Get SR payload (0,1) from UE MAC @param Mod_id Instance id of UE in machine @@ -115,7 +101,7 @@ uint32_t ue_get_SR(module_id_t module_idP, int CC_id, frame_t frameP, int8_t nr_ue_get_SR(module_id_t module_idP, int CC_id, frame_t frameP, uint8_t eNB_id, uint16_t rnti, sub_frame_t subframe); -int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, nr_dci_pdu_rel15_t *dci, uint16_t rnti, uint32_t dci_format); +int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, dci_pdu_rel15_t *dci, uint16_t rnti, uint32_t dci_format); int nr_ue_process_dci_indication_pdu(module_id_t module_id,int cc_id, int gNB_index,fapi_nr_dci_indication_pdu_t *dci); uint32_t get_ssb_frame(uint32_t test); @@ -124,8 +110,6 @@ uint32_t get_ssb_slot(uint32_t ssb_index); uint32_t mr_ue_get_SR(module_id_t module_idP, int CC_id, frame_t frameP, uint8_t eNB_id, uint16_t rnti, sub_frame_t subframe); - - /* \brief Get payload (MAC PDU) from UE PHY @param module_idP Instance id of UE in machine @param CC_id Component Carrier index @@ -154,16 +138,30 @@ void nr_ue_process_mac_pdu(module_id_t module_idP, uint8_t gNB_index, NR_UL_TIME_ALIGNMENT_t *ul_time_alignment); + +uint16_t nr_generate_ulsch_pdu(uint8_t *sdus_payload, + uint8_t *pdu, + uint8_t num_sdus, + uint16_t *sdu_lengths, + uint8_t *sdu_lcids, + uint8_t power_headroom, + uint16_t crnti, + uint16_t truncated_bsr, + uint16_t short_bsr, + uint16_t long_bsr, + unsigned short post_padding, + uint16_t buflen); + int8_t nr_ue_process_dlsch(module_id_t module_id, int cc_id, uint8_t gNB_index, fapi_nr_dci_indication_t *dci_ind, void *pduP, uint32_t pdu_len); -void ue_dci_configuration(NR_UE_MAC_INST_t *mac,fapi_nr_dl_config_request_t *dl_config,int frame,int slot); +void ue_dci_configuration(NR_UE_MAC_INST_t *mac, fapi_nr_dl_config_request_t *dl_config, frame_t frame, int slot); void nr_extract_dci_info(NR_UE_MAC_INST_t *mac, int dci_format, uint8_t dci_length, uint16_t rnti, uint64_t *dci_pdu, - nr_dci_pdu_rel15_t *nr_pdci_info_extracted); + dci_pdu_rel15_t *nr_pdci_info_extracted); uint8_t @@ -175,5 +173,96 @@ int set_tdd_config_nr_ue(fapi_nr_config_request_t *cfg, int mu, int nrofDownlinkSlots, int nrofDownlinkSymbols, int nrofUplinkSlots, int nrofUplinkSymbols); +/** \brief Function for UE/PHY to compute PUSCH transmit power in power-control procedure. + @param Mod_id Module id of UE + @returns Po_NOMINAL_PUSCH (PREAMBLE_RECEIVED_TARGET_POWER+DELTA_PREAMBLE +*/ +int nr_get_Po_NOMINAL_PUSCH(NR_PRACH_RESOURCES_t *prach_resources, module_id_t module_idP, uint8_t CC_id); + +/** \brief Function to compute DELTA_PREAMBLE from 38.321 subclause 7.3 + (for RA power ramping procedure and Msg3 PUSCH power control policy) + @param Mod_id Module id of UE + @returns DELTA_PREAMBLE +*/ +int8_t nr_get_DELTA_PREAMBLE(module_id_t mod_id, int CC_id, uint16_t prach_format); + +/* Random Access */ + +/* \brief This function schedules the PRACH according to prach_ConfigurationIndex and TS 38.211 tables 6.3.3.2.x +and fills the PRACH PDU per each FD occasion. +@param module_idP Index of UE instance +@param frameP Frame index +@param slotP Slot index +@returns void +*/ +void nr_ue_prach_scheduler(module_id_t module_idP, frame_t frameP, sub_frame_t slotP); + +/* \brief Function called by PHY to process the received RAR and check that the preamble matches what was sent by the gNB. It provides the timing advance and t-CRNTI. +@param Mod_id Index of UE instance +@param CC_id Index to a component carrier +@param frame Frame index +@param ra_rnti RA_RNTI value +@param dlsch_buffer Pointer to dlsch_buffer containing RAR PDU +@param t_crnti Pointer to PHY variable containing the T_CRNTI +@param preamble_index Preamble Index used by PHY to transmit the PRACH. This should match the received RAR to trigger the rest of +random-access procedure +@param selected_rar_buffer the output buffer for storing the selected RAR header and RAR payload +@returns timing advance or 0xffff if preamble doesn't match +*/ +uint16_t nr_ue_process_rar(module_id_t mod_id, + int CC_id, + frame_t frameP, + uint8_t * dlsch_buffer, + rnti_t * t_crnti, + uint8_t preamble_index, + uint8_t * selected_rar_buffer); + +void nr_process_rar(nr_downlink_indication_t *dl_info); + +void ue_contention_resolution(module_id_t module_id, uint8_t gNB_index, int cc_id, frame_t tx_frame); + +void nr_ra_failed(uint8_t Mod_id, uint8_t CC_id, uint8_t gNB_index); + +void nr_ra_succeeded(uint8_t Mod_id, uint8_t CC_id, uint8_t gNB_index); + +/* \brief Function called by PHY to retrieve information to be transmitted using the RA procedure. +If the UE is not in PUSCH mode for a particular eNB index, this is assumed to be an Msg3 and MAC +attempts to retrieves the CCCH message from RRC. If the UE is in PUSCH mode for a particular eNB +index and PUCCH format 0 (Scheduling Request) is not activated, the MAC may use this resource for +andom-access to transmit a BSR along with the C-RNTI control element (see 5.1.4 from 36.321) +@param mod_id Index of UE instance +@param CC_id Component Carrier Index +@param frame +@param gNB_id gNB index +@param nr_tti_tx slot for PRACH transmission +@returns indication to generate PRACH to phy */ +uint8_t nr_ue_get_rach(NR_PRACH_RESOURCES_t *prach_resources, + module_id_t mod_id, + int CC_id, + UE_MODE_t UE_mode, + frame_t frame, + uint8_t gNB_id, + int nr_tti_tx); + +/* \brief Function implementing the routine for the selection of Random Access resources (5.1.2 TS 38.321). +@param module_idP Index of UE instance +@param CC_id Component Carrier Index +@param gNB_index gNB index +@param t_id +@param rach_ConfigDedicated +@returns void */ +void nr_get_prach_resources(module_id_t mod_id, + int CC_id, + uint8_t gNB_id, + uint8_t t_id, + uint8_t first_Msg3, + NR_PRACH_RESOURCES_t *prach_resources, + NR_RACH_ConfigDedicated_t * rach_ConfigDedicated); + +void nr_Msg1_transmitted(module_id_t mod_id, uint8_t CC_id, frame_t frameP, uint8_t gNB_id); + +void nr_Msg3_transmitted(module_id_t mod_id, uint8_t CC_id, frame_t frameP, uint8_t gNB_id); + +void nr_ue_msg2_scheduler(module_id_t mod_id, uint16_t rach_frame, uint16_t rach_slot, uint16_t *msg2_frame, uint16_t *msg2_slot); #endif /** @}*/ diff --git a/openair2/LAYER2/NR_MAC_UE/main_ue_nr.c b/openair2/LAYER2/NR_MAC_UE/main_ue_nr.c index 61f9ab601e..bae8e0d3c0 100644 --- a/openair2/LAYER2/NR_MAC_UE/main_ue_nr.c +++ b/openair2/LAYER2/NR_MAC_UE/main_ue_nr.c @@ -39,6 +39,7 @@ #include "PHY/defs_UE.h" #include "openair2/LAYER2/RLC/rlc.h" #include "openair2/LAYER2/PDCP_v10.1.0/pdcp.h" +#include "openair2/LAYER2/nr_pdcp/nr_pdcp_entity.h" #include "executables/softmodem-common.h" static NR_UE_MAC_INST_t *nr_ue_mac_inst; @@ -50,16 +51,16 @@ NR_UE_MAC_INST_t * nr_l2_init_ue(NR_UE_RRC_INST_t* rrc_inst) //LOG_I(MAC, "[MAIN] init UE MAC functions \n"); //init mac here - nr_ue_mac_inst = (NR_UE_MAC_INST_t *)malloc(sizeof(NR_UE_MAC_INST_t)*NB_NR_UE_MAC_INST); + nr_ue_mac_inst = (NR_UE_MAC_INST_t *)calloc(sizeof(NR_UE_MAC_INST_t),NB_NR_UE_MAC_INST); if (rrc_inst) { - nr_rrc_mac_config_req_ue(0,0,0,NULL,rrc_inst->cell_group_config->spCellConfig); + nr_rrc_mac_config_req_ue(0,0,0,NULL,rrc_inst->cell_group_config); if (IS_SOFTMODEM_NOS1){ if (rlc_module_init(0) != 0) { LOG_I(RLC, "Problem at RLC initiation \n"); } pdcp_layer_init(); - nr_ip_over_LTE_DRB_preconfiguration(); + nr_DRB_preconfiguration(); } } else LOG_I(MAC,"Running without RRC instance\n"); diff --git a/openair2/LAYER2/NR_MAC_UE/nr_l1_helpers.c b/openair2/LAYER2/NR_MAC_UE/nr_l1_helpers.c new file mode 100644 index 0000000000..f8bb1e5f8e --- /dev/null +++ b/openair2/LAYER2/NR_MAC_UE/nr_l1_helpers.c @@ -0,0 +1,153 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file nr_l1_helper.c +* \brief PHY helper functions for PRACH adapted to NR +* \author Guido Casati +* \date 2019 +* \version 2.0 +* \email guido.casati@iis.fraunhofer.de +* @ingroup _mac + +*/ + +#include "PHY/defs_nr_common.h" + +#include "mac_defs.h" +#include "LAYER2/NR_MAC_COMMON/nr_mac_extern.h" +#include "LAYER2/NR_MAC_UE/mac_proto.h" + +/* TS 38.321 subclause 7.3 - return DELTA_PREAMBLE values in dB */ +int8_t nr_get_DELTA_PREAMBLE(module_id_t mod_id, int CC_id, uint16_t prach_format){ + + NR_UE_MAC_INST_t *mac = get_mac_inst(mod_id); + NR_ServingCellConfigCommon_t *scc = mac->scc; + NR_RACH_ConfigCommon_t *nr_rach_ConfigCommon = scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup; + NR_SubcarrierSpacing_t scs = *nr_rach_ConfigCommon->msg1_SubcarrierSpacing; + int prach_sequence_length = scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->prach_RootSequenceIndex.present - 1; + uint8_t prachConfigIndex, mu; + + AssertFatal(CC_id == 0, "Transmission on secondary CCs is not supported yet\n"); + + // SCS configuration from msg1_SubcarrierSpacing and table 4.2-1 in TS 38.211 + + switch (scs){ + case NR_SubcarrierSpacing_kHz15: + mu = 0; + break; + + case NR_SubcarrierSpacing_kHz30: + mu = 1; + break; + + case NR_SubcarrierSpacing_kHz60: + mu = 2; + break; + + case NR_SubcarrierSpacing_kHz120: + mu = 3; + break; + + case NR_SubcarrierSpacing_kHz240: + mu = 4; + break; + + case NR_SubcarrierSpacing_spare3: + mu = 5; + break; + + case NR_SubcarrierSpacing_spare2: + mu = 6; + break; + + case NR_SubcarrierSpacing_spare1: + mu = 7; + break; + + default: + AssertFatal(1 == 0,"Unknown msg1_SubcarrierSpacing %lu\n", scs); + } + + // Preamble formats given by prach_ConfigurationIndex and tables 6.3.3.2-2 and 6.3.3.2-2 in TS 38.211 + + prachConfigIndex = nr_rach_ConfigCommon->rach_ConfigGeneric.prach_ConfigurationIndex; + + if (prach_sequence_length == 0) { + AssertFatal(prach_format < 4, "Illegal PRACH format %d for sequence length 839\n", prach_format); + switch (prach_format) { + + // long preamble formats + case 0: + case 3: + return 0; + + case 1: + return -3; + + case 2: + return -6; + } + } else { + switch (prach_format) { // short preamble formats + case 0: + case 3: + return 8 + 3*mu; + + case 1: + case 4: + case 8: + return 5 + 3*mu; + + case 2: + case 5: + return 3 + 3*mu; + + case 6: + return 3*mu; + + case 7: + return 5 + 3*mu; + + default: + AssertFatal(1 == 0, "[UE %d] ue_procedures.c: FATAL, Illegal preambleFormat %d, prachConfigIndex %d\n", mod_id, prach_format, prachConfigIndex); + } + } + return 0; +} + +/* TS 38.321 subclause 5.1.3 - RA preamble transmission - ra_PREAMBLE_RECEIVED_TARGET_POWER configuration */ +int nr_get_Po_NOMINAL_PUSCH(NR_PRACH_RESOURCES_t *prach_resources, module_id_t mod_id, uint8_t CC_id){ + + NR_UE_MAC_INST_t *mac = get_mac_inst(mod_id); + NR_ServingCellConfigCommon_t *scc = mac->scc; + NR_RACH_ConfigCommon_t *nr_rach_ConfigCommon = scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup; + int8_t receivedTargerPower, delta_preamble; + long preambleReceivedTargetPower; + + AssertFatal(nr_rach_ConfigCommon != NULL, "[UE %d] CCid %d FATAL nr_rach_ConfigCommon is NULL !!!\n", mod_id, CC_id); + + preambleReceivedTargetPower = nr_rach_ConfigCommon->rach_ConfigGeneric.preambleReceivedTargetPower; + delta_preamble = nr_get_DELTA_PREAMBLE(mod_id, CC_id, prach_resources->prach_format); + + receivedTargerPower = preambleReceivedTargetPower + delta_preamble + (mac->RA_PREAMBLE_POWER_RAMPING_COUNTER - 1) * prach_resources->RA_PREAMBLE_POWER_RAMPING_STEP; + + return receivedTargerPower; +} diff --git a/openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c b/openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c new file mode 100644 index 0000000000..351bcc292f --- /dev/null +++ b/openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c @@ -0,0 +1,643 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file ra_procedures.c + * \brief Routines for UE MAC-layer Random Access procedures (TS 38.321, Release 15) + * \author R. Knopp, Navid Nikaein, Guido Casati + * \date 2019 + * \version 0.1 + * \company Eurecom + * \email: knopp@eurecom.fr navid.nikaein@eurecom.fr, guido.casati@iis.fraunhofer.de + * \note + * \warning + */ + +#include "mac.h" + +/* +#include "common/utils/LOG/vcd_signal_dumper.h" +#include "PHY_INTERFACE/phy_interface_extern.h" +#include "SCHED_UE/sched_UE.h" +#include "COMMON/mac_rrc_primitives.h" +#include "RRC/LTE/rrc_extern.h" +#include "RRC/L2_INTERFACE/openair_rrc_L2_interface.h" +#include "common/utils/LOG/log.h" +#include "UTIL/OPT/opt.h" +#include "OCG.h" +#include "OCG_extern.h" +#include "PHY/LTE_ESTIMATION/lte_estimation.h"*/ + +/* Tools */ +#include "SIMULATION/TOOLS/sim.h" // for taus + +/* RRC */ +#include "NR_RACH-ConfigCommon.h" + +/* PHY */ +#include "PHY/NR_TRANSPORT/nr_transport_common_proto.h" +#include "PHY/defs_common.h" +#include "PHY/defs_nr_common.h" +#include "PHY/NR_UE_ESTIMATION/nr_estimation.h" + +/* MAC */ +#include "LAYER2/NR_MAC_COMMON/nr_mac_extern.h" +#include "NR_MAC_COMMON/nr_mac.h" +#include "LAYER2/NR_MAC_UE/mac_proto.h" + +extern int64_t table_6_3_3_2_3_prachConfig_Index [256][9]; +extern const uint8_t nr_slots_per_frame[5]; + +//extern uint8_t nfapi_mode; + +void nr_get_RA_window(NR_UE_MAC_INST_t *mac); + +// WIP +// This routine implements Section 5.1.2 (UE Random Access Resource Selection) +// and Section 5.1.3 (Random Access Preamble Transmission) from 3GPP TS 38.321 +void nr_get_prach_resources(module_id_t mod_id, + int CC_id, + uint8_t gNB_id, + uint8_t t_id, + uint8_t first_Msg3, + NR_PRACH_RESOURCES_t *prach_resources, + NR_RACH_ConfigDedicated_t * rach_ConfigDedicated){ + + NR_UE_MAC_INST_t *mac = get_mac_inst(mod_id); + NR_ServingCellConfigCommon_t *scc = mac->scc; + NR_RACH_ConfigCommon_t *nr_rach_ConfigCommon; + NR_RACH_ConfigGeneric_t *rach_ConfigGeneric; + + // NR_BeamFailureRecoveryConfig_t *beam_failure_recovery_config = &mac->RA_BeamFailureRecoveryConfig; // todo + + int messagePowerOffsetGroupB = 0, messageSizeGroupA, PLThreshold, sizeOfRA_PreamblesGroupA = 0, numberOfRA_Preambles, i, deltaPreamble_Msg3 = 0; + uint8_t noGroupB = 0, s_id, f_id, ul_carrier_id, prach_ConfigIndex, SFN_nbr, Msg3_size; + + AssertFatal(scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup != NULL, "[UE %d] FATAL nr_rach_ConfigCommon is NULL !!!\n", mod_id); + nr_rach_ConfigCommon = scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup; + rach_ConfigGeneric = &nr_rach_ConfigCommon->rach_ConfigGeneric; + + // NR_RSRP_Range_t rsrp_ThresholdSSB; // todo + + /////////////////////////////////////////////////////////// + //////////* UE Random Access Resource Selection *////////// + /////////////////////////////////////////////////////////// + + // todo: + // - switch initialisation cases + // -- RA initiated by beam failure recovery operation (subclause 5.17 TS 38.321) + // --- SSB selection, set prach_resources->ra_PreambleIndex + // -- RA initiated by PDCCH: ra_preamble_index provided by PDCCH && ra_PreambleIndex != 0b000000 + // --- set PREAMBLE_INDEX to ra_preamble_index + // --- select the SSB signalled by PDCCH + // -- RA initiated for SI request: + // --- SSB selection, set prach_resources->ra_PreambleIndex + + if (rach_ConfigDedicated) { + //////////* Contention free RA *////////// + // - the PRACH preamble for the UE to transmit is set through RRC configuration + // - this is the default mode in current implementation! + // Operation for contention-free RA resources when: + // - available SSB with SS-RSRP above rsrp-ThresholdSSB: SSB selection + // - available CSI-RS with CSI-RSRP above rsrp-ThresholdCSI-RS: CSI-RS selection + // - network controlled Mobility + uint8_t cfra_ssb_resource_idx = 0; + prach_resources->ra_PreambleIndex = rach_ConfigDedicated->cfra->resources.choice.ssb->ssb_ResourceList.list.array[cfra_ssb_resource_idx]->ra_PreambleIndex; + LOG_D(MAC, "[RAPROC] - Selected RA preamble index %d for contention-free random access procedure... \n", prach_resources->ra_PreambleIndex); + } else { + //////////* Contention-based RA preamble selection *////////// + // todo: + // - selection of SSB with SS-RSRP above rsrp-ThresholdSSB else select any SSB + // - todo determine next available PRACH occasion + + // rsrp_ThresholdSSB = *nr_rach_ConfigCommon->rsrp_ThresholdSSB; + + Msg3_size = mac->RA_Msg3_size; + + numberOfRA_Preambles = 64; + if(nr_rach_ConfigCommon->totalNumberOfRA_Preambles != NULL) + numberOfRA_Preambles = *(nr_rach_ConfigCommon->totalNumberOfRA_Preambles); + + if (!nr_rach_ConfigCommon->groupBconfigured) { + noGroupB = 1; + } else { + // RA preambles group B is configured + // - Defining the number of RA preambles in RA Preamble Group A for each SSB */ + sizeOfRA_PreamblesGroupA = nr_rach_ConfigCommon->groupBconfigured->numberOfRA_PreamblesGroupA; + switch (nr_rach_ConfigCommon->groupBconfigured->ra_Msg3SizeGroupA){ + /* - Threshold to determine the groups of RA preambles */ + case 0: + messageSizeGroupA = 56; + break; + case 1: + messageSizeGroupA = 144; + break; + case 2: + messageSizeGroupA = 208; + break; + case 3: + messageSizeGroupA = 256; + break; + case 4: + messageSizeGroupA = 282; + break; + case 5: + messageSizeGroupA = 480; + break; + case 6: + messageSizeGroupA = 640; + break; + case 7: + messageSizeGroupA = 800; + break; + case 8: + messageSizeGroupA = 1000; + break; + case 9: + messageSizeGroupA = 72; + break; + default: + AssertFatal(1 == 0,"Unknown ra_Msg3SizeGroupA %lu\n", nr_rach_ConfigCommon->groupBconfigured->ra_Msg3SizeGroupA); + /* todo cases 10 -15*/ + } + + /* Power offset for preamble selection in dB */ + messagePowerOffsetGroupB = -9999; + switch (nr_rach_ConfigCommon->groupBconfigured->messagePowerOffsetGroupB){ + case 0: + messagePowerOffsetGroupB = -9999; + break; + case 1: + messagePowerOffsetGroupB = 0; + break; + case 2: + messagePowerOffsetGroupB = 5; + break; + case 3: + messagePowerOffsetGroupB = 8; + break; + case 4: + messagePowerOffsetGroupB = 10; + break; + case 5: + messagePowerOffsetGroupB = 12; + break; + case 6: + messagePowerOffsetGroupB = 15; + break; + case 7: + messagePowerOffsetGroupB = 18; + break; + default: + AssertFatal(1 == 0,"Unknown messagePowerOffsetGroupB %lu\n", nr_rach_ConfigCommon->groupBconfigured->messagePowerOffsetGroupB); + } + + // todo Msg3-DeltaPreamble should be provided from higher layers, otherwise is 0 + mac->deltaPreamble_Msg3 = 0; + deltaPreamble_Msg3 = mac->deltaPreamble_Msg3; + } + + PLThreshold = prach_resources->RA_PCMAX - rach_ConfigGeneric->preambleReceivedTargetPower - deltaPreamble_Msg3 - messagePowerOffsetGroupB; + + /* Msg3 has not been transmitted yet */ + if (first_Msg3 == 1) { + if (noGroupB == 1) { + // use Group A preamble + prach_resources->ra_PreambleIndex = (taus()) % numberOfRA_Preambles; + mac->RA_usedGroupA = 1; + } else if ((Msg3_size < messageSizeGroupA) && (get_nr_PL(mod_id, CC_id, gNB_id) > PLThreshold)) { + // Group B is configured and RA preamble Group A is used + // - todo add condition on CCCH_sdu_size for initiation by CCCH + prach_resources->ra_PreambleIndex = (taus()) % sizeOfRA_PreamblesGroupA; + mac->RA_usedGroupA = 1; + } else { + // Group B preamble is configured and used + // the first sizeOfRA_PreamblesGroupA RA preambles belong to RA Preambles Group A + // the remaining belong to RA Preambles Group B + prach_resources->ra_PreambleIndex = sizeOfRA_PreamblesGroupA + (taus()) % (numberOfRA_Preambles - sizeOfRA_PreamblesGroupA); + mac->RA_usedGroupA = 0; + } + } else { // Msg3 is being retransmitted + if (mac->RA_usedGroupA == 1 && noGroupB == 1) { + prach_resources->ra_PreambleIndex = (taus()) % numberOfRA_Preambles; + } else if (mac->RA_usedGroupA == 1 && noGroupB == 0){ + prach_resources->ra_PreambleIndex = (taus()) % sizeOfRA_PreamblesGroupA; + } else { + prach_resources->ra_PreambleIndex = sizeOfRA_PreamblesGroupA + (taus()) % (numberOfRA_Preambles - sizeOfRA_PreamblesGroupA); + } + } + LOG_D(MAC, "[RAPROC] - Selected RA preamble index %d for contention-based random access procedure... \n", prach_resources->ra_PreambleIndex); + } + + // todo determine next available PRACH occasion + // - if RA initiated for SI request and ra_AssociationPeriodIndex and si-RequestPeriod are configured + // - else if SSB is selected above + // - else if CSI-RS is selected above + + ///////////////////////////////////////////////////////////////////////////// + //////////* Random Access Preamble Transmission (5.1.3 TS 38.321) *////////// + ///////////////////////////////////////////////////////////////////////////// + // todo: + // - condition on notification of suspending power ramping counter from lower layer (5.1.3 TS 38.321) + // - check if SSB or CSI-RS have not changed since the selection in the last RA Preamble tranmission + // - Extend RA_rnti computation (e.g. f_id selection, ul_carrier_id are hardcoded) + + if (mac->RA_PREAMBLE_TRANSMISSION_COUNTER > 1) + mac->RA_PREAMBLE_POWER_RAMPING_COUNTER++; + + prach_resources->ra_PREAMBLE_RECEIVED_TARGET_POWER = nr_get_Po_NOMINAL_PUSCH(prach_resources, mod_id, CC_id); + + // RA-RNTI computation (associated to PRACH occasion in which the RA Preamble is transmitted) + // 1) this does not apply to contention-free RA Preamble for beam failure recovery request + // 2) getting star_symb, SFN_nbr from table 6.3.3.2-3 (TDD and FR1 scenario) + + prach_ConfigIndex = rach_ConfigGeneric->prach_ConfigurationIndex; + + // ra_RNTI computation + // - todo: this is for TDD FR1 only + // - ul_carrier_id: UL carrier used for RA preamble transmission, hardcoded for NUL carrier + // - f_id: index of the PRACH occasion in the frequency domain + // - s_id is starting symbol of the PRACH occasion [0...14] + // - t_id is the first slot of the PRACH occasion in a system frame [0...80] + + ul_carrier_id = 0; // NUL + f_id = rach_ConfigGeneric->msg1_FrequencyStart; + SFN_nbr = table_6_3_3_2_3_prachConfig_Index[prach_ConfigIndex][4]; + s_id = table_6_3_3_2_3_prachConfig_Index[prach_ConfigIndex][5]; + + // Pick the first slot of the PRACH occasion in a system frame + for (i = 0; i < 10; i++){ + if (((SFN_nbr & (1 << i)) >> i) == 1){ + t_id = 2*i; + break; + } + } + prach_resources->ra_RNTI = 1 + s_id + 14 * t_id + 1120 * f_id + 8960 * ul_carrier_id; + mac->ra_rnti = prach_resources->ra_RNTI; + + LOG_D(MAC, "Computed ra_RNTI is %x \n", prach_resources->ra_RNTI); +} + +// TbD: RA_attempt_number not used +void nr_Msg1_transmitted(module_id_t mod_id, uint8_t CC_id, frame_t frameP, uint8_t gNB_id){ + AssertFatal(CC_id == 0, "Transmission on secondary CCs is not supported yet\n"); + NR_UE_MAC_INST_t *mac = get_mac_inst(mod_id); + mac->ra_state = WAIT_RAR; + // Start contention resolution timer + mac->RA_attempt_number++; +} + +void nr_Msg3_transmitted(module_id_t mod_id, uint8_t CC_id, frame_t frameP, uint8_t gNB_id){ + AssertFatal(CC_id == 0, "Transmission on secondary CCs is not supported yet\n"); + LOG_D(MAC,"[UE %d][RAPROC] Frame %d : Msg3_tx: Starting contention resolution timer\n", mod_id, frameP); + NR_UE_MAC_INST_t *mac = get_mac_inst(mod_id); + // start contention resolution timer + mac->RA_contention_resolution_cnt = 0; + mac->RA_contention_resolution_timer_active = 1; +} + +///////////////////////////////////////////////////////////////////////// +///////* Random Access Preamble Initialization (5.1.1 TS 38.321) */////// +///////////////////////////////////////////////////////////////////////// +/// Handling inizialization by PDCCH order, MAC entity or RRC (TS 38.300) +/// Only one RA procedure is ongoing at any point in time in a MAC entity +/// the RA procedure on a SCell shall only be initiated by PDCCH order +/// in the current implementation, RA is contention free only + +// WIP +// todo TS 38.321: +// - check if carrier to use is explicitly signalled then do (1) RA CARRIER SELECTION (SUL, NUL) (2) set PCMAX +// - BWP operation (subclause 5.15 TS 38.321) +// - handle initialization by beam failure recovery +// - handle initialization by handover +// - handle transmission on DCCH using PRACH (during handover, or sending SR for example) +// - take into account MAC CEs in size_sdu (currently hardcoded size to 1 MAC subPDU and 1 padding subheader) +// - fix rrc data req logic +// - retrieve TBS +// - add mac_rrc_nr_data_req_ue, etc ... +// - add the backoff condition here if we have it from a previous RA reponse which failed (i.e. backoff indicator) + +uint8_t nr_ue_get_rach(NR_PRACH_RESOURCES_t *prach_resources, + module_id_t mod_id, + int CC_id, + UE_MODE_t UE_mode, + frame_t frame, + uint8_t gNB_id, + int nr_tti_tx){ + + NR_UE_MAC_INST_t *mac = get_mac_inst(mod_id); + uint8_t mac_sdus[MAX_NR_ULSCH_PAYLOAD_BYTES]; + uint8_t lcid = UL_SCH_LCID_CCCH_MSG3, *payload; + //uint8_t ra_ResponseWindow; + uint16_t size_sdu = 0; + unsigned short post_padding; + //fapi_nr_config_request_t *cfg = &mac->phy_config.config_req; + NR_ServingCellConfigCommon_t *scc = mac->scc; + NR_RACH_ConfigCommon_t *setup = scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup; + NR_RACH_ConfigGeneric_t *rach_ConfigGeneric = &setup->rach_ConfigGeneric; + //NR_FrequencyInfoDL_t *frequencyInfoDL = scc->downlinkConfigCommon->frequencyInfoDL; + NR_RACH_ConfigDedicated_t *rach_ConfigDedicated = mac->rach_ConfigDedicated; + + // int32_t frame_diff = 0; + + uint8_t sdu_lcids[NB_RB_MAX] = {0}; + uint16_t sdu_lengths[NB_RB_MAX] = {0}; + int TBS_bytes = 848, header_length_total=0, num_sdus, offset, preambleTransMax, mac_ce_len; + + AssertFatal(CC_id == 0,"Transmission on secondary CCs is not supported yet\n"); + + if (UE_mode < PUSCH && prach_resources->init_msg1) { + + LOG_D(MAC, "nr_ue_get_rach, RA_active value: %d", mac->RA_active); + + AssertFatal(setup != NULL, "[UE %d] FATAL nr_rach_ConfigCommon is NULL !!!\n", mod_id); + + if (mac->RA_active == 0) { + /* RA not active - checking if RRC is ready to initiate the RA procedure */ + + LOG_I(MAC, "RA not active. Starting RA preamble initialization.\n"); + + mac->RA_RAPID_found = 0; + + /* Set RA_PREAMBLE_POWER_RAMPING_STEP */ + switch (rach_ConfigGeneric->powerRampingStep){ // in dB + case 0: + prach_resources->RA_PREAMBLE_POWER_RAMPING_STEP = 0; + break; + case 1: + prach_resources->RA_PREAMBLE_POWER_RAMPING_STEP = 2; + break; + case 2: + prach_resources->RA_PREAMBLE_POWER_RAMPING_STEP = 4; + break; + case 3: + prach_resources->RA_PREAMBLE_POWER_RAMPING_STEP = 6; + break; + } + + prach_resources->RA_PREAMBLE_BACKOFF = 0; + prach_resources->RA_SCALING_FACTOR_BI = 1; + prach_resources->RA_PCMAX = 0; // currently hardcoded to 0 + + payload = (uint8_t*) &mac->CCCH_pdu.payload; + + mac_ce_len = 0; + num_sdus = 1; + post_padding = 1; + + if (0){ + // initialisation by RRC + // CCCH PDU + // size_sdu = (uint16_t) mac_rrc_data_req_ue(mod_id, + // CC_id, + // frame, + // CCCH, + // 1, + // mac_sdus, + // gNB_id, + // 0); + LOG_D(MAC,"[UE %d] Frame %d: Requested RRCConnectionRequest, got %d bytes\n", mod_id, frame, size_sdu); + } else { + // fill ulsch_buffer with random data + for (int i = 0; i < TBS_bytes; i++){ + mac_sdus[i] = (unsigned char) (lrand48()&0xff); + } + //Sending SDUs with size 1 + //Initialize elements of sdu_lcids and sdu_lengths + sdu_lcids[0] = lcid; + sdu_lengths[0] = TBS_bytes - 3 - post_padding - mac_ce_len; + header_length_total += 2 + (sdu_lengths[0] >= 128); + size_sdu += sdu_lengths[0]; + } + + //mac->RA_tx_frame = frame; + //mac->RA_tx_subframe = nr_tti_tx; + //mac->RA_backoff_frame = frame; + //mac->RA_backoff_subframe = nr_tti_tx; + + if (size_sdu > 0) { + + LOG_I(MAC, "[UE %d] Frame %d: Initialisation Random Access Procedure\n", mod_id, frame); + + mac->RA_PREAMBLE_TRANSMISSION_COUNTER = 1; + mac->RA_PREAMBLE_POWER_RAMPING_COUNTER = 1; + mac->RA_Msg3_size = size_sdu + sizeof(NR_MAC_SUBHEADER_SHORT) + sizeof(NR_MAC_SUBHEADER_SHORT); + mac->RA_prachMaskIndex = 0; + // todo: add the backoff condition here + mac->RA_backoff_cnt = 0; + mac->RA_active = 1; + prach_resources->Msg3 = payload; + + nr_get_RA_window(mac); + + // Fill in preamble and PRACH resources + if (mac->generate_nr_prach == 1) + nr_get_prach_resources(mod_id, CC_id, gNB_id, nr_tti_tx, 1, prach_resources, rach_ConfigDedicated); + + offset = nr_generate_ulsch_pdu((uint8_t *) mac_sdus, // sdus buffer + (uint8_t *) payload, // UL MAC pdu pointer + num_sdus, // num sdus + sdu_lengths, // sdu length + sdu_lcids, // sdu lcid + 0, // power headroom + 0, // crnti + 0, // truncated bsr + 0, // short bsr + 0, // long_bsr + post_padding, + 0); + + // Padding: fill remainder with 0 + if (post_padding > 0){ + for (int j = 0; j < (TBS_bytes - offset); j++) + payload[offset + j] = 0; // mac_pdu[offset + j] = 0; + } + } + } else if (mac->RA_window_cnt != -1) { // RACH is active + + //////////////////////////////////////////////////////////////// + /////* Random Access Response reception (5.1.4 TS 38.321) *///// + //////////////////////////////////////////////////////////////// + // Handling ra_responseWindow, RA_PREAMBLE_TRANSMISSION_COUNTER + // and RA_backoff_cnt + // todo: + // - handle beam failure recovery request + // - handle DL assignment on PDCCH for RA-RNTI + // - handle backoff and raResponseWindow params + + // LOG_D(MAC, "[MAC][UE %d][RAPROC] frame %d, subframe %d: RA Active, window cnt %d (RA_tx_frame %d, RA_tx_subframe %d)\n", + // mod_id, frame, nr_tti_tx, mac->RA_window_cnt, mac->RA_tx_frame, mac->RA_tx_subframe); + + if (mac->RA_BI_found){ + prach_resources->RA_PREAMBLE_BACKOFF = prach_resources->RA_SCALING_FACTOR_BI * mac->RA_backoff_indicator; + } else { + prach_resources->RA_PREAMBLE_BACKOFF = 0; + } + + if (mac->RA_window_cnt >= 0 && mac->RA_RAPID_found == 1) { + + mac->RA_window_cnt = -1; + mac->ra_state = RA_SUCCEEDED; + LOG_I(MAC, "[MAC][UE %d][RAPROC] Frame %d: nr_tti_tx %d: RAR successfully received \n", mod_id, frame, nr_tti_tx); + + } else if (mac->RA_window_cnt == 0 && !mac->RA_RAPID_found) { + + LOG_I(MAC, "[MAC][UE %d][RAPROC] Frame %d: nr_tti_tx %d: RAR reception failed \n", mod_id, frame, nr_tti_tx); + + mac->ra_state = RA_UE_IDLE; + mac->RA_PREAMBLE_TRANSMISSION_COUNTER++; + + preambleTransMax = -1; + switch (rach_ConfigGeneric->preambleTransMax) { + case 0: + preambleTransMax = 3; + break; + case 1: + preambleTransMax = 4; + break; + case 2: + preambleTransMax = 5; + break; + case 3: + preambleTransMax = 6; + break; + case 4: + preambleTransMax = 7; + break; + case 5: + preambleTransMax = 8; + break; + case 6: + preambleTransMax = 10; + break; + case 7: + preambleTransMax = 20; + break; + case 8: + preambleTransMax = 50; + break; + case 9: + preambleTransMax = 100; + break; + case 10: + preambleTransMax = 200; + break; + } + + // Resetting RA window + nr_get_RA_window(mac); + + if (mac->RA_PREAMBLE_TRANSMISSION_COUNTER == preambleTransMax + 1){ + LOG_D(MAC, "[UE %d] Frame %d: Maximum number of RACH attempts (%d)\n", mod_id, frame, preambleTransMax); + mac->RA_backoff_cnt = rand() % (prach_resources->RA_PREAMBLE_BACKOFF + 1); + mac->RA_PREAMBLE_TRANSMISSION_COUNTER = 1; + prach_resources->RA_PREAMBLE_POWER_RAMPING_STEP += prach_resources->RA_PREAMBLE_POWER_RAMPING_STEP << 1; // 2 dB increment + prach_resources->ra_PREAMBLE_RECEIVED_TARGET_POWER = nr_get_Po_NOMINAL_PUSCH(prach_resources, mod_id, CC_id); + } + + // compute backoff parameters + // if (mac->RA_backoff_cnt > 0){ + // frame_diff = (sframe_t) frame - mac->RA_backoff_frame; + // if (frame_diff < 0) frame_diff = -frame_diff; + // mac->RA_backoff_frame = frame; + // mac->RA_backoff_subframe = nr_tti_tx; + // } + // compute RA window parameters + // if (mac->RA_window_cnt > 0){ + // frame_diff = (frame_t) frame - mac->RA_tx_frame; + // if (frame_diff < 0) frame_diff = -frame_diff; + // mac->RA_window_cnt -= ((10 * frame_diff) + (nr_tti_tx - mac->RA_tx_subframe)); + // LOG_D(MAC, "[MAC][UE %d][RAPROC] Frame %d, subframe %d: RA Active, adjusted window cnt %d\n", mod_id, frame, nr_tti_tx, mac->RA_window_cnt); + // } + + // mac->RA_tx_frame = frame; + // mac->RA_tx_subframe = nr_tti_tx; + + // Fill in preamble and PRACH resources + if (mac->generate_nr_prach == 1) + nr_get_prach_resources(mod_id, CC_id, gNB_id, nr_tti_tx, 0, prach_resources, rach_ConfigDedicated); + + } else { + + mac->RA_window_cnt--; + + LOG_I(MAC, "[MAC][UE %d][RAPROC] Frame %d: nr_tti_tx %d: RAR reception not successful, (RA window count %d) \n", + mod_id, + frame, + nr_tti_tx, + mac->RA_window_cnt); + + // Fill in preamble and PRACH resources + if (mac->generate_nr_prach == 1) + nr_get_prach_resources(mod_id, CC_id, gNB_id, nr_tti_tx, 0, prach_resources, rach_ConfigDedicated); + + } + } + } else if (UE_mode == PUSCH) { + LOG_D(MAC, "[UE %d] FATAL: Should not have checked for RACH in PUSCH yet ...", mod_id); + AssertFatal(1 == 0, ""); + } + return mac->generate_nr_prach; +} + +void nr_get_RA_window(NR_UE_MAC_INST_t *mac){ + + uint8_t mu, ra_ResponseWindow; + NR_ServingCellConfigCommon_t *scc = mac->scc; + NR_RACH_ConfigCommon_t *setup = scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup; + NR_RACH_ConfigGeneric_t *rach_ConfigGeneric = &setup->rach_ConfigGeneric; + NR_FrequencyInfoDL_t *frequencyInfoDL = scc->downlinkConfigCommon->frequencyInfoDL; + + ra_ResponseWindow = rach_ConfigGeneric->ra_ResponseWindow; + + if (setup->msg1_SubcarrierSpacing) + mu = *setup->msg1_SubcarrierSpacing; + else + mu = frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing; + + mac->RA_window_cnt = mac->RA_offset*nr_slots_per_frame[mu]; // taking into account the 2 frames gap introduced by OAI gNB + + switch (ra_ResponseWindow) { + case NR_RACH_ConfigGeneric__ra_ResponseWindow_sl1: + mac->RA_window_cnt += 1; + break; + case NR_RACH_ConfigGeneric__ra_ResponseWindow_sl2: + mac->RA_window_cnt += 2; + break; + case NR_RACH_ConfigGeneric__ra_ResponseWindow_sl4: + mac->RA_window_cnt += 4; + break; + case NR_RACH_ConfigGeneric__ra_ResponseWindow_sl8: + mac->RA_window_cnt += 8; + break; + case NR_RACH_ConfigGeneric__ra_ResponseWindow_sl10: + mac->RA_window_cnt += 10; + break; + case NR_RACH_ConfigGeneric__ra_ResponseWindow_sl20: + mac->RA_window_cnt += 20; + break; + case NR_RACH_ConfigGeneric__ra_ResponseWindow_sl40: + mac->RA_window_cnt += 40; + break; + case NR_RACH_ConfigGeneric__ra_ResponseWindow_sl80: + mac->RA_window_cnt += 80; + break; + } +} diff --git a/openair2/LAYER2/NR_MAC_UE/nr_ue_dci_configuration.c b/openair2/LAYER2/NR_MAC_UE/nr_ue_dci_configuration.c index 396e06ff09..2285fc5999 100644 --- a/openair2/LAYER2/NR_MAC_UE/nr_ue_dci_configuration.c +++ b/openair2/LAYER2/NR_MAC_UE/nr_ue_dci_configuration.c @@ -21,11 +21,11 @@ /* \file nr_ue_dci_configuration.c * \brief functions for generating dci search procedures based on RRC Serving Cell Group Configuration - * \author R. Knopp + * \author R. Knopp, G. Casati * \date 2020 - * \version 0.1 - * \company Eurecom - * \email: knopp@eurecom.fr + * \version 0.2 + * \company Eurecom, Fraunhofer IIS + * \email: knopp@eurecom.fr, guido.casati@iis.fraunhofer.de * \note * \warning */ @@ -35,6 +35,8 @@ #include "assertions.h" #include "LAYER2/NR_MAC_UE/mac_extern.h" #include "mac_defs.h" +#include "common/utils/nr/nr_common.h" +#include "executables/softmodem-common.h" #include #ifdef NR_PDCCH_DCI_TOOLS_DEBUG @@ -44,6 +46,9 @@ #endif #define LOG_DCI_PARM(a...) LOG_D(PHY,"\t<-NR_PDCCH_DCI_TOOLS_DEBUG (nr_generate_ue_ul_dlsch_params_from_dci)" a) +// #define DEBUG_DCI + +dci_pdu_rel15_t *def_dci_pdu_rel15; void fill_dci_search_candidates(NR_SearchSpace_t *ss,fapi_nr_dl_config_dci_dl_pdu_rel15_t *rel15) { @@ -59,125 +64,261 @@ void fill_dci_search_candidates(NR_SearchSpace_t *ss,fapi_nr_dl_config_dci_dl_pd } -void ue_dci_configuration(NR_UE_MAC_INST_t *mac,fapi_nr_dl_config_request_t *dl_config,int frame,int slot) { +void config_dci_pdu(NR_UE_MAC_INST_t *mac, fapi_nr_dl_config_dci_dl_pdu_rel15_t *rel15, fapi_nr_dl_config_request_t *dl_config, int rnti_type, int ss_id, uint8_t dci_format){ - // check if DL slot - if (is_nr_DL_slot(mac->scc,slot)==1) { - - // get BWP 1, Coreset 0, SearchSpace 0 - if (mac->DLbwp[0]==NULL) { - AssertFatal(mac->scd->downlinkBWP_ToAddModList!=NULL,"downlinkBWP_ToAddModList is null\n"); - AssertFatal(mac->scd->downlinkBWP_ToAddModList->list.count==1,"downlinkBWP_ToAddModList->list->count is %d\n", - mac->scd->downlinkBWP_ToAddModList->list.count); - mac->DLbwp[0] = mac->scd->downlinkBWP_ToAddModList->list.array[0]; - AssertFatal(mac->DLbwp[0]->bwp_Dedicated!=NULL,"bwp_Dedicated is null\n"); - AssertFatal(mac->DLbwp[0]->bwp_Dedicated->pdcch_Config!=NULL,"pdcch_Config is null\n"); - AssertFatal(mac->DLbwp[0]->bwp_Dedicated->pdcch_Config->choice.setup->controlResourceSetToAddModList!=NULL,"controlResourceSetToAddModList is null\n"); - AssertFatal(mac->DLbwp[0]->bwp_Dedicated->pdcch_Config->choice.setup->controlResourceSetToAddModList->list.count==1,"controlResourceSetToAddModList->list.count=%d\n", - mac->DLbwp[0]->bwp_Dedicated->pdcch_Config->choice.setup->controlResourceSetToAddModList->list.count); - mac->coreset[0][0] = mac->DLbwp[0]->bwp_Dedicated->pdcch_Config->choice.setup->controlResourceSetToAddModList->list.array[0]; - AssertFatal(mac->coreset[0][0]!=NULL,"coreset[0][0] is null\n"); - - AssertFatal(mac->DLbwp[0]->bwp_Dedicated->pdcch_Config->choice.setup->searchSpacesToAddModList!=NULL,"searchPsacesToAddModList is null\n"); - AssertFatal(mac->DLbwp[0]->bwp_Dedicated->pdcch_Config->choice.setup->searchSpacesToAddModList->list.count>0, - "searchPsacesToAddModList is empty\n"); - NR_SearchSpace_t *ss; - int ss_id=0; - AssertFatal(mac->DLbwp[0]->bwp_Dedicated->pdcch_Config->choice.setup->searchSpacesToAddModList->list.countDLbwp[0]->bwp_Dedicated->pdcch_Config->choice.setup->searchSpacesToAddModList->list.count); - for (int i=0;iDLbwp[0]->bwp_Dedicated->pdcch_Config->choice.setup->searchSpacesToAddModList->list.count;i++) { - ss=mac->DLbwp[0]->bwp_Dedicated->pdcch_Config->choice.setup->searchSpacesToAddModList->list.array[i]; - AssertFatal(ss->controlResourceSetId != NULL,"ss->controlResourceSetId is null\n"); - AssertFatal(ss->searchSpaceType != NULL,"ss->searchSpaceType is null\n"); - AssertFatal(*ss->controlResourceSetId == mac->coreset[0][0]->controlResourceSetId,"ss->controlResourceSetId is unknown\n"); - mac->SSpace[0][0][ss_id] = ss; - ss_id++; + uint16_t monitoringSymbolsWithinSlot; + uint8_t bwp_id = 1, coreset_id = 1; + int sps; + def_dci_pdu_rel15 = calloc(1,sizeof(dci_pdu_rel15_t)); + AssertFatal(mac->scc != NULL, "scc is null\n"); + NR_ServingCellConfigCommon_t *scc = mac->scc; + NR_BWP_DownlinkCommon_t *bwp_Common = mac->DLbwp[bwp_id - 1]->bwp_Common; + NR_BWP_DownlinkCommon_t *initialDownlinkBWP = scc->downlinkConfigCommon->initialDownlinkBWP; + NR_SearchSpace_t *ss = mac->SSpace[bwp_id - 1][coreset_id - 1][ss_id]; + + // DCI format configuration + rel15->dci_format = dci_format; + + // CORESET configuration + NR_ControlResourceSet_t *coreset = mac->coreset[bwp_id - 1][coreset_id - 1]; + rel15->coreset.duration = coreset->duration; + for (int i = 0; i < 6; i++) + rel15->coreset.frequency_domain_resource[i] = coreset->frequencyDomainResources.buf[i]; + rel15->coreset.CceRegMappingType = coreset->cce_REG_MappingType.present == NR_ControlResourceSet__cce_REG_MappingType_PR_interleaved ? FAPI_NR_CCE_REG_MAPPING_TYPE_INTERLEAVED : FAPI_NR_CCE_REG_MAPPING_TYPE_NON_INTERLEAVED; + if (rel15->coreset.CceRegMappingType == FAPI_NR_CCE_REG_MAPPING_TYPE_INTERLEAVED) { + struct NR_ControlResourceSet__cce_REG_MappingType__interleaved *interleaved = coreset->cce_REG_MappingType.choice.interleaved; + rel15->coreset.RegBundleSize = (interleaved->reg_BundleSize == NR_ControlResourceSet__cce_REG_MappingType__interleaved__reg_BundleSize_n6) ? 6 : (2 + interleaved->reg_BundleSize); + rel15->coreset.InterleaverSize = (interleaved->interleaverSize == NR_ControlResourceSet__cce_REG_MappingType__interleaved__interleaverSize_n6) ? 6 : (2 + interleaved->interleaverSize); + AssertFatal(scc->physCellId != NULL, "mac->scc->physCellId is null\n"); + rel15->coreset.ShiftIndex = interleaved->shiftIndex != NULL ? *interleaved->shiftIndex : *scc->physCellId; + } else { + rel15->coreset.RegBundleSize = 0; + rel15->coreset.InterleaverSize = 0; + rel15->coreset.ShiftIndex = 0; + } + rel15->coreset.CoreSetType = 1; + rel15->coreset.precoder_granularity = coreset->precoderGranularity; + + // Scrambling RNTI + if (coreset->pdcch_DMRS_ScramblingID) { + rel15->coreset.pdcch_dmrs_scrambling_id = *coreset->pdcch_DMRS_ScramblingID; + rel15->coreset.scrambling_rnti = mac->t_crnti; + } else { + rel15->coreset.pdcch_dmrs_scrambling_id = *scc->physCellId; + rel15->coreset.scrambling_rnti = 0; + } + + #ifdef DEBUG_DCI + LOG_D(MAC, "[DCI_CONFIG] Configure DCI PDU: ss_id %d bwp %p bwp_Id %d controlResourceSetId %d\n", ss_id, mac->DLbwp[bwp_id - 1], mac->DLbwp[bwp_id - 1]->bwp_Id, coreset->controlResourceSetId); + #endif + + // loop over RNTI type and configure resource allocation for DCI + switch(rnti_type) { + case NR_RNTI_C: + // we use DL BWP dedicated + sps = bwp_Common->genericParameters.cyclicPrefix == NULL ? 14 : 12; + // for SPS=14 8 MSBs in positions 13 down to 6 + monitoringSymbolsWithinSlot = (ss->monitoringSymbolsWithinSlot->buf[0]<<(sps-8)) | (ss->monitoringSymbolsWithinSlot->buf[1]>>(16-sps)); + rel15->rnti = mac->crnti; + rel15->BWPSize = NRRIV2BW(bwp_Common->genericParameters.locationAndBandwidth, 275); + rel15->BWPStart = NRRIV2PRBOFFSET(bwp_Common->genericParameters.locationAndBandwidth, 275); + rel15->SubcarrierSpacing = bwp_Common->genericParameters.subcarrierSpacing; + rel15->dci_length = nr_dci_size(scc, mac->scg, def_dci_pdu_rel15, rel15->dci_format, NR_RNTI_C, rel15->BWPSize, bwp_id); + break; + case NR_RNTI_RA: + // we use the initial DL BWP + sps = initialDownlinkBWP->genericParameters.cyclicPrefix == NULL ? 14 : 12; + monitoringSymbolsWithinSlot = (ss->monitoringSymbolsWithinSlot->buf[0]<<(sps-8)) | (ss->monitoringSymbolsWithinSlot->buf[1]>>(16-sps)); + rel15->rnti = mac->ra_rnti; + rel15->BWPSize = NRRIV2BW(initialDownlinkBWP->genericParameters.locationAndBandwidth, 275); + rel15->BWPStart = NRRIV2PRBOFFSET(bwp_Common->genericParameters.locationAndBandwidth, 275); //NRRIV2PRBOFFSET(initialDownlinkBWP->genericParameters.locationAndBandwidth, 275); + rel15->SubcarrierSpacing = initialDownlinkBWP->genericParameters.subcarrierSpacing; + rel15->dci_length = nr_dci_size(scc, mac->scg, def_dci_pdu_rel15, rel15->dci_format, NR_RNTI_RA, rel15->BWPSize, bwp_id); + break; + case NR_RNTI_P: + break; + case NR_RNTI_CS: + break; + case NR_RNTI_TC: + break; + case NR_RNTI_SP_CSI: + break; + case NR_RNTI_SI: + break; + case NR_RNTI_SFI: + break; + case NR_RNTI_INT: + break; + case NR_RNTI_TPC_PUSCH: + break; + case NR_RNTI_TPC_PUCCH: + break; + case NR_RNTI_TPC_SRS: + break; + default: + break; + } + for (int i = 0; i < sps; i++) { + if ((monitoringSymbolsWithinSlot >> (sps - 1 - i)) & 1) { + rel15->coreset.StartSymbolIndex = i; + break; + } + } + #ifdef DEBUG_DCI + LOG_D(MAC, "[DCI_CONFIG] Configure DCI PDU: rnti_type %d BWPSize %d BWPStart %d rel15->SubcarrierSpacing %d rel15->dci_format %d rel15->dci_length %d sps %d monitoringSymbolsWithinSlot %d \n", + rnti_type, + rel15->BWPSize, + rel15->BWPStart, + rel15->SubcarrierSpacing, + rel15->dci_format, + rel15->dci_length, + sps, + monitoringSymbolsWithinSlot); + #endif + // add DCI + dl_config->dl_config_list[dl_config->number_pdus].pdu_type = FAPI_NR_DL_CONFIG_TYPE_DCI; + dl_config->number_pdus = dl_config->number_pdus + 1; +} + +void ue_dci_configuration(NR_UE_MAC_INST_t *mac, fapi_nr_dl_config_request_t *dl_config, frame_t frame, int slot) { + + int ss_id; + uint8_t bwp_id = 1, coreset_id = 1; + NR_ServingCellConfig_t *scd = mac->scg->spCellConfig->spCellConfigDedicated; + NR_BWP_Downlink_t *bwp = mac->DLbwp[bwp_id - 1]; + + #ifdef DEBUG_DCI + LOG_D(MAC, "[DCI_CONFIG] ra_rnti %p (%x) crnti %p (%x) t_crnti %p (%x)\n", &mac->ra_rnti, mac->ra_rnti, &mac->crnti, mac->crnti, &mac->t_crnti, mac->t_crnti); + #endif + + // loop over all available SS for BWP ID 1, CORESET ID 1 + for (ss_id = 0; ss_id < FAPI_NR_MAX_SS_PER_CORESET && mac->SSpace[bwp_id - 1][coreset_id - 1][ss_id] != NULL; ss_id++){ + NR_SearchSpace_t *ss = mac->SSpace[bwp_id - 1][coreset_id - 1][ss_id]; + fapi_nr_dl_config_dci_dl_pdu_rel15_t *rel15 = &dl_config->dl_config_list[dl_config->number_pdus].dci_config_pdu.dci_config_rel15; + NR_BWP_DownlinkCommon_t *bwp_Common = bwp->bwp_Common; + NR_SetupRelease_PDCCH_ConfigCommon_t *pdcch_ConfigCommon = bwp_Common->pdcch_ConfigCommon; + struct NR_PhysicalCellGroupConfig *phy_cgc = mac->scg->physicalCellGroupConfig; + switch (ss->searchSpaceType->present){ + case NR_SearchSpace__searchSpaceType_PR_common: + // this is for CSSs, we use BWP common and pdcch_ConfigCommon + + // Fetch configuration for searchSpaceZero + // note: The search space with the SearchSpaceId = 0 identifies the search space configured via PBCH (MIB) and in ServingCellConfigCommon (searchSpaceZero). + if (pdcch_ConfigCommon->choice.setup->searchSpaceZero){ + LOG_D(MAC, "[DCI_CONFIG] Configure SearchSpace#0 of the initial BWP\n"); + LOG_W(MAC, "[DCI_CONFIG] This should not be available yet..."); } - } - if (mac->ULbwp[0]==NULL) { - AssertFatal(mac->scd->uplinkConfig->uplinkBWP_ToAddModList!=NULL,"uplinkBWP_ToAddModList is null\n"); - AssertFatal(mac->scd->uplinkConfig->uplinkBWP_ToAddModList->list.count==1,"uplinkBWP_ToAddModList->list->count is %d\n", - mac->scd->uplinkConfig->uplinkBWP_ToAddModList->list.count); - mac->ULbwp[0] = mac->scd->uplinkConfig->uplinkBWP_ToAddModList->list.array[0]; - AssertFatal(mac->ULbwp[0]->bwp_Dedicated!=NULL,"bwp_Dedicated is null\n"); - } - // check search spaces - - int ss_id=0; - fapi_nr_dl_config_dci_dl_pdu_rel15_t *rel15; - int sps =mac->DLbwp[0]->bwp_Common->genericParameters.cyclicPrefix == NULL ? 14 : 12; - - while(mac->SSpace[0][0][ss_id]!=NULL && - ss_id < mac->DLbwp[0]->bwp_Dedicated->pdcch_Config->choice.setup->searchSpacesToAddModList->list.count) { - - AssertFatal(mac->SSpace[0][0][ss_id]->monitoringSymbolsWithinSlot!=NULL,"ss->monitoringSymbolsWithinSlot is null\n"); - AssertFatal(mac->SSpace[0][0][ss_id]->monitoringSymbolsWithinSlot->buf!=NULL,"ss->monitoringSymbolsWithinSlot->buf is null\n"); - - ss_id++; - } - if (mac->ra_state == WAIT_RAR) { - // check for RAR - rel15 = &dl_config->dl_config_list[dl_config->number_pdus].dci_config_pdu.dci_config_rel15; - rel15->rnti = 2;//get_RA_RNTI(mac,frame,slot); - dl_config->number_pdus = dl_config->number_pdus + 1; - } - else if (mac->ra_state == WAIT_CONTENTION_RESOLUTION) { - rel15 = &dl_config->dl_config_list[dl_config->number_pdus].dci_config_pdu.dci_config_rel15; - rel15->rnti = mac->t_crnti; - dl_config->number_pdus = dl_config->number_pdus + 1; - } - if (mac->crnti>0) { - rel15 = &dl_config->dl_config_list[dl_config->number_pdus].dci_config_pdu.dci_config_rel15; - rel15->rnti = mac->crnti; - rel15->BWPSize = NRRIV2BW(mac->DLbwp[0]->bwp_Common->genericParameters.locationAndBandwidth,275); - rel15->BWPStart = NRRIV2PRBOFFSET(mac->DLbwp[0]->bwp_Common->genericParameters.locationAndBandwidth,275); - rel15->SubcarrierSpacing = mac->DLbwp[0]->bwp_Common->genericParameters.subcarrierSpacing; - // get UE-specific search space - for (ss_id=0;ss_idSSpace[0][0][ss_id]!=NULL;ss_id++) - if (mac->SSpace[0][0][ss_id]->searchSpaceType->present == NR_SearchSpace__searchSpaceType_PR_ue_Specific) break; - AssertFatal(ss_idSSpace[0][0][ss_id]->monitoringSymbolsWithinSlot->buf[0]<<(sps-8)) | - (mac->SSpace[0][0][ss_id]->monitoringSymbolsWithinSlot->buf[1]>>(16-sps)); - - for (int i=0; i>(sps-1-i))&1) { - rel15->coreset.StartSymbolIndex=i; - break; - } - rel15->coreset.duration = mac->coreset[0][0]->duration; - for (int i=0;i<6;i++) - rel15->coreset.frequency_domain_resource[i] = mac->coreset[0][0]->frequencyDomainResources.buf[i]; - - rel15->coreset.CceRegMappingType = mac->coreset[0][0]->cce_REG_MappingType.present == NR_ControlResourceSet__cce_REG_MappingType_PR_interleaved? - FAPI_NR_CCE_REG_MAPPING_TYPE_INTERLEAVED : FAPI_NR_CCE_REG_MAPPING_TYPE_NON_INTERLEAVED; - if (rel15->coreset.CceRegMappingType == FAPI_NR_CCE_REG_MAPPING_TYPE_INTERLEAVED) { - rel15->coreset.RegBundleSize = (mac->coreset[0][0]->cce_REG_MappingType.choice.interleaved->reg_BundleSize == NR_ControlResourceSet__cce_REG_MappingType__interleaved__reg_BundleSize_n6) ? 6 : (2+mac->coreset[0][0]->cce_REG_MappingType.choice.interleaved->reg_BundleSize); - rel15->coreset.InterleaverSize = (mac->coreset[0][0]->cce_REG_MappingType.choice.interleaved->interleaverSize==NR_ControlResourceSet__cce_REG_MappingType__interleaved__interleaverSize_n6) ? 6 : (2+mac->coreset[0][0]->cce_REG_MappingType.choice.interleaved->interleaverSize); - AssertFatal(mac->scc->physCellId != NULL,"mac->scc->physCellId is null\n"); - rel15->coreset.ShiftIndex = mac->coreset[0][0]->cce_REG_MappingType.choice.interleaved->shiftIndex != NULL ? *mac->coreset[0][0]->cce_REG_MappingType.choice.interleaved->shiftIndex : *mac->scc->physCellId; + if (ss->searchSpaceType->choice.common->dci_Format0_0_AndFormat1_0){ + // check available SS IDs + if (pdcch_ConfigCommon->choice.setup->ra_SearchSpace){ + if (ss->searchSpaceId == *pdcch_ConfigCommon->choice.setup->ra_SearchSpace){ + LOG_D(MAC, "[DCI_CONFIG] Configure monitoring of PDCCH candidates in Type1-PDCCH common random access search space\n"); + switch(mac->ra_state){ + case WAIT_RAR: + config_dci_pdu(mac, rel15, dl_config, NR_RNTI_RA, ss_id, NR_DL_DCI_FORMAT_1_0); + fill_dci_search_candidates(ss, rel15); + break; + case WAIT_CONTENTION_RESOLUTION: + rel15->rnti = mac->t_crnti; + break; + default: + break; + } + } + } + if (pdcch_ConfigCommon->choice.setup->searchSpaceSIB1){ + if (ss->searchSpaceId == *pdcch_ConfigCommon->choice.setup->searchSpaceSIB1){ + // Configure monitoring of PDCCH candidates in Type0-PDCCH common search space on the MCG + LOG_W(MAC, "[DCI_CONFIG] This seach space should not be configured yet..."); + } + } + if (pdcch_ConfigCommon->choice.setup->searchSpaceOtherSystemInformation){ + if (ss->searchSpaceId == *pdcch_ConfigCommon->choice.setup->searchSpaceOtherSystemInformation){ + // Configure monitoring of PDCCH candidates in Type0-PDCCH common search space on the MCG + LOG_W(MAC, "[DCI_CONFIG] This seach space should not be configured yet..."); + } + } + if (pdcch_ConfigCommon->choice.setup->pagingSearchSpace){ + if (ss->searchSpaceId == *pdcch_ConfigCommon->choice.setup->pagingSearchSpace){ + // Configure monitoring of PDCCH candidates in Type2-PDCCH common search space on the MCG + LOG_W(MAC, "[DCI_CONFIG] This seach space should not be configured yet..."); + } + } + if (phy_cgc){ + if (phy_cgc->cs_RNTI){ + LOG_D(MAC, "[DCI_CONFIG] Configure monitoring of PDCCH candidates in Type3-PDCCH common search space for dci_Format0_0_AndFormat1_0 with CRC scrambled by CS-RNTI...\n"); + LOG_W(MAC, "[DCI_CONFIG] This RNTI should not be configured yet..."); + } + if (phy_cgc->ext1){ + if (phy_cgc->ext1->mcs_C_RNTI){ + LOG_D(MAC, "[DCI_CONFIG] Configure monitoring of PDCCH candidates in user specific search space for dci_Format0_0_AndFormat1_0 with CRC scrambled by MCS-C-RNTI...\n"); + LOG_W(MAC, "[DCI_CONFIG] This RNTI should not be configured yet..."); + } + } + } + } // end DCI 00 and 01 + // DCI 2_0 + if (ss->searchSpaceType->choice.common->dci_Format2_0){ + LOG_D(MAC, "[DCI_CONFIG] Configure monitoring of PDCCH candidates in Type3-PDCCH common search space for DCI format 2_0 with CRC scrambled by SFI-RNTI \n"); + LOG_W(MAC, "[DCI_CONFIG] This format should not be configured yet..."); } - else { - rel15->coreset.RegBundleSize = 0; - rel15->coreset.InterleaverSize = 0; - rel15->coreset.ShiftIndex = 0; + // DCI 2_1 + if (ss->searchSpaceType->choice.common->dci_Format2_1){ + LOG_D(MAC, "[DCI_CONFIG] Configure monitoring of PDCCH candidates in Type3-PDCCH common search space for DCI format 2_1 with CRC scrambled by INT-RNTI \n"); + LOG_W(MAC, "[DCI_CONFIG] This format should not be configured yet..."); } - rel15->coreset.CoreSetType = 1; - rel15->coreset.precoder_granularity = mac->coreset[0][0]->precoderGranularity; - if (mac->coreset[0][0]->pdcch_DMRS_ScramblingID) - rel15->coreset.pdcch_dmrs_scrambling_id = *mac->coreset[0][0]->pdcch_DMRS_ScramblingID; - else - rel15->coreset.pdcch_dmrs_scrambling_id = *mac->scc->physCellId; - fill_dci_search_candidates(mac->SSpace[0][0][ss_id],rel15); - rel15->dci_format = NR_DL_DCI_FORMAT_1_0; - rel15->dci_length = nr_dci_size(rel15->dci_format,NR_RNTI_C,rel15->BWPSize); - dl_config->dl_config_list[dl_config->number_pdus].pdu_type = FAPI_NR_DL_CONFIG_TYPE_DCI; - dl_config->number_pdus = dl_config->number_pdus + 1; + // DCI 2_2 + if (ss->searchSpaceType->choice.common->dci_Format2_2){ + LOG_D(MAC, "[DCI_CONFIG] Configure monitoring of PDCCH candidates in Type3-PDCCH common search space for DCI format 2_2 with CRC scrambled by TPC-RNTI \n"); + LOG_W(MAC, "[DCI_CONFIG] This format should not be configured yet..."); + } + // DCI 2_3 + if (ss->searchSpaceType->choice.common->dci_Format2_3){ + LOG_D(MAC, "[DCI_CONFIG] Configure monitoring of PDCCH candidates in Type3-PDCCH common search space for DCI format 2_3 with CRC scrambled by TPC-SRS-RNTI \n"); + LOG_W(MAC, "[DCI_CONFIG] This format should not be configured yet..."); + } + + break; + case NR_SearchSpace__searchSpaceType_PR_ue_Specific: + // this is an USS + if (ss->searchSpaceType->choice.ue_Specific){ + if(ss->searchSpaceType->choice.ue_Specific->dci_Formats == NR_SearchSpace__searchSpaceType__ue_Specific__dci_Formats_formats0_1_And_1_1){ + // Monitors DCI 01 and 11 scrambled with C-RNTI, or CS-RNTI(s), or SP-CSI-RNTI + if (get_softmodem_params()->phy_test == 1 && mac->crnti > 0) { + LOG_D(MAC, "[DCI_CONFIG] Configure monitoring of PDCCH candidates in the user specific search space\n"); + config_dci_pdu(mac, rel15, dl_config, NR_RNTI_C, ss_id, NR_DL_DCI_FORMAT_1_1); + fill_dci_search_candidates(ss, rel15); + + #ifdef DEBUG_DCI + LOG_D(MAC, "[DCI_CONFIG] ss %d ue_Specific %p searchSpaceType->present %d dci_Formats %d\n", + ss_id, + ss->searchSpaceType->choice.ue_Specific, + ss->searchSpaceType->present, + ss->searchSpaceType->choice.ue_Specific->dci_Formats); + #endif + } + if (phy_cgc){ + if (phy_cgc->cs_RNTI){ + LOG_D(MAC, "[DCI_CONFIG] Configure monitoring of PDCCH candidates in user specific search space for dci_Format0_0_AndFormat1_0 with CRC scrambled by CS-RNTI...\n"); + LOG_W(MAC, "[DCI_CONFIG] This RNTI should not be configured yet..."); + } + if (phy_cgc->sp_CSI_RNTI){ + LOG_D(MAC, "[DCI_CONFIG] Configure monitoring of PDCCH candidates in user specific search space for dci_Format0_0_AndFormat1_0 with CRC scrambled by SP-CSI-RNTI...\n"); + LOG_W(MAC, "[DCI_CONFIG] This RNTI should not be configured yet..."); + } + if (phy_cgc->ext1){ + if (phy_cgc->ext1->mcs_C_RNTI){ + LOG_D(MAC, "[DCI_CONFIG] Configure monitoring of PDCCH candidates in user specific search space for dci_Format0_0_AndFormat1_0 with CRC scrambled by MCS-C-RNTI...\n"); + LOG_W(MAC, "[DCI_CONFIG] This RNTI should not be configured yet..."); + } + } + } + } + } + break; + default: + AssertFatal(1 == 0, "[DCI_CONFIG] Unrecognized search space type..."); + break; } } } - - - - diff --git a/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c b/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c index a49a3f51a3..ab533af941 100644 --- a/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c +++ b/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c @@ -31,28 +31,38 @@ */ -/* MAC related headers */ -#include "mac_proto.h" +#include +#include + +/* exe */ +#include "executables/nr-softmodem.h" + +/* RRC*/ +#include "RRC/NR_UE/rrc_proto.h" +#include "NR_RACH-ConfigCommon.h" +#include "NR_RACH-ConfigGeneric.h" +#include "NR_FrequencyInfoDL.h" +#include "NR_PDCCH-ConfigCommon.h" + +/* MAC */ #include "mac_defs.h" -#include "LAYER2/NR_MAC_COMMON/nr_mac.h" -#include "mac_extern.h" +#include "NR_MAC_COMMON/nr_mac.h" +#include "NR_MAC_UE/mac_proto.h" +#include "NR_MAC_UE/mac_extern.h" #include "common/utils/nr/nr_common.h" -//#include "LAYER2/MAC/mac_vars.h" // TODO Note that mac_vars.h is not NR specific and this should be updated - // also, the use of the same should be updated in nr-softmodem and nr-uesoftmodem - -/* PHY UE related headers*/ +/* PHY UE */ #include "SCHED_NR_UE/defs.h" - -#include "RRC/NR_UE/rrc_proto.h" -#include "assertions.h" #include "PHY/defs_nr_UE.h" /*Openair Packet Tracer */ #include "UTIL/OPT/opt.h" #include "OCG.h" #include "executables/softmodem-common.h" -/* log utils */ + +/* utils */ +#include "assertions.h" + #include "common/utils/LOG/log.h" #include "SIMULATION/TOOLS/sim.h" // for taus #include "openair2/LAYER2/NR_MAC_COMMON/nr_mac.h" @@ -60,11 +70,14 @@ #include #include -//int mbms_rab_id = 2047; //#define ENABLE_MAC_PAYLOAD_DEBUG 1 #define DEBUG_EXTRACT_DCI 1 +extern int bwp_id; +extern dci_pdu_rel15_t *def_dci_pdu_rel15; +extern const uint16_t nr_slots_per_frame[5]; + extern void mac_rlc_data_ind ( const module_id_t module_idP, const rnti_t rntiP, @@ -261,7 +274,7 @@ int8_t nr_ue_decode_mib(module_id_t module_id, uint16_t frame_number_4lsb = 0; for (int i=0; i<4; i++) frame_number_4lsb |= ((extra_bits>>i)&1)<<(3-i); - uint8_t half_frame_bit = ( extra_bits >> 4 ) & 0x1; // extra bits[4] + //uint8_t half_frame_bit = ( extra_bits >> 4 ) & 0x1; // extra bits[4] uint8_t ssb_subcarrier_offset_msb = ( extra_bits >> 5 ) & 0x1; // extra bits[5] uint8_t ssb_subcarrier_offset = (uint8_t)mac->mib->ssb_SubcarrierOffset; @@ -641,100 +654,474 @@ uint32_t get_ssb_frame(uint32_t test){ // 1. TODO: Call RRC for link status return to PHY // 2. TODO: Perform SR/BSR procedures for scheduling feedback // 3. TODO: Perform PHR procedures -NR_UE_L2_STATE_t nr_ue_scheduler(const module_id_t module_id, - const uint8_t gNB_index, - const int cc_id, - const frame_t rx_frame, - const slot_t rx_slot, - const int32_t ssb_index, - const frame_t tx_frame, - const slot_t tx_slot ){ +NR_UE_L2_STATE_t nr_ue_scheduler(nr_downlink_indication_t *dl_info, nr_uplink_indication_t *ul_info){ uint32_t search_space_mask = 0; - NR_UE_MAC_INST_t *mac = get_mac_inst(module_id); - fapi_nr_dl_config_request_t *dl_config = &mac->dl_config_request; - - // check type0 from 38.213 13 if we have no CellGroupConfig - if ( mac->scd == NULL) { - if( ssb_index != -1){ - - if(mac->type0_pdcch_ss_mux_pattern == 1){ - // 38.213 chapter 13 - if((mac->type0_pdcch_ss_sfn_c == SFN_C_MOD_2_EQ_0) && !(rx_frame & 0x1) && (rx_slot == mac->type0_pdcch_ss_n_c)){ - search_space_mask = search_space_mask | type0_pdcch; - mac->type0_pdcch_consecutive_slots = mac->type0_pdcch_dci_config.coreset.duration; - } - if((mac->type0_pdcch_ss_sfn_c == SFN_C_MOD_2_EQ_1) && (rx_frame & 0x1) && (rx_slot == mac->type0_pdcch_ss_n_c)){ - search_space_mask = search_space_mask | type0_pdcch; - mac->type0_pdcch_consecutive_slots = mac->type0_pdcch_dci_config.coreset.duration; - } + if (dl_info){ + + module_id_t mod_id = dl_info->module_id; + uint32_t gNB_index = dl_info->gNB_index; + int cc_id = dl_info->cc_id; + frame_t rx_frame = dl_info->frame; + slot_t rx_slot = dl_info->slot; + NR_UE_MAC_INST_t *mac = get_mac_inst(mod_id); + + fapi_nr_dl_config_request_t *dl_config = &mac->dl_config_request; + nr_scheduled_response_t scheduled_response; + nr_dcireq_t dcireq; + + // check type0 from 38.213 13 if we have no CellGroupConfig + // TODO: implementation to be completed + if (mac->scg == NULL) { + if(dl_info->ssb_index != -1){ + + if(mac->type0_pdcch_ss_mux_pattern == 1){ + // 38.213 chapter 13 + if((mac->type0_pdcch_ss_sfn_c == SFN_C_MOD_2_EQ_0) && !(rx_frame & 0x1) && (rx_slot == mac->type0_pdcch_ss_n_c)){ + search_space_mask = search_space_mask | type0_pdcch; + mac->type0_pdcch_consecutive_slots = mac->type0_pdcch_dci_config.coreset.duration; + } + if((mac->type0_pdcch_ss_sfn_c == SFN_C_MOD_2_EQ_1) && (rx_frame & 0x1) && (rx_slot == mac->type0_pdcch_ss_n_c)){ + search_space_mask = search_space_mask | type0_pdcch; + mac->type0_pdcch_consecutive_slots = mac->type0_pdcch_dci_config.coreset.duration; + } + } + if(mac->type0_pdcch_ss_mux_pattern == 2){ + // 38.213 Table 13-13, 13-14 + if((rx_frame == get_ssb_frame(rx_frame)) && (rx_slot == mac->type0_pdcch_ss_n_c)){ + search_space_mask = search_space_mask | type0_pdcch; + mac->type0_pdcch_consecutive_slots = mac->type0_pdcch_dci_config.coreset.duration; + } + } + if(mac->type0_pdcch_ss_mux_pattern == 3){ + // 38.213 Table 13-15 + if((rx_frame == get_ssb_frame(rx_frame)) && (rx_slot == mac->type0_pdcch_ss_n_c)){ + search_space_mask = search_space_mask | type0_pdcch; + mac->type0_pdcch_consecutive_slots = mac->type0_pdcch_dci_config.coreset.duration; + } + } + } // ssb_index != -1 + + // Type0 PDCCH search space + if((search_space_mask & type0_pdcch) || ( mac->type0_pdcch_consecutive_slots != 0 )){ + mac->type0_pdcch_consecutive_slots = mac->type0_pdcch_consecutive_slots - 1; + + dl_config->dl_config_list[dl_config->number_pdus].dci_config_pdu.dci_config_rel15 = mac->type0_pdcch_dci_config; + dl_config->dl_config_list[dl_config->number_pdus].pdu_type = FAPI_NR_DL_CONFIG_TYPE_DCI; + + /* + dl_config->dl_config_list[dl_config->number_pdus].dci_config_pdu.dci_config_rel15.rnti = 0xaaaa; // to be set + dl_config->dl_config_list[dl_config->number_pdus].dci_config_pdu.dci_config_rel15.N_RB_BWP = 106; // to be set + + LOG_I(MAC,"nr_ue_scheduler Type0 PDCCH with rnti %x, BWP %d\n", + dl_config->dl_config_list[dl_config->number_pdus].dci_config_pdu.dci_config_rel15.rnti, + dl_config->dl_config_list[dl_config->number_pdus].dci_config_pdu.dci_config_rel15.N_RB_BWP); + */ + dl_config->number_pdus = dl_config->number_pdus + 1; + mac->scheduled_response.dl_config = dl_config; } - if(mac->type0_pdcch_ss_mux_pattern == 2){ - // 38.213 Table 13-13, 13-14 - if((rx_frame == get_ssb_frame(rx_frame)) && (rx_slot == mac->type0_pdcch_ss_n_c)){ - search_space_mask = search_space_mask | type0_pdcch; - mac->type0_pdcch_consecutive_slots = mac->type0_pdcch_dci_config.coreset.duration; - } + } else { // we have an scg + + dcireq.module_id = mod_id; + dcireq.gNB_index = gNB_index; + dcireq.cc_id = cc_id; + dcireq.frame = rx_frame; + dcireq.slot = rx_slot; + nr_ue_dcireq(&dcireq); //to be replaced with function pointer later + + // we should have received a DL DCI here, so configure DL accordingly + scheduled_response.dl_config = &dcireq.dl_config_req; + scheduled_response.ul_config = NULL; + scheduled_response.tx_request = NULL; + scheduled_response.module_id = mod_id; + scheduled_response.CC_id = cc_id; + scheduled_response.frame = rx_frame; + scheduled_response.slot = rx_slot; + + if(mac->if_module != NULL && mac->if_module->scheduled_response != NULL){ + mac->if_module->scheduled_response(&scheduled_response); } - if(mac->type0_pdcch_ss_mux_pattern == 3){ - // 38.213 Table 13-15 - if((rx_frame == get_ssb_frame(rx_frame)) && (rx_slot == mac->type0_pdcch_ss_n_c)){ - search_space_mask = search_space_mask | type0_pdcch; - mac->type0_pdcch_consecutive_slots = mac->type0_pdcch_dci_config.coreset.duration; - } - } - } // ssb_index != -1 - - // Type0 PDCCH search space - if((search_space_mask & type0_pdcch) || ( mac->type0_pdcch_consecutive_slots != 0 )){ - mac->type0_pdcch_consecutive_slots = mac->type0_pdcch_consecutive_slots - 1; - - dl_config->dl_config_list[dl_config->number_pdus].dci_config_pdu.dci_config_rel15 = mac->type0_pdcch_dci_config; - dl_config->dl_config_list[dl_config->number_pdus].pdu_type = FAPI_NR_DL_CONFIG_TYPE_DCI; - + /* - dl_config->dl_config_list[dl_config->number_pdus].dci_config_pdu.dci_config_rel15.rnti = 0xaaaa; // to be set - dl_config->dl_config_list[dl_config->number_pdus].dci_config_pdu.dci_config_rel15.N_RB_BWP = 106; // to be set - - LOG_I(MAC,"nr_ue_scheduler Type0 PDCCH with rnti %x, BWP %d\n", - dl_config->dl_config_list[dl_config->number_pdus].dci_config_pdu.dci_config_rel15.rnti, - dl_config->dl_config_list[dl_config->number_pdus].dci_config_pdu.dci_config_rel15.N_RB_BWP); - */ - dl_config->number_pdus = dl_config->number_pdus + 1; + if(search_space_mask & type0a_pdcch){ + } + + if(search_space_mask & type1_pdcch){ + } + + if(search_space_mask & type2_pdcch){ + } + + if(search_space_mask & type3_pdcch){ + } + */ + } + } else if (ul_info) { + + if (get_softmodem_params()->phy_test && ul_info->slot_tx == 8) { // ULSCH is handled only in phy-test mode (consistently with OAI gNB) + + uint8_t nb_dmrs_re_per_rb; + uint8_t ulsch_input_buffer[MAX_ULSCH_PAYLOAD_BYTES]; + uint8_t data_existing = 0; + uint16_t TBS_bytes; + uint32_t TBS; + int i; + + module_id_t mod_id = ul_info->module_id; + uint32_t gNB_index = ul_info->gNB_index; + int cc_id = ul_info->cc_id; + frame_t rx_frame = ul_info->frame_rx; + slot_t rx_slot = ul_info->slot_rx; + frame_t frame_tx = ul_info->frame_tx; + slot_t slot_tx = ul_info->slot_tx; + NR_UE_MAC_INST_t *mac = get_mac_inst(mod_id); + uint8_t access_mode = SCHEDULED_ACCESS; + + // program PUSCH. this should actually be done upon reception of an UL DCI + nr_dcireq_t dcireq; + nr_scheduled_response_t scheduled_response; + fapi_nr_tx_request_t tx_req; + fapi_nr_tx_request_body_t tx_req_body; + + //--------------------------Temporary configuration-----------------------------// + uint16_t rnti = 0x1234; + uint32_t rb_size = 50; + uint32_t rb_start = 0; + uint8_t nr_of_symbols = 11; + uint8_t start_symbol_index = 0; + uint8_t nrOfLayers = 1; + uint8_t mcs_index = 9; + uint8_t mcs_table = 0; + uint8_t harq_process_id = 0; + uint8_t rv_index = 0; + uint16_t l_prime_mask = get_l_prime(nr_of_symbols, typeB, pusch_dmrs_pos0, pusch_len1); + uint8_t dmrs_config_type = 0; + uint8_t ptrs_mcs1 = 2; + uint8_t ptrs_mcs2 = 4; + uint8_t ptrs_mcs3 = 10; + uint16_t n_rb0 = 25; + uint16_t n_rb1 = 75; + uint16_t pdu_bit_map = PUSCH_PDU_BITMAP_PUSCH_DATA; + uint8_t ptrs_time_density = get_L_ptrs(ptrs_mcs1, ptrs_mcs2, ptrs_mcs3, mcs_index, mcs_table); + uint8_t ptrs_freq_density = get_K_ptrs(n_rb0, n_rb1, rb_size); + uint8_t no_data_in_dmrs = 1; + uint16_t number_dmrs_symbols = 0; + uint16_t ul_dmrs_symb_pos = l_prime_mask << start_symbol_index; + //------------------------------------------------------------------------------// + + for (i = start_symbol_index; i < start_symbol_index + nr_of_symbols; i++) { + if((ul_dmrs_symb_pos >> i) & 0x01) + number_dmrs_symbols += 1; + } + + if(no_data_in_dmrs) + nb_dmrs_re_per_rb = 12; + else + nb_dmrs_re_per_rb = ((dmrs_config_type == pusch_dmrs_type1) ? 6:4); + + TBS = nr_compute_tbs(nr_get_Qm_ul(mcs_index, 0), + nr_get_code_rate_ul(mcs_index, 0), + rb_size, + nr_of_symbols, + nb_dmrs_re_per_rb*number_dmrs_symbols, + 0, + 0, + nrOfLayers); + TBS_bytes = TBS/8; + + if (IS_SOFTMODEM_NOS1){ + // Getting IP traffic to be transmitted + data_existing = nr_ue_get_sdu(mod_id, + cc_id, + frame_tx, + slot_tx, + 0, + ulsch_input_buffer, + TBS_bytes, + &access_mode); + } + + //Random traffic to be transmitted if there is no IP traffic available for this Tx opportunity + if (!IS_SOFTMODEM_NOS1 || !data_existing) { + //Use zeros for the header bytes in noS1 mode, in order to make sure that the LCID is not valid + //and block this traffic from being forwarded to the upper layers at the gNB + LOG_D(PHY, "Random data to be tranmsitted: \n"); + + //Give the first byte a dummy value (a value not corresponding to any valid LCID based on 38.321, Table 6.2.1-2) + //in order to distinguish the PHY random packets at the MAC layer of the gNB receiver from the normal packets that should + //have a valid LCID (nr_process_mac_pdu function) + ulsch_input_buffer[0] = 0x31; + + for (i = 1; i < TBS_bytes; i++) { + ulsch_input_buffer[i] = (unsigned char) rand(); + //printf(" input encoder a[%d]=0x%02x\n",i,harq_process_ul_ue->a[i]); + } + } + +#ifdef DEBUG_MAC_PDU + + LOG_D(PHY, "Is data existing ?: %d \n", data_existing); + LOG_I(PHY, "Printing MAC PDU to be encoded, TBS is: %d \n", TBS_bytes); + for (i = 0; i < TBS_bytes; i++) { + printf("%02x", ulsch_input_buffer[i]); + } + printf("\n"); + +#endif + + dcireq.module_id = mod_id; + dcireq.gNB_index = gNB_index; + dcireq.cc_id = cc_id; + dcireq.frame = rx_frame; + dcireq.slot = rx_slot; + + scheduled_response.dl_config = NULL; + scheduled_response.ul_config = &dcireq.ul_config_req; + // Config UL TX PDU + tx_req.slot = slot_tx; + tx_req.sfn = frame_tx; + // tx_req->tx_config // TbD + tx_req.number_of_pdus = 1; + tx_req_body.pdu_length = TBS_bytes; + tx_req_body.pdu_index = 0; + tx_req_body.pdu = ulsch_input_buffer; + + scheduled_response.tx_request = &tx_req; + scheduled_response.tx_request->tx_request_body = &tx_req_body; + scheduled_response.module_id = mod_id; + scheduled_response.CC_id = cc_id; + scheduled_response.frame = rx_frame; + scheduled_response.slot = rx_slot; + + scheduled_response.ul_config->slot = ul_info->slot_tx; + scheduled_response.ul_config->number_pdus = 1; + scheduled_response.ul_config->ul_config_list[0].pdu_type = FAPI_NR_UL_CONFIG_TYPE_PUSCH; + scheduled_response.ul_config->ul_config_list[0].pusch_config_pdu.rnti = rnti; + scheduled_response.ul_config->ul_config_list[0].pusch_config_pdu.rb_size = rb_size; + scheduled_response.ul_config->ul_config_list[0].pusch_config_pdu.rb_start = rb_start; + scheduled_response.ul_config->ul_config_list[0].pusch_config_pdu.nr_of_symbols = nr_of_symbols; + scheduled_response.ul_config->ul_config_list[0].pusch_config_pdu.start_symbol_index = start_symbol_index; + scheduled_response.ul_config->ul_config_list[0].pusch_config_pdu.ul_dmrs_symb_pos = ul_dmrs_symb_pos; + scheduled_response.ul_config->ul_config_list[0].pusch_config_pdu.dmrs_config_type = dmrs_config_type; + scheduled_response.ul_config->ul_config_list[0].pusch_config_pdu.mcs_index = mcs_index; + scheduled_response.ul_config->ul_config_list[0].pusch_config_pdu.mcs_table = mcs_table; + scheduled_response.ul_config->ul_config_list[0].pusch_config_pdu.num_dmrs_cdm_grps_no_data = 1; + scheduled_response.ul_config->ul_config_list[0].pusch_config_pdu.pusch_data.new_data_indicator = 0; + scheduled_response.ul_config->ul_config_list[0].pusch_config_pdu.pusch_data.rv_index = rv_index; + scheduled_response.ul_config->ul_config_list[0].pusch_config_pdu.nrOfLayers = nrOfLayers; + scheduled_response.ul_config->ul_config_list[0].pusch_config_pdu.pusch_data.harq_process_id = harq_process_id; + scheduled_response.ul_config->ul_config_list[0].pusch_config_pdu.pdu_bit_map = pdu_bit_map; + scheduled_response.ul_config->ul_config_list[0].pusch_config_pdu.pusch_ptrs.ptrs_time_density = ptrs_time_density; + scheduled_response.ul_config->ul_config_list[0].pusch_config_pdu.pusch_ptrs.ptrs_freq_density = ptrs_freq_density; + scheduled_response.ul_config->ul_config_list[0].pusch_config_pdu.pusch_ptrs.ptrs_ports_list = (nfapi_nr_ue_ptrs_ports_t *) malloc(2*sizeof(nfapi_nr_ue_ptrs_ports_t)); + scheduled_response.ul_config->ul_config_list[0].pusch_config_pdu.pusch_ptrs.ptrs_ports_list[0].ptrs_re_offset = 0; + + if (1 << ptrs_time_density >= nr_of_symbols) { + scheduled_response.ul_config->ul_config_list[0].pusch_config_pdu.pdu_bit_map &= ~PUSCH_PDU_BITMAP_PUSCH_PTRS; // disable PUSCH PTRS + } + + if(mac->if_module != NULL && mac->if_module->scheduled_response != NULL){ + mac->if_module->scheduled_response(&scheduled_response); + } + + // TODO: expand + // Note: Contention resolution is currently not active + if (mac->RA_contention_resolution_timer_active == 1) + ue_contention_resolution(mod_id, gNB_index, cc_id, ul_info->frame_tx); } } - else { // get PDCCH configuration(s) from SCGConfig - - - - - // get Coreset and SearchSpace Information from spCellConfigDedicated - - - - /* - if(search_space_mask & type0a_pdcch){ - } - - if(search_space_mask & type1_pdcch){ - } - - if(search_space_mask & type2_pdcch){ - } - - if(search_space_mask & type3_pdcch){ - } - */ - } - - - mac->scheduled_response.dl_config = dl_config; - - return UE_CONNECTION_OK; } +// This function schedules the PRACH according to prach_ConfigurationIndex and TS 38.211, tables 6.3.3.2.x +// It fills the PRACH PDU per each FD occasion. +// PRACH formats 9, 10, 11 are corresponding to dual PRACH format configurations A1/B1, A2/B2, A3/B3. +// - todo: +// - Partial configuration is actually already stored in (fapi_nr_prach_config_t) &mac->phy_config.config_req->prach_config +void nr_ue_prach_scheduler(module_id_t module_idP, frame_t frameP, sub_frame_t slotP) { + + uint8_t config_index, mu, N_dur, N_t_slot, start_symbol; + uint16_t format, format0, format1, ncs; + int msg1_FDM, is_nr_prach_slot, fdm; + + NR_UE_MAC_INST_t *mac = get_mac_inst(module_idP); + + fapi_nr_ul_config_request_t *ul_config = &mac->ul_config_request; + fapi_nr_ul_config_prach_pdu *prach_config_pdu; + fapi_nr_config_request_t *cfg = &mac->phy_config.config_req; + fapi_nr_prach_config_t *prach_config = &cfg->prach_config; + + NR_ServingCellConfigCommon_t *scc = mac->scc; + NR_RACH_ConfigCommon_t *setup = scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup; + NR_FrequencyInfoDL_t *frequencyInfoDL = scc->downlinkConfigCommon->frequencyInfoDL; + NR_RACH_ConfigGeneric_t *rach_ConfigGeneric = &setup->rach_ConfigGeneric; + config_index = rach_ConfigGeneric->prach_ConfigurationIndex; + + mac->RA_offset = 2; // to compensate the rx frame offset at the gNB + mac->generate_nr_prach = 0; // Reset flag for PRACH generation + + if (is_nr_UL_slot(scc, slotP)) { + + if (setup->msg1_SubcarrierSpacing) + mu = *setup->msg1_SubcarrierSpacing; + else + mu = frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing; + + is_nr_prach_slot = get_nr_prach_info_from_index(config_index, + (int)frameP, + (int)slotP, + frequencyInfoDL->absoluteFrequencyPointA, + mu, + cfg->cell_config.frame_duplex_type, + &format, + &start_symbol, + &N_t_slot, + &N_dur); + + if (is_nr_prach_slot && mac->ra_state == RA_UE_IDLE) { + + mac->generate_nr_prach = 1; + + fdm = rach_ConfigGeneric->msg1_FDM; + + switch (fdm){ + case 0: + case 1: + case 2: + case 3: + msg1_FDM = 1 << fdm; + break; + default: + AssertFatal(1 == 0, "Unknown msg1_FDM from rach_ConfigGeneric %d\n", fdm); + } + + format0 = format & 0xff; // single PRACH format + format1 = (format >> 8) & 0xff; // dual PRACH format + + ul_config->sfn = frameP; + ul_config->slot = slotP; + + for (int n = 0; n < msg1_FDM; n++) { // one structure per frequency domain occasion + + ul_config->ul_config_list[ul_config->number_pdus].pdu_type = FAPI_NR_UL_CONFIG_TYPE_PRACH; + prach_config_pdu = &ul_config->ul_config_list[ul_config->number_pdus].prach_config_pdu; + memset(prach_config_pdu, 0, sizeof(fapi_nr_ul_config_prach_pdu)); + ul_config->number_pdus += 1; + + ncs = get_NCS(rach_ConfigGeneric->zeroCorrelationZoneConfig, format0, setup->restrictedSetConfig); + + // filling PRACH PDU for FAPI config request + prach_config_pdu->phys_cell_id = *scc->physCellId; + prach_config_pdu->num_prach_ocas = N_t_slot; + prach_config_pdu->prach_start_symbol = start_symbol; + prach_config_pdu->num_ra = n; + prach_config_pdu->num_cs = ncs; + prach_config_pdu->root_seq_id = prach_config->num_prach_fd_occasions_list[n].prach_root_sequence_index; + prach_config_pdu->restricted_set = prach_config->restricted_set_config; + prach_config_pdu->freq_msg1 = prach_config->num_prach_fd_occasions_list[n].k1; + + if (format1 != 0xff) { + switch(format0) { // dual PRACH format + case 0xa1: + prach_config_pdu->prach_format = 9; + break; + case 0xa2: + prach_config_pdu->prach_format = 10; + break; + case 0xa3: + prach_config_pdu->prach_format = 11; + break; + default: + AssertFatal(1 == 0, "Only formats A1/B1 A2/B2 A3/B3 are valid for dual format"); + } + } else { + switch(format0) { // single PRACH format + case 0xa1: + prach_config_pdu->prach_format = 0; + break; + case 0xa2: + prach_config_pdu->prach_format = 1; + break; + case 0xa3: + prach_config_pdu->prach_format = 2; + break; + case 0xb1: + prach_config_pdu->prach_format = 3; + break; + case 0xb2: + prach_config_pdu->prach_format = 4; + break; + case 0xb3: + prach_config_pdu->prach_format = 5; + break; + case 0xb4: + prach_config_pdu->prach_format = 6; + break; + case 0xc0: + prach_config_pdu->prach_format = 7; + break; + case 0xc2: + prach_config_pdu->prach_format = 8; + break; + case 0: + // long formats are handled @ PHY + break; + case 1: + // long formats are handled @ PHY + break; + case 2: + // long formats are handled @ PHY + break; + case 3: + // long formats are handled @ PHY + break; + default: + AssertFatal(1 == 0, "Invalid PRACH format"); + } + } + } + } else if (mac->ra_state == RA_SUCCEEDED){ + mac->generate_nr_prach = 2; + } + mac->scheduled_response.ul_config = ul_config; + } +} + +//////////////////////////////////////////////////////////////////////////// +/////////* Random Access Contention Resolution (5.1.35 TS 38.321) *///////// +//////////////////////////////////////////////////////////////////////////// +// Handling contention resolution timer +// WIP todo: +// - beam failure recovery +// - RA completed + +void ue_contention_resolution(module_id_t module_id, uint8_t gNB_index, int cc_id, frame_t tx_frame){ + + NR_UE_MAC_INST_t *mac = get_mac_inst(module_id); + NR_ServingCellConfigCommon_t *scc = mac->scc; + NR_RACH_ConfigCommon_t *nr_rach_ConfigCommon = scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup; + + if (mac->RA_contention_resolution_timer_active == 1) { + if (nr_rach_ConfigCommon){ + LOG_I(MAC, "Frame %d: Contention resolution timer %d/%ld\n", + tx_frame, + mac->RA_contention_resolution_cnt, + ((1 + nr_rach_ConfigCommon->ra_ContentionResolutionTimer) << 3)); + mac->RA_contention_resolution_cnt++; + + if (mac->RA_contention_resolution_cnt == ((1 + nr_rach_ConfigCommon->ra_ContentionResolutionTimer) << 3)) { + mac->t_crnti = 0; + mac->RA_active = 0; + mac->RA_contention_resolution_timer_active = 0; + // Signal PHY to quit RA procedure + LOG_E(MAC, "[UE %u] [RAPROC] Contention resolution timer expired, RA failed, discarded TC-RNTI\n", module_id); + nr_ra_failed(module_id, cc_id, gNB_index); + } + } + } +} + #if 0 uint16_t nr_dci_format_size (PHY_VARS_NR_UE *ue, uint8_t slot, @@ -1839,9 +2226,14 @@ int8_t nr_ue_process_dci_time_dom_resource_assignment(NR_UE_MAC_INST_t *mac, pdsch_TimeDomainAllocationList = mac->DLbwp[0]->bwp_Common->pdsch_ConfigCommon->choice.setup->pdsch_TimeDomainAllocationList; if (pdsch_TimeDomainAllocationList) { - AssertFatal(pdsch_TimeDomainAllocationList->list.count > time_domain_ind, - "time_domain_ind %d >= pdsch->TimeDomainAllocationList->list.count %d\n", - time_domain_ind,pdsch_TimeDomainAllocationList->list.count); + if (time_domain_ind >= pdsch_TimeDomainAllocationList->list.count) { + LOG_E(MAC, "time_domain_ind %d >= pdsch->TimeDomainAllocationList->list.count %d\n", + time_domain_ind, pdsch_TimeDomainAllocationList->list.count); + dlsch_config_pdu->start_symbol = 0; + dlsch_config_pdu->number_symbols = 0; + return -1; + } + int startSymbolAndLength = pdsch_TimeDomainAllocationList->list.array[time_domain_ind]->startSymbolAndLength; int S,L; SLIV2SL(startSymbolAndLength,&S,&L); @@ -1899,17 +2291,17 @@ int8_t nr_ue_process_dci_time_dom_resource_assignment(NR_UE_MAC_INST_t *mac, int nr_ue_process_dci_indication_pdu(module_id_t module_id,int cc_id, int gNB_index,fapi_nr_dci_indication_pdu_t *dci) { NR_UE_MAC_INST_t *mac = get_mac_inst(module_id); - nr_dci_pdu_rel15_t dci_pdu_rel15; LOG_D(MAC,"Received dci indication (rnti %x,dci format %d,n_CCE %d,payloadSize %d,payload %llx)\n", dci->rnti,dci->dci_format,dci->n_CCE,dci->payloadSize,*(unsigned long long*)dci->payloadBits); - nr_extract_dci_info(mac,dci->dci_format,dci->payloadSize,dci->rnti,(uint64_t *)dci->payloadBits,&dci_pdu_rel15); - nr_ue_process_dci(module_id, cc_id, gNB_index, &dci_pdu_rel15, dci->rnti, dci->dci_format); - return 0; + nr_extract_dci_info(mac,dci->dci_format,dci->payloadSize,dci->rnti,(uint64_t *)dci->payloadBits,def_dci_pdu_rel15); + return (nr_ue_process_dci(module_id, cc_id, gNB_index, def_dci_pdu_rel15, dci->rnti, dci->dci_format)); } -int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, nr_dci_pdu_rel15_t *dci, uint16_t rnti, uint32_t dci_format){ +int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, dci_pdu_rel15_t *dci, uint16_t rnti, uint32_t dci_format){ + + int bwp_id = 1; NR_UE_MAC_INST_t *mac = get_mac_inst(module_id); fapi_nr_dl_config_request_t *dl_config = &mac->dl_config_request; @@ -1919,7 +2311,7 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, nr AssertFatal(mac->DLbwp[0]!=NULL,"DLbwp[0] should not be zero here!\n"); AssertFatal(mac->ULbwp[0]!=NULL,"DLbwp[0] should not be zero here!\n"); - const uint16_t n_RB_DLBWP = NRRIV2BW(mac->DLbwp[0]->bwp_Common->genericParameters.locationAndBandwidth,275); + const uint16_t n_RB_DLBWP = (mac->ra_state == WAIT_RAR) ? NRRIV2BW(mac->scc->downlinkConfigCommon->initialDownlinkBWP->genericParameters.locationAndBandwidth, 275) : NRRIV2BW(mac->DLbwp[0]->bwp_Common->genericParameters.locationAndBandwidth,275); const uint16_t n_RB_ULBWP = NRRIV2BW(mac->ULbwp[0]->bwp_Common->genericParameters.locationAndBandwidth,275); LOG_D(MAC,"nr_ue_process_dci at MAC layer with dci_format=%d (DL BWP %d, UL BWP %d)\n",dci_format,n_RB_DLBWP,n_RB_ULBWP); @@ -1947,16 +2339,15 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, nr nfapi_nr_ue_pusch_pdu_t *pusch_config_pdu_0_0 = &ul_config->ul_config_list[ul_config->number_pdus].pusch_config_pdu; /* IDENTIFIER_DCI_FORMATS */ /* FREQ_DOM_RESOURCE_ASSIGNMENT_UL */ - nr_ue_process_dci_freq_dom_resource_assignment(pusch_config_pdu_0_0,NULL,n_RB_ULBWP,0,dci->freq_dom_resource_assignment_UL); + nr_ue_process_dci_freq_dom_resource_assignment(pusch_config_pdu_0_0,NULL,n_RB_ULBWP,0,dci->frequency_domain_assignment.val); /* TIME_DOM_RESOURCE_ASSIGNMENT */ - nr_ue_process_dci_time_dom_resource_assignment(mac, - pusch_config_pdu_0_0,NULL, - dci->time_dom_resource_assignment); - + if (nr_ue_process_dci_time_dom_resource_assignment(mac,pusch_config_pdu_0_0,NULL,dci->time_domain_assignment.val) < 0) + return -1; /* FREQ_HOPPING_FLAG */ if ((mac->phy_config.config_req.ul_bwp_dedicated.pusch_config_dedicated.resource_allocation != 0) && (mac->phy_config.config_req.ul_bwp_dedicated.pusch_config_dedicated.frequency_hopping !=0)) - pusch_config_pdu_0_0->frequency_hopping = dci->freq_hopping_flag; + pusch_config_pdu_0_0->frequency_hopping = dci->frequency_hopping_flag.val; + /* MCS */ pusch_config_pdu_0_0->mcs_index = dci->mcs; /* NDI */ @@ -1964,19 +2355,19 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, nr /* RV */ pusch_config_pdu_0_0->pusch_data.rv_index = dci->rv; /* HARQ_PROCESS_NUMBER */ - pusch_config_pdu_0_0->pusch_data.harq_process_id = dci->harq_process_number; + pusch_config_pdu_0_0->pusch_data.harq_process_id = dci->harq_pid; /* TPC_PUSCH */ // according to TS 38.213 Table Table 7.1.1-1 - if (dci->tpc_pusch == 0) { + if (dci->tpc == 0) { pusch_config_pdu_0_0->absolute_delta_PUSCH = -4; } - if (dci->tpc_pusch == 1) { + if (dci->tpc == 1) { pusch_config_pdu_0_0->absolute_delta_PUSCH = -1; } - if (dci->tpc_pusch == 2) { + if (dci->tpc == 2) { pusch_config_pdu_0_0->absolute_delta_PUSCH = 1; } - if (dci->tpc_pusch == 3) { + if (dci->tpc == 3) { pusch_config_pdu_0_0->absolute_delta_PUSCH = 4; } /* SUL_IND_0_0 */ // To be implemented, FIXME!!! @@ -2020,16 +2411,16 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, nr /* CARRIER_IND */ /* SUL_IND_0_1 */ /* BANDWIDTH_PART_IND */ - //pusch_config_pdu_0_1->bandwidth_part_ind = dci->bandwidth_part_ind; //FIXME + //pusch_config_pdu_0_1->bandwidth_part_ind = dci->bwp_indicator.val; /* FREQ_DOM_RESOURCE_ASSIGNMENT_UL */ - nr_ue_process_dci_freq_dom_resource_assignment(pusch_config_pdu_0_1,NULL,n_RB_ULBWP,0,dci->freq_dom_resource_assignment_UL); + nr_ue_process_dci_freq_dom_resource_assignment(pusch_config_pdu_0_1,NULL,n_RB_ULBWP,0,dci->frequency_domain_assignment.val); /* TIME_DOM_RESOURCE_ASSIGNMENT */ - nr_ue_process_dci_time_dom_resource_assignment(mac,pusch_config_pdu_0_1,NULL, - dci->time_dom_resource_assignment); + if (nr_ue_process_dci_time_dom_resource_assignment(mac,pusch_config_pdu_0_1,NULL,dci->time_domain_assignment.val) < 0) + return -1; /* FREQ_HOPPING_FLAG */ if ((mac->phy_config.config_req.ul_bwp_dedicated.pusch_config_dedicated.resource_allocation != 0) && (mac->phy_config.config_req.ul_bwp_dedicated.pusch_config_dedicated.frequency_hopping !=0)) - pusch_config_pdu_0_1->frequency_hopping = dci->freq_hopping_flag; + pusch_config_pdu_0_1->frequency_hopping = dci->frequency_hopping_flag.val; /* MCS */ pusch_config_pdu_0_1->mcs_index = dci->mcs; /* NDI */ @@ -2037,21 +2428,21 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, nr /* RV */ pusch_config_pdu_0_1->pusch_data.rv_index = dci->rv; /* HARQ_PROCESS_NUMBER */ - pusch_config_pdu_0_1->pusch_data.harq_process_id = dci->harq_process_number; + pusch_config_pdu_0_1->pusch_data.harq_process_id = dci->harq_pid; /* FIRST_DAI */ //To be implemented, FIXME!!! /* SECOND_DAI */ //To be implemented, FIXME!!! /* TPC_PUSCH */ // according to TS 38.213 Table Table 7.1.1-1 - if (dci->tpc_pusch == 0) { + if (dci->tpc == 0) { pusch_config_pdu_0_1->absolute_delta_PUSCH = -4; } - if (dci->tpc_pusch == 1) { + if (dci->tpc == 1) { pusch_config_pdu_0_1->absolute_delta_PUSCH = -1; } - if (dci->tpc_pusch == 2) { + if (dci->tpc == 2) { pusch_config_pdu_0_1->absolute_delta_PUSCH = 1; } - if (dci->tpc_pusch == 3) { + if (dci->tpc == 3) { pusch_config_pdu_0_1->absolute_delta_PUSCH = 4; } /* SRS_RESOURCE_IND */ @@ -2069,16 +2460,16 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, nr (mac->phy_config.config_req.ul_bwp_dedicated.pusch_config_dedicated.max_rank == 3) || (mac->phy_config.config_req.ul_bwp_dedicated.pusch_config_dedicated.max_rank == 4))){ if (mac->phy_config.config_req.ul_bwp_dedicated.pusch_config_dedicated.codebook_subset == codebook_subset_fullyAndPartialAndNonCoherent) { - pusch_config_pdu_0_1->nrOfLayers = table_7_3_1_1_2_2_3_4_5[dci->precod_nbr_layers][0]; - pusch_config_pdu_0_1->transform_precoding = table_7_3_1_1_2_2_3_4_5[dci->precod_nbr_layers][1]; + pusch_config_pdu_0_1->nrOfLayers = table_7_3_1_1_2_2_3_4_5[dci->precoding_information.val][0]; + pusch_config_pdu_0_1->transform_precoding = table_7_3_1_1_2_2_3_4_5[dci->precoding_information.val][1]; } if (mac->phy_config.config_req.ul_bwp_dedicated.pusch_config_dedicated.codebook_subset == codebook_subset_partialAndNonCoherent){ - pusch_config_pdu_0_1->nrOfLayers = table_7_3_1_1_2_2_3_4_5[dci->precod_nbr_layers][2]; - pusch_config_pdu_0_1->transform_precoding = table_7_3_1_1_2_2_3_4_5[dci->precod_nbr_layers][3]; + pusch_config_pdu_0_1->nrOfLayers = table_7_3_1_1_2_2_3_4_5[dci->precoding_information.val][2]; + pusch_config_pdu_0_1->transform_precoding = table_7_3_1_1_2_2_3_4_5[dci->precoding_information.val][3]; } if (mac->phy_config.config_req.ul_bwp_dedicated.pusch_config_dedicated.codebook_subset == codebook_subset_nonCoherent){ - pusch_config_pdu_0_1->nrOfLayers = table_7_3_1_1_2_2_3_4_5[dci->precod_nbr_layers][4]; - pusch_config_pdu_0_1->transform_precoding = table_7_3_1_1_2_2_3_4_5[dci->precod_nbr_layers][5]; + pusch_config_pdu_0_1->nrOfLayers = table_7_3_1_1_2_2_3_4_5[dci->precoding_information.val][4]; + pusch_config_pdu_0_1->transform_precoding = table_7_3_1_1_2_2_3_4_5[dci->precoding_information.val][5]; } } // Table 7.3.1.1.2-3: transformPrecoder= enabled, or transformPrecoder=disabled and maxRank = 1 @@ -2086,16 +2477,16 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, nr || (mac->phy_config.config_req.ul_bwp_dedicated.pusch_config_dedicated.transform_precoder == transform_precoder_disabled)) && (mac->phy_config.config_req.ul_bwp_dedicated.pusch_config_dedicated.max_rank == 1)){ if (mac->phy_config.config_req.ul_bwp_dedicated.pusch_config_dedicated.codebook_subset == codebook_subset_fullyAndPartialAndNonCoherent) { - pusch_config_pdu_0_1->nrOfLayers = table_7_3_1_1_2_2_3_4_5[dci->precod_nbr_layers][6]; - pusch_config_pdu_0_1->transform_precoding = table_7_3_1_1_2_2_3_4_5[dci->precod_nbr_layers][7]; + pusch_config_pdu_0_1->nrOfLayers = table_7_3_1_1_2_2_3_4_5[dci->precoding_information.val][6]; + pusch_config_pdu_0_1->transform_precoding = table_7_3_1_1_2_2_3_4_5[dci->precoding_information.val][7]; } if (mac->phy_config.config_req.ul_bwp_dedicated.pusch_config_dedicated.codebook_subset == codebook_subset_partialAndNonCoherent){ - pusch_config_pdu_0_1->nrOfLayers = table_7_3_1_1_2_2_3_4_5[dci->precod_nbr_layers][8]; - pusch_config_pdu_0_1->transform_precoding = table_7_3_1_1_2_2_3_4_5[dci->precod_nbr_layers][9]; + pusch_config_pdu_0_1->nrOfLayers = table_7_3_1_1_2_2_3_4_5[dci->precoding_information.val][8]; + pusch_config_pdu_0_1->transform_precoding = table_7_3_1_1_2_2_3_4_5[dci->precoding_information.val][9]; } if (mac->phy_config.config_req.ul_bwp_dedicated.pusch_config_dedicated.codebook_subset == codebook_subset_nonCoherent){ - pusch_config_pdu_0_1->nrOfLayers = table_7_3_1_1_2_2_3_4_5[dci->precod_nbr_layers][10]; - pusch_config_pdu_0_1->transform_precoding = table_7_3_1_1_2_2_3_4_5[dci->precod_nbr_layers][11]; + pusch_config_pdu_0_1->nrOfLayers = table_7_3_1_1_2_2_3_4_5[dci->precoding_information.val][10]; + pusch_config_pdu_0_1->transform_precoding = table_7_3_1_1_2_2_3_4_5[dci->precoding_information.val][11]; } } } @@ -2104,12 +2495,12 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, nr if ((mac->phy_config.config_req.ul_bwp_dedicated.pusch_config_dedicated.transform_precoder == transform_precoder_disabled) && (mac->phy_config.config_req.ul_bwp_dedicated.pusch_config_dedicated.max_rank == 2)){ if (mac->phy_config.config_req.ul_bwp_dedicated.pusch_config_dedicated.codebook_subset == codebook_subset_fullyAndPartialAndNonCoherent) { - pusch_config_pdu_0_1->nrOfLayers = table_7_3_1_1_2_2_3_4_5[dci->precod_nbr_layers][12]; - pusch_config_pdu_0_1->transform_precoding = table_7_3_1_1_2_2_3_4_5[dci->precod_nbr_layers][13]; + pusch_config_pdu_0_1->nrOfLayers = table_7_3_1_1_2_2_3_4_5[dci->precoding_information.val][12]; + pusch_config_pdu_0_1->transform_precoding = table_7_3_1_1_2_2_3_4_5[dci->precoding_information.val][13]; } if (mac->phy_config.config_req.ul_bwp_dedicated.pusch_config_dedicated.codebook_subset == codebook_subset_nonCoherent){ - pusch_config_pdu_0_1->nrOfLayers = table_7_3_1_1_2_2_3_4_5[dci->precod_nbr_layers][14]; - pusch_config_pdu_0_1->transform_precoding = table_7_3_1_1_2_2_3_4_5[dci->precod_nbr_layers][15]; + pusch_config_pdu_0_1->nrOfLayers = table_7_3_1_1_2_2_3_4_5[dci->precoding_information.val][14]; + pusch_config_pdu_0_1->transform_precoding = table_7_3_1_1_2_2_3_4_5[dci->precoding_information.val][15]; } } // Table 7.3.1.1.2-5: transformPrecoder= enabled, or transformPrecoder= disabled and maxRank = 1 @@ -2117,12 +2508,12 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, nr || (mac->phy_config.config_req.ul_bwp_dedicated.pusch_config_dedicated.transform_precoder == transform_precoder_disabled)) && (mac->phy_config.config_req.ul_bwp_dedicated.pusch_config_dedicated.max_rank == 1)){ if (mac->phy_config.config_req.ul_bwp_dedicated.pusch_config_dedicated.codebook_subset == codebook_subset_fullyAndPartialAndNonCoherent) { - pusch_config_pdu_0_1->nrOfLayers = table_7_3_1_1_2_2_3_4_5[dci->precod_nbr_layers][16]; - pusch_config_pdu_0_1->transform_precoding = table_7_3_1_1_2_2_3_4_5[dci->precod_nbr_layers][17]; + pusch_config_pdu_0_1->nrOfLayers = table_7_3_1_1_2_2_3_4_5[dci->precoding_information.val][16]; + pusch_config_pdu_0_1->transform_precoding = table_7_3_1_1_2_2_3_4_5[dci->precoding_information.val][17]; } if (mac->phy_config.config_req.ul_bwp_dedicated.pusch_config_dedicated.codebook_subset == codebook_subset_nonCoherent){ - pusch_config_pdu_0_1->nrOfLayers = table_7_3_1_1_2_2_3_4_5[dci->precod_nbr_layers][18]; - pusch_config_pdu_0_1->transform_precoding = table_7_3_1_1_2_2_3_4_5[dci->precod_nbr_layers][19]; + pusch_config_pdu_0_1->nrOfLayers = table_7_3_1_1_2_2_3_4_5[dci->precoding_information.val][18]; + pusch_config_pdu_0_1->transform_precoding = table_7_3_1_1_2_2_3_4_5[dci->precoding_information.val][19]; } } } @@ -2133,24 +2524,24 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, nr (mac->phy_config.config_req.ul_bwp_dedicated.pusch_config_dedicated.dmrs_ul_for_pusch_mapping_type_a.dmrs_type == 1) && (mac->phy_config.config_req.ul_bwp_dedicated.pusch_config_dedicated.dmrs_ul_for_pusch_mapping_type_a.max_length == 1)) { // tables 7.3.1.1.2-6 pusch_config_pdu_0_1->num_dmrs_cdm_grps_no_data = 2; //TBC - pusch_config_pdu_0_1->dmrs_ports = dci->antenna_ports; //TBC + pusch_config_pdu_0_1->dmrs_ports = dci->antenna_ports.val; //TBC } if ((mac->phy_config.config_req.ul_bwp_dedicated.pusch_config_dedicated.transform_precoder == transform_precoder_enabled) && (mac->phy_config.config_req.ul_bwp_dedicated.pusch_config_dedicated.dmrs_ul_for_pusch_mapping_type_a.dmrs_type == 1) && (mac->phy_config.config_req.ul_bwp_dedicated.pusch_config_dedicated.dmrs_ul_for_pusch_mapping_type_a.max_length == 2)) { // tables 7.3.1.1.2-7 pusch_config_pdu_0_1->num_dmrs_cdm_grps_no_data = 2; //TBC - pusch_config_pdu_0_1->dmrs_ports = (dci->antenna_ports > 3)?(dci->antenna_ports-4):(dci->antenna_ports); //TBC + pusch_config_pdu_0_1->dmrs_ports = (dci->antenna_ports.val > 3)?(dci->antenna_ports.val-4):(dci->antenna_ports.val); //TBC //pusch_config_pdu_0_1->n_front_load_symb = (dci->antenna_ports > 3)?2:1; //FIXME } if ((mac->phy_config.config_req.ul_bwp_dedicated.pusch_config_dedicated.transform_precoder == transform_precoder_disabled) && (mac->phy_config.config_req.ul_bwp_dedicated.pusch_config_dedicated.dmrs_ul_for_pusch_mapping_type_a.dmrs_type == 1) && (mac->phy_config.config_req.ul_bwp_dedicated.pusch_config_dedicated.dmrs_ul_for_pusch_mapping_type_a.max_length == 1)) { // tables 7.3.1.1.2-8/9/10/11 if (rank == 1){ - pusch_config_pdu_0_1->num_dmrs_cdm_grps_no_data = (dci->antenna_ports > 1)?2:1; //TBC - pusch_config_pdu_0_1->dmrs_ports = (dci->antenna_ports > 1)?(dci->antenna_ports-2):(dci->antenna_ports); //TBC + pusch_config_pdu_0_1->num_dmrs_cdm_grps_no_data = (dci->antenna_ports.val > 1)?2:1; //TBC + pusch_config_pdu_0_1->dmrs_ports = (dci->antenna_ports.val > 1)?(dci->antenna_ports.val-2):(dci->antenna_ports.val); //TBC } if (rank == 2){ - pusch_config_pdu_0_1->num_dmrs_cdm_grps_no_data = (dci->antenna_ports > 0)?2:1; //TBC + pusch_config_pdu_0_1->num_dmrs_cdm_grps_no_data = (dci->antenna_ports.val > 0)?2:1; //TBC pusch_config_pdu_0_1->dmrs_ports = 0; //FIXME //pusch_config_pdu_0_1->dmrs_ports[0] = (dci->antenna_ports > 1)?(dci->antenna_ports > 2 ?0:2):0; //pusch_config_pdu_0_1->dmrs_ports[1] = (dci->antenna_ports > 1)?(dci->antenna_ports > 2 ?2:3):1; @@ -2175,57 +2566,57 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, nr (mac->phy_config.config_req.ul_bwp_dedicated.pusch_config_dedicated.dmrs_ul_for_pusch_mapping_type_a.dmrs_type == 1) && (mac->phy_config.config_req.ul_bwp_dedicated.pusch_config_dedicated.dmrs_ul_for_pusch_mapping_type_a.max_length == 2)) { // tables 7.3.1.1.2-12/13/14/15 if (rank == 1){ - pusch_config_pdu_0_1->num_dmrs_cdm_grps_no_data = (dci->antenna_ports > 1)?2:1; //TBC - pusch_config_pdu_0_1->dmrs_ports = (dci->antenna_ports > 1)?(dci->antenna_ports > 5 ?(dci->antenna_ports-6):(dci->antenna_ports-2)):dci->antenna_ports; //TBC - //pusch_config_pdu_0_1->n_front_load_symb = (dci->antenna_ports > 6)?2:1; //FIXME + pusch_config_pdu_0_1->num_dmrs_cdm_grps_no_data = (dci->antenna_ports.val > 1)?2:1; //TBC + pusch_config_pdu_0_1->dmrs_ports = (dci->antenna_ports.val > 1)?(dci->antenna_ports.val > 5 ?(dci->antenna_ports.val-6):(dci->antenna_ports.val-2)):dci->antenna_ports.val; //TBC + //pusch_config_pdu_0_1->n_front_load_symb = (dci->antenna_ports.val > 6)?2:1; //FIXME } if (rank == 2){ - pusch_config_pdu_0_1->num_dmrs_cdm_grps_no_data = (dci->antenna_ports > 0)?2:1; //TBC + pusch_config_pdu_0_1->num_dmrs_cdm_grps_no_data = (dci->antenna_ports.val > 0)?2:1; //TBC pusch_config_pdu_0_1->dmrs_ports = 0; //FIXME - //pusch_config_pdu_0_1->dmrs_ports[0] = table_7_3_1_1_2_13[dci->antenna_ports][1]; - //pusch_config_pdu_0_1->dmrs_ports[1] = table_7_3_1_1_2_13[dci->antenna_ports][2]; - //pusch_config_pdu_0_1->n_front_load_symb = (dci->antenna_ports > 3)?2:1; // FIXME + //pusch_config_pdu_0_1->dmrs_ports[0] = table_7_3_1_1_2_13[dci->antenna_ports.val][1]; + //pusch_config_pdu_0_1->dmrs_ports[1] = table_7_3_1_1_2_13[dci->antenna_ports.val][2]; + //pusch_config_pdu_0_1->n_front_load_symb = (dci->antenna_ports.val > 3)?2:1; // FIXME } if (rank == 3){ pusch_config_pdu_0_1->num_dmrs_cdm_grps_no_data = 2; //TBC pusch_config_pdu_0_1->dmrs_ports = 0; //FIXME - //pusch_config_pdu_0_1->dmrs_ports[0] = table_7_3_1_1_2_14[dci->antenna_ports][1]; - //pusch_config_pdu_0_1->dmrs_ports[1] = table_7_3_1_1_2_14[dci->antenna_ports][2]; - //pusch_config_pdu_0_1->dmrs_ports[2] = table_7_3_1_1_2_14[dci->antenna_ports][3]; - //pusch_config_pdu_0_1->n_front_load_symb = (dci->antenna_ports > 1)?2:1; //FIXME + //pusch_config_pdu_0_1->dmrs_ports[0] = table_7_3_1_1_2_14[dci->antenna_ports.val][1]; + //pusch_config_pdu_0_1->dmrs_ports[1] = table_7_3_1_1_2_14[dci->antenna_ports.val][2]; + //pusch_config_pdu_0_1->dmrs_ports[2] = table_7_3_1_1_2_14[dci->antenna_ports.val][3]; + //pusch_config_pdu_0_1->n_front_load_symb = (dci->antenna_ports.val > 1)?2:1; //FIXME } if (rank == 4){ pusch_config_pdu_0_1->num_dmrs_cdm_grps_no_data = 2; //TBC pusch_config_pdu_0_1->dmrs_ports = 0; //FIXME - //pusch_config_pdu_0_1->dmrs_ports[0] = table_7_3_1_1_2_15[dci->antenna_ports][1]; - //pusch_config_pdu_0_1->dmrs_ports[1] = table_7_3_1_1_2_15[dci->antenna_ports][2]; - //pusch_config_pdu_0_1->dmrs_ports[2] = table_7_3_1_1_2_15[dci->antenna_ports][3]; - //pusch_config_pdu_0_1->dmrs_ports[3] = table_7_3_1_1_2_15[dci->antenna_ports][4]; - //pusch_config_pdu_0_1->n_front_load_symb = (dci->antenna_ports > 1)?2:1; //FIXME + //pusch_config_pdu_0_1->dmrs_ports[0] = table_7_3_1_1_2_15[dci->antenna_ports.val][1]; + //pusch_config_pdu_0_1->dmrs_ports[1] = table_7_3_1_1_2_15[dci->antenna_ports.val][2]; + //pusch_config_pdu_0_1->dmrs_ports[2] = table_7_3_1_1_2_15[dci->antenna_ports.val][3]; + //pusch_config_pdu_0_1->dmrs_ports[3] = table_7_3_1_1_2_15[dci->antenna_ports.val][4]; + //pusch_config_pdu_0_1->n_front_load_symb = (dci->antenna_ports.val > 1)?2:1; //FIXME } } if ((mac->phy_config.config_req.ul_bwp_dedicated.pusch_config_dedicated.transform_precoder == transform_precoder_disabled) && (mac->phy_config.config_req.ul_bwp_dedicated.pusch_config_dedicated.dmrs_ul_for_pusch_mapping_type_a.dmrs_type == 2) && (mac->phy_config.config_req.ul_bwp_dedicated.pusch_config_dedicated.dmrs_ul_for_pusch_mapping_type_a.max_length == 1)) { // tables 7.3.1.1.2-16/17/18/19 if (rank == 1){ - pusch_config_pdu_0_1->num_dmrs_cdm_grps_no_data = (dci->antenna_ports > 1)?((dci->antenna_ports > 5)?3:2):1; //TBC - pusch_config_pdu_0_1->dmrs_ports = (dci->antenna_ports > 1)?(dci->antenna_ports > 5 ?(dci->antenna_ports-6):(dci->antenna_ports-2)):dci->antenna_ports; //TBC + pusch_config_pdu_0_1->num_dmrs_cdm_grps_no_data = (dci->antenna_ports.val > 1)?((dci->antenna_ports.val > 5)?3:2):1; //TBC + pusch_config_pdu_0_1->dmrs_ports = (dci->antenna_ports.val > 1)?(dci->antenna_ports.val > 5 ?(dci->antenna_ports.val-6):(dci->antenna_ports.val-2)):dci->antenna_ports.val; //TBC } if (rank == 2){ - pusch_config_pdu_0_1->num_dmrs_cdm_grps_no_data = (dci->antenna_ports > 0)?((dci->antenna_ports > 2)?3:2):1; //TBC + pusch_config_pdu_0_1->num_dmrs_cdm_grps_no_data = (dci->antenna_ports.val > 0)?((dci->antenna_ports.val > 2)?3:2):1; //TBC pusch_config_pdu_0_1->dmrs_ports = 0; //FIXME - //pusch_config_pdu_0_1->dmrs_ports[0] = table_7_3_1_1_2_17[dci->antenna_ports][1]; - //pusch_config_pdu_0_1->dmrs_ports[1] = table_7_3_1_1_2_17[dci->antenna_ports][2]; + //pusch_config_pdu_0_1->dmrs_ports[0] = table_7_3_1_1_2_17[dci->antenna_ports.val][1]; + //pusch_config_pdu_0_1->dmrs_ports[1] = table_7_3_1_1_2_17[dci->antenna_ports.val][2]; } if (rank == 3){ - pusch_config_pdu_0_1->num_dmrs_cdm_grps_no_data = (dci->antenna_ports > 0)?3:2; //TBC + pusch_config_pdu_0_1->num_dmrs_cdm_grps_no_data = (dci->antenna_ports.val > 0)?3:2; //TBC pusch_config_pdu_0_1->dmrs_ports = 0; //FIXME - //pusch_config_pdu_0_1->dmrs_ports[0] = table_7_3_1_1_2_18[dci->antenna_ports][1]; - //pusch_config_pdu_0_1->dmrs_ports[1] = table_7_3_1_1_2_18[dci->antenna_ports][2]; - //pusch_config_pdu_0_1->dmrs_ports[2] = table_7_3_1_1_2_18[dci->antenna_ports][3]; + //pusch_config_pdu_0_1->dmrs_ports[0] = table_7_3_1_1_2_18[dci->antenna_ports.val][1]; + //pusch_config_pdu_0_1->dmrs_ports[1] = table_7_3_1_1_2_18[dci->antenna_ports.val][2]; + //pusch_config_pdu_0_1->dmrs_ports[2] = table_7_3_1_1_2_18[dci->antenna_ports.val][3]; } if (rank == 4){ - pusch_config_pdu_0_1->num_dmrs_cdm_grps_no_data = dci->antenna_ports + 2; //TBC + pusch_config_pdu_0_1->num_dmrs_cdm_grps_no_data = dci->antenna_ports.val + 2; //TBC pusch_config_pdu_0_1->dmrs_ports = 0; //FIXME //pusch_config_pdu_0_1->dmrs_ports[0] = 0; //pusch_config_pdu_0_1->dmrs_ports[1] = 1; @@ -2237,53 +2628,53 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, nr (mac->phy_config.config_req.ul_bwp_dedicated.pusch_config_dedicated.dmrs_ul_for_pusch_mapping_type_a.dmrs_type == 2) && (mac->phy_config.config_req.ul_bwp_dedicated.pusch_config_dedicated.dmrs_ul_for_pusch_mapping_type_a.max_length == 2)) { // tables 7.3.1.1.2-20/21/22/23 if (rank == 1){ - pusch_config_pdu_0_1->num_dmrs_cdm_grps_no_data = table_7_3_1_1_2_20[dci->antenna_ports][0]; //TBC - pusch_config_pdu_0_1->dmrs_ports = table_7_3_1_1_2_20[dci->antenna_ports][1]; //TBC - //pusch_config_pdu_0_1->n_front_load_symb = table_7_3_1_1_2_20[dci->antenna_ports][2]; //FIXME + pusch_config_pdu_0_1->num_dmrs_cdm_grps_no_data = table_7_3_1_1_2_20[dci->antenna_ports.val][0]; //TBC + pusch_config_pdu_0_1->dmrs_ports = table_7_3_1_1_2_20[dci->antenna_ports.val][1]; //TBC + //pusch_config_pdu_0_1->n_front_load_symb = table_7_3_1_1_2_20[dci->antenna_ports.val][2]; //FIXME } if (rank == 2){ - pusch_config_pdu_0_1->num_dmrs_cdm_grps_no_data = table_7_3_1_1_2_21[dci->antenna_ports][0]; //TBC + pusch_config_pdu_0_1->num_dmrs_cdm_grps_no_data = table_7_3_1_1_2_21[dci->antenna_ports.val][0]; //TBC pusch_config_pdu_0_1->dmrs_ports = 0; //FIXME - //pusch_config_pdu_0_1->dmrs_ports[0] = table_7_3_1_1_2_21[dci->antenna_ports][1]; - //pusch_config_pdu_0_1->dmrs_ports[1] = table_7_3_1_1_2_21[dci->antenna_ports][2]; - //pusch_config_pdu_0_1->n_front_load_symb = table_7_3_1_1_2_21[dci->antenna_ports][3]; //FIXME + //pusch_config_pdu_0_1->dmrs_ports[0] = table_7_3_1_1_2_21[dci->antenna_ports.val][1]; + //pusch_config_pdu_0_1->dmrs_ports[1] = table_7_3_1_1_2_21[dci->antenna_ports.val][2]; + //pusch_config_pdu_0_1->n_front_load_symb = table_7_3_1_1_2_21[dci->antenna_ports.val][3]; //FIXME } if (rank == 3){ - pusch_config_pdu_0_1->num_dmrs_cdm_grps_no_data = table_7_3_1_1_2_22[dci->antenna_ports][0]; //TBC + pusch_config_pdu_0_1->num_dmrs_cdm_grps_no_data = table_7_3_1_1_2_22[dci->antenna_ports.val][0]; //TBC pusch_config_pdu_0_1->dmrs_ports = 0; //FIXME - //pusch_config_pdu_0_1->dmrs_ports[0] = table_7_3_1_1_2_22[dci->antenna_ports][1]; - //pusch_config_pdu_0_1->dmrs_ports[1] = table_7_3_1_1_2_22[dci->antenna_ports][2]; - //pusch_config_pdu_0_1->dmrs_ports[2] = table_7_3_1_1_2_22[dci->antenna_ports][3]; - //pusch_config_pdu_0_1->n_front_load_symb = table_7_3_1_1_2_22[dci->antenna_ports][4]; //FIXME + //pusch_config_pdu_0_1->dmrs_ports[0] = table_7_3_1_1_2_22[dci->antenna_ports.val][1]; + //pusch_config_pdu_0_1->dmrs_ports[1] = table_7_3_1_1_2_22[dci->antenna_ports.val][2]; + //pusch_config_pdu_0_1->dmrs_ports[2] = table_7_3_1_1_2_22[dci->antenna_ports.val][3]; + //pusch_config_pdu_0_1->n_front_load_symb = table_7_3_1_1_2_22[dci->antenna_ports.val][4]; //FIXME } if (rank == 4){ - pusch_config_pdu_0_1->num_dmrs_cdm_grps_no_data = table_7_3_1_1_2_23[dci->antenna_ports][0]; //TBC + pusch_config_pdu_0_1->num_dmrs_cdm_grps_no_data = table_7_3_1_1_2_23[dci->antenna_ports.val][0]; //TBC pusch_config_pdu_0_1->dmrs_ports = 0; //FIXME - //pusch_config_pdu_0_1->dmrs_ports[0] = table_7_3_1_1_2_23[dci->antenna_ports][1]; - //pusch_config_pdu_0_1->dmrs_ports[1] = table_7_3_1_1_2_23[dci->antenna_ports][2]; - //pusch_config_pdu_0_1->dmrs_ports[2] = table_7_3_1_1_2_23[dci->antenna_ports][3]; - //pusch_config_pdu_0_1->dmrs_ports[3] = table_7_3_1_1_2_23[dci->antenna_ports][4]; - //pusch_config_pdu_0_1->n_front_load_symb = table_7_3_1_1_2_23[dci->antenna_ports][5]; //FIXME + //pusch_config_pdu_0_1->dmrs_ports[0] = table_7_3_1_1_2_23[dci->antenna_ports.val][1]; + //pusch_config_pdu_0_1->dmrs_ports[1] = table_7_3_1_1_2_23[dci->antenna_ports.val][2]; + //pusch_config_pdu_0_1->dmrs_ports[2] = table_7_3_1_1_2_23[dci->antenna_ports.val][3]; + //pusch_config_pdu_0_1->dmrs_ports[3] = table_7_3_1_1_2_23[dci->antenna_ports.val][4]; + //pusch_config_pdu_0_1->n_front_load_symb = table_7_3_1_1_2_23[dci->antenna_ports.val][5]; //FIXME } } /* SRS_REQUEST */ // if SUL is supported in the cell, there is an additional bit in thsi field and the value of this bit represents table 7.1.1.1-1 TS 38.212 FIXME!!! - //pusch_config_pdu_0_1->srs_config.aperiodicSRS_ResourceTrigger = (dci->srs_request & 0x11); // as per Table 7.3.1.1.2-24 TS 38.212 //FIXME + //pusch_config_pdu_0_1->srs_config.aperiodicSRS_ResourceTrigger = (dci->srs_request.val & 0x11); // as per Table 7.3.1.1.2-24 TS 38.212 //FIXME /* CSI_REQUEST */ - //pusch_config_pdu_0_1->csi_reportTriggerSize = dci->csi_request; //FIXME + //pusch_config_pdu_0_1->csi_reportTriggerSize = dci->csi_request.val; //FIXME /* CBGTI */ - //pusch_config_pdu_0_1->maxCodeBlockGroupsPerTransportBlock = dci->cbgti; //FIXME + //pusch_config_pdu_0_1->maxCodeBlockGroupsPerTransportBlock = dci->cbgti.val; //FIXME /* PTRS_DMRS */ if (((mac->phy_config.config_req.ul_bwp_dedicated.pusch_config_dedicated.transform_precoder == transform_precoder_disabled) && (mac->phy_config.config_req.ul_bwp_dedicated.pusch_config_dedicated.dmrs_ul_for_pusch_mapping_type_a.ptrs_uplink_config == 0)) || ((mac->phy_config.config_req.ul_bwp_dedicated.pusch_config_dedicated.transform_precoder == transform_precoder_enabled) && (mac->phy_config.config_req.ul_bwp_dedicated.pusch_config_dedicated.max_rank == 1))){ } else { - //pusch_config_pdu_0_1->ptrs_dmrs_association_port = dci->ptrs_dmrs; //FIXME + //pusch_config_pdu_0_1->ptrs_dmrs_association_port = dci->ptrs_dmrs_association.val; //FIXME } /* BETA_OFFSET_IND */ // Table 9.3-3 in [5, TS 38.213] - //pusch_config_pdu_0_1->beta_offset_ind = dci->beta_offset_ind; //FIXME + //pusch_config_pdu_0_1->beta_offset_ind = dci->beta_offset_indicator.val; //FIXME /* DMRS_SEQ_INI */ // FIXME!! /* UL_SCH_IND */ @@ -2353,18 +2744,22 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, nr dlsch_config_pdu_1_0->SubcarrierSpacing = mac->DLbwp[0]->bwp_Common->genericParameters.subcarrierSpacing; /* IDENTIFIER_DCI_FORMATS */ /* FREQ_DOM_RESOURCE_ASSIGNMENT_DL */ - nr_ue_process_dci_freq_dom_resource_assignment(NULL,dlsch_config_pdu_1_0,0,n_RB_DLBWP,dci->freq_dom_resource_assignment_DL); + nr_ue_process_dci_freq_dom_resource_assignment(NULL,dlsch_config_pdu_1_0,0,n_RB_DLBWP,dci->frequency_domain_assignment.val); /* TIME_DOM_RESOURCE_ASSIGNMENT */ - nr_ue_process_dci_time_dom_resource_assignment(mac,NULL,dlsch_config_pdu_1_0, - dci->time_dom_resource_assignment); - + if (nr_ue_process_dci_time_dom_resource_assignment(mac,NULL,dlsch_config_pdu_1_0,dci->time_domain_assignment.val) < 0) + return -1; /* dmrs symbol positions*/ dlsch_config_pdu_1_0->dlDmrsSymbPos = fill_dmrs_mask(pdsch_config, mac->scc->dmrs_TypeA_Position, dlsch_config_pdu_1_0->number_symbols); - dlsch_config_pdu_1_0->dmrsConfigType = mac->DLbwp[0]->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->dmrs_Type == NULL ? 1 : 2; + dlsch_config_pdu_1_0->dmrsConfigType = mac->DLbwp[0]->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->dmrs_Type == NULL ? 0 : 1; + /* number of DM-RS CDM groups without data according to subclause 5.1.6.2 of 3GPP TS 38.214 version 15.9.0 Release 15 */ + if (dlsch_config_pdu_1_0->number_symbols == 2) + dlsch_config_pdu_1_0->n_dmrs_cdm_groups = 1; + else + dlsch_config_pdu_1_0->n_dmrs_cdm_groups = 2; /* VRB_TO_PRB_MAPPING */ - dlsch_config_pdu_1_0->vrb_to_prb_mapping = (dci->vrb_to_prb_mapping == 0) ? vrb_to_prb_mapping_non_interleaved:vrb_to_prb_mapping_interleaved; + dlsch_config_pdu_1_0->vrb_to_prb_mapping = (dci->vrb_to_prb_mapping.val == 0) ? vrb_to_prb_mapping_non_interleaved:vrb_to_prb_mapping_interleaved; /* MCS */ dlsch_config_pdu_1_0->mcs = dci->mcs; /* NDI (only if CRC scrambled by C-RNTI or CS-RNTI or new-RNTI or TC-RNTI)*/ @@ -2372,9 +2767,9 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, nr /* RV (only if CRC scrambled by C-RNTI or CS-RNTI or new-RNTI or TC-RNTI)*/ dlsch_config_pdu_1_0->rv = dci->rv; /* HARQ_PROCESS_NUMBER (only if CRC scrambled by C-RNTI or CS-RNTI or new-RNTI or TC-RNTI)*/ - dlsch_config_pdu_1_0->harq_process_nbr = dci->harq_process_number; + dlsch_config_pdu_1_0->harq_process_nbr = dci->harq_pid; /* DAI (only if CRC scrambled by C-RNTI or CS-RNTI or new-RNTI or TC-RNTI)*/ - dlsch_config_pdu_1_0->dai = dci ->dai; + dlsch_config_pdu_1_0->dai = dci->dai[0].val; /* TB_SCALING (only if CRC scrambled by P-RNTI or RA-RNTI) */ // according to TS 38.214 Table 5.1.3.2-3 if (dci->tb_scaling == 0) dlsch_config_pdu_1_0->scaling_factor_S = 1; @@ -2383,32 +2778,32 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, nr if (dci->tb_scaling == 3) dlsch_config_pdu_1_0->scaling_factor_S = 0; // value not defined in table /* TPC_PUCCH (only if CRC scrambled by C-RNTI or CS-RNTI or new-RNTI or TC-RNTI)*/ // according to TS 38.213 Table 7.2.1-1 - if (dci->tpc_pucch == 0) dlsch_config_pdu_1_0->accumulated_delta_PUCCH = -1; - if (dci->tpc_pucch == 1) dlsch_config_pdu_1_0->accumulated_delta_PUCCH = 0; - if (dci->tpc_pucch == 2) dlsch_config_pdu_1_0->accumulated_delta_PUCCH = 1; - if (dci->tpc_pucch == 3) dlsch_config_pdu_1_0->accumulated_delta_PUCCH = 3; + if (dci->tpc == 0) dlsch_config_pdu_1_0->accumulated_delta_PUCCH = -1; + if (dci->tpc == 1) dlsch_config_pdu_1_0->accumulated_delta_PUCCH = 0; + if (dci->tpc == 2) dlsch_config_pdu_1_0->accumulated_delta_PUCCH = 1; + if (dci->tpc == 3) dlsch_config_pdu_1_0->accumulated_delta_PUCCH = 3; /* PUCCH_RESOURCE_IND (only if CRC scrambled by C-RNTI or CS-RNTI or new-RNTI)*/ - //if (dci->pucch_resource_ind == 0) dlsch_config_pdu_1_0->pucch_resource_id = 1; //pucch-ResourceId obtained from the 1st value of resourceList FIXME!!! - //if (dci->pucch_resource_ind == 1) dlsch_config_pdu_1_0->pucch_resource_id = 2; //pucch-ResourceId obtained from the 2nd value of resourceList FIXME!! - //if (dci->pucch_resource_ind == 2) dlsch_config_pdu_1_0->pucch_resource_id = 3; //pucch-ResourceId obtained from the 3rd value of resourceList FIXME!! - //if (dci->pucch_resource_ind == 3) dlsch_config_pdu_1_0->pucch_resource_id = 4; //pucch-ResourceId obtained from the 4th value of resourceList FIXME!! - //if (dci->pucch_resource_ind == 4) dlsch_config_pdu_1_0->pucch_resource_id = 5; //pucch-ResourceId obtained from the 5th value of resourceList FIXME!! - //if (dci->pucch_resource_ind == 5) dlsch_config_pdu_1_0->pucch_resource_id = 6; //pucch-ResourceId obtained from the 6th value of resourceList FIXME!! - //if (dci->pucch_resource_ind == 6) dlsch_config_pdu_1_0->pucch_resource_id = 7; //pucch-ResourceId obtained from the 7th value of resourceList FIXME!! - //if (dci->pucch_resource_ind == 7) dlsch_config_pdu_1_0->pucch_resource_id = 8; //pucch-ResourceId obtained from the 8th value of resourceList FIXME!! - dlsch_config_pdu_1_0->pucch_resource_id = dci->pucch_resource_ind; + //if (dci->pucch_resource_indicator == 0) dlsch_config_pdu_1_0->pucch_resource_id = 1; //pucch-ResourceId obtained from the 1st value of resourceList FIXME!!! + //if (dci->pucch_resource_indicator == 1) dlsch_config_pdu_1_0->pucch_resource_id = 2; //pucch-ResourceId obtained from the 2nd value of resourceList FIXME!! + //if (dci->pucch_resource_indicator == 2) dlsch_config_pdu_1_0->pucch_resource_id = 3; //pucch-ResourceId obtained from the 3rd value of resourceList FIXME!! + //if (dci->pucch_resource_indicator == 3) dlsch_config_pdu_1_0->pucch_resource_id = 4; //pucch-ResourceId obtained from the 4th value of resourceList FIXME!! + //if (dci->pucch_resource_indicator == 4) dlsch_config_pdu_1_0->pucch_resource_id = 5; //pucch-ResourceId obtained from the 5th value of resourceList FIXME!! + //if (dci->pucch_resource_indicator == 5) dlsch_config_pdu_1_0->pucch_resource_id = 6; //pucch-ResourceId obtained from the 6th value of resourceList FIXME!! + //if (dci->pucch_resource_indicator == 6) dlsch_config_pdu_1_0->pucch_resource_id = 7; //pucch-ResourceId obtained from the 7th value of resourceList FIXME!! + //if (dci->pucch_resource_indicator == 7) dlsch_config_pdu_1_0->pucch_resource_id = 8; //pucch-ResourceId obtained from the 8th value of resourceList FIXME!! + dlsch_config_pdu_1_0->pucch_resource_id = dci->pucch_resource_indicator; /* PDSCH_TO_HARQ_FEEDBACK_TIME_IND (only if CRC scrambled by C-RNTI or CS-RNTI or new-RNTI)*/ - dlsch_config_pdu_1_0->pdsch_to_harq_feedback_time_ind = dci->pdsch_to_harq_feedback_time_ind; + dlsch_config_pdu_1_0->pdsch_to_harq_feedback_time_ind = dci->pdsch_to_harq_feedback_timing_indicator.val; - LOG_D(MAC,"(nr_ue_procedures.c) rnti=%d dl_config->number_pdus=%d\n", + LOG_D(MAC,"(nr_ue_procedures.c) rnti = %x dl_config->number_pdus = %d\n", dl_config->dl_config_list[dl_config->number_pdus].dlsch_config_pdu.rnti, dl_config->number_pdus); LOG_D(MAC,"(nr_ue_procedures.c) frequency_domain_resource_assignment=%d \t number_rbs=%d \t start_rb=%d\n", - dci->freq_dom_resource_assignment_DL, + dci->frequency_domain_assignment.val, dlsch_config_pdu_1_0->number_rbs, dlsch_config_pdu_1_0->start_rb); LOG_D(MAC,"(nr_ue_procedures.c) time_domain_resource_assignment=%d \t number_symbols=%d \t start_symbol=%d\n", - dci->time_dom_resource_assignment, + dci->time_domain_assignment.val, dlsch_config_pdu_1_0->number_symbols, dlsch_config_pdu_1_0->start_symbol); LOG_D(MAC,"(nr_ue_procedures.c) vrb_to_prb_mapping=%d \n>>> mcs=%d\n>>> ndi=%d\n>>> rv=%d\n>>> harq_process_nbr=%d\n>>> dai=%d\n>>> scaling_factor_S=%f\n>>> tpc_pucch=%d\n>>> pucch_res_ind=%d\n>>> pdsch_to_harq_feedback_time_ind=%d\n", @@ -2423,7 +2818,12 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, nr dlsch_config_pdu_1_0->pucch_resource_id, dlsch_config_pdu_1_0->pdsch_to_harq_feedback_time_ind); - dl_config->dl_config_list[dl_config->number_pdus].pdu_type = FAPI_NR_DL_CONFIG_TYPE_DLSCH; + if (mac->RA_window_cnt >= 0 && rnti == mac->ra_rnti){ + dl_config->dl_config_list[dl_config->number_pdus].pdu_type = FAPI_NR_DL_CONFIG_TYPE_RA_DLSCH; + } else { + dl_config->dl_config_list[dl_config->number_pdus].pdu_type = FAPI_NR_DL_CONFIG_TYPE_DLSCH; + } + // dl_config->dl_config_list[dl_config->number_pdus].dci_config_pdu.dci_config_rel15.N_RB_BWP = n_RB_DLBWP; LOG_D(MAC,"(nr_ue_procedures.c) pdu_type=%d\n\n",dl_config->dl_config_list[dl_config->number_pdus].pdu_type); @@ -2469,145 +2869,146 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, nr /* BANDWIDTH_PART_IND */ // dlsch_config_pdu_1_1->bandwidth_part_ind = dci->bandwidth_part_ind; /* FREQ_DOM_RESOURCE_ASSIGNMENT_DL */ - nr_ue_process_dci_freq_dom_resource_assignment(NULL,dlsch_config_pdu_1_1,0,n_RB_DLBWP,dci->freq_dom_resource_assignment_DL); + nr_ue_process_dci_freq_dom_resource_assignment(NULL,dlsch_config_pdu_1_1,0,n_RB_DLBWP,dci->frequency_domain_assignment.val); /* TIME_DOM_RESOURCE_ASSIGNMENT */ - nr_ue_process_dci_time_dom_resource_assignment(mac,NULL,dlsch_config_pdu_1_1, - dci->time_dom_resource_assignment); + if (nr_ue_process_dci_time_dom_resource_assignment(mac,NULL,dlsch_config_pdu_1_1,dci->time_domain_assignment.val) < 0) + return -1; + /* dmrs symbol positions*/ + dlsch_config_pdu_1_1->dlDmrsSymbPos = fill_dmrs_mask(pdsch_config, + mac->scc->dmrs_TypeA_Position, + dlsch_config_pdu_1_1->number_symbols); + dlsch_config_pdu_1_1->dmrsConfigType = mac->DLbwp[0]->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->dmrs_Type == NULL ? 0 : 1; + /* TODO: fix number of DM-RS CDM groups without data according to subclause 5.1.6.2 of 3GPP TS 38.214, + using tables 7.3.1.2.2-1, 7.3.1.2.2-2, 7.3.1.2.2-3, 7.3.1.2.2-4 of 3GPP TS 38.212 */ + dlsch_config_pdu_1_1->n_dmrs_cdm_groups = 1; /* VRB_TO_PRB_MAPPING */ if (mac->phy_config.config_req.dl_bwp_dedicated.pdsch_config_dedicated.resource_allocation != 0) - dlsch_config_pdu_1_1->vrb_to_prb_mapping = (dci->vrb_to_prb_mapping == 0) ? vrb_to_prb_mapping_non_interleaved:vrb_to_prb_mapping_interleaved; + dlsch_config_pdu_1_1->vrb_to_prb_mapping = (dci->vrb_to_prb_mapping.val == 0) ? vrb_to_prb_mapping_non_interleaved:vrb_to_prb_mapping_interleaved; /* PRB_BUNDLING_SIZE_IND */ - dlsch_config_pdu_1_1->prb_bundling_size_ind = dci->prb_bundling_size_ind; + dlsch_config_pdu_1_1->prb_bundling_size_ind = dci->prb_bundling_size_indicator.val; /* RATE_MATCHING_IND */ - dlsch_config_pdu_1_1->rate_matching_ind = dci->rate_matching_ind; + dlsch_config_pdu_1_1->rate_matching_ind = dci->rate_matching_indicator.val; /* ZP_CSI_RS_TRIGGER */ - dlsch_config_pdu_1_1->zp_csi_rs_trigger = dci->zp_csi_rs_trigger; + dlsch_config_pdu_1_1->zp_csi_rs_trigger = dci->zp_csi_rs_trigger.val; /* MCS (for transport block 1)*/ - dlsch_config_pdu_1_1->mcs = dci->tb1_mcs; + dlsch_config_pdu_1_1->mcs = dci->mcs; /* NDI (for transport block 1)*/ - dlsch_config_pdu_1_1->ndi = dci->tb1_ndi; + dlsch_config_pdu_1_1->ndi = dci->ndi; /* RV (for transport block 1)*/ - dlsch_config_pdu_1_1->rv = dci->tb1_rv; + dlsch_config_pdu_1_1->rv = dci->rv; /* MCS (for transport block 2)*/ - dlsch_config_pdu_1_1->tb2_mcs = dci->tb2_mcs; + dlsch_config_pdu_1_1->tb2_mcs = dci->mcs2.val; /* NDI (for transport block 2)*/ - dlsch_config_pdu_1_1->tb2_ndi = dci->tb2_ndi; + dlsch_config_pdu_1_1->tb2_ndi = dci->ndi2.val; /* RV (for transport block 2)*/ - dlsch_config_pdu_1_1->tb2_rv = dci->tb2_rv; + dlsch_config_pdu_1_1->tb2_rv = dci->rv2.val; /* HARQ_PROCESS_NUMBER */ - dlsch_config_pdu_1_1->harq_process_nbr = dci->harq_process_number; + dlsch_config_pdu_1_1->harq_process_nbr = dci->harq_pid; /* DAI */ - dlsch_config_pdu_1_1->dai = dci ->dai; + dlsch_config_pdu_1_1->dai = dci->dai[0].val; /* TPC_PUCCH */ // according to TS 38.213 Table 7.2.1-1 - if (dci->tpc_pucch == 0) dlsch_config_pdu_1_1->accumulated_delta_PUCCH = -1; - if (dci->tpc_pucch == 1) dlsch_config_pdu_1_1->accumulated_delta_PUCCH = 0; - if (dci->tpc_pucch == 2) dlsch_config_pdu_1_1->accumulated_delta_PUCCH = 1; - if (dci->tpc_pucch == 3) dlsch_config_pdu_1_1->accumulated_delta_PUCCH = 3; + if (dci->tpc == 0) dlsch_config_pdu_1_1->accumulated_delta_PUCCH = -1; + if (dci->tpc == 1) dlsch_config_pdu_1_1->accumulated_delta_PUCCH = 0; + if (dci->tpc == 2) dlsch_config_pdu_1_1->accumulated_delta_PUCCH = 1; + if (dci->tpc == 3) dlsch_config_pdu_1_1->accumulated_delta_PUCCH = 3; /* PUCCH_RESOURCE_IND */ - if (dci->pucch_resource_ind == 0) dlsch_config_pdu_1_1->pucch_resource_id = 0; //pucch-ResourceId obtained from the 1st value of resourceList FIXME!!! - if (dci->pucch_resource_ind == 1) dlsch_config_pdu_1_1->pucch_resource_id = 0; //pucch-ResourceId obtained from the 2nd value of resourceList FIXME!! - if (dci->pucch_resource_ind == 2) dlsch_config_pdu_1_1->pucch_resource_id = 0; //pucch-ResourceId obtained from the 3rd value of resourceList FIXME!! - if (dci->pucch_resource_ind == 3) dlsch_config_pdu_1_1->pucch_resource_id = 0; //pucch-ResourceId obtained from the 4th value of resourceList FIXME!! - if (dci->pucch_resource_ind == 4) dlsch_config_pdu_1_1->pucch_resource_id = 0; //pucch-ResourceId obtained from the 5th value of resourceList FIXME!! - if (dci->pucch_resource_ind == 5) dlsch_config_pdu_1_1->pucch_resource_id = 0; //pucch-ResourceId obtained from the 6th value of resourceList FIXME!! - if (dci->pucch_resource_ind == 6) dlsch_config_pdu_1_1->pucch_resource_id = 0; //pucch-ResourceId obtained from the 7th value of resourceList FIXME!! - if (dci->pucch_resource_ind == 7) dlsch_config_pdu_1_1->pucch_resource_id = 0; //pucch-ResourceId obtained from the 8th value of resourceList FIXME!! + dlsch_config_pdu_1_1->pucch_resource_id = dci->pucch_resource_indicator; /* PDSCH_TO_HARQ_FEEDBACK_TIME_IND */ // according to TS 38.213 Table 9.2.3-1 - dlsch_config_pdu_1_1-> pdsch_to_harq_feedback_time_ind = mac->phy_config.config_req.ul_bwp_dedicated.pucch_config_dedicated.dl_data_to_ul_ack[dci->pdsch_to_harq_feedback_time_ind]; + dlsch_config_pdu_1_1->pdsch_to_harq_feedback_time_ind = mac->ULbwp[bwp_id-1]->bwp_Dedicated->pucch_Config->choice.setup->dl_DataToUL_ACK->list.array[dci->pdsch_to_harq_feedback_timing_indicator.val][0]; /* ANTENNA_PORTS */ uint8_t n_codewords = 1; // FIXME!!! if ((mac->phy_config.config_req.dl_bwp_dedicated.pdsch_config_dedicated.dmrs_dl_for_pdsch_mapping_type_a.dmrs_type == 1) && (mac->phy_config.config_req.dl_bwp_dedicated.pdsch_config_dedicated.dmrs_dl_for_pdsch_mapping_type_a.max_length == 1)){ // Table 7.3.1.2.2-1: Antenna port(s) (1000 + DMRS port), dmrs-Type=1, maxLength=1 - dlsch_config_pdu_1_1->n_dmrs_cdm_groups = table_7_3_2_3_3_1[dci->antenna_ports][0]; - dlsch_config_pdu_1_1->dmrs_ports[0] = table_7_3_2_3_3_1[dci->antenna_ports][1]; - dlsch_config_pdu_1_1->dmrs_ports[1] = table_7_3_2_3_3_1[dci->antenna_ports][2]; - dlsch_config_pdu_1_1->dmrs_ports[2] = table_7_3_2_3_3_1[dci->antenna_ports][3]; - dlsch_config_pdu_1_1->dmrs_ports[3] = table_7_3_2_3_3_1[dci->antenna_ports][4]; + dlsch_config_pdu_1_1->n_dmrs_cdm_groups = table_7_3_2_3_3_1[dci->antenna_ports.val][0]; + dlsch_config_pdu_1_1->dmrs_ports[0] = table_7_3_2_3_3_1[dci->antenna_ports.val][1]; + dlsch_config_pdu_1_1->dmrs_ports[1] = table_7_3_2_3_3_1[dci->antenna_ports.val][2]; + dlsch_config_pdu_1_1->dmrs_ports[2] = table_7_3_2_3_3_1[dci->antenna_ports.val][3]; + dlsch_config_pdu_1_1->dmrs_ports[3] = table_7_3_2_3_3_1[dci->antenna_ports.val][4]; } if ((mac->phy_config.config_req.dl_bwp_dedicated.pdsch_config_dedicated.dmrs_dl_for_pdsch_mapping_type_a.dmrs_type == 1) && (mac->phy_config.config_req.dl_bwp_dedicated.pdsch_config_dedicated.dmrs_dl_for_pdsch_mapping_type_a.max_length == 2)){ // Table 7.3.1.2.2-2: Antenna port(s) (1000 + DMRS port), dmrs-Type=1, maxLength=2 if (n_codewords == 1) { - dlsch_config_pdu_1_1->n_dmrs_cdm_groups = table_7_3_2_3_3_2_oneCodeword[dci->antenna_ports][0]; - dlsch_config_pdu_1_1->dmrs_ports[0] = table_7_3_2_3_3_2_oneCodeword[dci->antenna_ports][1]; - dlsch_config_pdu_1_1->dmrs_ports[1] = table_7_3_2_3_3_2_oneCodeword[dci->antenna_ports][2]; - dlsch_config_pdu_1_1->dmrs_ports[2] = table_7_3_2_3_3_2_oneCodeword[dci->antenna_ports][3]; - dlsch_config_pdu_1_1->dmrs_ports[3] = table_7_3_2_3_3_2_oneCodeword[dci->antenna_ports][4]; - dlsch_config_pdu_1_1->n_front_load_symb = table_7_3_2_3_3_2_oneCodeword[dci->antenna_ports][5]; + dlsch_config_pdu_1_1->n_dmrs_cdm_groups = table_7_3_2_3_3_2_oneCodeword[dci->antenna_ports.val][0]; + dlsch_config_pdu_1_1->dmrs_ports[0] = table_7_3_2_3_3_2_oneCodeword[dci->antenna_ports.val][1]; + dlsch_config_pdu_1_1->dmrs_ports[1] = table_7_3_2_3_3_2_oneCodeword[dci->antenna_ports.val][2]; + dlsch_config_pdu_1_1->dmrs_ports[2] = table_7_3_2_3_3_2_oneCodeword[dci->antenna_ports.val][3]; + dlsch_config_pdu_1_1->dmrs_ports[3] = table_7_3_2_3_3_2_oneCodeword[dci->antenna_ports.val][4]; + dlsch_config_pdu_1_1->n_front_load_symb = table_7_3_2_3_3_2_oneCodeword[dci->antenna_ports.val][5]; } if (n_codewords == 1) { - dlsch_config_pdu_1_1->n_dmrs_cdm_groups = table_7_3_2_3_3_2_twoCodeword[dci->antenna_ports][0]; - dlsch_config_pdu_1_1->dmrs_ports[0] = table_7_3_2_3_3_2_twoCodeword[dci->antenna_ports][1]; - dlsch_config_pdu_1_1->dmrs_ports[1] = table_7_3_2_3_3_2_twoCodeword[dci->antenna_ports][2]; - dlsch_config_pdu_1_1->dmrs_ports[2] = table_7_3_2_3_3_2_twoCodeword[dci->antenna_ports][3]; - dlsch_config_pdu_1_1->dmrs_ports[3] = table_7_3_2_3_3_2_twoCodeword[dci->antenna_ports][4]; - dlsch_config_pdu_1_1->dmrs_ports[4] = table_7_3_2_3_3_2_twoCodeword[dci->antenna_ports][5]; - dlsch_config_pdu_1_1->dmrs_ports[5] = table_7_3_2_3_3_2_twoCodeword[dci->antenna_ports][6]; - dlsch_config_pdu_1_1->dmrs_ports[6] = table_7_3_2_3_3_2_twoCodeword[dci->antenna_ports][7]; - dlsch_config_pdu_1_1->dmrs_ports[7] = table_7_3_2_3_3_2_twoCodeword[dci->antenna_ports][8]; - dlsch_config_pdu_1_1->n_front_load_symb = table_7_3_2_3_3_2_twoCodeword[dci->antenna_ports][9]; + dlsch_config_pdu_1_1->n_dmrs_cdm_groups = table_7_3_2_3_3_2_twoCodeword[dci->antenna_ports.val][0]; + dlsch_config_pdu_1_1->dmrs_ports[0] = table_7_3_2_3_3_2_twoCodeword[dci->antenna_ports.val][1]; + dlsch_config_pdu_1_1->dmrs_ports[1] = table_7_3_2_3_3_2_twoCodeword[dci->antenna_ports.val][2]; + dlsch_config_pdu_1_1->dmrs_ports[2] = table_7_3_2_3_3_2_twoCodeword[dci->antenna_ports.val][3]; + dlsch_config_pdu_1_1->dmrs_ports[3] = table_7_3_2_3_3_2_twoCodeword[dci->antenna_ports.val][4]; + dlsch_config_pdu_1_1->dmrs_ports[4] = table_7_3_2_3_3_2_twoCodeword[dci->antenna_ports.val][5]; + dlsch_config_pdu_1_1->dmrs_ports[5] = table_7_3_2_3_3_2_twoCodeword[dci->antenna_ports.val][6]; + dlsch_config_pdu_1_1->dmrs_ports[6] = table_7_3_2_3_3_2_twoCodeword[dci->antenna_ports.val][7]; + dlsch_config_pdu_1_1->dmrs_ports[7] = table_7_3_2_3_3_2_twoCodeword[dci->antenna_ports.val][8]; + dlsch_config_pdu_1_1->n_front_load_symb = table_7_3_2_3_3_2_twoCodeword[dci->antenna_ports.val][9]; } } if ((mac->phy_config.config_req.dl_bwp_dedicated.pdsch_config_dedicated.dmrs_dl_for_pdsch_mapping_type_a.dmrs_type == 2) && (mac->phy_config.config_req.dl_bwp_dedicated.pdsch_config_dedicated.dmrs_dl_for_pdsch_mapping_type_a.max_length == 1)){ // Table 7.3.1.2.2-3: Antenna port(s) (1000 + DMRS port), dmrs-Type=2, maxLength=1 if (n_codewords == 1) { - dlsch_config_pdu_1_1->n_dmrs_cdm_groups = table_7_3_2_3_3_3_oneCodeword[dci->antenna_ports][0]; - dlsch_config_pdu_1_1->dmrs_ports[0] = table_7_3_2_3_3_3_oneCodeword[dci->antenna_ports][1]; - dlsch_config_pdu_1_1->dmrs_ports[1] = table_7_3_2_3_3_3_oneCodeword[dci->antenna_ports][2]; - dlsch_config_pdu_1_1->dmrs_ports[2] = table_7_3_2_3_3_3_oneCodeword[dci->antenna_ports][3]; - dlsch_config_pdu_1_1->dmrs_ports[3] = table_7_3_2_3_3_3_oneCodeword[dci->antenna_ports][4]; + dlsch_config_pdu_1_1->n_dmrs_cdm_groups = table_7_3_2_3_3_3_oneCodeword[dci->antenna_ports.val][0]; + dlsch_config_pdu_1_1->dmrs_ports[0] = table_7_3_2_3_3_3_oneCodeword[dci->antenna_ports.val][1]; + dlsch_config_pdu_1_1->dmrs_ports[1] = table_7_3_2_3_3_3_oneCodeword[dci->antenna_ports.val][2]; + dlsch_config_pdu_1_1->dmrs_ports[2] = table_7_3_2_3_3_3_oneCodeword[dci->antenna_ports.val][3]; + dlsch_config_pdu_1_1->dmrs_ports[3] = table_7_3_2_3_3_3_oneCodeword[dci->antenna_ports.val][4]; } if (n_codewords == 1) { - dlsch_config_pdu_1_1->n_dmrs_cdm_groups = table_7_3_2_3_3_3_twoCodeword[dci->antenna_ports][0]; - dlsch_config_pdu_1_1->dmrs_ports[0] = table_7_3_2_3_3_3_twoCodeword[dci->antenna_ports][1]; - dlsch_config_pdu_1_1->dmrs_ports[1] = table_7_3_2_3_3_3_twoCodeword[dci->antenna_ports][2]; - dlsch_config_pdu_1_1->dmrs_ports[2] = table_7_3_2_3_3_3_twoCodeword[dci->antenna_ports][3]; - dlsch_config_pdu_1_1->dmrs_ports[3] = table_7_3_2_3_3_3_twoCodeword[dci->antenna_ports][4]; - dlsch_config_pdu_1_1->dmrs_ports[4] = table_7_3_2_3_3_3_twoCodeword[dci->antenna_ports][5]; - dlsch_config_pdu_1_1->dmrs_ports[5] = table_7_3_2_3_3_3_twoCodeword[dci->antenna_ports][6]; + dlsch_config_pdu_1_1->n_dmrs_cdm_groups = table_7_3_2_3_3_3_twoCodeword[dci->antenna_ports.val][0]; + dlsch_config_pdu_1_1->dmrs_ports[0] = table_7_3_2_3_3_3_twoCodeword[dci->antenna_ports.val][1]; + dlsch_config_pdu_1_1->dmrs_ports[1] = table_7_3_2_3_3_3_twoCodeword[dci->antenna_ports.val][2]; + dlsch_config_pdu_1_1->dmrs_ports[2] = table_7_3_2_3_3_3_twoCodeword[dci->antenna_ports.val][3]; + dlsch_config_pdu_1_1->dmrs_ports[3] = table_7_3_2_3_3_3_twoCodeword[dci->antenna_ports.val][4]; + dlsch_config_pdu_1_1->dmrs_ports[4] = table_7_3_2_3_3_3_twoCodeword[dci->antenna_ports.val][5]; + dlsch_config_pdu_1_1->dmrs_ports[5] = table_7_3_2_3_3_3_twoCodeword[dci->antenna_ports.val][6]; } } if ((mac->phy_config.config_req.dl_bwp_dedicated.pdsch_config_dedicated.dmrs_dl_for_pdsch_mapping_type_a.dmrs_type == 2) && (mac->phy_config.config_req.dl_bwp_dedicated.pdsch_config_dedicated.dmrs_dl_for_pdsch_mapping_type_a.max_length == 2)){ // Table 7.3.1.2.2-4: Antenna port(s) (1000 + DMRS port), dmrs-Type=2, maxLength=2 if (n_codewords == 1) { - dlsch_config_pdu_1_1->n_dmrs_cdm_groups = table_7_3_2_3_3_4_oneCodeword[dci->antenna_ports][0]; - dlsch_config_pdu_1_1->dmrs_ports[0] = table_7_3_2_3_3_4_oneCodeword[dci->antenna_ports][1]; - dlsch_config_pdu_1_1->dmrs_ports[1] = table_7_3_2_3_3_4_oneCodeword[dci->antenna_ports][2]; - dlsch_config_pdu_1_1->dmrs_ports[2] = table_7_3_2_3_3_4_oneCodeword[dci->antenna_ports][3]; - dlsch_config_pdu_1_1->dmrs_ports[3] = table_7_3_2_3_3_4_oneCodeword[dci->antenna_ports][4]; - dlsch_config_pdu_1_1->n_front_load_symb = table_7_3_2_3_3_4_oneCodeword[dci->antenna_ports][5]; + dlsch_config_pdu_1_1->n_dmrs_cdm_groups = table_7_3_2_3_3_4_oneCodeword[dci->antenna_ports.val][0]; + dlsch_config_pdu_1_1->dmrs_ports[0] = table_7_3_2_3_3_4_oneCodeword[dci->antenna_ports.val][1]; + dlsch_config_pdu_1_1->dmrs_ports[1] = table_7_3_2_3_3_4_oneCodeword[dci->antenna_ports.val][2]; + dlsch_config_pdu_1_1->dmrs_ports[2] = table_7_3_2_3_3_4_oneCodeword[dci->antenna_ports.val][3]; + dlsch_config_pdu_1_1->dmrs_ports[3] = table_7_3_2_3_3_4_oneCodeword[dci->antenna_ports.val][4]; + dlsch_config_pdu_1_1->n_front_load_symb = table_7_3_2_3_3_4_oneCodeword[dci->antenna_ports.val][5]; } if (n_codewords == 1) { - dlsch_config_pdu_1_1->n_dmrs_cdm_groups = table_7_3_2_3_3_4_twoCodeword[dci->antenna_ports][0]; - dlsch_config_pdu_1_1->dmrs_ports[0] = table_7_3_2_3_3_4_twoCodeword[dci->antenna_ports][1]; - dlsch_config_pdu_1_1->dmrs_ports[1] = table_7_3_2_3_3_4_twoCodeword[dci->antenna_ports][2]; - dlsch_config_pdu_1_1->dmrs_ports[2] = table_7_3_2_3_3_4_twoCodeword[dci->antenna_ports][3]; - dlsch_config_pdu_1_1->dmrs_ports[3] = table_7_3_2_3_3_4_twoCodeword[dci->antenna_ports][4]; - dlsch_config_pdu_1_1->dmrs_ports[4] = table_7_3_2_3_3_4_twoCodeword[dci->antenna_ports][5]; - dlsch_config_pdu_1_1->dmrs_ports[5] = table_7_3_2_3_3_4_twoCodeword[dci->antenna_ports][6]; - dlsch_config_pdu_1_1->dmrs_ports[6] = table_7_3_2_3_3_4_twoCodeword[dci->antenna_ports][7]; - dlsch_config_pdu_1_1->dmrs_ports[7] = table_7_3_2_3_3_4_twoCodeword[dci->antenna_ports][8]; - dlsch_config_pdu_1_1->n_front_load_symb = table_7_3_2_3_3_4_twoCodeword[dci->antenna_ports][9]; + dlsch_config_pdu_1_1->n_dmrs_cdm_groups = table_7_3_2_3_3_4_twoCodeword[dci->antenna_ports.val][0]; + dlsch_config_pdu_1_1->dmrs_ports[0] = table_7_3_2_3_3_4_twoCodeword[dci->antenna_ports.val][1]; + dlsch_config_pdu_1_1->dmrs_ports[1] = table_7_3_2_3_3_4_twoCodeword[dci->antenna_ports.val][2]; + dlsch_config_pdu_1_1->dmrs_ports[2] = table_7_3_2_3_3_4_twoCodeword[dci->antenna_ports.val][3]; + dlsch_config_pdu_1_1->dmrs_ports[3] = table_7_3_2_3_3_4_twoCodeword[dci->antenna_ports.val][4]; + dlsch_config_pdu_1_1->dmrs_ports[4] = table_7_3_2_3_3_4_twoCodeword[dci->antenna_ports.val][5]; + dlsch_config_pdu_1_1->dmrs_ports[5] = table_7_3_2_3_3_4_twoCodeword[dci->antenna_ports.val][6]; + dlsch_config_pdu_1_1->dmrs_ports[6] = table_7_3_2_3_3_4_twoCodeword[dci->antenna_ports.val][7]; + dlsch_config_pdu_1_1->dmrs_ports[7] = table_7_3_2_3_3_4_twoCodeword[dci->antenna_ports.val][8]; + dlsch_config_pdu_1_1->n_front_load_symb = table_7_3_2_3_3_4_twoCodeword[dci->antenna_ports.val][9]; } } /* TCI */ if (mac->dl_config_request.dl_config_list[0].dci_config_pdu.dci_config_rel15.coreset.tci_present_in_dci == 1){ // 0 bit if higher layer parameter tci-PresentInDCI is not enabled // otherwise 3 bits as defined in Subclause 5.1.5 of [6, TS38.214] - dlsch_config_pdu_1_1->tci_state = dci->tci; + dlsch_config_pdu_1_1->tci_state = dci->transmission_configuration_indication.val; } /* SRS_REQUEST */ // if SUL is supported in the cell, there is an additional bit in this field and the value of this bit represents table 7.1.1.1-1 TS 38.212 FIXME!!! - dlsch_config_pdu_1_1->srs_config.aperiodicSRS_ResourceTrigger = (dci->srs_request & 0x11); // as per Table 7.3.1.1.2-24 TS 38.212 + dlsch_config_pdu_1_1->srs_config.aperiodicSRS_ResourceTrigger = (dci->srs_request.val & 0x11); // as per Table 7.3.1.1.2-24 TS 38.212 /* CBGTI */ - dlsch_config_pdu_1_1->cbgti = dci->cbgti; + dlsch_config_pdu_1_1->cbgti = dci->cbgti.val; /* CBGFI */ - dlsch_config_pdu_1_1->codeBlockGroupFlushIndicator = dci->cbgfi; + dlsch_config_pdu_1_1->codeBlockGroupFlushIndicator = dci->cbgfi.val; /* DMRS_SEQ_INI */ //FIXME!!! @@ -2670,7 +3071,6 @@ void nr_ue_send_sdu(module_id_t module_idP, LOG_D(MAC, "Handling PDU frame %d slot %d\n", frameP, slotP); uint8_t * pduP = pdu; - NR_UE_MAC_INST_t *UE_mac_inst = get_mac_inst(module_idP); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SEND_SDU, VCD_FUNCTION_IN); @@ -2707,7 +3107,7 @@ void nr_extract_dci_info(NR_UE_MAC_INST_t *mac, uint8_t dci_size, uint16_t rnti, uint64_t *dci_pdu, - nr_dci_pdu_rel15_t *dci_pdu_rel15) { + dci_pdu_rel15_t *dci_pdu_rel15) { int rnti_type=-1; if (rnti == mac->ra_rnti) rnti_type = NR_RNTI_RA; @@ -2719,10 +3119,10 @@ void nr_extract_dci_info(NR_UE_MAC_INST_t *mac, AssertFatal(rnti_type!=-1,"no identified/handled rnti\n"); AssertFatal(mac->DLbwp[0] != NULL, "DLbwp[0] shouldn't be null here!\n"); AssertFatal(mac->ULbwp[0] != NULL, "ULbwp[0] shouldn't be null here!\n"); - int N_RB = (mac->scd != NULL) ? + int N_RB = (mac->scg != NULL) ? NRRIV2BW(mac->DLbwp[0]->bwp_Common->genericParameters.locationAndBandwidth,275) : NRRIV2BW(mac->scc->downlinkConfigCommon->initialDownlinkBWP->genericParameters.locationAndBandwidth,275); - int N_RB_UL = (mac->scd != NULL) ? + int N_RB_UL = (mac->scg != NULL) ? NRRIV2BW(mac->ULbwp[0]->bwp_Common->genericParameters.locationAndBandwidth,275) : NRRIV2BW(mac->scc->uplinkConfigCommon->initialUplinkBWP->genericParameters.locationAndBandwidth,275); @@ -2733,25 +3133,26 @@ void nr_extract_dci_info(NR_UE_MAC_INST_t *mac, case NR_DL_DCI_FORMAT_1_0: switch(rnti_type) { case NR_RNTI_RA: + N_RB = NRRIV2BW(mac->scc->downlinkConfigCommon->initialDownlinkBWP->genericParameters.locationAndBandwidth, 275); // TBR hotfix // Freq domain assignment fsize = (int)ceil( log2( (N_RB*(N_RB+1))>>1 ) ); pos=fsize; - dci_pdu_rel15->freq_dom_resource_assignment_DL = *dci_pdu>>(dci_size-pos)&((1<frequency_domain_assignment.val = *dci_pdu>>(dci_size-pos)&((1< %d (0x%lx)\n",dci_pdu_rel15->freq_dom_resource_assignment_DL,fsize,N_RB,dci_size-pos,*dci_pdu); + LOG_D(MAC,"frequency-domain assignment %d (%d bits) N_RB_BWP %d=> %d (0x%lx)\n",dci_pdu_rel15->frequency_domain_assignment.val,fsize,N_RB,dci_size-pos,*dci_pdu); #endif // Time domain assignment pos+=4; - dci_pdu_rel15->time_dom_resource_assignment = (*dci_pdu >> (dci_size-pos))&0xf; + dci_pdu_rel15->time_domain_assignment.val = (*dci_pdu >> (dci_size-pos))&0xf; #ifdef DEBUG_EXTRACT_DCI - LOG_D(MAC,"time-domain assignment %d (3 bits)=> %d (0x%lx)\n",dci_pdu_rel15->time_dom_resource_assignment,dci_size-pos,*dci_pdu); + LOG_D(MAC,"time-domain assignment %d (4 bits)=> %d (0x%lx)\n",dci_pdu_rel15->time_domain_assignment.val,dci_size-pos,*dci_pdu); #endif // VRB to PRB mapping pos++; - dci_pdu_rel15->vrb_to_prb_mapping = (*dci_pdu>>(dci_size-pos))&0x1; + dci_pdu_rel15->vrb_to_prb_mapping.val = (*dci_pdu>>(dci_size-pos))&0x1; #ifdef DEBUG_EXTRACT_DCI - LOG_D(MAC,"vrb to prb mapping %d (1 bits)=> %d (0x%lx)\n",dci_pdu_rel15->vrb_to_prb_mapping,dci_size-pos,*dci_pdu); + LOG_D(MAC,"vrb to prb mapping %d (1 bits)=> %d (0x%lx)\n",dci_pdu_rel15->vrb_to_prb_mapping.val,dci_size-pos,*dci_pdu); #endif // MCS pos+=5; @@ -2766,28 +3167,28 @@ void nr_extract_dci_info(NR_UE_MAC_INST_t *mac, LOG_D(MAC,"tb_scaling %d (2 bits)=> %d (0x%lx)\n",dci_pdu_rel15->tb_scaling,dci_size-pos,*dci_pdu); #endif break; - + case NR_RNTI_C: // indicating a DL DCI format 1bit pos++; - dci_pdu_rel15->identifier_dci_formats = (*dci_pdu>>(dci_size-pos))&1; + dci_pdu_rel15->format_indicator = (*dci_pdu>>(dci_size-pos))&1; #ifdef DEBUG_EXTRACT_DCI - LOG_D(MAC,"Format indicator %d (%d bits) N_RB_BWP %d => %d (0x%lx)\n",dci_pdu_rel15->identifier_dci_formats,1,N_RB,dci_size-pos,*dci_pdu); + LOG_D(MAC,"Format indicator %d (%d bits) N_RB_BWP %d => %d (0x%lx)\n",dci_pdu_rel15->format_indicator,1,N_RB,dci_size-pos,*dci_pdu); #endif // Freq domain assignment (275rb >> fsize = 16) fsize = (int)ceil( log2( (N_RB*(N_RB+1))>>1 ) ); pos+=fsize; - dci_pdu_rel15->freq_dom_resource_assignment_DL = (*dci_pdu>>(dci_size-pos))&((1<frequency_domain_assignment.val = (*dci_pdu>>(dci_size-pos))&((1< %d (0x%lx)\n",dci_pdu_rel15->freq_dom_resource_assignment_DL,fsize,dci_size-pos,*dci_pdu); + LOG_D(MAC,"Freq domain assignment %d (%d bits)=> %d (0x%lx)\n",dci_pdu_rel15->frequency_domain_assignment.val,fsize,dci_size-pos,*dci_pdu); #endif uint16_t is_ra = 1; for (int i=0; ifreq_dom_resource_assignment_DL>>i)&1)) { + if (!((dci_pdu_rel15->frequency_domain_assignment.val>>i)&1)) { is_ra = 0; break; } @@ -2799,7 +3200,7 @@ void nr_extract_dci_info(NR_UE_MAC_INST_t *mac, // UL/SUL indicator 1 bit pos++; - dci_pdu_rel15->sul_ind_0_1 = (*dci_pdu>>(dci_size-pos))&1; + dci_pdu_rel15->ul_sul_indicator.val = (*dci_pdu>>(dci_size-pos))&1; // SS/PBCH index 6 bits pos+=6; @@ -2815,16 +3216,16 @@ void nr_extract_dci_info(NR_UE_MAC_INST_t *mac, // Time domain assignment 4bit pos+=4; - dci_pdu_rel15->time_dom_resource_assignment = (*dci_pdu>>(dci_size-pos))&0xf; + dci_pdu_rel15->time_domain_assignment.val = (*dci_pdu>>(dci_size-pos))&0xf; #ifdef DEBUG_EXTRACT_DCI - LOG_D(MAC,"Time domain assignment %d (%d bits)=> %d (0x%lx)\n",dci_pdu_rel15->time_dom_resource_assignment,4,dci_size-pos,*dci_pdu); + LOG_D(MAC,"Time domain assignment %d (%d bits)=> %d (0x%lx)\n",dci_pdu_rel15->time_domain_assignment.val,4,dci_size-pos,*dci_pdu); #endif // VRB to PRB mapping 1bit pos++; - dci_pdu_rel15->vrb_to_prb_mapping = (*dci_pdu>>(dci_size-pos))&1; + dci_pdu_rel15->vrb_to_prb_mapping.val = (*dci_pdu>>(dci_size-pos))&1; #ifdef DEBUG_EXTRACT_DCI - LOG_D(MAC,"VRB to PRB %d (%d bits)=> %d (0x%lx)\n",dci_pdu_rel15->vrb_to_prb_mapping,1,dci_size-pos,*dci_pdu); + LOG_D(MAC,"VRB to PRB %d (%d bits)=> %d (0x%lx)\n",dci_pdu_rel15->vrb_to_prb_mapping.val,1,dci_size-pos,*dci_pdu); #endif // MCS 5bit //bit over 32, so dci_pdu ++ @@ -2850,37 +3251,37 @@ void nr_extract_dci_info(NR_UE_MAC_INST_t *mac, // HARQ process number 4bit pos+=4; - dci_pdu_rel15->harq_process_number = (*dci_pdu>>(dci_size-pos))&0xf; + dci_pdu_rel15->harq_pid = (*dci_pdu>>(dci_size-pos))&0xf; #ifdef DEBUG_EXTRACT_DCI - LOG_D(MAC,"HARQ_PID %d (%d bits)=> %d (0x%lx)\n",dci_pdu_rel15->harq_process_number,4,dci_size-pos,*dci_pdu); + LOG_D(MAC,"HARQ_PID %d (%d bits)=> %d (0x%lx)\n",dci_pdu_rel15->harq_pid,4,dci_size-pos,*dci_pdu); #endif // Downlink assignment index 2bit pos+=2; - dci_pdu_rel15->dai = (*dci_pdu>>(dci_size-pos))&3; + dci_pdu_rel15->dai[0].val = (*dci_pdu>>(dci_size-pos))&3; #ifdef DEBUG_EXTRACT_DCI - LOG_D(MAC,"DAI %d (%d bits)=> %d (0x%lx)\n",dci_pdu_rel15->dai,2,dci_size-pos,*dci_pdu); + LOG_D(MAC,"DAI %d (%d bits)=> %d (0x%lx)\n",dci_pdu_rel15->dai[0].val,2,dci_size-pos,*dci_pdu); #endif // TPC command for scheduled PUCCH 2bit pos+=2; - dci_pdu_rel15->tpc_pucch = (*dci_pdu>>(dci_size-pos))&3; + dci_pdu_rel15->tpc = (*dci_pdu>>(dci_size-pos))&3; #ifdef DEBUG_EXTRACT_DCI - LOG_D(MAC,"TPC %d (%d bits)=> %d (0x%lx)\n",dci_pdu_rel15->tpc_pucch,2,dci_size-pos,*dci_pdu); + LOG_D(MAC,"TPC %d (%d bits)=> %d (0x%lx)\n",dci_pdu_rel15->tpc,2,dci_size-pos,*dci_pdu); #endif // PUCCH resource indicator 3bit pos+=3; - dci_pdu_rel15->pucch_resource_ind = (*dci_pdu>>(dci_size-pos))&0x7; + dci_pdu_rel15->pucch_resource_indicator = (*dci_pdu>>(dci_size-pos))&0x7; #ifdef DEBUG_EXTRACT_DCI - LOG_D(MAC,"PUCCH RI %d (%d bits)=> %d (0x%lx)\n",dci_pdu_rel15->pucch_resource_ind,3,dci_size-pos,*dci_pdu); + LOG_D(MAC,"PUCCH RI %d (%d bits)=> %d (0x%lx)\n",dci_pdu_rel15->pucch_resource_indicator,3,dci_size-pos,*dci_pdu); #endif // PDSCH-to-HARQ_feedback timing indicator 3bit pos+=3; - dci_pdu_rel15->pdsch_to_harq_feedback_time_ind = (*dci_pdu>>(dci_size-pos))&0x7; + dci_pdu_rel15->pdsch_to_harq_feedback_timing_indicator.val = (*dci_pdu>>(dci_size-pos))&0x7; #ifdef DEBUG_EXTRACT_DCI - LOG_D(MAC,"PDSCH to HARQ TI %d (%d bits)=> %d (0x%lx)\n",dci_pdu_rel15->pdsch_to_harq_feedback_time_ind,3,dci_size-pos,*dci_pdu); + LOG_D(MAC,"PDSCH to HARQ TI %d (%d bits)=> %d (0x%lx)\n",dci_pdu_rel15->pdsch_to_harq_feedback_timing_indicator.val,3,dci_size-pos,*dci_pdu); #endif } //end else @@ -2902,7 +3303,7 @@ void nr_extract_dci_info(NR_UE_MAC_INST_t *mac, for (int i=0; i<4; i++) *dci_pdu |= (((uint64_t)dci_pdu_rel15->time_domain_assignment>>(3-i))&1)<<(dci_size-pos++); // VRB to PRB mapping 1 bit - *dci_pdu |= ((uint64_t)dci_pdu_rel15->vrb_to_prb_mapping&1)<<(dci_size-pos++); + *dci_pdu |= ((uint64_t)dci_pdu_rel15->vrb_to_prb_mapping.val&1)<<(dci_size-pos++); // MCS 5 bit for (int i=0; i<5; i++) *dci_pdu |= (((uint64_t)dci_pdu_rel15->mcs>>(4-i))&1)<<(dci_size-pos++); @@ -2924,7 +3325,7 @@ void nr_extract_dci_info(NR_UE_MAC_INST_t *mac, for (int i=0; i<4; i++) *dci_pdu |= (((uint64_t)dci_pdu_rel15->time_domain_assignment>>(3-i))&1)<<(dci_size-pos++); // VRB to PRB mapping 1 bit - *dci_pdu |= ((uint64_t)dci_pdu_rel15->vrb_to_prb_mapping&1)<<(dci_size-pos++); + *dci_pdu |= ((uint64_t)dci_pdu_rel15->vrb_to_prb_mapping.val&1)<<(dci_size-pos++); // MCS 5bit //bit over 32, so dci_pdu ++ for (int i=0; i<5; i++) *dci_pdu |= (((uint64_t)dci_pdu_rel15->mcs>>(4-i))&1)<<(dci_size-pos++); @@ -2937,16 +3338,16 @@ void nr_extract_dci_info(NR_UE_MAC_INST_t *mac, case NR_RNTI_TC: // indicating a DL DCI format 1bit pos++; - dci_pdu_rel15->identifier_dci_formats = (*dci_pdu>>(dci_size-pos))&1; + dci_pdu_rel15->format_indicator = (*dci_pdu>>(dci_size-pos))&1; // Freq domain assignment 0-16 bit fsize = (int)ceil( log2( (N_RB*(N_RB+1))>>1 ) ); pos+=fsize; - dci_pdu_rel15->freq_dom_resource_assignment_DL = (*dci_pdu>>(dci_size-pos))&((1<frequency_domain_assignment.val = (*dci_pdu>>(dci_size-pos))&((1<time_dom_resource_assignment = (*dci_pdu>>(dci_size-pos))&0xf; + dci_pdu_rel15->time_domain_assignment.val = (*dci_pdu>>(dci_size-pos))&0xf; // VRB to PRB mapping 1 bit - dci_pdu_rel15->vrb_to_prb_mapping = (*dci_pdu>>(dci_size-pos))&1; + dci_pdu_rel15->vrb_to_prb_mapping.val = (*dci_pdu>>(dci_size-pos))&1; // MCS 5bit //bit over 32, so dci_pdu ++ pos+=5; dci_pdu_rel15->mcs = (*dci_pdu>>(dci_size-pos))&0x1f; @@ -2957,16 +3358,16 @@ void nr_extract_dci_info(NR_UE_MAC_INST_t *mac, dci_pdu_rel15->rv = (*dci_pdu>>(dci_size-pos))&3; // HARQ process number 4bit pos+=4; - dci_pdu_rel15->harq_process_number = (*dci_pdu>>(dci_size-pos))&0xf; + dci_pdu_rel15->harq_pid = (*dci_pdu>>(dci_size-pos))&0xf; // Downlink assignment index – 2 bits pos+=2; - dci_pdu_rel15->dai = (*dci_pdu>>(dci_size-pos))&3; + dci_pdu_rel15->dai[0].val = (*dci_pdu>>(dci_size-pos))&3; // TPC command for scheduled PUCCH – 2 bits pos+=2; - dci_pdu_rel15->tpc_pucch = (*dci_pdu>>(dci_size-pos))&3; + dci_pdu_rel15->tpc = (*dci_pdu>>(dci_size-pos))&3; // PDSCH-to-HARQ_feedback timing indicator – 3 bits pos+=3; - dci_pdu_rel15->pdsch_to_harq_feedback_time_ind = (*dci_pdu>>(dci_size-pos))&7; + dci_pdu_rel15->pdsch_to_harq_feedback_timing_indicator.val = (*dci_pdu>>(dci_size-pos))&7; break; } @@ -2977,17 +3378,17 @@ void nr_extract_dci_info(NR_UE_MAC_INST_t *mac, { case NR_RNTI_C: // indicating a DL DCI format 1bit - dci_pdu_rel15->identifier_dci_formats = (*dci_pdu>>(dci_size-pos))&1; + dci_pdu_rel15->format_indicator = (*dci_pdu>>(dci_size-pos))&1; // Freq domain assignment max 16 bit fsize = (int)ceil( log2( (N_RB_UL*(N_RB_UL+1))>>1 ) ); pos+=fsize; - dci_pdu_rel15->freq_dom_resource_assignment_UL = (*dci_pdu>>(dci_size-pos))&((1<frequency_domain_assignment.val = (*dci_pdu>>(dci_size-pos))&((1<time_dom_resource_assignment = (*dci_pdu>>(dci_size-pos))&0xf; + dci_pdu_rel15->time_domain_assignment.val = (*dci_pdu>>(dci_size-pos))&0xf; // Frequency hopping flag – 1 bit pos++; - dci_pdu_rel15->freq_hopping_flag= (*dci_pdu>>(dci_size-pos))&1; + dci_pdu_rel15->frequency_hopping_flag.val= (*dci_pdu>>(dci_size-pos))&1; // MCS 5 bit pos+=5; dci_pdu_rel15->mcs= (*dci_pdu>>(dci_size-pos))&0x1f; @@ -2999,10 +3400,10 @@ void nr_extract_dci_info(NR_UE_MAC_INST_t *mac, dci_pdu_rel15->rv= (*dci_pdu>>(dci_size-pos))&3; // HARQ process number 4bit pos+=4; - dci_pdu_rel15->harq_process_number = (*dci_pdu>>(dci_size-pos))&0xf; + dci_pdu_rel15->harq_pid = (*dci_pdu>>(dci_size-pos))&0xf; // TPC command for scheduled PUSCH – 2 bits pos+=2; - dci_pdu_rel15->tpc_pusch = (*dci_pdu>>(dci_size-pos))&3; + dci_pdu_rel15->tpc = (*dci_pdu>>(dci_size-pos))&3; // UL/SUL indicator – 1 bit /* commented for now (RK): need to get this from BWP descriptor if (cfg->pucch_config.pucch_GroupHopping.value) @@ -3049,6 +3450,90 @@ void nr_extract_dci_info(NR_UE_MAC_INST_t *mac, } break; + + case NR_DL_DCI_FORMAT_1_1: + // Format indicator + pos=1; + dci_pdu_rel15->format_indicator = (*dci_pdu>>(dci_size-pos))&1; + // Carrier indicator + pos+=dci_pdu_rel15->carrier_indicator.nbits; + dci_pdu_rel15->carrier_indicator.val = (*dci_pdu>>(dci_size-pos))&((1<carrier_indicator.nbits)-1); + // BWP Indicator + pos+=dci_pdu_rel15->bwp_indicator.nbits; + dci_pdu_rel15->bwp_indicator.val = (*dci_pdu>>(dci_size-pos))&((1<bwp_indicator.nbits)-1); + // Frequency domain resource assignment + pos+=dci_pdu_rel15->frequency_domain_assignment.nbits; + dci_pdu_rel15->frequency_domain_assignment.val = (*dci_pdu>>(dci_size-pos))&((1<frequency_domain_assignment.nbits)-1); + // Time domain resource assignment + pos+=dci_pdu_rel15->time_domain_assignment.nbits; + dci_pdu_rel15->time_domain_assignment.val = (*dci_pdu>>(dci_size-pos))&((1<time_domain_assignment.nbits)-1); + // VRB-to-PRB mapping + pos+=dci_pdu_rel15->vrb_to_prb_mapping.nbits; + dci_pdu_rel15->vrb_to_prb_mapping.val = (*dci_pdu>>(dci_size-pos))&((1<vrb_to_prb_mapping.nbits)-1); + // PRB bundling size indicator + pos+=dci_pdu_rel15->prb_bundling_size_indicator.nbits; + dci_pdu_rel15->prb_bundling_size_indicator.val = (*dci_pdu>>(dci_size-pos))&((1<prb_bundling_size_indicator.nbits)-1); + // Rate matching indicator + pos+=dci_pdu_rel15->rate_matching_indicator.nbits; + dci_pdu_rel15->rate_matching_indicator.val = (*dci_pdu>>(dci_size-pos))&((1<rate_matching_indicator.nbits)-1); + // ZP CSI-RS trigger + pos+=dci_pdu_rel15->zp_csi_rs_trigger.nbits; + dci_pdu_rel15->zp_csi_rs_trigger.val = (*dci_pdu>>(dci_size-pos))&((1<zp_csi_rs_trigger.nbits)-1); + //TB1 + // MCS 5bit + pos+=5; + dci_pdu_rel15->mcs = (*dci_pdu>>(dci_size-pos))&0x1f; + // New data indicator 1bit + pos+=1; + dci_pdu_rel15->ndi = (*dci_pdu>>(dci_size-pos))&0x1; + // Redundancy version 2bit + pos+=2; + dci_pdu_rel15->rv = (*dci_pdu>>(dci_size-pos))&0x3; + //TB2 + // MCS 5bit + pos+=dci_pdu_rel15->mcs2.nbits; + dci_pdu_rel15->mcs2.val = (*dci_pdu>>(dci_size-pos))&((1<mcs2.nbits)-1); + // New data indicator 1bit + pos+=dci_pdu_rel15->ndi2.nbits; + dci_pdu_rel15->ndi2.val = (*dci_pdu>>(dci_size-pos))&((1<ndi2.nbits)-1); + // Redundancy version 2bit + pos+=dci_pdu_rel15->rv2.nbits; + dci_pdu_rel15->rv2.val = (*dci_pdu>>(dci_size-pos))&((1<rv2.nbits)-1); + // HARQ process number 4bit + pos+=4; + dci_pdu_rel15->harq_pid = (*dci_pdu>>(dci_size-pos))&0xf; + // Downlink assignment index + pos+=dci_pdu_rel15->dai[0].nbits; + dci_pdu_rel15->dai[0].val = (*dci_pdu>>(dci_size-pos))&((1<dai[0].nbits)-1); + // TPC command for scheduled PUCCH 2bit + pos+=2; + dci_pdu_rel15->tpc = (*dci_pdu>>(dci_size-pos))&0x3; + // PUCCH resource indicator 3bit + pos+=3; + dci_pdu_rel15->pucch_resource_indicator = (*dci_pdu>>(dci_size-pos))&0x3; + // PDSCH-to-HARQ_feedback timing indicator + pos+=dci_pdu_rel15->pdsch_to_harq_feedback_timing_indicator.nbits; + dci_pdu_rel15->pdsch_to_harq_feedback_timing_indicator.val = (*dci_pdu>>(dci_size-pos))&((1<pdsch_to_harq_feedback_timing_indicator.nbits)-1); + // Antenna ports + pos+=dci_pdu_rel15->antenna_ports.nbits; + dci_pdu_rel15->antenna_ports.val = (*dci_pdu>>(dci_size-pos))&((1<antenna_ports.nbits)-1); + // TCI + pos+=dci_pdu_rel15->transmission_configuration_indication.nbits; + dci_pdu_rel15->transmission_configuration_indication.val = (*dci_pdu>>(dci_size-pos))&((1<transmission_configuration_indication.nbits)-1); + // SRS request + pos+=dci_pdu_rel15->srs_request.nbits; + dci_pdu_rel15->srs_request.val = (*dci_pdu>>(dci_size-pos))&((1<srs_request.nbits)-1); + // CBG transmission information + pos+=dci_pdu_rel15->cbgti.nbits; + dci_pdu_rel15->cbgti.val = (*dci_pdu>>(dci_size-pos))&((1<cbgti.nbits)-1); + // CBG flushing out information + pos+=dci_pdu_rel15->cbgfi.nbits; + dci_pdu_rel15->cbgfi.val = (*dci_pdu>>(dci_size-pos))&((1<cbgfi.nbits)-1); + // DMRS sequence init + pos+=1; + dci_pdu_rel15->dmrs_sequence_initialization.val = (*dci_pdu>>(dci_size-pos))&0x1; + break; + } } @@ -3067,6 +3552,7 @@ void nr_ue_process_mac_pdu(module_id_t module_idP, uint8_t *pdu_ptr = pduP, rx_lcid, done = 0; int pdu_len = mac_pdu_len; uint16_t mac_ce_len, mac_subheader_len, mac_sdu_len; + NR_UE_MAC_INST_t *mac = get_mac_inst(module_idP); //NR_UE_MAC_INST_t *UE_mac_inst = get_mac_inst(module_idP); //uint8_t scs = UE_mac_inst->mib->subCarrierSpacingCommon; @@ -3096,19 +3582,18 @@ void nr_ue_process_mac_pdu(module_id_t module_idP, // L: The Length field indicates the length of the corresponding MAC SDU or variable-sized MAC CE in bytes. There is one L field per MAC subheader except for subheaders corresponding to fixed-sized MAC CEs and padding. The size of the L field is indicated by the F field; // F: lenght of L is 0:8 or 1:16 bits wide // R: Reserved bit, set to zero. - while (!done && pdu_len > 0){ mac_ce_len = 0x0000; mac_subheader_len = 0x0001; // default to fixed-length subheader = 1-oct mac_sdu_len = 0x0000; rx_lcid = ((NR_MAC_SUBHEADER_FIXED *)pdu_ptr)->LCID; + //#ifdef DEBUG_HEADER_PARSING + LOG_D(MAC, "[UE] LCID %d, PDU length %d\n", ((NR_MAC_SUBHEADER_FIXED *)pdu_ptr)->LCID, pdu_len); + //#endif switch(rx_lcid){ // MAC CE - /*#ifdef DEBUG_HEADER_PARSING - LOG_D(MAC, "[UE] LCID %d, PDU length %d\n", ((NR_MAC_SUBHEADER_FIXED *)pdu_ptr)->LCID, pdu_len); - #endif*/ case DL_SCH_LCID_CCCH: // MSG4 RRC Connection Setup 38.331 // varialbe length @@ -3227,8 +3712,34 @@ void nr_ue_process_mac_pdu(module_id_t module_idP, break; case DL_SCH_LCID_CON_RES_ID: // 38.321 Ch6.1.3.3 + // WIP todo: handle CCCH_pdu mac_ce_len = 6; + + LOG_I(MAC, "[UE %d][RAPROC] Frame %d : received contention resolution msg: %x.%x.%x.%x.%x.%x, Terminating RA procedure\n", module_idP, frameP, pdu_ptr[0], pdu_ptr[1], pdu_ptr[2], pdu_ptr[3], pdu_ptr[4], pdu_ptr[5]); + if (mac->RA_active == 1) { + LOG_I(MAC, "[UE %d][RAPROC] Frame %d : Clearing RA_active flag\n", module_idP, frameP); + mac->RA_active = 0; + // // check if RA procedure has finished completely (no contention) + // tx_sdu = &mac->CCCH_pdu.payload[3]; + // //Note: 3 assumes sizeof(SCH_SUBHEADER_SHORT) + PADDING CE, which is when UL-Grant has TBS >= 9 (64 bits) + // // (other possibility is 1 for TBS=7 (SCH_SUBHEADER_FIXED), or 2 for TBS=8 (SCH_SUBHEADER_FIXED+PADDING or // SCH_SUBHEADER_SHORT) + // for (i = 0; i < 6; i++) + // if (tx_sdu[i] != payload_ptr[i]) { + // LOG_E(MAC, "[UE %d][RAPROC] Contention detected, RA failed\n", module_idP); + // nr_ra_failed(module_idP, CC_id, eNB_index); + // mac->RA_contention_resolution_timer_active = 0; + // return; + // } + LOG_I(MAC, "[UE %d][RAPROC] Frame %d : Cleared contention resolution timer. Set C-RNTI to TC-RNTI\n", + module_idP, + frameP); + mac->RA_contention_resolution_timer_active = 0; + nr_ra_succeeded(module_idP, CC_id, gNB_index); + mac->crnti = mac->t_crnti; + mac->t_crnti = 0; + mac->ra_state = RA_SUCCEEDED; + } break; case DL_SCH_LCID_PADDING: done = 1; @@ -3290,75 +3801,186 @@ void nr_ue_process_mac_pdu(module_id_t module_idP, } pdu_ptr += ( mac_subheader_len + mac_ce_len + mac_sdu_len ); pdu_len -= ( mac_subheader_len + mac_ce_len + mac_sdu_len ); - AssertFatal(pdu_len >= 0, "[MAC] nr_ue_process_mac_pdu, residual mac pdu length < 0!\n"); + if (pdu_len < 0) + LOG_E(MAC, "[MAC] nr_ue_process_mac_pdu, residual mac pdu length %d < 0!\n", pdu_len); } } -//--------------------------------------------------------------------------------- +//////////////////////////////////////////////////////// +/////* ULSCH MAC PDU generation (6.1.2 TS 38.321) *///// +//////////////////////////////////////////////////////// +uint16_t nr_generate_ulsch_pdu(uint8_t *sdus_payload, + uint8_t *pdu, + uint8_t num_sdus, + uint16_t *sdu_lengths, + uint8_t *sdu_lcids, + uint8_t power_headroom, + uint16_t crnti, + uint16_t truncated_bsr, + uint16_t short_bsr, + uint16_t long_bsr, + unsigned short post_padding, + uint16_t buflen) { -uint16_t -nr_generate_ulsch_pdu(uint8_t *mac_pdu, - uint8_t *sdus_payload, - uint8_t num_sdus, - uint16_t *sdu_lengths, - uint8_t *sdu_lcids, - uint16_t *crnti, - uint16_t buflen) { + NR_MAC_SUBHEADER_FIXED *mac_pdu_ptr = (NR_MAC_SUBHEADER_FIXED *) pdu; + unsigned char last_size = 0, i, mac_header_control_elements[16], *ce_ptr, bsr = 0; + int mac_ce_size; + uint16_t offset = 0; - NR_MAC_SUBHEADER_FIXED *mac_pdu_ptr = (NR_MAC_SUBHEADER_FIXED *) mac_pdu; - unsigned char * ulsch_buffer_ptr = sdus_payload; - uint8_t last_size=0; - uint16_t sdu_length_total=0; - int i; - int offset=0; + LOG_D(MAC, "[UE] Generating ULSCH PDU : num_sdus %d\n", num_sdus); - // 2) Generation of ULSCH MAC SDU subheaders - for (i = 0; i < num_sdus; i++) { - LOG_D(MAC, "[gNB] Generate ULSCH header num sdu %d len sdu %d\n", num_sdus, sdu_lengths[i]); + #ifdef DEBUG_HEADER_PARSING - if (sdu_lengths[i] < 128) { - ((NR_MAC_SUBHEADER_SHORT *) mac_pdu_ptr)->R = 0; - ((NR_MAC_SUBHEADER_SHORT *) mac_pdu_ptr)->F = 0; - ((NR_MAC_SUBHEADER_SHORT *) mac_pdu_ptr)->LCID = sdu_lcids[i]; - ((NR_MAC_SUBHEADER_SHORT *) mac_pdu_ptr)->L = (unsigned char) sdu_lengths[i]; - last_size = 2; - } else { - ((NR_MAC_SUBHEADER_LONG *) mac_pdu_ptr)->R = 0; - ((NR_MAC_SUBHEADER_LONG *) mac_pdu_ptr)->F = 1; - ((NR_MAC_SUBHEADER_LONG *) mac_pdu_ptr)->LCID = sdu_lcids[i]; - ((NR_MAC_SUBHEADER_LONG *) mac_pdu_ptr)->L1 = ((unsigned short) sdu_lengths[i] >> 8) & 0x7f; - ((NR_MAC_SUBHEADER_LONG *) mac_pdu_ptr)->L2 = (unsigned short) sdu_lengths[i] & 0xff; - last_size = 3; - } + for (i = 0; i < num_sdus; i++) + LOG_D(MAC, "[UE] MAC subPDU %d (lcid %d length %d bytes \n", i, sdu_lcids[i], sdu_lengths[i]); - mac_pdu_ptr += last_size; + #endif - // 3) cycle through SDUs, compute each relevant and place dlsch_buffer in - memcpy((void *) mac_pdu_ptr, (void *) ulsch_buffer_ptr, sdu_lengths[i]); - ulsch_buffer_ptr+= sdu_lengths[i]; - sdu_length_total+= sdu_lengths[i]; - mac_pdu_ptr += sdu_lengths[i]; - } + // Generating UL MAC subPDUs including MAC SDU and subheader - offset = ((unsigned char *) mac_pdu_ptr - mac_pdu); + for (i = 0; i < num_sdus; i++) { + LOG_D(MAC, "[UE] Generating UL MAC subPDUs for SDU with lenght %d ( num_sdus %d )\n", sdu_lengths[i], num_sdus); - // 4) Compute final offset for padding - uint16_t padding_bytes = buflen - offset; - LOG_D(MAC, "Number of padding bytes: %d \n", padding_bytes); - if (padding_bytes > 0) { - ((NR_MAC_SUBHEADER_FIXED *) mac_pdu_ptr)->R = 0; - ((NR_MAC_SUBHEADER_FIXED *) mac_pdu_ptr)->LCID = UL_SCH_LCID_PADDING; - mac_pdu_ptr++; + if (sdu_lcids[i] != UL_SCH_LCID_CCCH){ + if (sdu_lengths[i] < 128) { + ((NR_MAC_SUBHEADER_SHORT *) mac_pdu_ptr)->R = 0; + ((NR_MAC_SUBHEADER_SHORT *) mac_pdu_ptr)->F = 0; + ((NR_MAC_SUBHEADER_SHORT *) mac_pdu_ptr)->LCID = sdu_lcids[i]; + ((NR_MAC_SUBHEADER_SHORT *) mac_pdu_ptr)->L = (unsigned char) sdu_lengths[i]; + last_size = 2; + } else { + ((NR_MAC_SUBHEADER_LONG *) mac_pdu_ptr)->R = 0; + ((NR_MAC_SUBHEADER_LONG *) mac_pdu_ptr)->F = 1; + ((NR_MAC_SUBHEADER_LONG *) mac_pdu_ptr)->LCID = sdu_lcids[i]; + ((NR_MAC_SUBHEADER_LONG *) mac_pdu_ptr)->L1 = ((unsigned short) sdu_lengths[i] >> 8) & 0x7f; + ((NR_MAC_SUBHEADER_LONG *) mac_pdu_ptr)->L2 = (unsigned short) sdu_lengths[i] & 0xff; + last_size = 3; + } + } else { // UL CCCH SDU + mac_pdu_ptr->R = 0; + mac_pdu_ptr->LCID = sdu_lcids[i]; + } - } else { - // no MAC subPDU with padding - } + mac_pdu_ptr += last_size; + + // cycle through SDUs, compute each relevant and place ulsch_buffer in + memcpy((void *) mac_pdu_ptr, (void *) sdus_payload, sdu_lengths[i]); + sdus_payload += sdu_lengths[i]; + mac_pdu_ptr += sdu_lengths[i]; + } + + // Generating UL MAC subPDUs including MAC CEs (MAC CE and subheader) + + ce_ptr = &mac_header_control_elements[0]; + + if (power_headroom) { + // MAC CE fixed subheader + mac_pdu_ptr->R = 0; + mac_pdu_ptr->LCID = UL_SCH_LCID_SINGLE_ENTRY_PHR; + mac_pdu_ptr++; + + // PHR MAC CE (1 octet) + ((NR_SINGLE_ENTRY_PHR_MAC_CE *) ce_ptr)->PH = power_headroom; + ((NR_SINGLE_ENTRY_PHR_MAC_CE *) ce_ptr)->R1 = 0; + ((NR_SINGLE_ENTRY_PHR_MAC_CE *) ce_ptr)->PCMAX = 0; // todo + ((NR_SINGLE_ENTRY_PHR_MAC_CE *) ce_ptr)->R2 = 0; + + mac_ce_size = sizeof(NR_SINGLE_ENTRY_PHR_MAC_CE); + + // Copying bytes for PHR MAC CEs to the mac pdu pointer + memcpy((void *) mac_pdu_ptr, (void *) ce_ptr, mac_ce_size); + ce_ptr += mac_ce_size; + mac_pdu_ptr += (unsigned char) mac_ce_size; + } + + if (crnti) { + // MAC CE fixed subheader + mac_pdu_ptr->R = 0; + mac_pdu_ptr->LCID = CRNTI; + mac_pdu_ptr++; + + // C-RNTI MAC CE (2 octets) + * (uint16_t *) ce_ptr = crnti; + mac_ce_size = sizeof(uint16_t); + + // Copying bytes for CRNTI MAC CE to the mac pdu pointer + memcpy((void *) mac_pdu_ptr, (void *) ce_ptr, mac_ce_size); + ce_ptr += mac_ce_size; + mac_pdu_ptr += (unsigned char) mac_ce_size; + } + + if (truncated_bsr) { + // MAC CE fixed subheader + mac_pdu_ptr->R = 0; + mac_pdu_ptr->LCID = UL_SCH_LCID_S_TRUNCATED_BSR; + mac_pdu_ptr++; + + // Short truncated BSR MAC CE (1 octet) + ((NR_BSR_SHORT_TRUNCATED *) ce_ptr)-> Buffer_size = truncated_bsr; + ((NR_BSR_SHORT_TRUNCATED *) ce_ptr)-> LcgID = 0; // todo + mac_ce_size = sizeof(NR_BSR_SHORT_TRUNCATED); + + bsr = 1 ; + } else if (short_bsr) { + // MAC CE fixed subheader + mac_pdu_ptr->R = 0; + mac_pdu_ptr->LCID = UL_SCH_LCID_S_BSR; + mac_pdu_ptr++; + + // Short truncated BSR MAC CE (1 octet) + ((NR_BSR_SHORT *) ce_ptr)->Buffer_size = short_bsr; + ((NR_BSR_SHORT *) ce_ptr)->LcgID = 0; // todo + mac_ce_size = sizeof(NR_BSR_SHORT); + + bsr = 1 ; + } else if (long_bsr) { + // MAC CE variable subheader + // todo ch 6.1.3.1. TS 38.321 + // ((NR_MAC_SUBHEADER_SHORT *) mac_pdu_ptr)->R = 0; + // ((NR_MAC_SUBHEADER_SHORT *) mac_pdu_ptr)->F = 0; + // ((NR_MAC_SUBHEADER_SHORT *) mac_pdu_ptr)->LCID = UL_SCH_LCID_L_BSR; + // ((NR_MAC_SUBHEADER_SHORT *) mac_pdu_ptr)->L = 0; + // last_size = 2; + // mac_pdu_ptr += last_size; + + // Short truncated BSR MAC CE (1 octet) + // ((NR_BSR_LONG *) ce_ptr)->Buffer_size0 = short_bsr; + // ((NR_BSR_LONG *) ce_ptr)->LCGID0 = 0; + // mac_ce_size = sizeof(NR_BSR_LONG); // size is variable + } + + if (bsr){ + // Copying bytes for BSR MAC CE to the mac pdu pointer + memcpy((void *) mac_pdu_ptr, (void *) ce_ptr, mac_ce_size); + ce_ptr += mac_ce_size; + mac_pdu_ptr += (unsigned char) mac_ce_size; + } + + // compute offset before adding padding (if necessary) + offset = ((unsigned char *) mac_pdu_ptr - pdu); + uint16_t padding_bytes = 0; + + if(buflen > 0) // If the buflen is provided + padding_bytes = buflen - offset; + + // Compute final offset for padding + if (post_padding > 0 || padding_bytes>0) { + ((NR_MAC_SUBHEADER_FIXED *) mac_pdu_ptr)->R = 0; + ((NR_MAC_SUBHEADER_FIXED *) mac_pdu_ptr)->LCID = UL_SCH_LCID_PADDING; + mac_pdu_ptr++; + } else { + // no MAC subPDU with padding + } + + // compute final offset + offset = ((unsigned char *) mac_pdu_ptr - pdu); + + //printf("Offset %d \n", ((unsigned char *) mac_pdu_ptr - pdu)); return offset; } - uint8_t nr_ue_get_sdu(module_id_t module_idP, int CC_id, frame_t frameP, sub_frame_t subframe, uint8_t eNB_index, @@ -3431,13 +4053,6 @@ nr_ue_get_sdu(module_id_t module_idP, int CC_id, frame_t frameP, sdu_length_total += sdu_lengths[num_sdus]; sdu_lcids[num_sdus] = lcid; - - //Update total MAC Header size for RLC PDUs - /*if(sdu_lengths[num_sdus]<128) - total_rlc_pdu_header_len += 2; - else - total_rlc_pdu_header_len += 3;*/ - total_rlc_pdu_header_len += MAX_RLC_SDU_SUBHEADER_SIZE; //rlc_pdu_header_len_last; //Update number of SDU @@ -3462,13 +4077,18 @@ nr_ue_get_sdu(module_id_t module_idP, int CC_id, frame_t frameP, // Generate ULSCH PDU if (num_sdus>0) { - payload_offset = nr_generate_ulsch_pdu(ulsch_buffer, // mac header - ulsch_sdus, + payload_offset = nr_generate_ulsch_pdu(ulsch_sdus, + ulsch_buffer, // mac header num_sdus, // num sdus sdu_lengths, // sdu length sdu_lcids, // sdu lcid - NULL, // crnti - buflen); // long_bsr + 0, // power_headroom + 0, // crnti + 0, // truncated_bsr + 0, // short_bsr + 0, // long_bsr + 0, // post_padding + buflen); // TBS in bytes } else return 0; diff --git a/openair2/LAYER2/NR_MAC_UE/rar_tools_nrUE.c b/openair2/LAYER2/NR_MAC_UE/rar_tools_nrUE.c new file mode 100644 index 0000000000..8d52db6747 --- /dev/null +++ b/openair2/LAYER2/NR_MAC_UE/rar_tools_nrUE.c @@ -0,0 +1,212 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file rar_tools_nrUE.c + * \brief RA tools for NR UE + * \author Guido Casati + * \date 2019 + * \version 1.0 + * @ingroup _mac + + */ + +/* Sim */ +#include "SIMULATION/TOOLS/sim.h" + +/* Utils */ +#include "common/utils/LOG/log.h" +#include "OCG.h" +#include "OCG_extern.h" +#include "UTIL/OPT/opt.h" + +/* Common */ +#include "common/ran_context.h" + +/* MAC */ +#include "NR_MAC_UE/mac.h" +#include "NR_MAC_UE/mac_proto.h" +#include "NR_MAC_COMMON/nr_mac_extern.h" +#include + +#define DEBUG_RAR + +// table 7.2-1 TS 38.321 +uint16_t table_7_2_1[16] = { + 5, // row index 0 + 10, // row index 1 + 20, // row index 2 + 30, // row index 3 + 40, // row index 4 + 60, // row index 5 + 80, // row index 6 + 120, // row index 7 + 160, // row index 8 + 240, // row index 9 + 320, // row index 10 + 480, // row index 11 + 960, // row index 12 + 1920, // row index 13 +}; + +///////////////////////////////////// +// Random Access Response PDU // +// TS 38.213 ch 8.2 // +// TS 38.321 ch 6.2.3 // +///////////////////////////////////// +//| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |// bit-wise +//| E | T | R A P I D |// +//| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |// +//| R | T A |// +//| T A | UL grant |// +//| UL grant |// +//| UL grant |// +//| UL grant |// +//| T C - R N T I |// +//| T C - R N T I |// +///////////////////////////////////// +// UL grant (27 bits) // +///////////////////////////////////// +//| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |// bit-wise +//|-------------------|FHF|F_alloc|// +//| Freq allocation |// +//| F_alloc |Time allocation|// +//| MCS | TPC |CSI|// +///////////////////////////////////// +// WIP todo: +// - apply UL grant freq alloc & time alloc as per 8.2 TS 38.213 +// - apply tpc command, csi req, mcs +uint16_t nr_ue_process_rar(module_id_t mod_id, + int CC_id, + frame_t frameP, + uint8_t * dlsch_buffer, + rnti_t * t_crnti, + uint8_t preamble_index, + uint8_t * selected_rar_buffer){ + + NR_UE_MAC_INST_t *ue_mac = get_mac_inst(mod_id); + NR_RA_HEADER_RAPID *rarh = (NR_RA_HEADER_RAPID *) dlsch_buffer; // RAR subheader pointer + NR_MAC_RAR *rar = (NR_MAC_RAR *) (dlsch_buffer + 1); // RAR subPDU pointer + uint8_t n_subPDUs = 0; // number of RAR payloads + uint8_t n_subheaders = 0; // number of MAC RAR subheaders + //uint8_t best_rx_rapid = -1; // the closest RAPID receive from all RARs + //unsigned char freq_hopping, msg3_t_alloc, mcs, tpc_command, csi_req; // WIP + //uint16_t ta_command = 0, msg3_f_alloc, bwp_size; // WIP + uint16_t ta_command = 0; + //int f_alloc, mask; // WIP + + AssertFatal(CC_id == 0, "RAR reception on secondary CCs is not supported yet\n"); + + while (1) { + n_subheaders++; + if (rarh->T == 1) { + n_subPDUs++; + LOG_D(MAC, "[UE %d][RAPROC] Got RAPID RAR subPDU\n", mod_id); + } else { + n_subPDUs++; + ue_mac->RA_backoff_indicator = table_7_2_1[((NR_RA_HEADER_BI *)rarh)->BI]; + ue_mac->RA_BI_found = 1; + LOG_D(MAC, "[UE %d][RAPROC] Got BI RAR subPDU %d\n", mod_id, ue_mac->RA_backoff_indicator); + } + if (rarh->RAPID == preamble_index) { + LOG_D(PHY, "[UE %d][RAPROC] Found RAR with the intended RAPID %d\n", mod_id, rarh->RAPID); + rar = (NR_MAC_RAR *) (dlsch_buffer + n_subheaders + (n_subPDUs - 1) * sizeof(NR_MAC_RAR)); + ue_mac->RA_RAPID_found = 1; + break; + } + if (rarh->E == 0) { + LOG_I(PHY, "No RAR found with the intended RAPID. \n"); + break; + } else { + rarh += sizeof(NR_MAC_RAR) + 1; + } + }; + + LOG_D(MAC, "number of RAR subheader %d; number of RAR pyloads %d\n", n_subheaders, n_subPDUs); + + // LOG_I(MAC, "[UE %d][RAPROC] Frame %d Received RAR (%02x|%02x.%02x.%02x.%02x.%02x.%02x) for preamble %d/%d\n", + // mod_id, frameP, *(uint8_t *) rarh, rar[0], rar[1], rar[2], rar[3], rar[4], rar[5], rarh->RAPID, preamble_index); + + #if 0 // TbD WIP Msg3 development ongoing + if (ue_mac->RA_RAPID_found) { + // TC-RNTI + *t_crnti = rar->TCRNTI_2 + (rar->TCRNTI_1 << 8); + ue_mac->t_crnti = *t_crnti; + ue_mac->rnti_type = NR_RNTI_TC; + // TA command + ta_command = rar->TA2 + (rar->TA1 << 5); + // CSI + csi_req = (unsigned char) (rar->UL_GRANT_4 & 0x01); + // TPC + tpc_command = (unsigned char) ((rar->UL_GRANT_4 >> 1) & 0x07); + switch (tpc_command){ + case 0: + ue_mac->Msg3_TPC = -6; + break; + case 1: + ue_mac->Msg3_TPC = -4; + break; + case 2: + ue_mac->Msg3_TPC = -2; + break; + case 3: + ue_mac->Msg3_TPC = 0; + break; + case 4: + ue_mac->Msg3_TPC = 2; + break; + case 5: + ue_mac->Msg3_TPC = 4; + break; + case 6: + ue_mac->Msg3_TPC = 6; + break; + case 7: + ue_mac->Msg3_TPC = 8; + break; + } + //MCS + mcs = (unsigned char) (rar->UL_GRANT_4 >> 4); + // time and frequency alloc + bwp_size = NRRIV2BW(ue_mac->ULbwp[0]->bwp_Common->genericParameters.locationAndBandwidth,275); + msg3_t_alloc = (unsigned char) (rar->UL_GRANT_3 & 0x07); + msg3_f_alloc = (uint16_t) ((rar->UL_GRANT_3 >> 4) | (rar->UL_GRANT_2 << 4) | ((rar->UL_GRANT_1 & 0x03) << 12)); + + if (bwp_size < 180) + mask = (1 << ((int) ceil(log2((bwp_size*(bwp_size+1))>>1)))) - 1; + else + mask = (1 << (28 - (int)(ceil(log2((bwp_size*(bwp_size+1))>>1))))) - 1; + + f_alloc = msg3_f_alloc & mask; + + // frequency hopping flag + freq_hopping = (unsigned char) (rar->UL_GRANT_1 >> 2); + } else { + ue_mac->t_crnti = 0; + ta_command = (0xffff); + } + #endif + + // move the selected RAR to the front of the RA_PDSCH buffer + memcpy((void *) (selected_rar_buffer + 0), (void *) rarh, 1); + memcpy((void *) (selected_rar_buffer + 1), (void *) rar, sizeof(NR_MAC_RAR)); + + return ta_command; +} diff --git a/openair2/LAYER2/NR_MAC_gNB/config.c b/openair2/LAYER2/NR_MAC_gNB/config.c index f339f4565b..54b9d93f96 100644 --- a/openair2/LAYER2/NR_MAC_gNB/config.c +++ b/openair2/LAYER2/NR_MAC_gNB/config.c @@ -44,7 +44,7 @@ #include "SCHED_NR/phy_frame_config_nr.h" #include "NR_MIB.h" -#include "nr_mac_common.h" +#include "LAYER2/NR_MAC_COMMON/nr_mac_common.h" extern RAN_CONTEXT_t RC; //extern int l2_init_gNB(void); @@ -121,13 +121,23 @@ void config_common(int Mod_idP, int pdsch_AntennaPorts, NR_ServingCellConfigComm } } + lte_frame_type_t frame_type; + uint16_t band; + int32_t offset; + + get_band((cfg->carrier_config.dl_frequency.value)*1000, + &band, + &offset, + &frame_type); + + RC.nrmac[Mod_idP]->common_channels[0].frame_type = frame_type; // Cell configuration cfg->cell_config.phy_cell_id.value = *scc->physCellId; cfg->cell_config.phy_cell_id.tl.tag = NFAPI_NR_CONFIG_PHY_CELL_ID_TAG; cfg->num_tlv++; - cfg->cell_config.frame_duplex_type.value = 1; + cfg->cell_config.frame_duplex_type.value = frame_type; cfg->cell_config.frame_duplex_type.tl.tag = NFAPI_NR_CONFIG_FRAME_DUPLEX_TYPE_TAG; cfg->num_tlv++; @@ -143,7 +153,11 @@ void config_common(int Mod_idP, int pdsch_AntennaPorts, NR_ServingCellConfigComm // PRACH configuration - cfg->prach_config.prach_sequence_length.value = scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->prach_RootSequenceIndex.present; + uint8_t nb_preambles = 64; + if(scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->totalNumberOfRA_Preambles != NULL) + nb_preambles = *scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->totalNumberOfRA_Preambles; + + cfg->prach_config.prach_sequence_length.value = scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->prach_RootSequenceIndex.present-1; cfg->prach_config.prach_sequence_length.tl.tag = NFAPI_NR_CONFIG_PRACH_SEQUENCE_LENGTH_TAG; cfg->num_tlv++; @@ -153,7 +167,6 @@ void config_common(int Mod_idP, int pdsch_AntennaPorts, NR_ServingCellConfigComm cfg->prach_config.prach_sub_c_spacing.value = scc->downlinkConfigCommon->frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing; cfg->prach_config.prach_sub_c_spacing.tl.tag = NFAPI_NR_CONFIG_PRACH_SUB_C_SPACING_TAG; cfg->num_tlv++; - cfg->prach_config.restricted_set_config.value = scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->restrictedSetConfig; cfg->prach_config.restricted_set_config.tl.tag = NFAPI_NR_CONFIG_RESTRICTED_SET_CONFIG_TAG; cfg->num_tlv++; @@ -192,13 +205,17 @@ void config_common(int Mod_idP, int pdsch_AntennaPorts, NR_ServingCellConfigComm cfg->prach_config.num_prach_fd_occasions_list[i].prach_zero_corr_conf.value = scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->rach_ConfigGeneric.zeroCorrelationZoneConfig; cfg->prach_config.num_prach_fd_occasions_list[i].prach_zero_corr_conf.tl.tag = NFAPI_NR_CONFIG_PRACH_ZERO_CORR_CONF_TAG; cfg->num_tlv++; + cfg->prach_config.num_prach_fd_occasions_list[i].num_root_sequences.value = compute_nr_root_seq(scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup, + nb_preambles, frame_type); + cfg->prach_config.num_prach_fd_occasions_list[i].num_root_sequences.tl.tag = NFAPI_NR_CONFIG_NUM_ROOT_SEQUENCES_TAG; + cfg->num_tlv++; //cfg->prach_config.num_prach_fd_occasions_list[i].num_unused_root_sequences.value = ??? } - cfg->prach_config.ssb_per_rach.value = scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->ssb_perRACH_OccasionAndCB_PreamblesPerSSB->present; + cfg->prach_config.ssb_per_rach.value = scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->ssb_perRACH_OccasionAndCB_PreamblesPerSSB->present-1; cfg->prach_config.ssb_per_rach.tl.tag = NFAPI_NR_CONFIG_SSB_PER_RACH_TAG; cfg->num_tlv++; - + // SSB Table Configuration int scs_scaling = 1<<(cfg->ssb_config.scs_common.value); if (scc->downlinkConfigCommon->frequencyInfoDL->absoluteFrequencyPointA < 600000) @@ -275,8 +292,7 @@ void config_common(int Mod_idP, int pdsch_AntennaPorts, NR_ServingCellConfigComm scc->tdd_UL_DL_ConfigurationCommon->pattern1.nrofDownlinkSlots, scc->tdd_UL_DL_ConfigurationCommon->pattern1.nrofDownlinkSymbols, scc->tdd_UL_DL_ConfigurationCommon->pattern1.nrofUplinkSlots, - scc->tdd_UL_DL_ConfigurationCommon->pattern1.nrofUplinkSymbols - ); + scc->tdd_UL_DL_ConfigurationCommon->pattern1.nrofUplinkSymbols); if (return_tdd !=0){ LOG_E(PHY,"TDD configuration can not be done\n"); @@ -284,72 +300,18 @@ void config_common(int Mod_idP, int pdsch_AntennaPorts, NR_ServingCellConfigComm else LOG_I(PHY,"TDD has been properly configurated\n"); } -/* - // PDCCH-ConfigCommon - cfg->pdcch_config.controlResourceSetZero.value = scc->downlinkConfigCommon->initialDownlinkBWP->pdcch_ConfigCommon->choice.setup->controlResourceSetZero; - cfg->pdcch_config.searchSpaceZero.value = scc->downlinkConfigCommon->initialDownlinkBWP->pdcch_ConfigCommon->choice.setup->searchSpaceZero; - - // PDSCH-ConfigCommon - cfg->pdsch_config.num_PDSCHTimeDomainResourceAllocations.value = scc->downlinkConfigCommon->initialDownlinkBWP->pdsch_ConfigCommon->choice.setup->pdsch_TimeDomainAllocationList->list.count; - cfg->pdsch_config.dmrs_TypeA_Position.value = scc->dmrs_TypeA_Position; - AssertFatal(cfg->pdsch_config.num_PDSCHTimeDomainResourceAllocations.value<=NFAPI_NR_PDSCH_CONFIG_MAXALLOCATIONS,"illegal TimeDomainAllocation count %d\n",cfg->pdsch_config.num_PDSCHTimeDomainResourceAllocations.value); - for (int i=0;ipdsch_config.num_PDSCHTimeDomainResourceAllocations.value;i++) { - cfg->pdsch_config.PDSCHTimeDomainResourceAllocation_k0[i].value=*scc->downlinkConfigCommon->initialDownlinkBWP->pdsch_ConfigCommon->choice.setup->pdsch_TimeDomainAllocationList->list.array[i]->k0; - cfg->pdsch_config.PDSCHTimeDomainResourceAllocation_mappingType[i].value=scc->downlinkConfigCommon->initialDownlinkBWP->pdsch_ConfigCommon->choice.setup->pdsch_TimeDomainAllocationList->list.array[i]->mappingType; - cfg->pdsch_config.PDSCHTimeDomainResourceAllocation_startSymbolAndLength[i].value=scc->downlinkConfigCommon->initialDownlinkBWP->pdsch_ConfigCommon->choice.setup->pdsch_TimeDomainAllocationList->list.array[i]->startSymbolAndLength; - } - - // PUSCH-ConfigCommon - cfg->pusch_config.num_PUSCHTimeDomainResourceAllocations.value = scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.count; - cfg->pusch_config.dmrs_TypeA_Position.value = scc->dmrs_TypeA_Position+2; - AssertFatal(cfg->pusch_config.num_PUSCHTimeDomainResourceAllocations.value<=NFAPI_NR_PUSCH_CONFIG_MAXALLOCATIONS,"illegal TimeDomainAllocation count %d\n",cfg->pusch_config.num_PUSCHTimeDomainResourceAllocations.value); - for (int i=0;ipusch_config.num_PUSCHTimeDomainResourceAllocations.value;i++) { - cfg->pusch_config.PUSCHTimeDomainResourceAllocation_k2[i].value=*scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[0]->k2; - }*/ - - - - cfg->carrier_config.frequency_shift_7p5khz.tl.tag = NFAPI_NR_CONFIG_FREQUENCY_SHIFT_7P5KHZ_TAG; - cfg->num_tlv++; - - cfg->measurement_config.rssi_measurement.tl.tag = NFAPI_NR_CONFIG_RSSI_MEASUREMENT_TAG; - cfg->num_tlv++; - - cfg->prach_config.prach_multiple_carriers_in_a_band.tl.tag = NFAPI_NR_CONFIG_PRACH_MULTIPLE_CARRIERS_IN_A_BAND_TAG; - cfg->num_tlv++; - - cfg->ssb_config.bch_payload.tl.tag = NFAPI_NR_CONFIG_BCH_PAYLOAD_TAG; - cfg->num_tlv++; - - cfg->ssb_table.beta_pss.tl.tag = NFAPI_NR_CONFIG_BETA_PSS_TAG; - cfg->num_tlv++; - - cfg->ssb_table.MIB.tl.tag = NFAPI_NR_CONFIG_MIB_TAG; - cfg->num_tlv++; - - cfg->ssb_table.multiple_cells_ss_pbch_in_a_carrier.tl.tag = NFAPI_NR_CONFIG_MULTIPLE_CELLS_SS_PBCH_IN_A_CARRIER_TAG; - cfg->num_tlv++; - - cfg->ssb_table.ss_pbch_multiple_carriers_in_a_band.tl.tag = NFAPI_NR_CONFIG_SS_PBCH_MULTIPLE_CARRIERS_IN_A_BAND_TAG; - cfg->num_tlv++; - - if(cfg->ssb_table.ssb_beam_id_list!=NULL) - { - cfg->ssb_table.ssb_beam_id_list[0].beam_id->tl.tag = NFAPI_NR_CONFIG_BEAM_ID_TAG; - cfg->num_tlv++; - } - } int rrc_mac_config_req_gNB(module_id_t Mod_idP, int ssb_SubcarrierOffset, int pdsch_AntennaPorts, + int pusch_tgt_snrx10, + int pucch_tgt_snrx10, NR_ServingCellConfigCommon_t *scc, int add_ue, uint32_t rnti, - NR_CellGroupConfig_t *secondaryCellGroup - ){ + NR_CellGroupConfig_t *secondaryCellGroup){ if (scc != NULL ) { AssertFatal((scc->ssb_PositionsInBurst->present > 0) && (scc->ssb_PositionsInBurst->present < 4), "SSB Bitmap type %d is not valid\n",scc->ssb_PositionsInBurst->present); @@ -370,7 +332,8 @@ int rrc_mac_config_req_gNB(module_id_t Mod_idP, } } - + RC.nrmac[Mod_idP]->pusch_target_snrx10 = pusch_tgt_snrx10; + RC.nrmac[Mod_idP]->pucch_target_snrx10 = pucch_tgt_snrx10; NR_PHY_Config_t phycfg; phycfg.Mod_id = Mod_idP; phycfg.CC_id = 0; @@ -390,6 +353,12 @@ int rrc_mac_config_req_gNB(module_id_t Mod_idP, if (add_ue == 1) { UE_id = add_new_nr_ue(Mod_idP,rnti); UE_list->secondaryCellGroup[UE_id] = secondaryCellGroup; + uint8_t num_preamble = secondaryCellGroup->spCellConfig->reconfigurationWithSync->rach_ConfigDedicated->choice.uplink->cfra->resources.choice.ssb->ssb_ResourceList.list.count; + UE_list->preambles[UE_id].num_preambles = num_preamble; + UE_list->preambles[UE_id].preamble_list = (uint8_t *) malloc(num_preamble*sizeof(uint8_t)); + for (int i=0; ipreambles[UE_id].preamble_list[i] = secondaryCellGroup->spCellConfig->reconfigurationWithSync->rach_ConfigDedicated->choice.uplink->cfra->resources.choice.ssb->ssb_ResourceList.list.array[i]->ra_PreambleIndex; + } LOG_I(PHY,"Added new UE_id %d/%x with initial secondaryCellGroup\n",UE_id,rnti); } else { // secondaryCellGroup has been updated diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c index a0e4ae9bd4..6775426cef 100644 --- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c +++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c @@ -33,9 +33,9 @@ #include "assertions.h" #include "LAYER2/MAC/mac.h" -#include "LAYER2/NR_MAC_COMMON/nr_mac_extern.h" +#include "NR_MAC_COMMON/nr_mac_extern.h" #include "LAYER2/MAC/mac_proto.h" -#include "LAYER2/NR_MAC_gNB/mac_proto.h" +#include "NR_MAC_gNB/mac_proto.h" #include "common/utils/LOG/log.h" #include "common/utils/LOG/vcd_signal_dumper.h" @@ -59,9 +59,34 @@ #include "executables/softmodem-common.h" +const uint8_t slots_per_frame[5] = {10, 20, 40, 80, 160}; uint16_t nr_pdcch_order_table[6] = { 31, 31, 511, 2047, 2047, 8191 }; -uint8_t nr_slots_per_frame[5] = {10, 20, 40, 80, 160}; +void clear_mac_stats(gNB_MAC_INST *gNB) { + memset((void*)gNB->UE_list.mac_stats,0,MAX_MOBILES_PER_GNB*sizeof(NR_mac_stats_t)); +} + +void dump_mac_stats(gNB_MAC_INST *gNB) { + + NR_UE_list_t *UE_list = &gNB->UE_list; + NR_mac_stats_t *stats; + int lc_id; + + for (int UE_id=0;UE_idactive[UE_id] == TRUE) { + LOG_I(MAC,"UE %x\n",UE_list->rnti[UE_id]); + stats = &UE_list->mac_stats[UE_id]; + LOG_I(MAC,"dlsch_rounds %d/%d/%d/%d, dlsch_errors %d\n",stats->dlsch_rounds[0],stats->dlsch_rounds[1],stats->dlsch_rounds[2],stats->dlsch_rounds[3],stats->dlsch_errors); + LOG_I(MAC,"dlsch_total_bytes %d\n",stats->dlsch_total_bytes); + LOG_I(MAC,"ulsch_rounds %d/%d/%d/%d, ulsch_errors %d\n",stats->ulsch_rounds[0],stats->ulsch_rounds[1],stats->ulsch_rounds[2],stats->ulsch_rounds[3],stats->ulsch_errors); + LOG_I(MAC,"ulsch_total_bytes_scheduled %d, ulsch_total_bytes_received %d\n",stats->ulsch_total_bytes_scheduled,stats->ulsch_total_bytes_rx); + for (lc_id=0;lc_id<63;lc_id++) { + if (stats->lc_bytes_tx[lc_id]>0) LOG_I(MAC,"LCID %d : %d bytes TX\n",lc_id,stats->lc_bytes_tx[lc_id]); + if (stats->lc_bytes_rx[lc_id]>0) LOG_I(MAC,"LCID %d : %d bytes RX\n",lc_id,stats->lc_bytes_rx[lc_id]); + } + } + } +} void clear_nr_nfapi_information(gNB_MAC_INST * gNB, int CC_idP, @@ -259,18 +284,6 @@ void schedule_nr_SRS(module_id_t module_idP, frame_t frameP, sub_frame_t subfram } */ -/* -void schedule_nr_prach(module_id_t module_idP, frame_t frameP, sub_frame_t subframeP) { - - gNB_MAC_INST *gNB = RC.nrmac[module_idP]; - - // schedule PRACH for iniital BWP - - if (is_initialBWP_prach_subframe(frameP,subframeP)<0) return; - - // fill FAPI -} -*/ /* void copy_nr_ulreq(module_id_t module_idP, frame_t frameP, sub_frame_t slotP) @@ -301,8 +314,33 @@ void copy_nr_ulreq(module_id_t module_idP, frame_t frameP, sub_frame_t slotP) } */ +void nr_schedule_pusch(int Mod_idP, + int UE_id, + int num_slots_per_tdd, + int ul_slots, + frame_t frameP, + sub_frame_t slotP) { + + nfapi_nr_ul_tti_request_t *UL_tti_req = &RC.nrmac[Mod_idP]->UL_tti_req[0]; + NR_UE_list_t *UE_list = &RC.nrmac[Mod_idP]->UE_list; + int k = slotP + ul_slots - num_slots_per_tdd; + NR_sched_pusch *pusch = &UE_list->UE_sched_ctrl[UE_id].sched_pusch[k]; + if ((pusch->active == true) && (frameP == pusch->frame) && (slotP == pusch->slot)) { + UL_tti_req->SFN = pusch->frame; + UL_tti_req->Slot = pusch->slot; + UL_tti_req->pdus_list[UL_tti_req->n_pdus].pdu_type = NFAPI_NR_UL_CONFIG_PUSCH_PDU_TYPE; + UL_tti_req->pdus_list[UL_tti_req->n_pdus].pdu_size = sizeof(nfapi_nr_pusch_pdu_t); + UL_tti_req->pdus_list[UL_tti_req->n_pdus].pusch_pdu = pusch->pusch_pdu; + UL_tti_req->n_pdus+=1; + memset((void *) &UE_list->UE_sched_ctrl[UE_id].sched_pusch[k], + 0, sizeof(NR_sched_pusch)); + } +} + + void nr_schedule_pucch(int Mod_idP, int UE_id, + int nr_ulmix_slots, frame_t frameP, sub_frame_t slotP) { @@ -318,14 +356,13 @@ void nr_schedule_pucch(int Mod_idP, NR_BWP_Uplink_t *ubwp=secondaryCellGroup->spCellConfig->spCellConfigDedicated->uplinkConfig->uplinkBWP_ToAddModList->list.array[bwp_id-1]; nfapi_nr_ul_tti_request_t *UL_tti_req = &RC.nrmac[Mod_idP]->UL_tti_req[0]; - NR_sched_pucch *curr_pucch = UE_list->UE_sched_ctrl[UE_id].sched_pucch; - NR_sched_pucch *temp_pucch; - int release_pucch = 0; + NR_sched_pucch *curr_pucch; - if (curr_pucch != NULL) { - if ((frameP == curr_pucch->frame) && (slotP == curr_pucch->ul_slot)) { - UL_tti_req->SFN = frameP; - UL_tti_req->Slot = slotP; + for (int k=0; kUE_sched_ctrl[UE_id].sched_pucch[k]; + if ((curr_pucch->dai_c > 0) && (frameP == curr_pucch->frame) && (slotP == curr_pucch->ul_slot)) { + UL_tti_req->SFN = curr_pucch->frame; + UL_tti_req->Slot = curr_pucch->ul_slot; UL_tti_req->pdus_list[UL_tti_req->n_pdus].pdu_type = NFAPI_NR_UL_CONFIG_PUCCH_PDU_TYPE; UL_tti_req->pdus_list[UL_tti_req->n_pdus].pdu_size = sizeof(nfapi_nr_pucch_pdu_t); nfapi_nr_pucch_pdu_t *pucch_pdu = &UL_tti_req->pdus_list[UL_tti_req->n_pdus].pucch_pdu; @@ -334,6 +371,8 @@ void nr_schedule_pucch(int Mod_idP, O_ack = curr_pucch->dai_c; O_uci = O_ack; // for now we are just sending acknacks in pucch + LOG_D(MAC, "Scheduling pucch reception for frame %d slot %d\n", frameP, slotP); + nr_configure_pucch(pucch_pdu, scc, ubwp, @@ -342,18 +381,15 @@ void nr_schedule_pucch(int Mod_idP, O_ack, SR_flag); - release_pucch = 1; + memset((void *) &UE_list->UE_sched_ctrl[UE_id].sched_pucch[k], + 0, + sizeof(NR_sched_pucch)); } } - - if (release_pucch) { - temp_pucch = UE_list->UE_sched_ctrl[UE_id].sched_pucch; - UE_list->UE_sched_ctrl[UE_id].sched_pucch = UE_list->UE_sched_ctrl[UE_id].sched_pucch->next_sched_pucch; - free(temp_pucch); - } - } + + bool is_xlsch_in_slot(uint64_t bitmap, sub_frame_t slot){ if((bitmap>>slot)&0x01) @@ -363,104 +399,158 @@ bool is_xlsch_in_slot(uint64_t bitmap, sub_frame_t slot){ } void gNB_dlsch_ulsch_scheduler(module_id_t module_idP, - frame_t frame_rxP, - sub_frame_t slot_rxP, - frame_t frame_txP, - sub_frame_t slot_txP){ + frame_t frame, + sub_frame_t slot){ - //printf("gNB_dlsch_ulsch_scheduler frameRX %d slotRX %d frameTX %d slotTX %d\n",frame_rxP,slot_rxP,frame_txP,slot_txP); protocol_ctxt_t ctxt; - PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, module_idP, ENB_FLAG_YES, NOT_A_RNTI, frame_txP, slot_txP,module_idP); - int CC_id, UE_id = 0; + PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, module_idP, ENB_FLAG_YES, NOT_A_RNTI, frame, slot,module_idP); + + int CC_id; + int UE_id; + uint64_t *dlsch_in_slot_bitmap=NULL; + uint64_t *ulsch_in_slot_bitmap=NULL; + int pucch_sched; + + UE_id=0; + int bwp_id = 1; + gNB_MAC_INST *gNB = RC.nrmac[module_idP]; NR_UE_list_t *UE_list = &gNB->UE_list; NR_UE_sched_ctrl_t *ue_sched_ctl = &UE_list->UE_sched_ctrl[UE_id]; NR_COMMON_channels_t *cc = gNB->common_channels; - NR_sched_pucch *pucch_sched = (NR_sched_pucch*) malloc(sizeof(NR_sched_pucch)); + NR_ServingCellConfigCommon_t *scc = cc->ServingCellConfigCommon; + int num_slots_per_tdd = (slots_per_frame[*scc->ssbSubcarrierSpacing])>>(7-scc->tdd_UL_DL_ConfigurationCommon->pattern1.dl_UL_TransmissionPeriodicity); + + int nr_ulmix_slots = scc->tdd_UL_DL_ConfigurationCommon->pattern1.nrofUplinkSlots; + if (scc->tdd_UL_DL_ConfigurationCommon->pattern1.nrofUplinkSymbols!=0) + nr_ulmix_slots++; + + if (slot== 0 && (UE_list->fiveG_connected[UE_id] || get_softmodem_params()->phy_test)) { + for (int k=0; kUE_sched_ctrl[UE_id].sched_pucch[k], + 0, + sizeof(NR_sched_pucch)); + memset((void *) &UE_list->UE_sched_ctrl[UE_id].sched_pusch[k], + 0, + sizeof(NR_sched_pusch)); + } + } start_meas(&RC.nrmac[module_idP]->eNB_scheduler); - VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_ULSCH_SCHEDULER,VCD_FUNCTION_IN); + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_gNB_DLSCH_ULSCH_SCHEDULER,VCD_FUNCTION_IN); pdcp_run(&ctxt); //rrc_rx_tx(&ctxt, CC_id); - RC.nrmac[module_idP]->frame = frame_rxP; - RC.nrmac[module_idP]->slot = slot_rxP; + dlsch_in_slot_bitmap = &RC.nrmac[module_idP]->UE_list.UE_sched_ctrl[UE_id].dlsch_in_slot_bitmap; // static bitmap signaling which slot in a tdd period contains dlsch + ulsch_in_slot_bitmap = &RC.nrmac[module_idP]->UE_list.UE_sched_ctrl[UE_id].ulsch_in_slot_bitmap; // static bitmap signaling which slot in a tdd period contains ulsch - // Check if there are downlink symbols in the slot, - if (is_nr_DL_slot(cc->ServingCellConfigCommon,slot_txP)) { - - memset(RC.nrmac[module_idP]->cce_list[1][0],0,MAX_NUM_CCE*sizeof(int)); - for (CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++) { - //mbsfn_status[CC_id] = 0; - - // clear vrb_maps - memset(cc[CC_id].vrb_map, 0, 100); - memset(cc[CC_id].vrb_map_UL, 0, 100); - - clear_nr_nfapi_information(RC.nrmac[module_idP], CC_id, frame_txP, slot_txP); + // hardcoding dlsch to be in slot 1 + if (!(slot%num_slots_per_tdd)) { + if(slot==0) { + *dlsch_in_slot_bitmap = 0x02; + *ulsch_in_slot_bitmap = 0x100; } + else { + *dlsch_in_slot_bitmap = 0x00; + *ulsch_in_slot_bitmap = 0x00; + } + } - // refresh UE list based on UEs dropped by PHY in previous subframe - /* - for (i = 0; i < MAX_MOBILES_PER_GNB; i++) { - if (UE_list->active[i]) { + memset(RC.nrmac[module_idP]->cce_list[bwp_id][0],0,MAX_NUM_CCE*sizeof(int)); // coreset0 + memset(RC.nrmac[module_idP]->cce_list[bwp_id][1],0,MAX_NUM_CCE*sizeof(int)); // coresetid 1 + for (CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++) { + //mbsfn_status[CC_id] = 0; - nfapi_nr_config_request_t *cfg = &RC.nrmac[module_idP]->config[CC_id]; - - - rnti = 0;//UE_RNTI(module_idP, i); - CC_id = 0;//UE_PCCID(module_idP, i); + // clear vrb_maps + memset(cc[CC_id].vrb_map, 0, 100); + memset(cc[CC_id].vrb_map_UL, 0, 100); + + clear_nr_nfapi_information(RC.nrmac[module_idP], CC_id, frame, slot); + } + + // refresh UE list based on UEs dropped by PHY in previous subframe + /* + for (i = 0; i < MAX_MOBILES_PER_GNB; i++) { + if (UE_list->active[i]) { + + nfapi_nr_config_request_t *cfg = &RC.nrmac[module_idP]->config[CC_id]; + rnti = 0;//UE_RNTI(module_idP, i); + CC_id = 0;//UE_PCCID(module_idP, i); + } //END if (UE_list->active[i]) } //END for (i = 0; i < MAX_MOBILES_PER_GNB; i++) */ - + + if ((slot == 0) && (frame & 127) == 0) dump_mac_stats(RC.nrmac[module_idP]); + // This schedules MIB - if((slot_txP == 0) && (frame_txP & 7) == 0){ - schedule_nr_mib(module_idP, frame_txP, slot_txP); + if((slot == 0) && (frame & 7) == 0){ + schedule_nr_mib(module_idP, frame, slot); } - // TbD once RACH is available, start ta_timer when UE is connected -#if 0 - if (ue_sched_ctl->ta_timer) ue_sched_ctl->ta_timer--; + // This schedule PRACH if we are not in phy_test mode + if (get_softmodem_params()->phy_test == 0) + schedule_nr_prach(module_idP, frame, slot); - if (ue_sched_ctl->ta_timer == 0) { - gNB->ta_command = ue_sched_ctl->ta_update; - /* if time is up, then set the timer to not send it for 5 frames - // regardless of the TA value */ - ue_sched_ctl->ta_timer = 100; - /* reset ta_update */ - ue_sched_ctl->ta_update = 31; - /* MAC CE flag indicating TA length */ - gNB->ta_len = 2; + // This schedule SR + // TODO + + // This schedule CSI + // TODO + + // This schedule RA procedure if not in phy_test mode + // Otherwise already consider 5G already connected + if (get_softmodem_params()->phy_test == 0) { + nr_schedule_RA(module_idP, frame, slot); + nr_schedule_reception_msg3(module_idP, 0, frame, slot); + } else + UE_list->fiveG_connected[UE_id] = true; + + if (get_softmodem_params()->phy_test) { + + // TbD once RACH is available, start ta_timer when UE is connected + if (ue_sched_ctl->ta_timer) + ue_sched_ctl->ta_timer--; + if (ue_sched_ctl->ta_timer == 0) { + gNB->ta_command = ue_sched_ctl->ta_update; + /* if time is up, then set the timer to not send it for 5 frames + // regardless of the TA value */ + ue_sched_ctl->ta_timer = 100; + /* reset ta_update */ + ue_sched_ctl->ta_update = 31; + /* MAC CE flag indicating TA length */ + gNB->ta_len = 2; + } } -#endif - // Phytest scheduling - if (get_softmodem_params()->phy_test && slot_txP==3 ){ - nr_schedule_uss_dlsch_phytest(module_idP, frame_txP, slot_txP, pucch_sched, NULL); - // resetting ta flag + // This schedules the DCI for Uplink and subsequently PUSCH + if (UE_list->fiveG_connected[UE_id]) { + int tda = 1; // time domain assignment hardcoded for now + schedule_fapi_ul_pdu(module_idP, frame, slot, num_slots_per_tdd, nr_ulmix_slots, tda); + nr_schedule_pusch(module_idP, UE_id, num_slots_per_tdd, nr_ulmix_slots, frame, slot); + } + + if (UE_list->fiveG_connected[UE_id] && (is_xlsch_in_slot(*dlsch_in_slot_bitmap,slot%num_slots_per_tdd))) { + ue_sched_ctl->current_harq_pid = slot % num_slots_per_tdd; + nr_update_pucch_scheduling(module_idP, UE_id, frame, slot, num_slots_per_tdd,&pucch_sched); + nr_schedule_uss_dlsch_phytest(module_idP, frame, slot, &UE_list->UE_sched_ctrl[UE_id].sched_pucch[pucch_sched], NULL); + // resetting ta flag gNB->ta_len = 0; } + if (UE_list->fiveG_connected[UE_id]) + nr_schedule_pucch(module_idP, UE_id, nr_ulmix_slots, frame, slot); + /* // Allocate CCEs for good after scheduling is done for (CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++) allocate_CCEs(module_idP, CC_id, subframeP, 0); */ - } //is_nr_DL_slot -/* - if (is_nr_UL_slot(cc->ServingCellConfigCommon,slot_rxP)) { - if (get_softmodem_params()->phy_test && slot_rxP==8){ - nr_schedule_uss_ulsch_phytest(module_idP, frame_rxP, slot_rxP); - } - } - */ //Testing only DL for now - stop_meas(&RC.nrmac[module_idP]->eNB_scheduler); - VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_ULSCH_SCHEDULER,VCD_FUNCTION_OUT); + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_gNB_DLSCH_ULSCH_SCHEDULER,VCD_FUNCTION_OUT); } diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c index d74df15eac..4c17ee3a0f 100644 --- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c +++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c @@ -19,44 +19,810 @@ * contact@openairinterface.org */ -/*! \file gNB_scheduler_RA.c - * \brief primitives used for random access - * \author - * \date - * \email: +/*! \file gNB_scheduler_RA.c + * \brief primitives used for random access + * \author Guido Casati + * \date 2019 + * \email: guido.casati@iis.fraunhofer.de * \version */ -#include nr_mac_gNB.h +#include "platform_types.h" -void -schedule_RA(module_id_t module_idP, frame_t frameP, sub_frame_t subframeP) -{ +/* MAC */ +#include "nr_mac_gNB.h" +#include "NR_MAC_gNB/mac_proto.h" +#include "NR_MAC_COMMON/nr_mac_extern.h" - eNB_MAC_INST *mac = RC.mac[module_idP]; - COMMON_channels_t *cc = mac->common_channels; - RA_t *ra; - uint8_t i; +/* Utils */ +#include "common/utils/LOG/log.h" +#include "common/utils/LOG/vcd_signal_dumper.h" +#include "common/utils/nr/nr_common.h" +#include "UTIL/OPT/opt.h" +#include "SIMULATION/TOOLS/sim.h" // for taus + +extern RAN_CONTEXT_t RC; +extern const uint8_t nr_slots_per_frame[5]; + +uint8_t DELTA[4]= {2,3,4,6}; + +void schedule_nr_prach(module_id_t module_idP, frame_t frameP, sub_frame_t slotP) { + + gNB_MAC_INST *gNB = RC.nrmac[module_idP]; + NR_COMMON_channels_t *cc = gNB->common_channels; + NR_ServingCellConfigCommon_t *scc = cc->ServingCellConfigCommon; + nfapi_nr_ul_tti_request_t *UL_tti_req = &RC.nrmac[module_idP]->UL_tti_req[0]; + + if (is_nr_UL_slot(scc,slotP)) { + + uint8_t config_index = scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->rach_ConfigGeneric.prach_ConfigurationIndex; + uint8_t mu,N_dur,N_t_slot,start_symbol; + uint16_t format; + + if (scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->msg1_SubcarrierSpacing) + mu = *scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->msg1_SubcarrierSpacing; + else + mu = scc->downlinkConfigCommon->frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing; + + // prach is scheduled according to configuration index and tables 6.3.3.2.2 to 6.3.3.2.4 + if ( get_nr_prach_info_from_index(config_index, + (int)frameP, + (int)slotP, + scc->downlinkConfigCommon->frequencyInfoDL->absoluteFrequencyPointA, + mu, + cc->frame_type, + &format, + &start_symbol, + &N_t_slot, + &N_dur) ) { + + int fdm = scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->rach_ConfigGeneric.msg1_FDM; + uint16_t format0 = format&0xff; // first column of format from table + uint16_t format1 = (format>>8)&0xff; // second column of format from table + + UL_tti_req->SFN = frameP; + UL_tti_req->Slot = slotP; + for (int n=0; n<(1<pdus_list[UL_tti_req->n_pdus].pdu_type = NFAPI_NR_UL_CONFIG_PRACH_PDU_TYPE; + UL_tti_req->pdus_list[UL_tti_req->n_pdus].pdu_size = sizeof(nfapi_nr_prach_pdu_t); + nfapi_nr_prach_pdu_t *prach_pdu = &UL_tti_req->pdus_list[UL_tti_req->n_pdus].prach_pdu; + memset(prach_pdu,0,sizeof(nfapi_nr_prach_pdu_t)); + UL_tti_req->n_pdus+=1; + + // filling the prach fapi structure + prach_pdu->phys_cell_id = *scc->physCellId; + prach_pdu->num_prach_ocas = N_t_slot; + prach_pdu->prach_start_symbol = start_symbol; + prach_pdu->num_ra = n; + prach_pdu->num_cs = get_NCS(scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->rach_ConfigGeneric.zeroCorrelationZoneConfig, + format0, + scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->restrictedSetConfig); + // SCF PRACH PDU format field does not consider A1/B1 etc. possibilities + // We added 9 = A1/B1 10 = A2/B2 11 A3/B3 + if (format1!=0xff) { + switch(format0) { + case 0xa1: + prach_pdu->prach_format = 9; + break; + case 0xa2: + prach_pdu->prach_format = 10; + break; + case 0xa3: + prach_pdu->prach_format = 11; + break; + default: + AssertFatal(1==0,"Only formats A1/B1 A2/B2 A3/B3 are valid for dual format"); + } + } + else{ + switch(format0) { + case 0xa1: + prach_pdu->prach_format = 0; + break; + case 0xa2: + prach_pdu->prach_format = 1; + break; + case 0xa3: + prach_pdu->prach_format = 2; + break; + case 0xb1: + prach_pdu->prach_format = 3; + break; + case 0xb2: + prach_pdu->prach_format = 4; + break; + case 0xb3: + prach_pdu->prach_format = 5; + break; + case 0xb4: + prach_pdu->prach_format = 6; + break; + case 0xc0: + prach_pdu->prach_format = 7; + break; + case 0xc2: + prach_pdu->prach_format = 8; + break; + case 0: + // long formats are handled @ PHY + break; + case 1: + // long formats are handled @ PHY + break; + case 2: + // long formats are handled @ PHY + break; + case 3: + // long formats are handled @ PHY + break; + default: + AssertFatal(1==0,"Invalid PRACH format"); + } + } + } + } + } +} + +void nr_schedule_msg2(uint16_t rach_frame, uint16_t rach_slot, + uint16_t *msg2_frame, uint16_t *msg2_slot, + NR_ServingCellConfigCommon_t *scc, + uint16_t monitoring_slot_period, + uint16_t monitoring_offset){ + + // preferentially we schedule the msg2 in the mixed slot or in the last dl slot + // if they are allowed by search space configuration + + uint8_t mu = *scc->ssbSubcarrierSpacing; + uint8_t response_window = scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->rach_ConfigGeneric.ra_ResponseWindow; + uint8_t slot_window; + // number of mixed slot or of last dl slot if there is no mixed slot + uint8_t last_dl_slot_period = scc->tdd_UL_DL_ConfigurationCommon->pattern1.nrofDownlinkSlots; + // lenght of tdd period in slots + uint8_t tdd_period_slot = scc->tdd_UL_DL_ConfigurationCommon->pattern1.nrofDownlinkSlots + scc->tdd_UL_DL_ConfigurationCommon->pattern1.nrofUplinkSlots; + if (scc->tdd_UL_DL_ConfigurationCommon->pattern1.nrofDownlinkSymbols == 0) + last_dl_slot_period--; + if ((scc->tdd_UL_DL_ConfigurationCommon->pattern1.nrofDownlinkSymbols > 0) || (scc->tdd_UL_DL_ConfigurationCommon->pattern1.nrofUplinkSymbols > 0)) + tdd_period_slot++; + + // computing start of next period + uint8_t start_next_period = (rach_slot-(rach_slot%tdd_period_slot)+tdd_period_slot)%nr_slots_per_frame[mu]; + *msg2_slot = start_next_period + last_dl_slot_period; // initializing scheduling of slot to next mixed (or last dl) slot + *msg2_frame = (*msg2_slot>(rach_slot))? rach_frame : (rach_frame +1); + + switch(response_window){ + case NR_RACH_ConfigGeneric__ra_ResponseWindow_sl1: + slot_window = 1; + break; + case NR_RACH_ConfigGeneric__ra_ResponseWindow_sl2: + slot_window = 2; + break; + case NR_RACH_ConfigGeneric__ra_ResponseWindow_sl4: + slot_window = 4; + break; + case NR_RACH_ConfigGeneric__ra_ResponseWindow_sl8: + slot_window = 8; + break; + case NR_RACH_ConfigGeneric__ra_ResponseWindow_sl10: + slot_window = 10; + break; + case NR_RACH_ConfigGeneric__ra_ResponseWindow_sl20: + slot_window = 20; + break; + case NR_RACH_ConfigGeneric__ra_ResponseWindow_sl40: + slot_window = 40; + break; + case NR_RACH_ConfigGeneric__ra_ResponseWindow_sl80: + slot_window = 80; + break; + default: + AssertFatal(1==0,"Invalid response window value %d\n",response_window); + } + AssertFatal(slot_window<=nr_slots_per_frame[mu],"Msg2 response window needs to be lower or equal to 10ms"); + + // slot and frame limit to transmit msg2 according to response window + uint8_t slot_limit = (rach_slot + slot_window)%nr_slots_per_frame[mu]; + //uint8_t frame_limit = (slot_limit>(rach_slot))? rach_frame : (rach_frame +1); + + + // go to previous slot if the current scheduled slot is beyond the response window + // and if the slot is not among the PDCCH monitored ones (38.213 10.1) + while ((*msg2_slot>slot_limit) || ((*msg2_frame*nr_slots_per_frame[mu]+*msg2_slot-monitoring_offset)%monitoring_slot_period !=0)) { + if((*msg2_slot%tdd_period_slot) > 0) + (*msg2_slot)--; + else + AssertFatal(1==0,"No available DL slot to schedule msg2 has been found"); + } +} + + +void nr_initiate_ra_proc(module_id_t module_idP, + int CC_id, + frame_t frameP, + sub_frame_t slotP, + uint16_t preamble_index, + uint8_t freq_index, + uint8_t symbol, + int16_t timing_offset){ + + uint8_t ul_carrier_id = 0; // 0 for NUL 1 for SUL + NR_SearchSpace_t *ss; + int UE_id = 0; + // ra_rnti from 5.1.3 in 38.321 + uint16_t ra_rnti=1+symbol+(slotP*14)+(freq_index*14*80)+(ul_carrier_id*14*80*8); + + uint16_t msg2_frame, msg2_slot,monitoring_slot_period,monitoring_offset; + gNB_MAC_INST *nr_mac = RC.nrmac[module_idP]; + NR_UE_list_t *UE_list = &nr_mac->UE_list; + NR_CellGroupConfig_t *secondaryCellGroup = UE_list->secondaryCellGroup[UE_id]; + NR_COMMON_channels_t *cc = &nr_mac->common_channels[CC_id]; + NR_ServingCellConfigCommon_t *scc = cc->ServingCellConfigCommon; + NR_RA_t *ra = &cc->ra[0]; + + // if the preamble received correspond to one of the listed + // the UE sent a RACH either for starting RA procedure or RA procedure failed and UE retries + int pr_found=0; + for (int i=0;ipreambles[UE_id].num_preambles;i++) { + if (preamble_index == UE_list->preambles[UE_id].preamble_list[i]) { + pr_found=1; + break; + } + } + if (pr_found) + UE_list->fiveG_connected[UE_id] = false; + else { + LOG_E(MAC, "[gNB %d][RAPROC] FAILURE: preamble %d does not correspond to any of the ones in rach_ConfigDedicated for UE_id %d\n", + module_idP, preamble_index, UE_id); + return; // if the PRACH preamble does not correspond to any of the ones sent through RRC abort RA proc + } + + // This should be handled differently when we use the initialBWP for RA + ra->bwp_id=1; + NR_BWP_Downlink_t *bwp=secondaryCellGroup->spCellConfig->spCellConfigDedicated->downlinkBWP_ToAddModList->list.array[ra->bwp_id-1]; + + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_INITIATE_RA_PROC, 1); + + LOG_I(MAC, "[gNB %d][RAPROC] CC_id %d Frame %d, Slot %d Initiating RA procedure for preamble index %d\n", module_idP, CC_id, frameP, slotP, preamble_index); + + if (ra->state == RA_IDLE) { + int loop = 0; + LOG_D(MAC, "Frame %d, Slot %d: Activating RA process \n", frameP, slotP); + ra->state = Msg2; + ra->timing_offset = timing_offset; + ra->preamble_slot = slotP; + + struct NR_PDCCH_ConfigCommon__commonSearchSpaceList *commonSearchSpaceList = bwp->bwp_Common->pdcch_ConfigCommon->choice.setup->commonSearchSpaceList; + AssertFatal(commonSearchSpaceList->list.count>0, + "common SearchSpace list has 0 elements\n"); + // Common searchspace list + for (int i=0;ilist.count;i++) { + ss=commonSearchSpaceList->list.array[i]; + if(ss->searchSpaceId == *bwp->bwp_Common->pdcch_ConfigCommon->choice.setup->ra_SearchSpace) + ra->ra_ss=ss; + } + + // retrieving ra pdcch monitoring period and offset + find_monitoring_periodicity_offset_common(ra->ra_ss, + &monitoring_slot_period, + &monitoring_offset); + + nr_schedule_msg2(frameP, slotP, &msg2_frame, &msg2_slot, scc, monitoring_slot_period, monitoring_offset); + + ra->Msg2_frame = msg2_frame; + ra->Msg2_slot = msg2_slot; + + LOG_D(MAC, "%s() Msg2[%04d%d] SFN/SF:%04d%d\n", __FUNCTION__, ra->Msg2_frame, ra->Msg2_slot, frameP, slotP); + + do { + ra->rnti = (taus() % 65518) + 1; + loop++; + } + while (loop != 100 && !(find_nr_UE_id(module_idP, ra->rnti) == -1 && ra->rnti >= 1 && ra->rnti <= 65519)); + if (loop == 100) { + LOG_E(MAC,"%s:%d:%s: [RAPROC] initialisation random access aborted\n", __FILE__, __LINE__, __FUNCTION__); + abort(); + } + + ra->RA_rnti = ra_rnti; + ra->preamble_index = preamble_index; + UE_list->tc_rnti[UE_id] = ra->rnti; + + LOG_I(MAC,"[gNB %d][RAPROC] CC_id %d Frame %d Activating Msg2 generation in frame %d, slot %d using RA rnti %x\n", + module_idP, + CC_id, + frameP, + ra->Msg2_frame, + ra->Msg2_slot, + ra->RA_rnti); + + return; + } + LOG_E(MAC, "[gNB %d][RAPROC] FAILURE: CC_id %d Frame %d initiating RA procedure for preamble index %d\n", module_idP, CC_id, frameP, preamble_index); + + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_INITIATE_RA_PROC, 0); +} + +void nr_schedule_RA(module_id_t module_idP, frame_t frameP, sub_frame_t slotP){ + + //uint8_t i = 0; + int CC_id = 0; + gNB_MAC_INST *mac = RC.nrmac[module_idP]; + NR_COMMON_channels_t *cc = &mac->common_channels[CC_id]; + NR_RA_t *ra = &cc->ra[0]; start_meas(&mac->schedule_ra); + //for (i = 0; i < NR_NB_RA_PROC_MAX; i++) { + LOG_D(MAC,"RA[state:%d]\n",ra->state); + switch (ra->state){ + case Msg2: + nr_generate_Msg2(module_idP, CC_id, frameP, slotP); + break; + case Msg4: + //generate_Msg4(module_idP, CC_id, frameP, slotP, ra); + break; + case WAIT_Msg4_ACK: + //check_Msg4_retransmission(module_idP, CC_id, frameP, slotP, ra); + break; + default: + break; + } + //} + stop_meas(&mac->schedule_ra); +} - for (CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++) { +void nr_get_Msg3alloc(NR_ServingCellConfigCommon_t *scc, + NR_BWP_Uplink_t *ubwp, + sub_frame_t current_slot, + frame_t current_frame, + NR_RA_t *ra) { - for (i = 0; i < NB_RA_PROC_MAX; i++) { + // msg3 is schedulend in mixed slot in the following TDD period + // for now we consider a TBS of 18 bytes - ra = (RA_t *) & cc[CC_id].ra[i]; - //LOG_D(MAC,"RA[state:%d]\n",ra->state); + int mu = ubwp->bwp_Common->genericParameters.subcarrierSpacing; + int StartSymbolIndex, NrOfSymbols, startSymbolAndLength, temp_slot; + ra->Msg3_tda_id = 16; // initialization to a value above limit - if (ra->state == MSG2) - generate_Msg2(module_idP, CC_id, frameP, subframeP, ra); - else if (ra->state == MSG4) - generate_Msg4(module_idP, CC_id, frameP, subframeP, ra); - else if (ra->state == WAITMSG4ACK) - check_Msg4_retransmission(module_idP, CC_id, frameP, subframeP, ra); + for (int i=0; ibwp_Common->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.count; i++) { + startSymbolAndLength = ubwp->bwp_Common->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[i]->startSymbolAndLength; + SLIV2SL(startSymbolAndLength, &StartSymbolIndex, &NrOfSymbols); + // we want to transmit in the uplink symbols of mixed slot + if (NrOfSymbols == scc->tdd_UL_DL_ConfigurationCommon->pattern1.nrofUplinkSymbols) { + ra->Msg3_tda_id = i; + break; + } + } + AssertFatal(ra->Msg3_tda_id<16,"Unable to find Msg3 time domain allocation in list\n"); - } // for i=0 .. N_RA_PROC-1 - } // CC_id + uint8_t k2 = *ubwp->bwp_Common->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[ra->Msg3_tda_id]->k2; - stop_meas(&mac->schedule_ra); + temp_slot = current_slot + k2 + DELTA[mu]; // msg3 slot according to 8.3 in 38.213 + ra->Msg3_slot = temp_slot%nr_slots_per_frame[mu]; + if (nr_slots_per_frame[mu]>temp_slot) + ra->Msg3_frame = current_frame; + else + ra->Msg3_frame = current_frame + (temp_slot/nr_slots_per_frame[mu]); + + ra->msg3_nb_rb = 18; + ra->msg3_first_rb = 0; +} + + +void nr_schedule_reception_msg3(module_id_t module_idP, int CC_id, frame_t frameP, sub_frame_t slotP){ + gNB_MAC_INST *mac = RC.nrmac[module_idP]; + nfapi_nr_ul_tti_request_t *ul_req = &mac->UL_tti_req[0]; + NR_COMMON_channels_t *cc = &mac->common_channels[CC_id]; + NR_RA_t *ra = &cc->ra[0]; + + if (ra->state == WAIT_Msg3) { + if ((frameP == ra->Msg3_frame) && (slotP == ra->Msg3_slot) ){ + ul_req->SFN = ra->Msg3_frame; + ul_req->Slot = ra->Msg3_slot; + ul_req->pdus_list[ul_req->n_pdus].pdu_type = NFAPI_NR_UL_CONFIG_PUSCH_PDU_TYPE; + ul_req->pdus_list[ul_req->n_pdus].pdu_size = sizeof(nfapi_nr_pusch_pdu_t); + ul_req->pdus_list[ul_req->n_pdus].pusch_pdu = ra->pusch_pdu; + ul_req->n_pdus+=1; + ra->state = RA_IDLE; + } + } +} + +void nr_add_msg3(module_id_t module_idP, int CC_id, frame_t frameP, sub_frame_t slotP){ + + gNB_MAC_INST *mac = RC.nrmac[module_idP]; + NR_COMMON_channels_t *cc = &mac->common_channels[CC_id]; + NR_ServingCellConfigCommon_t *scc = cc->ServingCellConfigCommon; + NR_RA_t *ra = &cc->ra[0]; + NR_UE_list_t *UE_list = &mac->UE_list; + int UE_id = 0; + + if (ra->state == RA_IDLE) { + LOG_W(MAC,"RA is not active for RA %X. skipping msg3 scheduling\n", ra->rnti); + return; + } + + LOG_D(MAC, "[gNB %d][RAPROC] Frame %d, Subframe %d : CC_id %d RA is active, Msg3 in (%d,%d)\n", module_idP, frameP, slotP, CC_id, ra->Msg3_frame, ra->Msg3_slot); + + nfapi_nr_pusch_pdu_t *pusch_pdu = &ra->pusch_pdu; + memset(pusch_pdu, 0, sizeof(nfapi_nr_pusch_pdu_t)); + + + AssertFatal(UE_list->active[UE_id] >=0,"Cannot find UE_id %d is not active\n", UE_id); + + NR_CellGroupConfig_t *secondaryCellGroup = UE_list->secondaryCellGroup[UE_id]; + AssertFatal(secondaryCellGroup->spCellConfig->spCellConfigDedicated->downlinkBWP_ToAddModList->list.count == 1, + "downlinkBWP_ToAddModList has %d BWP!\n", secondaryCellGroup->spCellConfig->spCellConfigDedicated->downlinkBWP_ToAddModList->list.count); + NR_BWP_Uplink_t *ubwp=secondaryCellGroup->spCellConfig->spCellConfigDedicated->uplinkConfig->uplinkBWP_ToAddModList->list.array[ra->bwp_id-1]; + LOG_D(MAC, "Frame %d, Subframe %d Adding Msg3 UL Config Request for (%d,%d) : (%d,%d,%d) for rnti: %d\n", + frameP, + slotP, + ra->Msg3_frame, + ra->Msg3_slot, + ra->msg3_nb_rb, + ra->msg3_first_rb, + ra->msg3_round, + ra->rnti); + + int startSymbolAndLength = ubwp->bwp_Common->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[ra->Msg3_tda_id]->startSymbolAndLength; + int start_symbol_index,nr_of_symbols; + SLIV2SL(startSymbolAndLength, &start_symbol_index, &nr_of_symbols); + + pusch_pdu->pdu_bit_map = PUSCH_PDU_BITMAP_PUSCH_DATA; + pusch_pdu->rnti = ra->rnti; + pusch_pdu->handle = 0; + int abwp_size = NRRIV2BW(ubwp->bwp_Common->genericParameters.locationAndBandwidth,275); + int abwp_start = NRRIV2PRBOFFSET(ubwp->bwp_Common->genericParameters.locationAndBandwidth,275); + int ibwp_size = NRRIV2BW(scc->uplinkConfigCommon->initialUplinkBWP->genericParameters.locationAndBandwidth,275); + int ibwp_start = NRRIV2PRBOFFSET(scc->uplinkConfigCommon->initialUplinkBWP->genericParameters.locationAndBandwidth,275); + if ((ibwp_start < abwp_start) || (ibwp_size > abwp_size)) + pusch_pdu->bwp_start = abwp_start; + else + pusch_pdu->bwp_start = ibwp_start; + pusch_pdu->bwp_size = ibwp_size; + pusch_pdu->subcarrier_spacing = ubwp->bwp_Common->genericParameters.subcarrierSpacing; + pusch_pdu->cyclic_prefix = 0; + pusch_pdu->mcs_index = 0; + pusch_pdu->mcs_table = 0; + pusch_pdu->target_code_rate = nr_get_code_rate_ul(pusch_pdu->mcs_index,pusch_pdu->mcs_table); + pusch_pdu->qam_mod_order = nr_get_Qm_ul(pusch_pdu->mcs_index,pusch_pdu->mcs_table); + if (scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->msg3_transformPrecoder == NULL) + pusch_pdu->transform_precoding = 1; + else + pusch_pdu->transform_precoding = 0; + pusch_pdu->data_scrambling_id = *scc->physCellId; + pusch_pdu->nrOfLayers = 1; + pusch_pdu->ul_dmrs_symb_pos = 1<dmrs_config_type = 0; + pusch_pdu->ul_dmrs_scrambling_id = *scc->physCellId; //If provided and the PUSCH is not a msg3 PUSCH, otherwise, L2 should set this to physical cell id. + pusch_pdu->scid = 0; //DMRS sequence initialization [TS38.211, sec 6.4.1.1.1]. Should match what is sent in DCI 0_1, otherwise set to 0. + pusch_pdu->dmrs_ports = 1; // 6.2.2 in 38.214 only port 0 to be used + pusch_pdu->num_dmrs_cdm_grps_no_data = 2; // no data in dmrs symbols as in 6.2.2 in 38.214 + pusch_pdu->resource_alloc = 1; //type 1 + pusch_pdu->rb_start = ra->msg3_first_rb + ibwp_start - abwp_start; // as for 6.3.1.7 in 38.211 + if (ra->msg3_nb_rb > pusch_pdu->bwp_size) + AssertFatal(1==0,"MSG3 allocated number of RBs exceed the BWP size\n"); + else + pusch_pdu->rb_size = ra->msg3_nb_rb; + pusch_pdu->vrb_to_prb_mapping = 0; + if (ubwp->bwp_Dedicated->pusch_Config->choice.setup->frequencyHopping == NULL) + pusch_pdu->frequency_hopping = 0; + else + pusch_pdu->frequency_hopping = 1; + //pusch_pdu->tx_direct_current_location;//The uplink Tx Direct Current location for the carrier. Only values in the value range of this field between 0 and 3299, which indicate the subcarrier index within the carrier corresponding 1o the numerology of the corresponding uplink BWP and value 3300, which indicates "Outside the carrier" and value 3301, which indicates "Undetermined position within the carrier" are used. [TS38.331, UplinkTxDirectCurrentBWP IE] + pusch_pdu->uplink_frequency_shift_7p5khz = 0; + //Resource Allocation in time domain + pusch_pdu->start_symbol_index = start_symbol_index; + pusch_pdu->nr_of_symbols = nr_of_symbols; + //Optional Data only included if indicated in pduBitmap + pusch_pdu->pusch_data.rv_index = 0; // 8.3 in 38.213 + pusch_pdu->pusch_data.harq_process_id = 0; + pusch_pdu->pusch_data.new_data_indicator = 1; // new data + pusch_pdu->pusch_data.num_cb = 0; + pusch_pdu->pusch_data.tb_size = nr_compute_tbs(pusch_pdu->qam_mod_order, + pusch_pdu->target_code_rate, + pusch_pdu->rb_size, + pusch_pdu->nr_of_symbols, + 12, // nb dmrs set for no data in dmrs symbol + 0, //nb_rb_oh + 0, // to verify tb scaling + pusch_pdu->nrOfLayers = 1)>>3; + + // calling function to fill rar message + nr_fill_rar(module_idP, ra, cc->RAR_pdu.payload, pusch_pdu); + +} + +// WIP +// todo: +// - fix me +// - get msg3 alloc (see nr_process_rar) +void nr_generate_Msg2(module_id_t module_idP, + int CC_id, + frame_t frameP, + sub_frame_t slotP){ + + int UE_id = 0, dci_formats[2], rnti_types[2], mcsIndex; + int startSymbolAndLength = 0, StartSymbolIndex = -1, NrOfSymbols = 14, StartSymbolIndex_tmp, NrOfSymbols_tmp, x_Overhead, time_domain_assignment = 0; + gNB_MAC_INST *nr_mac = RC.nrmac[module_idP]; + NR_COMMON_channels_t *cc = &nr_mac->common_channels[0]; + NR_RA_t *ra = &cc->ra[0]; + NR_UE_list_t *UE_list = &nr_mac->UE_list; + NR_SearchSpace_t *ss = ra->ra_ss; + + uint16_t RA_rnti = ra->RA_rnti; + long locationAndBandwidth; + // uint8_t *vrb_map = cc[CC_id].vrb_map, CC_id; + + // check if UE is doing RA on CORESET0 , InitialBWP or configured BWP from SCD + // get the BW of the PDCCH for PDCCH size and RAR PDSCH size + + NR_ServingCellConfigCommon_t *scc = cc->ServingCellConfigCommon; + int dci10_bw; + + if (ra->coreset0_configured == 1) { + AssertFatal(1==0,"This is a standalone condition\n"); + } + else { // on configured BWP or initial LDBWP, bandwidth parameters in DCI correspond size of initialBWP + locationAndBandwidth = scc->downlinkConfigCommon->initialDownlinkBWP->genericParameters.locationAndBandwidth; + dci10_bw = NRRIV2BW(locationAndBandwidth,275); + } + + if ((ra->Msg2_frame == frameP) && (ra->Msg2_slot == slotP)) { + + nfapi_nr_dl_tti_request_body_t *dl_req = &nr_mac->DL_req[CC_id].dl_tti_request_body; + nfapi_nr_pdu_t *tx_req = &nr_mac->TX_req[CC_id].pdu_list[nr_mac->TX_req[CC_id].Number_of_PDUs]; + + nfapi_nr_dl_tti_request_pdu_t *dl_tti_pdcch_pdu = &dl_req->dl_tti_pdu_list[dl_req->nPDUs]; + memset((void*)dl_tti_pdcch_pdu,0,sizeof(nfapi_nr_dl_tti_request_pdu_t)); + dl_tti_pdcch_pdu->PDUType = NFAPI_NR_DL_TTI_PDCCH_PDU_TYPE; + dl_tti_pdcch_pdu->PDUSize = (uint8_t)(2+sizeof(nfapi_nr_dl_tti_pdcch_pdu)); + + nfapi_nr_dl_tti_request_pdu_t *dl_tti_pdsch_pdu = &dl_req->dl_tti_pdu_list[dl_req->nPDUs+1]; + memset((void *)dl_tti_pdsch_pdu,0,sizeof(nfapi_nr_dl_tti_request_pdu_t)); + dl_tti_pdsch_pdu->PDUType = NFAPI_NR_DL_TTI_PDSCH_PDU_TYPE; + dl_tti_pdsch_pdu->PDUSize = (uint8_t)(2+sizeof(nfapi_nr_dl_tti_pdsch_pdu)); + + nfapi_nr_dl_tti_pdcch_pdu_rel15_t *pdcch_pdu_rel15 = &dl_tti_pdcch_pdu->pdcch_pdu.pdcch_pdu_rel15; + nfapi_nr_dl_tti_pdsch_pdu_rel15_t *pdsch_pdu_rel15 = &dl_tti_pdsch_pdu->pdsch_pdu.pdsch_pdu_rel15; + + // Checking if the DCI allocation is feasible in current subframe + if (dl_req->nPDUs == NFAPI_NR_MAX_DL_TTI_PDUS) { + LOG_I(MAC, "[RAPROC] Subframe %d: FAPI DL structure is full, skip scheduling UE %d\n", slotP, RA_rnti); + return; + } + + LOG_I(MAC,"[gNB %d] [RAPROC] CC_id %d Frame %d, slotP %d: Generating RAR DCI, state %d\n", module_idP, CC_id, frameP, slotP, ra->state); + + // This code from this point on will not work on initialBWP or CORESET0 + AssertFatal(ra->bwp_id>0,"cannot work on initialBWP for now\n"); + + NR_CellGroupConfig_t *secondaryCellGroup = UE_list->secondaryCellGroup[UE_id]; + AssertFatal(secondaryCellGroup->spCellConfig->spCellConfigDedicated->downlinkBWP_ToAddModList->list.count == 1, + "downlinkBWP_ToAddModList has %d BWP!\n", secondaryCellGroup->spCellConfig->spCellConfigDedicated->downlinkBWP_ToAddModList->list.count); + NR_BWP_Downlink_t *bwp = secondaryCellGroup->spCellConfig->spCellConfigDedicated->downlinkBWP_ToAddModList->list.array[ra->bwp_id - 1]; + NR_BWP_Uplink_t *ubwp=secondaryCellGroup->spCellConfig->spCellConfigDedicated->uplinkConfig->uplinkBWP_ToAddModList->list.array[ra->bwp_id-1]; + + LOG_D(MAC, "[RAPROC] Scheduling common search space DCI type 1 dlBWP BW %d\n", dci10_bw); + + // Qm>2 not allowed for RAR + if (get_softmodem_params()->do_ra) + mcsIndex = 9; + else + mcsIndex = 0; + + pdsch_pdu_rel15->pduBitmap = 0; + pdsch_pdu_rel15->rnti = RA_rnti; + pdsch_pdu_rel15->pduIndex = 0; + + + pdsch_pdu_rel15->BWPSize = NRRIV2BW(bwp->bwp_Common->genericParameters.locationAndBandwidth,275); + pdsch_pdu_rel15->BWPStart = NRRIV2PRBOFFSET(bwp->bwp_Common->genericParameters.locationAndBandwidth,275); + pdsch_pdu_rel15->SubcarrierSpacing = bwp->bwp_Common->genericParameters.subcarrierSpacing; + pdsch_pdu_rel15->CyclicPrefix = 0; + pdsch_pdu_rel15->NrOfCodewords = 1; + pdsch_pdu_rel15->targetCodeRate[0] = nr_get_code_rate_dl(mcsIndex,0); + pdsch_pdu_rel15->qamModOrder[0] = 2; + pdsch_pdu_rel15->mcsIndex[0] = mcsIndex; + if (bwp->bwp_Dedicated->pdsch_Config->choice.setup->mcs_Table == NULL) + pdsch_pdu_rel15->mcsTable[0] = 0; + else{ + if (*bwp->bwp_Dedicated->pdsch_Config->choice.setup->mcs_Table == 0) + pdsch_pdu_rel15->mcsTable[0] = 1; + else + pdsch_pdu_rel15->mcsTable[0] = 2; + } + pdsch_pdu_rel15->rvIndex[0] = 0; + pdsch_pdu_rel15->dataScramblingId = *scc->physCellId; + pdsch_pdu_rel15->nrOfLayers = 1; + pdsch_pdu_rel15->transmissionScheme = 0; + pdsch_pdu_rel15->refPoint = 0; + pdsch_pdu_rel15->dmrsConfigType = 0; + pdsch_pdu_rel15->dlDmrsScramblingId = *scc->physCellId; + pdsch_pdu_rel15->SCID = 0; + pdsch_pdu_rel15->numDmrsCdmGrpsNoData = 2; + pdsch_pdu_rel15->dmrsPorts = 1; + pdsch_pdu_rel15->resourceAlloc = 1; + pdsch_pdu_rel15->rbStart = 0; + pdsch_pdu_rel15->rbSize = 6; + pdsch_pdu_rel15->VRBtoPRBMapping = 0; // non interleaved + + for (int i=0; ibwp_Common->pdsch_ConfigCommon->choice.setup->pdsch_TimeDomainAllocationList->list.count; i++) { + startSymbolAndLength = bwp->bwp_Common->pdsch_ConfigCommon->choice.setup->pdsch_TimeDomainAllocationList->list.array[i]->startSymbolAndLength; + SLIV2SL(startSymbolAndLength, &StartSymbolIndex_tmp, &NrOfSymbols_tmp); + if (NrOfSymbols_tmp < NrOfSymbols) { + NrOfSymbols = NrOfSymbols_tmp; + StartSymbolIndex = StartSymbolIndex_tmp; + time_domain_assignment = i; // this is short PDSCH added to the config to fit mixed slot + } + } + + AssertFatal(StartSymbolIndex >= 0, "StartSymbolIndex is negative\n"); + + pdsch_pdu_rel15->StartSymbolIndex = StartSymbolIndex; + pdsch_pdu_rel15->NrOfSymbols = NrOfSymbols; + pdsch_pdu_rel15->dlDmrsSymbPos = fill_dmrs_mask(NULL, scc->dmrs_TypeA_Position, NrOfSymbols); + + dci_pdu_rel15_t dci_pdu_rel15[MAX_DCI_CORESET]; + dci_pdu_rel15[0].frequency_domain_assignment.val = PRBalloc_to_locationandbandwidth0(pdsch_pdu_rel15->rbSize, + pdsch_pdu_rel15->rbStart,dci10_bw); + dci_pdu_rel15[0].time_domain_assignment.val = time_domain_assignment; + dci_pdu_rel15[0].vrb_to_prb_mapping.val = 0; + dci_pdu_rel15[0].mcs = pdsch_pdu_rel15->mcsIndex[0]; + dci_pdu_rel15[0].tb_scaling = 0; + + LOG_I(MAC, "[RAPROC] DCI type 1 payload: freq_alloc %d (%d,%d,%d), time_alloc %d, vrb to prb %d, mcs %d tb_scaling %d \n", + dci_pdu_rel15[0].frequency_domain_assignment.val, + pdsch_pdu_rel15->rbStart, + pdsch_pdu_rel15->rbSize, + dci10_bw, + dci_pdu_rel15[0].time_domain_assignment.val, + dci_pdu_rel15[0].vrb_to_prb_mapping.val, + dci_pdu_rel15[0].mcs, + dci_pdu_rel15[0].tb_scaling); + + nr_configure_pdcch(nr_mac, pdcch_pdu_rel15, RA_rnti, 0, ss, scc, bwp); + + LOG_I(MAC, "Frame %d: Subframe %d : Adding common DL DCI for RA_RNTI %x\n", frameP, slotP, RA_rnti); + + dci_formats[0] = NR_DL_DCI_FORMAT_1_0; + rnti_types[0] = NR_RNTI_RA; + + LOG_D(MAC, "[RAPROC] DCI params: rnti %d, rnti_type %d, dci_format %d coreset params: FreqDomainResource %llx, start_symbol %d n_symb %d\n", + pdcch_pdu_rel15->dci_pdu.RNTI[0], + rnti_types[0], + dci_formats[0], + (unsigned long long)pdcch_pdu_rel15->FreqDomainResource, + pdcch_pdu_rel15->StartSymbolIndex, + pdcch_pdu_rel15->DurationSymbols); + + fill_dci_pdu_rel15(scc,secondaryCellGroup,pdcch_pdu_rel15, &dci_pdu_rel15[0], dci_formats, rnti_types,dci10_bw,ra->bwp_id); + + dl_req->nPDUs+=2; + + // Program UL processing for Msg3 + nr_get_Msg3alloc(scc, ubwp, slotP, frameP, ra); + LOG_I(MAC, "Frame %d, Subframe %d: Setting Msg3 reception for Frame %d Subframe %d\n", frameP, slotP, ra->Msg3_frame, ra->Msg3_slot); + nr_add_msg3(module_idP, CC_id, frameP, slotP); + ra->state = WAIT_Msg3; + LOG_D(MAC,"[gNB %d][RAPROC] Frame %d, Subframe %d: RA state %d\n", module_idP, frameP, slotP, ra->state); + + x_Overhead = 0; + nr_get_tbs_dl(&dl_tti_pdsch_pdu->pdsch_pdu, x_Overhead, pdsch_pdu_rel15->numDmrsCdmGrpsNoData, dci_pdu_rel15[0].tb_scaling); + + // DL TX request + tx_req->PDU_length = pdsch_pdu_rel15->TBSize[0]; + tx_req->PDU_index = nr_mac->pdu_index[CC_id]++; + tx_req->num_TLV = 1; + tx_req->TLVs[0].length = 8; + nr_mac->TX_req[CC_id].SFN = frameP; + nr_mac->TX_req[CC_id].Number_of_PDUs++; + nr_mac->TX_req[CC_id].Slot = slotP; + memcpy((void*)&tx_req->TLVs[0].value.direct[0], (void*)&cc[CC_id].RAR_pdu.payload[0], tx_req->TLVs[0].length); + } +} + +void nr_clear_ra_proc(module_id_t module_idP, int CC_id, frame_t frameP){ + NR_RA_t *ra = &RC.nrmac[module_idP]->common_channels[CC_id].ra[0]; + LOG_D(MAC,"[gNB %d][RAPROC] CC_id %d Frame %d Clear Random access information rnti %x\n", module_idP, CC_id, frameP, ra->rnti); + ra->state = IDLE; + ra->timing_offset = 0; + ra->RRC_timer = 20; + ra->rnti = 0; + ra->msg3_round = 0; +} + + +///////////////////////////////////// +// Random Access Response PDU // +// TS 38.213 ch 8.2 // +// TS 38.321 ch 6.2.3 // +///////////////////////////////////// +//| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |// bit-wise +//| E | T | R A P I D |// +//| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |// +//| R | T A |// +//| T A | UL grant |// +//| UL grant |// +//| UL grant |// +//| UL grant |// +//| T C - R N T I |// +//| T C - R N T I |// +///////////////////////////////////// +// UL grant (27 bits) // +///////////////////////////////////// +//| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |// bit-wise +//|-------------------|FHF|F_alloc|// +//| Freq allocation |// +//| F_alloc |Time allocation|// +//| MCS | TPC |CSI|// +///////////////////////////////////// +// WIP +// todo: +// - handle MAC RAR BI subheader +// - sending only 1 RAR subPDU +// - UL Grant: hardcoded CSI, TPC, time alloc +// - padding +void nr_fill_rar(uint8_t Mod_idP, + NR_RA_t * ra, + uint8_t * dlsch_buffer, + nfapi_nr_pusch_pdu_t *pusch_pdu){ + + LOG_D(MAC, "[gNB] Generate RAR MAC PDU frame %d slot %d ", ra->Msg2_frame, ra-> Msg2_slot); + NR_RA_HEADER_RAPID *rarh = (NR_RA_HEADER_RAPID *) dlsch_buffer; + NR_MAC_RAR *rar = (NR_MAC_RAR *) (dlsch_buffer + 1); + unsigned char csi_req = 0, tpc_command; + //uint8_t N_UL_Hop; + uint8_t valid_bits; + uint32_t ul_grant; + uint16_t f_alloc, prb_alloc, bwp_size, truncation=0; + + tpc_command = 3; // this is 0 dB + + /// E/T/RAPID subheader /// + // E = 0, one only RAR, first and last + // T = 1, RAPID + rarh->E = 0; + rarh->T = 1; + rarh->RAPID = ra->preamble_index; + + /// RAR MAC payload /// + rar->R = 0; + + // TA command + rar->TA1 = (uint8_t) (ra->timing_offset >> 5); // 7 MSBs of timing advance + rar->TA2 = (uint8_t) (ra->timing_offset & 0x1f); // 5 LSBs of timing advance + + // TC-RNTI + rar->TCRNTI_1 = (uint8_t) (ra->rnti >> 8); // 8 MSBs of rnti + rar->TCRNTI_2 = (uint8_t) (ra->rnti & 0xff); // 8 LSBs of rnti + + // UL grant + + ra->msg3_TPC = tpc_command; + + bwp_size = pusch_pdu->bwp_size; + prb_alloc = PRBalloc_to_locationandbandwidth0(ra->msg3_nb_rb, ra->msg3_first_rb, bwp_size); + if (bwp_size>180) { + AssertFatal(1==0,"Initial UBWP larger than 180 currently not supported"); + } + else { + valid_bits = (uint8_t)ceil(log2(bwp_size*(bwp_size+1)>>1)); + } + + if (pusch_pdu->frequency_hopping){ + AssertFatal(1==0,"PUSCH with frequency hopping currently not supported"); + } else { + for (int i=0; imcs_index << 4) | (ra->Msg3_tda_id << 8) | (f_alloc << 12) | (pusch_pdu->frequency_hopping << 26); + + rar->UL_GRANT_1 = (uint8_t) (ul_grant >> 24) & 0x07; + rar->UL_GRANT_2 = (uint8_t) (ul_grant >> 16) & 0xff; + rar->UL_GRANT_3 = (uint8_t) (ul_grant >> 8) & 0xff; + rar->UL_GRANT_4 = (uint8_t) ul_grant & 0xff; + } diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c index cedae99d52..ec42a2f1a1 100644 --- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c +++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c @@ -31,9 +31,9 @@ */ #include "assertions.h" -#include "LAYER2/NR_MAC_gNB/nr_mac_gNB.h" -#include "LAYER2/NR_MAC_gNB/mac_proto.h" -#include "LAYER2/NR_MAC_COMMON/nr_mac_extern.h" +#include "NR_MAC_gNB/nr_mac_gNB.h" +#include "NR_MAC_gNB/mac_proto.h" +#include "NR_MAC_COMMON/nr_mac_extern.h" #include "common/utils/LOG/log.h" #include "common/utils/LOG/vcd_signal_dumper.h" #include "UTIL/OPT/opt.h" diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c index 5233270149..495095ce9e 100644 --- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c +++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c @@ -34,16 +34,24 @@ #include "PHY/defs_nr_common.h" #include "PHY/NR_TRANSPORT/nr_transport_common_proto.h" /*MAC*/ -#include "LAYER2/NR_MAC_COMMON/nr_mac.h" -#include "LAYER2/NR_MAC_gNB/nr_mac_gNB.h" -#include "LAYER2/NR_MAC_COMMON/nr_mac_extern.h" +#include "NR_MAC_COMMON/nr_mac.h" +#include "NR_MAC_gNB/nr_mac_gNB.h" +#include "NR_MAC_COMMON/nr_mac_extern.h" #include "LAYER2/MAC/mac.h" +#include "LAYER2/NR_MAC_gNB/mac_proto.h" /*NFAPI*/ #include "nfapi_nr_interface.h" /*TAG*/ #include "NR_TAG-Id.h" +//////////////////////////////////////////////////////// +/////* DLSCH MAC PDU generation (6.1.2 TS 38.321) *///// +//////////////////////////////////////////////////////// +#define OCTET 8 +#define HALFWORD 16 +#define WORD 32 +//#define SIZE_OF_POINTER sizeof (void *) int nr_generate_dlsch_pdu(module_id_t module_idP, unsigned char *sdus_payload, @@ -53,20 +61,25 @@ int nr_generate_dlsch_pdu(module_id_t module_idP, unsigned char *sdu_lcids, unsigned char drx_cmd, unsigned char *ue_cont_res_id, - unsigned short post_padding){ - + unsigned short post_padding) { gNB_MAC_INST *gNB = RC.nrmac[module_idP]; - NR_MAC_SUBHEADER_FIXED *mac_pdu_ptr = (NR_MAC_SUBHEADER_FIXED *) mac_pdu; - unsigned char * dlsch_buffer_ptr = sdus_payload; + unsigned char *dlsch_buffer_ptr = sdus_payload; uint8_t last_size = 0; int offset = 0, mac_ce_size, i, timing_advance_cmd, tag_id = 0; - - // MAC CEs + // MAC CEs uint8_t mac_header_control_elements[16], *ce_ptr; ce_ptr = &mac_header_control_elements[0]; + uint16_t UE_id = 0; //TODO need to get as a function parameter or need to invoke api to UE_id using module Id and RNTI + gNB_MAC_INST *gNB_mac = RC.nrmac[module_idP]; + NR_UE_list_t *UE_list = &gNB_mac->UE_list; + NR_UE_sched_ctrl_t *ue_sched_ctl = NULL; + //NR_CellGroupConfig_t *config = UE_list->secondaryCellGroup[UE_id]; + ue_sched_ctl = &(UE_list->UE_sched_ctrl[UE_id]); - // 1) Compute MAC CE and related subheaders + NR_mac_stats_t *mac_stats = &(UE_list->mac_stats[UE_id]); + + // 1) Compute MAC CE and related subheaders // DRX command subheader (MAC CE size 0) if (drx_cmd != 255) { @@ -81,57 +94,218 @@ int nr_generate_dlsch_pdu(module_id_t module_idP, // now TA is always send when ta_timer resets regardless of its value // this is done to avoid issues with the timeAlignmentTimer which is // supposed to monitor if the UE received TA or not */ - if (gNB->ta_len){ + if (gNB->ta_len) { mac_pdu_ptr->R = 0; mac_pdu_ptr->LCID = DL_SCH_LCID_TA_COMMAND; //last_size = 1; mac_pdu_ptr++; - // TA MAC CE (1 octet) timing_advance_cmd = gNB->ta_command; - AssertFatal(timing_advance_cmd < 64,"timing_advance_cmd %d > 63\n", timing_advance_cmd); + AssertFatal(timing_advance_cmd < 64, "timing_advance_cmd %d > 63\n", timing_advance_cmd); ((NR_MAC_CE_TA *) ce_ptr)->TA_COMMAND = timing_advance_cmd; //(timing_advance_cmd+31)&0x3f; - if (gNB->tag->tag_Id != 0){ - tag_id = gNB->tag->tag_Id; + + if (gNB->tag->tag_Id != 0) { + tag_id = gNB->tag->tag_Id; ((NR_MAC_CE_TA *) ce_ptr)->TAGID = tag_id; } LOG_D(MAC, "NR MAC CE timing advance command = %d (%d) TAG ID = %d\n", timing_advance_cmd, ((NR_MAC_CE_TA *) ce_ptr)->TA_COMMAND, tag_id); mac_ce_size = sizeof(NR_MAC_CE_TA); - // Copying bytes for MAC CEs to the mac pdu pointer memcpy((void *) mac_pdu_ptr, (void *) ce_ptr, mac_ce_size); ce_ptr += mac_ce_size; mac_pdu_ptr += (unsigned char) mac_ce_size; - } + } + // Contention resolution fixed subheader and MAC CE if (ue_cont_res_id) { mac_pdu_ptr->R = 0; - mac_pdu_ptr->LCID = DL_SCH_LCID_CON_RES_ID; + mac_pdu_ptr->LCID = DL_SCH_LCID_CON_RES_ID; mac_pdu_ptr++; //last_size = 1; - // contention resolution identity MAC ce has a fixed 48 bit size - // this contains the UL CCCH SDU. If UL CCCH SDU is longer than 48 bits, + // this contains the UL CCCH SDU. If UL CCCH SDU is longer than 48 bits, // it contains the first 48 bits of the UL CCCH SDU LOG_T(MAC, "[gNB ][RAPROC] Generate contention resolution msg: %x.%x.%x.%x.%x.%x\n", - ue_cont_res_id[0], ue_cont_res_id[1], ue_cont_res_id[2], - ue_cont_res_id[3], ue_cont_res_id[4], ue_cont_res_id[5]); - + ue_cont_res_id[0], ue_cont_res_id[1], ue_cont_res_id[2], + ue_cont_res_id[3], ue_cont_res_id[4], ue_cont_res_id[5]); // Copying bytes (6 octects) to CEs pointer mac_ce_size = 6; memcpy(ce_ptr, ue_cont_res_id, mac_ce_size); - // Copying bytes for MAC CEs to mac pdu pointer memcpy((void *) mac_pdu_ptr, (void *) ce_ptr, mac_ce_size); ce_ptr += mac_ce_size; mac_pdu_ptr += (unsigned char) mac_ce_size; } + //TS 38.321 Sec 6.1.3.15 TCI State indication for UE Specific PDCCH MAC CE SubPDU generation + if (ue_sched_ctl->UE_mac_ce_ctrl.pdcch_state_ind.is_scheduled) { + //filling subheader + mac_pdu_ptr->R = 0; + mac_pdu_ptr->LCID = DL_SCH_LCID_TCI_STATE_IND_UE_SPEC_PDCCH; + mac_pdu_ptr++; + //Creating the instance of CE structure + NR_TCI_PDCCH nr_UESpec_TCI_StateInd_PDCCH; + //filling the CE structre + nr_UESpec_TCI_StateInd_PDCCH.CoresetId1 = ((ue_sched_ctl->UE_mac_ce_ctrl.pdcch_state_ind.coresetId) & 0xF) >> 1; //extracting MSB 3 bits from LS nibble + nr_UESpec_TCI_StateInd_PDCCH.ServingCellId = (ue_sched_ctl->UE_mac_ce_ctrl.pdcch_state_ind.servingCellId) & 0x1F; //extracting LSB 5 Bits + nr_UESpec_TCI_StateInd_PDCCH.TciStateId = (ue_sched_ctl->UE_mac_ce_ctrl.pdcch_state_ind.tciStateId) & 0x7F; //extracting LSB 7 bits + nr_UESpec_TCI_StateInd_PDCCH.CoresetId2 = (ue_sched_ctl->UE_mac_ce_ctrl.pdcch_state_ind.coresetId) & 0x1; //extracting LSB 1 bit + LOG_D(MAC, "NR MAC CE TCI state indication for UE Specific PDCCH = %d \n", nr_UESpec_TCI_StateInd_PDCCH.TciStateId); + mac_ce_size = sizeof(NR_TCI_PDCCH); + // Copying bytes for MAC CEs to the mac pdu pointer + memcpy((void *) mac_pdu_ptr, (void *)&nr_UESpec_TCI_StateInd_PDCCH, mac_ce_size); + //incrementing the PDU pointer + mac_pdu_ptr += (unsigned char) mac_ce_size; + } - // 2) Generation of DLSCH MAC SDU subheaders + //TS 38.321 Sec 6.1.3.16, SP CSI reporting on PUCCH Activation/Deactivation MAC CE + if (ue_sched_ctl->UE_mac_ce_ctrl.SP_CSI_reporting_pucch.is_scheduled) { + //filling the subheader + mac_pdu_ptr->R = 0; + mac_pdu_ptr->LCID = DL_SCH_LCID_SP_CSI_REP_PUCCH_ACT; + mac_pdu_ptr++; + //creating the instance of CE structure + NR_PUCCH_CSI_REPORTING nr_PUCCH_CSI_reportingActDeact; + //filling the CE structure + nr_PUCCH_CSI_reportingActDeact.BWP_Id = (ue_sched_ctl->UE_mac_ce_ctrl.SP_CSI_reporting_pucch.bwpId) & 0x3; //extracting LSB 2 bibs + nr_PUCCH_CSI_reportingActDeact.ServingCellId = (ue_sched_ctl->UE_mac_ce_ctrl.SP_CSI_reporting_pucch.servingCellId) & 0x1F; //extracting LSB 5 bits + nr_PUCCH_CSI_reportingActDeact.S0 = ue_sched_ctl->UE_mac_ce_ctrl.SP_CSI_reporting_pucch.s0tos3_actDeact[0]; + nr_PUCCH_CSI_reportingActDeact.S1 = ue_sched_ctl->UE_mac_ce_ctrl.SP_CSI_reporting_pucch.s0tos3_actDeact[1]; + nr_PUCCH_CSI_reportingActDeact.S2 = ue_sched_ctl->UE_mac_ce_ctrl.SP_CSI_reporting_pucch.s0tos3_actDeact[2]; + nr_PUCCH_CSI_reportingActDeact.S3 = ue_sched_ctl->UE_mac_ce_ctrl.SP_CSI_reporting_pucch.s0tos3_actDeact[3]; + nr_PUCCH_CSI_reportingActDeact.R2 = 0; + mac_ce_size = sizeof(NR_PUCCH_CSI_REPORTING); + // Copying MAC CE data to the mac pdu pointer + memcpy((void *) mac_pdu_ptr, (void *)&nr_PUCCH_CSI_reportingActDeact, mac_ce_size); + //incrementing the PDU pointer + mac_pdu_ptr += (unsigned char) mac_ce_size; + } + + //TS 38.321 Sec 6.1.3.14, TCI State activation/deactivation for UE Specific PDSCH MAC CE + if (ue_sched_ctl->UE_mac_ce_ctrl.pdsch_TCI_States_ActDeact.is_scheduled) { + //Computing the number of octects to be allocated for Flexible array member + //of MAC CE structure + uint8_t num_octects = (ue_sched_ctl->UE_mac_ce_ctrl.pdsch_TCI_States_ActDeact.highestTciStateActivated) / 8 + 1; //Calculating the number of octects for allocating the memory + //filling the subheader + ((NR_MAC_SUBHEADER_SHORT *) mac_pdu_ptr)->R = 0; + ((NR_MAC_SUBHEADER_SHORT *) mac_pdu_ptr)->F = 0; + ((NR_MAC_SUBHEADER_SHORT *) mac_pdu_ptr)->LCID = DL_SCH_LCID_TCI_STATE_ACT_UE_SPEC_PDSCH; + ((NR_MAC_SUBHEADER_SHORT *) mac_pdu_ptr)->L = sizeof(NR_TCI_PDSCH_APERIODIC_CSI) + num_octects * sizeof(uint8_t); + last_size = 2; + //Incrementing the PDU pointer + mac_pdu_ptr += last_size; + //allocating memory for CE Structure + NR_TCI_PDSCH_APERIODIC_CSI *nr_UESpec_TCI_StateInd_PDSCH = (NR_TCI_PDSCH_APERIODIC_CSI *)malloc(sizeof(NR_TCI_PDSCH_APERIODIC_CSI) + num_octects * sizeof(uint8_t)); + //initializing to zero + memset((void *)nr_UESpec_TCI_StateInd_PDSCH, 0, sizeof(NR_TCI_PDSCH_APERIODIC_CSI) + num_octects * sizeof(uint8_t)); + //filling the CE Structure + nr_UESpec_TCI_StateInd_PDSCH->BWP_Id = (ue_sched_ctl->UE_mac_ce_ctrl.pdsch_TCI_States_ActDeact.bwpId) & 0x3; //extracting LSB 2 Bits + nr_UESpec_TCI_StateInd_PDSCH->ServingCellId = (ue_sched_ctl->UE_mac_ce_ctrl.pdsch_TCI_States_ActDeact.servingCellId) & 0x1F; //extracting LSB 5 bits + + for(i = 0; i < (num_octects * 8); i++) { + if(ue_sched_ctl->UE_mac_ce_ctrl.pdsch_TCI_States_ActDeact.tciStateActDeact[i]) + nr_UESpec_TCI_StateInd_PDSCH->T[i / 8] = nr_UESpec_TCI_StateInd_PDSCH->T[i / 8] | (1 << (i % 8)); + } + + mac_ce_size = sizeof(NR_TCI_PDSCH_APERIODIC_CSI) + num_octects * sizeof(uint8_t); + //Copying bytes for MAC CEs to the mac pdu pointer + memcpy((void *) mac_pdu_ptr, (void *)nr_UESpec_TCI_StateInd_PDSCH, mac_ce_size); + //incrementing the mac pdu pointer + mac_pdu_ptr += (unsigned char) mac_ce_size; + //freeing the allocated memory + free(nr_UESpec_TCI_StateInd_PDSCH); + } + + //TS38.321 Sec 6.1.3.13 Aperiodic CSI Trigger State Subselection MAC CE + if (ue_sched_ctl->UE_mac_ce_ctrl.aperi_CSI_trigger.is_scheduled) { + //Computing the number of octects to be allocated for Flexible array member + //of MAC CE structure + uint8_t num_octects = (ue_sched_ctl->UE_mac_ce_ctrl.aperi_CSI_trigger.highestTriggerStateSelected) / 8 + 1; //Calculating the number of octects for allocating the memory + //filling the subheader + ((NR_MAC_SUBHEADER_SHORT *) mac_pdu_ptr)->R = 0; + ((NR_MAC_SUBHEADER_SHORT *) mac_pdu_ptr)->F = 0; + ((NR_MAC_SUBHEADER_SHORT *) mac_pdu_ptr)->LCID = DL_SCH_LCID_APERIODIC_CSI_TRI_STATE_SUBSEL; + ((NR_MAC_SUBHEADER_SHORT *) mac_pdu_ptr)->L = sizeof(NR_TCI_PDSCH_APERIODIC_CSI) + num_octects * sizeof(uint8_t); + last_size = 2; + //Incrementing the PDU pointer + mac_pdu_ptr += last_size; + //allocating memory for CE structure + NR_TCI_PDSCH_APERIODIC_CSI *nr_Aperiodic_CSI_Trigger = (NR_TCI_PDSCH_APERIODIC_CSI *)malloc(sizeof(NR_TCI_PDSCH_APERIODIC_CSI) + num_octects * sizeof(uint8_t)); + //initializing to zero + memset((void *)nr_Aperiodic_CSI_Trigger, 0, sizeof(NR_TCI_PDSCH_APERIODIC_CSI) + num_octects * sizeof(uint8_t)); + //filling the CE Structure + nr_Aperiodic_CSI_Trigger->BWP_Id = (ue_sched_ctl->UE_mac_ce_ctrl.aperi_CSI_trigger.bwpId) & 0x3; //extracting LSB 2 bits + nr_Aperiodic_CSI_Trigger->ServingCellId = (ue_sched_ctl->UE_mac_ce_ctrl.aperi_CSI_trigger.servingCellId) & 0x1F; //extracting LSB 5 bits + nr_Aperiodic_CSI_Trigger->R = 0; + + for(i = 0; i < (num_octects * 8); i++) { + if(ue_sched_ctl->UE_mac_ce_ctrl.aperi_CSI_trigger.triggerStateSelection[i]) + nr_Aperiodic_CSI_Trigger->T[i / 8] = nr_Aperiodic_CSI_Trigger->T[i / 8] | (1 << (i % 8)); + } + + mac_ce_size = sizeof(NR_TCI_PDSCH_APERIODIC_CSI) + num_octects * sizeof(uint8_t); + // Copying bytes for MAC CEs to the mac pdu pointer + memcpy((void *) mac_pdu_ptr, (void *)nr_Aperiodic_CSI_Trigger, mac_ce_size); + //incrementing the mac pdu pointer + mac_pdu_ptr += (unsigned char) mac_ce_size; + //freeing the allocated memory + free(nr_Aperiodic_CSI_Trigger); + } + + if (ue_sched_ctl->UE_mac_ce_ctrl.sp_zp_csi_rs.is_scheduled) { + ((NR_MAC_SUBHEADER_FIXED *) mac_pdu_ptr)->R = 0; + ((NR_MAC_SUBHEADER_FIXED *) mac_pdu_ptr)->LCID = DL_SCH_LCID_SP_ZP_CSI_RS_RES_SET_ACT; + mac_pdu_ptr++; + ((NR_MAC_CE_SP_ZP_CSI_RS_RES_SET *) mac_pdu_ptr)->A_D = ue_sched_ctl->UE_mac_ce_ctrl.sp_zp_csi_rs.act_deact; + ((NR_MAC_CE_SP_ZP_CSI_RS_RES_SET *) mac_pdu_ptr)->CELLID = ue_sched_ctl->UE_mac_ce_ctrl.sp_zp_csi_rs.serv_cell_id & 0x1F; //5 bits + ((NR_MAC_CE_SP_ZP_CSI_RS_RES_SET *) mac_pdu_ptr)->BWPID = ue_sched_ctl->UE_mac_ce_ctrl.sp_zp_csi_rs.bwpid & 0x3; //2 bits + ((NR_MAC_CE_SP_ZP_CSI_RS_RES_SET *) mac_pdu_ptr)->CSIRS_RSC_ID = ue_sched_ctl->UE_mac_ce_ctrl.sp_zp_csi_rs.rsc_id & 0xF; //4 bits + ((NR_MAC_CE_SP_ZP_CSI_RS_RES_SET *) mac_pdu_ptr)->R = 0; + LOG_D(MAC, "NR MAC CE of ZP CSIRS Serv cell ID = %d BWPID= %d Rsc set ID = %d\n", ue_sched_ctl->UE_mac_ce_ctrl.sp_zp_csi_rs.serv_cell_id, ue_sched_ctl->UE_mac_ce_ctrl.sp_zp_csi_rs.bwpid, + ue_sched_ctl->UE_mac_ce_ctrl.sp_zp_csi_rs.rsc_id); + mac_ce_size = sizeof(NR_MAC_CE_SP_ZP_CSI_RS_RES_SET); + mac_pdu_ptr += (unsigned char) mac_ce_size; + } + + if (ue_sched_ctl->UE_mac_ce_ctrl.csi_im.is_scheduled) { + mac_pdu_ptr->R = 0; + mac_pdu_ptr->LCID = DL_SCH_LCID_SP_CSI_RS_CSI_IM_RES_SET_ACT; + mac_pdu_ptr++; + CSI_RS_CSI_IM_ACT_DEACT_MAC_CE csi_rs_im_act_deact_ce; + csi_rs_im_act_deact_ce.A_D = ue_sched_ctl->UE_mac_ce_ctrl.csi_im.act_deact; + csi_rs_im_act_deact_ce.SCID = ue_sched_ctl->UE_mac_ce_ctrl.csi_im.serv_cellid & 0x3F;//gNB_PHY -> ssb_pdu.ssb_pdu_rel15.PhysCellId; + csi_rs_im_act_deact_ce.BWP_ID = ue_sched_ctl->UE_mac_ce_ctrl.csi_im.bwp_id; + csi_rs_im_act_deact_ce.R1 = 0; + csi_rs_im_act_deact_ce.IM = ue_sched_ctl->UE_mac_ce_ctrl.csi_im.im;// IF set CSI IM Rsc id will presesent else CSI IM RSC ID is abscent + csi_rs_im_act_deact_ce.SP_CSI_RSID = ue_sched_ctl->UE_mac_ce_ctrl.csi_im.nzp_csi_rsc_id; + + if ( csi_rs_im_act_deact_ce.IM ) { //is_scheduled if IM is 1 else this field will not present + csi_rs_im_act_deact_ce.R2 = 0; + csi_rs_im_act_deact_ce.SP_CSI_IMID = ue_sched_ctl->UE_mac_ce_ctrl.csi_im.csi_im_rsc_id; + mac_ce_size = sizeof ( csi_rs_im_act_deact_ce ) - sizeof ( csi_rs_im_act_deact_ce.TCI_STATE ); + } else { + mac_ce_size = sizeof ( csi_rs_im_act_deact_ce ) - sizeof ( csi_rs_im_act_deact_ce.TCI_STATE ) - 1; + } + + memcpy ((void *) mac_pdu_ptr, (void *) & ( csi_rs_im_act_deact_ce), mac_ce_size); + mac_pdu_ptr += (unsigned char) mac_ce_size; + + if (csi_rs_im_act_deact_ce.A_D ) { //Following IE is_scheduled only if A/D is 1 + mac_ce_size = sizeof ( struct TCI_S); + + for ( i = 0; i < ue_sched_ctl->UE_mac_ce_ctrl.csi_im.nb_tci_resource_set_id; i++) { + csi_rs_im_act_deact_ce.TCI_STATE.R = 0; + csi_rs_im_act_deact_ce.TCI_STATE.TCI_STATE_ID = ue_sched_ctl->UE_mac_ce_ctrl.csi_im.tci_state_id [i] & 0x7F; + memcpy ((void *) mac_pdu_ptr, (void *) & (csi_rs_im_act_deact_ce.TCI_STATE), mac_ce_size); + mac_pdu_ptr += (unsigned char) mac_ce_size; + } + } + } + + // 2) Generation of DLSCH MAC subPDUs including subheaders and MAC SDUs for (i = 0; i < num_sdus; i++) { LOG_D(MAC, "[gNB] Generate DLSCH header num sdu %d len sdu %d\n", num_sdus, sdu_lengths[i]); @@ -151,31 +325,93 @@ int nr_generate_dlsch_pdu(module_id_t module_idP, } mac_pdu_ptr += last_size; - - // 3) cycle through SDUs, compute each relevant and place dlsch_buffer in + // 3) cycle through SDUs, compute each relevant and place dlsch_buffer in memcpy((void *) mac_pdu_ptr, (void *) dlsch_buffer_ptr, sdu_lengths[i]); - dlsch_buffer_ptr+= sdu_lengths[i]; + dlsch_buffer_ptr += sdu_lengths[i]; mac_pdu_ptr += sdu_lengths[i]; + + mac_stats->lc_bytes_tx[sdu_lcids[i]] += sdu_lengths[i]; } // 4) Compute final offset for padding - if (post_padding > 0) { + if (post_padding > 0) { ((NR_MAC_SUBHEADER_FIXED *) mac_pdu_ptr)->R = 0; ((NR_MAC_SUBHEADER_FIXED *) mac_pdu_ptr)->LCID = DL_SCH_LCID_PADDING; mac_pdu_ptr++; - - } else { + } else { // no MAC subPDU with padding } // compute final offset offset = ((unsigned char *) mac_pdu_ptr - mac_pdu); - //printf("Offset %d \n", ((unsigned char *) mac_pdu_ptr - mac_pdu)); - return offset; } +void handle_nr_uci(NR_UL_IND_t *UL_info, NR_UE_sched_ctrl_t *sched_ctrl, NR_mac_stats_t *stats, int target_snrx10) { + // TODO + int max_harq_rounds = 4; // TODO define macro + int num_ucis = UL_info->uci_ind.num_ucis; + nfapi_nr_uci_t *uci_list = UL_info->uci_ind.uci_list; + + for (int i = 0; i < num_ucis; i++) { + switch (uci_list[i].pdu_type) { + case NFAPI_NR_UCI_PDCCH_PDU_TYPE: break; + + case NFAPI_NR_UCI_FORMAT_0_1_PDU_TYPE: { + //if (get_softmodem_params()->phy_test == 0) { + nfapi_nr_uci_pucch_pdu_format_0_1_t *uci_pdu = &uci_list[i].pucch_pdu_format_0_1; + // handle harq + int harq_idx_s = 0; + // tpc (power control) + sched_ctrl->tpc1 = nr_get_tpc(target_snrx10,uci_pdu->ul_cqi,30); + // iterate over received harq bits + for (int harq_bit = 0; harq_bit < uci_pdu->harq->num_harq; harq_bit++) { + // search for the right harq process + for (int harq_idx = harq_idx_s; harq_idx < NR_MAX_NB_HARQ_PROCESSES; harq_idx++) { + // if the gNB received ack with a good confidence + if ((UL_info->slot-1) == sched_ctrl->harq_processes[harq_idx].feedback_slot) { + if ((uci_pdu->harq->harq_list[harq_bit].harq_value == 1) && + (uci_pdu->harq->harq_confidence_level == 0)) { + // toggle NDI and reset round + sched_ctrl->harq_processes[harq_idx].ndi ^= 1; + sched_ctrl->harq_processes[harq_idx].round = 0; + } + else + sched_ctrl->harq_processes[harq_idx].round++; + sched_ctrl->harq_processes[harq_idx].is_waiting = 0; + harq_idx_s = harq_idx + 1; + // if the max harq rounds was reached + if (sched_ctrl->harq_processes[harq_idx].round == max_harq_rounds) { + sched_ctrl->harq_processes[harq_idx].ndi ^= 1; + sched_ctrl->harq_processes[harq_idx].round = 0; + stats->dlsch_errors++; + } + break; + } + // if feedback slot processing is aborted + else if (((UL_info->slot-1) > sched_ctrl->harq_processes[harq_idx].feedback_slot) && + (sched_ctrl->harq_processes[harq_idx].is_waiting)) { + sched_ctrl->harq_processes[harq_idx].round++; + if (sched_ctrl->harq_processes[harq_idx].round == max_harq_rounds) { + sched_ctrl->harq_processes[harq_idx].ndi ^= 1; + sched_ctrl->harq_processes[harq_idx].round = 0; + } + sched_ctrl->harq_processes[harq_idx].is_waiting = 0; + } + } + } + //} + break; + } + + case NFAPI_NR_UCI_FORMAT_2_3_4_PDU_TYPE: break; + } + } + + UL_info->uci_ind.num_ucis = 0; +} + /* functionalities of this function have been moved to nr_schedule_uss_dlsch_phytest */ -void nr_schedule_ue_spec(module_id_t module_idP, frame_t frameP, sub_frame_t slotP){ +void nr_schedule_ue_spec(module_id_t module_idP, frame_t frameP, sub_frame_t slotP) { } diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c index ebe2afeeaf..b22fb0ac22 100644 --- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c +++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c @@ -30,8 +30,8 @@ #include "nr_mac_gNB.h" #include "SCHED_NR/sched_nr.h" -#include "mac_proto.h" -#include "nr_mac_common.h" +#include "NR_MAC_gNB/mac_proto.h" +#include "LAYER2/NR_MAC_COMMON/nr_mac_common.h" #include "PHY/NR_TRANSPORT/nr_dlsch.h" #include "PHY/NR_TRANSPORT/nr_dci.h" #include "executables/nr-softmodem.h" @@ -53,7 +53,10 @@ #include "NR_SearchSpace.h" #include "NR_ControlResourceSet.h" +//#define UL_HARQ_PRINT extern RAN_CONTEXT_t RC; + +const uint8_t nr_rv_round_map[4] = {0, 2, 1, 3}; //#define ENABLE_MAC_PAYLOAD_DEBUG 1 //uint8_t mac_pdu[MAX_NR_DLSCH_PAYLOAD_BYTES]; @@ -247,9 +250,6 @@ void nr_schedule_css_dlsch_phytest(module_id_t module_idP, } - - - int configure_fapi_dl_pdu(int Mod_idP, int *CCEIndex, nfapi_nr_dl_tti_request_t *dl_tti_req, @@ -258,14 +258,17 @@ int configure_fapi_dl_pdu(int Mod_idP, uint16_t *rbSize, uint16_t *rbStart) { - gNB_MAC_INST *nr_mac = RC.nrmac[Mod_idP]; NR_COMMON_channels_t *cc = nr_mac->common_channels; NR_ServingCellConfigCommon_t *scc = cc->ServingCellConfigCommon; nfapi_nr_dl_tti_request_pdu_t *dl_tti_pdcch_pdu; nfapi_nr_dl_tti_request_pdu_t *dl_tti_pdsch_pdu; - int TBS, bwp_id = 1, UE_id = 0; + + int TBS; + int bwp_id=1; + int UE_id = 0; + NR_UE_list_t *UE_list = &RC.nrmac[Mod_idP]->UE_list; NR_CellGroupConfig_t *secondaryCellGroup = UE_list->secondaryCellGroup[UE_id]; @@ -274,6 +277,9 @@ int configure_fapi_dl_pdu(int Mod_idP, secondaryCellGroup->spCellConfig->spCellConfigDedicated->downlinkBWP_ToAddModList->list.count); NR_BWP_Downlink_t *bwp=secondaryCellGroup->spCellConfig->spCellConfigDedicated->downlinkBWP_ToAddModList->list.array[bwp_id-1]; + AssertFatal(bwp->bwp_Dedicated->pdcch_Config->choice.setup->searchSpacesToAddModList!=NULL,"searchPsacesToAddModList is null\n"); + AssertFatal(bwp->bwp_Dedicated->pdcch_Config->choice.setup->searchSpacesToAddModList->list.count>0, + "searchPsacesToAddModList is empty\n"); dl_tti_pdcch_pdu = &dl_tti_req->dl_tti_pdu_list[dl_tti_req->nPDUs]; memset((void*)dl_tti_pdcch_pdu,0,sizeof(nfapi_nr_dl_tti_request_pdu_t)); @@ -302,16 +308,17 @@ int configure_fapi_dl_pdu(int Mod_idP, pdsch_pdu_rel15->NrOfCodewords = 1; int mcs = (mcsIndex!=NULL) ? *mcsIndex : 9; + int current_harq_pid = UE_list->UE_sched_ctrl[UE_id].current_harq_pid; pdsch_pdu_rel15->targetCodeRate[0] = nr_get_code_rate_dl(mcs,0); pdsch_pdu_rel15->qamModOrder[0] = 2; pdsch_pdu_rel15->mcsIndex[0] = mcs; pdsch_pdu_rel15->mcsTable[0] = 0; - pdsch_pdu_rel15->rvIndex[0] = 0; + pdsch_pdu_rel15->rvIndex[0] = nr_rv_round_map[UE_list->UE_sched_ctrl[UE_id].harq_processes[current_harq_pid].round]; pdsch_pdu_rel15->dataScramblingId = *scc->physCellId; pdsch_pdu_rel15->nrOfLayers = 1; pdsch_pdu_rel15->transmissionScheme = 0; pdsch_pdu_rel15->refPoint = 0; // Point A - + UE_list->mac_stats[UE_id].dlsch_rounds[UE_list->UE_sched_ctrl[UE_id].harq_processes[current_harq_pid].round]++; pdsch_pdu_rel15->dmrsConfigType = bwp->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->dmrs_Type == NULL ? 0 : 1; pdsch_pdu_rel15->dlDmrsScramblingId = *scc->physCellId; pdsch_pdu_rel15->SCID = 0; @@ -321,7 +328,7 @@ int configure_fapi_dl_pdu(int Mod_idP, pdsch_pdu_rel15->rbStart = (rbStart!=NULL) ? *rbStart : 0; pdsch_pdu_rel15->rbSize = (rbSize!=NULL) ? *rbSize : pdsch_pdu_rel15->BWPSize; pdsch_pdu_rel15->VRBtoPRBMapping = 1; // non-interleaved, check if this is ok for initialBWP - // choose shortest PDSCH + int startSymbolAndLength=0; int time_domain_assignment=2; int StartSymbolIndex,NrOfSymbols; @@ -337,62 +344,104 @@ int configure_fapi_dl_pdu(int Mod_idP, scc->dmrs_TypeA_Position, pdsch_pdu_rel15->NrOfSymbols); - dci_pdu_rel15_t dci_pdu_rel15[MAX_DCI_CORESET]; + dci_pdu_rel15_t *dci_pdu_rel15 = calloc(MAX_DCI_CORESET,sizeof(dci_pdu_rel15_t)); - dci_pdu_rel15[0].frequency_domain_assignment = PRBalloc_to_locationandbandwidth0(pdsch_pdu_rel15->rbSize, - pdsch_pdu_rel15->rbStart, - NRRIV2BW(bwp->bwp_Common->genericParameters.locationAndBandwidth,275)); - dci_pdu_rel15[0].time_domain_assignment = time_domain_assignment; // row index used here instead of SLIV; - dci_pdu_rel15[0].vrb_to_prb_mapping = 1; + // bwp indicator + int n_dl_bwp = secondaryCellGroup->spCellConfig->spCellConfigDedicated->downlinkBWP_ToAddModList->list.count; + if (n_dl_bwp < 4) + dci_pdu_rel15[0].bwp_indicator.val = bwp_id; + else + dci_pdu_rel15[0].bwp_indicator.val = bwp_id - 1; // as per table 7.3.1.1.2-1 in 38.212 + // frequency domain assignment + if (bwp->bwp_Dedicated->pdsch_Config->choice.setup->resourceAllocation==NR_PDSCH_Config__resourceAllocation_resourceAllocationType1) + dci_pdu_rel15[0].frequency_domain_assignment.val = PRBalloc_to_locationandbandwidth0(pdsch_pdu_rel15->rbSize, + pdsch_pdu_rel15->rbStart, + NRRIV2BW(bwp->bwp_Common->genericParameters.locationAndBandwidth,275)); + else + AssertFatal(1==0,"Only frequency resource allocation type 1 is currently supported\n"); + // time domain assignment + dci_pdu_rel15[0].time_domain_assignment.val = time_domain_assignment; // row index used here instead of SLIV; + // mcs and rv dci_pdu_rel15[0].mcs = pdsch_pdu_rel15->mcsIndex[0]; - dci_pdu_rel15[0].tb_scaling = 1; - - dci_pdu_rel15[0].ra_preamble_index = 25; - dci_pdu_rel15[0].format_indicator = 1; - dci_pdu_rel15[0].ndi = 1; - dci_pdu_rel15[0].rv = 0; - dci_pdu_rel15[0].harq_pid = 0; - dci_pdu_rel15[0].dai = (pucch_sched->dai_c-1)&3; - dci_pdu_rel15[0].tpc = 2; + dci_pdu_rel15[0].rv = pdsch_pdu_rel15->rvIndex[0]; + // harq pid and ndi + dci_pdu_rel15[0].harq_pid = current_harq_pid; + dci_pdu_rel15[0].ndi = UE_list->UE_sched_ctrl[UE_id].harq_processes[current_harq_pid].ndi; + // DAI + dci_pdu_rel15[0].dai[0].val = (pucch_sched->dai_c-1)&3; + + // TPC for PUCCH + dci_pdu_rel15[0].tpc = UE_list->UE_sched_ctrl[UE_id].tpc1; // table 7.2.1-1 in 38.213 + // PUCCH resource indicator dci_pdu_rel15[0].pucch_resource_indicator = pucch_sched->resource_indicator; - dci_pdu_rel15[0].pdsch_to_harq_feedback_timing_indicator = pucch_sched->timing_indicator; - + // PDSCH to HARQ TI + dci_pdu_rel15[0].pdsch_to_harq_feedback_timing_indicator.val = pucch_sched->timing_indicator; + UE_list->UE_sched_ctrl[UE_id].harq_processes[current_harq_pid].feedback_slot = pucch_sched->ul_slot; + UE_list->UE_sched_ctrl[UE_id].harq_processes[current_harq_pid].is_waiting = 1; + // antenna ports + dci_pdu_rel15[0].antenna_ports.val = 0; // nb of cdm groups w/o data 1 and dmrs port 0 + // dmrs sequence initialization + dci_pdu_rel15[0].dmrs_sequence_initialization.val = pdsch_pdu_rel15->SCID; LOG_D(MAC, "[gNB scheduler phytest] DCI type 1 payload: freq_alloc %d (%d,%d,%d), time_alloc %d, vrb to prb %d, mcs %d tb_scaling %d ndi %d rv %d\n", - dci_pdu_rel15[0].frequency_domain_assignment, + dci_pdu_rel15[0].frequency_domain_assignment.val, pdsch_pdu_rel15->rbStart, pdsch_pdu_rel15->rbSize, NRRIV2BW(bwp->bwp_Common->genericParameters.locationAndBandwidth,275), - dci_pdu_rel15[0].time_domain_assignment, - dci_pdu_rel15[0].vrb_to_prb_mapping, + dci_pdu_rel15[0].time_domain_assignment.val, + dci_pdu_rel15[0].vrb_to_prb_mapping.val, dci_pdu_rel15[0].mcs, dci_pdu_rel15[0].tb_scaling, dci_pdu_rel15[0].ndi, dci_pdu_rel15[0].rv); - - nr_configure_pdcch(pdcch_pdu_rel15, - 1, // ue-specific - scc, - bwp); - - pdcch_pdu_rel15->numDlDci = 1; - pdcch_pdu_rel15->AggregationLevel[0] = 4; - pdcch_pdu_rel15->RNTI[0]=UE_list->rnti[0]; - pdcch_pdu_rel15->CceIndex[0] = CCEIndex[0]; - pdcch_pdu_rel15->beta_PDCCH_1_0[0]=0; - pdcch_pdu_rel15->powerControlOffsetSS[0]=1; - + + NR_SearchSpace_t *ss; + int target_ss = NR_SearchSpace__searchSpaceType_PR_ue_Specific; + + AssertFatal(bwp->bwp_Dedicated->pdcch_Config->choice.setup->searchSpacesToAddModList!=NULL,"searchPsacesToAddModList is null\n"); + AssertFatal(bwp->bwp_Dedicated->pdcch_Config->choice.setup->searchSpacesToAddModList->list.count>0, + "searchPsacesToAddModList is empty\n"); + + int found=0; + + for (int i=0;ibwp_Dedicated->pdcch_Config->choice.setup->searchSpacesToAddModList->list.count;i++) { + ss=bwp->bwp_Dedicated->pdcch_Config->choice.setup->searchSpacesToAddModList->list.array[i]; + AssertFatal(ss->controlResourceSetId != NULL,"ss->controlResourceSetId is null\n"); + AssertFatal(ss->searchSpaceType != NULL,"ss->searchSpaceType is null\n"); + if (ss->searchSpaceType->present == target_ss) { + found=1; + break; + } + } + AssertFatal(found==1,"Couldn't find an adequate searchspace\n"); + + int ret = nr_configure_pdcch(nr_mac, + pdcch_pdu_rel15, + UE_list->rnti[UE_id], + 1, // ue-specific + ss, + scc, + bwp); + if (ret < 0) { + LOG_I(MAC,"CCE list not empty, couldn't schedule PDSCH\n"); + free(dci_pdu_rel15); + return (0); + } + int dci_formats[2]; int rnti_types[2]; - dci_formats[0] = NR_DL_DCI_FORMAT_1_0; + if (ss->searchSpaceType->choice.ue_Specific->dci_Formats) + dci_formats[0] = NR_DL_DCI_FORMAT_1_1; + else + dci_formats[0] = NR_DL_DCI_FORMAT_1_0; + rnti_types[0] = NR_RNTI_C; - pdcch_pdu_rel15->PayloadSizeBits[0]=nr_dci_size(dci_formats[0],rnti_types[0],pdcch_pdu_rel15->BWPSize); - fill_dci_pdu_rel15(pdcch_pdu_rel15,&dci_pdu_rel15[0],dci_formats,rnti_types); + fill_dci_pdu_rel15(scc,secondaryCellGroup,pdcch_pdu_rel15,dci_pdu_rel15,dci_formats,rnti_types,pdsch_pdu_rel15->BWPSize,bwp_id); - LOG_D(MAC, "DCI params: rnti %d, rnti_type %d, dci_format %d\n \ + LOG_D(MAC, "DCI params: rnti %x, rnti_type %d, dci_format %d\n \ coreset params: FreqDomainResource %llx, start_symbol %d n_symb %d\n", - pdcch_pdu_rel15->RNTI[0], + pdcch_pdu_rel15->dci_pdu.RNTI[0], rnti_types[0], dci_formats[0], (unsigned long long)pdcch_pdu_rel15->FreqDomainResource, @@ -400,10 +449,13 @@ int configure_fapi_dl_pdu(int Mod_idP, pdcch_pdu_rel15->DurationSymbols); int x_Overhead = 0; // should be 0 for initialBWP - nr_get_tbs_dl(&dl_tti_pdsch_pdu->pdsch_pdu, x_Overhead); + nr_get_tbs_dl(&dl_tti_pdsch_pdu->pdsch_pdu,x_Overhead,pdsch_pdu_rel15->numDmrsCdmGrpsNoData,0); // Hardcode it for now TBS = dl_tti_pdsch_pdu->pdsch_pdu.pdsch_pdu_rel15.TBSize[0]; + if (UE_list->UE_sched_ctrl[UE_id].harq_processes[current_harq_pid].round==0) + UE_list->mac_stats[UE_id].dlsch_total_bytes += TBS; + LOG_D(MAC, "DLSCH PDU: start PRB %d n_PRB %d startSymbolAndLength %d start symbol %d nb_symbols %d nb_layers %d nb_codewords %d mcs %d TBS: %d\n", pdsch_pdu_rel15->rbStart, pdsch_pdu_rel15->rbSize, @@ -414,38 +466,84 @@ int configure_fapi_dl_pdu(int Mod_idP, pdsch_pdu_rel15->NrOfCodewords, pdsch_pdu_rel15->mcsIndex[0], TBS); + + free(dci_pdu_rel15); return TBS; //Return TBS in bytes } -void config_uldci(NR_BWP_Uplink_t *ubwp,nfapi_nr_pusch_pdu_t *pusch_pdu,nfapi_nr_dl_tti_pdcch_pdu_rel15_t *pdcch_pdu_rel15, dci_pdu_rel15_t *dci_pdu_rel15, int *dci_formats, int *rnti_types) { +void config_uldci(NR_BWP_Uplink_t *ubwp, + nfapi_nr_pusch_pdu_t *pusch_pdu, + nfapi_nr_dl_tti_pdcch_pdu_rel15_t *pdcch_pdu_rel15, + dci_pdu_rel15_t *dci_pdu_rel15, + int *dci_formats, int *rnti_types, + int time_domain_assignment, uint8_t tpc, + int n_ubwp, int bwp_id) { - dci_pdu_rel15->frequency_domain_assignment = PRBalloc_to_locationandbandwidth0(pusch_pdu->rb_size, - pusch_pdu->rb_start, - NRRIV2BW(ubwp->bwp_Common->genericParameters.locationAndBandwidth,275)); + switch(dci_formats[(pdcch_pdu_rel15->numDlDci)-1]) { + case NR_UL_DCI_FORMAT_0_0: + dci_pdu_rel15->frequency_domain_assignment.val = PRBalloc_to_locationandbandwidth0(pusch_pdu->rb_size, + pusch_pdu->rb_start, + NRRIV2BW(ubwp->bwp_Common->genericParameters.locationAndBandwidth,275)); + + dci_pdu_rel15->time_domain_assignment.val = time_domain_assignment; + dci_pdu_rel15->frequency_hopping_flag.val = pusch_pdu->frequency_hopping; + dci_pdu_rel15->mcs = 9; + + dci_pdu_rel15->format_indicator = 0; + dci_pdu_rel15->ndi = 1; + dci_pdu_rel15->rv = 0; + dci_pdu_rel15->harq_pid = 0; + dci_pdu_rel15->tpc = 1; + break; + case NR_UL_DCI_FORMAT_0_1: + dci_pdu_rel15->ndi = pusch_pdu->pusch_data.new_data_indicator; + dci_pdu_rel15->rv = pusch_pdu->pusch_data.rv_index; + dci_pdu_rel15->harq_pid = pusch_pdu->pusch_data.harq_process_id; + dci_pdu_rel15->frequency_hopping_flag.val = pusch_pdu->frequency_hopping; + dci_pdu_rel15->dai[0].val = 0; //TODO + // bwp indicator + if (n_ubwp < 4) + dci_pdu_rel15->bwp_indicator.val = bwp_id; + else + dci_pdu_rel15->bwp_indicator.val = bwp_id - 1; // as per table 7.3.1.1.2-1 in 38.212 + // frequency domain assignment + if (ubwp->bwp_Dedicated->pusch_Config->choice.setup->resourceAllocation==NR_PUSCH_Config__resourceAllocation_resourceAllocationType1) + dci_pdu_rel15->frequency_domain_assignment.val = PRBalloc_to_locationandbandwidth0(pusch_pdu->rb_size, + pusch_pdu->rb_start, + NRRIV2BW(ubwp->bwp_Common->genericParameters.locationAndBandwidth,275)); + else + AssertFatal(1==0,"Only frequency resource allocation type 1 is currently supported\n"); + // time domain assignment + dci_pdu_rel15->time_domain_assignment.val = time_domain_assignment; + // mcs + dci_pdu_rel15->mcs = pusch_pdu->mcs_index; + // tpc command for pusch + dci_pdu_rel15->tpc = tpc; + // SRS resource indicator + if (ubwp->bwp_Dedicated->pusch_Config->choice.setup->txConfig != NULL) { + if (*ubwp->bwp_Dedicated->pusch_Config->choice.setup->txConfig == NR_PUSCH_Config__txConfig_codebook) + dci_pdu_rel15->srs_resource_indicator.val = 0; // taking resource 0 for SRS + else + AssertFatal(1==0,"Non Codebook configuration non supported\n"); + } + // Antenna Ports + dci_pdu_rel15->antenna_ports.val = 0; // TODO for now it is hardcoded, it should depends on cdm group no data and rank + // DMRS sequence initialization + dci_pdu_rel15->dmrs_sequence_initialization.val = pusch_pdu->scid; + break; + default : + AssertFatal(1==0,"Valid UL formats are 0_0 and 0_1 \n"); + } - dci_pdu_rel15->time_domain_assignment = 2; // row index used here instead of SLIV; - dci_pdu_rel15->frequency_hopping_flag = 0; - dci_pdu_rel15->mcs = 9; - - dci_pdu_rel15->format_indicator = 0; - dci_pdu_rel15->ndi = 1; - dci_pdu_rel15->rv = 0; - dci_pdu_rel15->harq_pid = 0; - dci_pdu_rel15->tpc = 2; - LOG_D(MAC, "[gNB scheduler phytest] ULDCI type 0 payload: PDCCH CCEIndex %d, freq_alloc %d, time_alloc %d, freq_hop_flag %d, mcs %d tpc %d ndi %d rv %d\n", - pdcch_pdu_rel15->CceIndex[pdcch_pdu_rel15->numDlDci], - dci_pdu_rel15->frequency_domain_assignment, - dci_pdu_rel15->time_domain_assignment, - dci_pdu_rel15->frequency_hopping_flag, + pdcch_pdu_rel15->dci_pdu.CceIndex[pdcch_pdu_rel15->numDlDci], + dci_pdu_rel15->frequency_domain_assignment.val, + dci_pdu_rel15->time_domain_assignment.val, + dci_pdu_rel15->frequency_hopping_flag.val, dci_pdu_rel15->mcs, dci_pdu_rel15->tpc, dci_pdu_rel15->ndi, dci_pdu_rel15->rv); - - dci_formats[pdcch_pdu_rel15->numDlDci] = NR_UL_DCI_FORMAT_0_0; - rnti_types[pdcch_pdu_rel15->numDlDci] = NR_RNTI_C; - pdcch_pdu_rel15->numDlDci++; } @@ -481,7 +579,7 @@ void configure_fapi_dl_Tx(module_id_t Mod_idP, tx_req->num_TLV = 1; tx_req->TLVs[0].length = tbs_bytes +2; - memcpy((void*)&tx_req->TLVs[0].value.direct[0], (void*)&nr_mac->UE_list.DLSCH_pdu[0][0].payload[0], tbs_bytes);; + memcpy((void*)&tx_req->TLVs[0].value.direct[0], (void*)&nr_mac->UE_list.DLSCH_pdu[0][0].payload[0], tbs_bytes); nr_mac->TX_req[CC_id].Number_of_PDUs++; nr_mac->TX_req[CC_id].SFN = frameP; @@ -494,11 +592,11 @@ void nr_schedule_uss_dlsch_phytest(module_id_t module_idP, NR_sched_pucch *pucch_sched, nfapi_nr_dl_tti_pdsch_pdu_rel15_t *dlsch_config){ - LOG_D(MAC, "In nr_schedule_uss_dlsch_phytest \n"); + LOG_D(MAC, "In nr_schedule_uss_dlsch_phytest frame %d slot %d\n",frameP,slotP); int post_padding = 0, ta_len = 0, header_length_total = 0, sdu_length_total = 0, num_sdus = 0; - int lcid, offset, i, header_length_last, TBS_bytes; - int UE_id = 0, CCEIndex = -1, CC_id = 0; + int lcid, offset, i, header_length_last, TBS_bytes = 0; + int UE_id = 0, CC_id = 0; gNB_MAC_INST *gNB_mac = RC.nrmac[module_idP]; //NR_COMMON_channels_t *cc = nr_mac->common_channels; @@ -522,20 +620,6 @@ void nr_schedule_uss_dlsch_phytest(module_id_t module_idP, ta_len = gNB_mac->ta_len; - CCEIndex = allocate_nr_CCEs(gNB_mac, - 1, // bwp_id - 0, // coreset_id - 4, // aggregation, - 1, // search_space, 0 common, 1 ue-specific - UE_id, - 0); // m - - if (CCEIndex == -1) return; - - AssertFatal(CCEIndex>0,"CCEIndex is negative\n"); - int CCEIndices[2]; - CCEIndices[0] = CCEIndex; - TBS_bytes = configure_fapi_dl_pdu(module_idP, CCEIndices, dl_tti_req, @@ -543,79 +627,75 @@ void nr_schedule_uss_dlsch_phytest(module_id_t module_idP, dlsch_config!=NULL ? dlsch_config->mcsIndex : NULL, dlsch_config!=NULL ? &dlsch_config->rbSize : NULL, dlsch_config!=NULL ? &dlsch_config->rbStart : NULL); - - //The --NOS1 use case currently schedules DLSCH transmissions only when there is IP traffic arriving - //through the LTE stack - if (IS_SOFTMODEM_NOS1){ - for (lcid = NB_RB_MAX - 1; lcid >= DTCH; lcid--) { + if (TBS_bytes == 0) + return; - // TODO: check if the lcid is active + lcid = DL_SCH_LCID_DTCH; - LOG_D(MAC, "[gNB %d], Frame %d, DTCH%d->DLSCH, Checking RLC status (TBS %d bytes, len %d)\n", - module_idP, frameP, lcid, TBS_bytes, TBS_bytes - ta_len - header_length_total - sdu_length_total - 3); + //for (lcid = NB_RB_MAX - 1; lcid >= DTCH; lcid--) { - if (TBS_bytes - ta_len - header_length_total - sdu_length_total - 3 > 0) { - rlc_status = mac_rlc_status_ind(module_idP, - rnti, - module_idP, - frameP, - slotP, - ENB_FLAG_YES, - MBMS_FLAG_NO, - lcid, - 0, - 0); + // TODO: check if the lcid is active - if (rlc_status.bytes_in_buffer > 0) { + LOG_D(MAC, "[gNB %d], Frame %d, DTCH%d->DLSCH, Checking RLC status (TBS %d bytes, len %d)\n", + module_idP, frameP, lcid, TBS_bytes, TBS_bytes - ta_len - header_length_total - sdu_length_total - 3); - LOG_D(MAC, "[gNB %d][USER-PLANE DEFAULT DRB] Frame %d : DTCH->DLSCH, Requesting %d bytes from RLC (lcid %d total hdr len %d), TBS_bytes: %d \n \n", - module_idP, frameP, TBS_bytes - ta_len - header_length_total - sdu_length_total - 3, - lcid, header_length_total, TBS_bytes); + //if (TBS_bytes - ta_len - header_length_total - sdu_length_total - 3 > 0) { + rlc_status = mac_rlc_status_ind(module_idP, + rnti, + module_idP, + frameP, + slotP, + ENB_FLAG_YES, + MBMS_FLAG_NO, + lcid, + 0, + 0); - sdu_lengths[num_sdus] = mac_rlc_data_req(module_idP, - rnti, - module_idP, - frameP, - ENB_FLAG_YES, - MBMS_FLAG_NO, - lcid, - TBS_bytes - ta_len - header_length_total - sdu_length_total - 3, - (char *)&mac_sdus[sdu_length_total], - 0, - 0); + if (rlc_status.bytes_in_buffer > 0) { - LOG_D(MAC, "[gNB %d][USER-PLANE DEFAULT DRB] Got %d bytes for DTCH %d \n", module_idP, sdu_lengths[num_sdus], lcid); + LOG_I(MAC, "configure fapi due to data availability \n"); - sdu_lcids[num_sdus] = lcid; - sdu_length_total += sdu_lengths[num_sdus]; - header_length_last = 1 + 1 + (sdu_lengths[num_sdus] >= 128); - header_length_total += header_length_last; + LOG_I(MAC, "[gNB %d][USER-PLANE DEFAULT DRB] Frame %d : DTCH->DLSCH, Requesting %d bytes from RLC (lcid %d total hdr len %d), TBS_bytes: %d \n \n", + module_idP, frameP, TBS_bytes - ta_len - header_length_total - sdu_length_total - 3, + lcid, header_length_total, TBS_bytes); - num_sdus++; + sdu_lengths[num_sdus] = mac_rlc_data_req(module_idP, + rnti, + module_idP, + frameP, + ENB_FLAG_YES, + MBMS_FLAG_NO, + lcid, + TBS_bytes - ta_len - header_length_total - sdu_length_total - 3, + (char *)&mac_sdus[sdu_length_total], + 0, + 0); + + LOG_W(MAC, "[gNB %d][USER-PLANE DEFAULT DRB] Got %d bytes for DTCH %d \n", module_idP, sdu_lengths[num_sdus], lcid); + + sdu_lcids[num_sdus] = lcid; + sdu_length_total += sdu_lengths[num_sdus]; + header_length_last = 1 + 1 + (sdu_lengths[num_sdus] >= 128); + header_length_total += header_length_last; + + num_sdus++; + + //ue_sched_ctl->uplane_inactivity_timer = 0; + } - //ue_sched_ctl->uplane_inactivity_timer = 0; - } - } else { // no TBS_bytes left - break; - } - } - } //if (IS_SOFTMODEM_NOS1) else { - //When the --NOS1 option is not enabled, DLSCH transmissions with random data - //occur every time that the current function is called (dlsch phytest mode) LOG_D(MAC,"Configuring DL_TX in %d.%d\n", frameP, slotP); // fill dlsch_buffer with random data for (i = 0; i < TBS_bytes; i++){ - //mac_sdus[i] = (unsigned char) rand(); - ((uint8_t *)gNB_mac->UE_list.DLSCH_pdu[0][0].payload[0])[i] = (unsigned char) (lrand48()&0xff); + mac_sdus[i] = (unsigned char) (lrand48()&0xff); + //((uint8_t *)gNB_mac->UE_list.DLSCH_pdu[0][0].payload[0])[i] = (unsigned char) (lrand48()&0xff); } - //Sending SDUs with size 1 //Initialize elements of sdu_lcids and sdu_lengths - sdu_lcids[0] = 0x05; // DRB + sdu_lcids[0] = 0x3f; // DRB sdu_lengths[0] = TBS_bytes - ta_len - 3; header_length_total += 2 + (sdu_lengths[0] >= 128); sdu_length_total += sdu_lengths[0]; @@ -630,7 +710,7 @@ void nr_schedule_uss_dlsch_phytest(module_id_t module_idP, } #endif - } // else IS_SOFTMODEM_NOS1 + } // there is at least one SDU or TA command // if (num_sdus > 0 ){ @@ -649,7 +729,7 @@ void nr_schedule_uss_dlsch_phytest(module_id_t module_idP, offset = nr_generate_dlsch_pdu(module_idP, (unsigned char *) mac_sdus, - (unsigned char *) gNB_mac->UE_list.DLSCH_pdu[0][0].payload[0], //(unsigned char *) mac_pdu, + (unsigned char *) gNB_mac->UE_list.DLSCH_pdu[0][0].payload[0], num_sdus, //num_sdus sdu_lengths, sdu_lcids, @@ -673,14 +753,14 @@ void nr_schedule_uss_dlsch_phytest(module_id_t module_idP, } #endif } else { - #if defined(ENABLE_MAC_PAYLOAD_DEBUG) +#if defined(ENABLE_MAC_PAYLOAD_DEBUG) if (frameP%100 == 0){ LOG_I(MAC, "Printing first 10 payload bytes at the gNB side, Frame: %d, slot: %d, TBS size: %d \n", frameP, slotP, TBS_bytes); for(int i = 0; i < 10; i++) { - LOG_I(MAC, "%x. ", ((uint8_t *)gNB_mac->UE_list.DLSCH_pdu[CC_id][0][0].payload[0])[i]); //LOG_I(MAC, "%x. ", mac_payload[i]); + LOG_I(MAC, "byte %d : %x\n", i,((uint8_t *)gNB_mac->UE_list.DLSCH_pdu[0][0].payload[0])[i]); //LOG_I(MAC, "%x. ", mac_payload[i]); } } - #endif +#endif } } else { // There is no data from RLC or MAC header, so don't schedule @@ -688,17 +768,49 @@ void nr_schedule_uss_dlsch_phytest(module_id_t module_idP, } +int8_t select_ul_harq_pid(NR_UE_sched_ctrl_t *sched_ctrl) { -void nr_schedule_uss_ulsch_phytest(int Mod_idP, - frame_t frameP, - sub_frame_t slotP) { + uint8_t hrq_id; + uint8_t max_ul_harq_pids = 3; // temp: for testing + // schedule active harq processes + NR_UE_ul_harq_t cur_harq; + for (hrq_id=0; hrq_id < max_ul_harq_pids; hrq_id++) { + cur_harq = sched_ctrl->ul_harq_processes[hrq_id]; + if (cur_harq.state==ACTIVE_NOT_SCHED) { +#ifdef UL_HARQ_PRINT + printf("[SCHED] Found ulharq id %d, scheduling it for retransmission\n",hrq_id); +#endif + return hrq_id; + } + } + + // schedule new harq processes + for (hrq_id=0; hrq_id < max_ul_harq_pids; hrq_id++) { + cur_harq = sched_ctrl->ul_harq_processes[hrq_id]; + if (cur_harq.state==INACTIVE) { +#ifdef UL_HARQ_PRINT + printf("[SCHED] Found new ulharq id %d, scheduling it\n",hrq_id); +#endif + return hrq_id; + } + } + LOG_E(MAC,"All UL HARQ processes are busy. Cannot schedule ULSCH\n"); + return -1; +} + +void schedule_fapi_ul_pdu(int Mod_idP, + frame_t frameP, + sub_frame_t slotP, + int num_slots_per_tdd, + int ul_slots, + int time_domain_assignment) { gNB_MAC_INST *nr_mac = RC.nrmac[Mod_idP]; NR_COMMON_channels_t *cc = nr_mac->common_channels; NR_ServingCellConfigCommon_t *scc = cc->ServingCellConfigCommon; int bwp_id=1; - + int mu = scc->uplinkConfigCommon->initialUplinkBWP->genericParameters.subcarrierSpacing; int UE_id = 0; NR_UE_list_t *UE_list = &RC.nrmac[Mod_idP]->UE_list; AssertFatal(UE_list->active[UE_id] >=0,"Cannot find UE_id %d is not active\n",UE_id); @@ -708,156 +820,288 @@ void nr_schedule_uss_ulsch_phytest(int Mod_idP, "downlinkBWP_ToAddModList has %d BWP!\n", secondaryCellGroup->spCellConfig->spCellConfigDedicated->downlinkBWP_ToAddModList->list.count); NR_BWP_Uplink_t *ubwp=secondaryCellGroup->spCellConfig->spCellConfigDedicated->uplinkConfig->uplinkBWP_ToAddModList->list.array[bwp_id-1]; + int n_ubwp = secondaryCellGroup->spCellConfig->spCellConfigDedicated->uplinkConfig->uplinkBWP_ToAddModList->list.count; NR_BWP_Downlink_t *bwp=secondaryCellGroup->spCellConfig->spCellConfigDedicated->downlinkBWP_ToAddModList->list.array[bwp_id-1]; - nfapi_nr_ul_tti_request_t *UL_tti_req = &RC.nrmac[Mod_idP]->UL_tti_req[0]; - nfapi_nr_ul_dci_request_t *UL_dci_req = &RC.nrmac[Mod_idP]->UL_dci_req[0]; + NR_PUSCH_Config_t *pusch_Config = ubwp->bwp_Dedicated->pusch_Config->choice.setup; + AssertFatal(time_domain_assignmentbwp_Common->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.count, + "time_domain_assignment %d>=%d\n",time_domain_assignment,ubwp->bwp_Common->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.count); - uint16_t rnti = UE_list->rnti[UE_id]; - nfapi_nr_ul_dci_request_pdus_t *ul_dci_request_pdu; + int K2; + if (ubwp->bwp_Common->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[time_domain_assignment]->k2 != NULL) + K2 = *ubwp->bwp_Common->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[time_domain_assignment]->k2; + else { + if (mu<2) K2=1; + else if(mu==2) K2=2; + else K2=3; + } - UL_tti_req->SFN = frameP; - UL_tti_req->Slot = slotP; - UL_tti_req->pdus_list[UL_tti_req->n_pdus].pdu_type = NFAPI_NR_UL_CONFIG_PUSCH_PDU_TYPE; - UL_tti_req->pdus_list[UL_tti_req->n_pdus].pdu_size = sizeof(nfapi_nr_pusch_pdu_t); - nfapi_nr_pusch_pdu_t *pusch_pdu = &UL_tti_req->pdus_list[UL_tti_req->n_pdus].pusch_pdu; - memset(pusch_pdu,0,sizeof(nfapi_nr_pusch_pdu_t)); - UL_tti_req->n_pdus+=1; + if (is_xlsch_in_slot(UE_list->UE_sched_ctrl[UE_id].ulsch_in_slot_bitmap,(slotP+K2)%num_slots_per_tdd)) { - LOG_D(MAC, "Scheduling UE specific PUSCH\n"); - //UL_tti_req = &nr_mac->UL_tti_req[CC_id]; - /* - // original configuration - rel15_ul->rnti = 0x1234; - rel15_ul->ulsch_pdu_rel15.start_rb = 30; - rel15_ul->ulsch_pdu_rel15.number_rbs = 50; - rel15_ul->ulsch_pdu_rel15.start_symbol = 2; - rel15_ul->ulsch_pdu_rel15.number_symbols = 12; - rel15_ul->ulsch_pdu_rel15.nb_re_dmrs = 6; - rel15_ul->ulsch_pdu_rel15.length_dmrs = 1; - rel15_ul->ulsch_pdu_rel15.Qm = 2; - rel15_ul->ulsch_pdu_rel15.mcs = 9; - rel15_ul->ulsch_pdu_rel15.rv = 0; - rel15_ul->ulsch_pdu_rel15.n_layers = 1; - */ - pusch_pdu->pdu_bit_map = PUSCH_PDU_BITMAP_PUSCH_DATA; - pusch_pdu->rnti = rnti; - pusch_pdu->handle = 0; //not yet used + //nfapi_nr_ul_tti_request_t *UL_tti_req = &RC.nrmac[Mod_idP]->UL_tti_req[0]; + nfapi_nr_ul_dci_request_t *UL_dci_req = &RC.nrmac[Mod_idP]->UL_dci_req[0]; + UL_dci_req->SFN = frameP; + UL_dci_req->Slot = slotP; + nfapi_nr_ul_dci_request_pdus_t *ul_dci_request_pdu; + + AssertFatal(bwp->bwp_Dedicated->pdcch_Config->choice.setup->searchSpacesToAddModList!=NULL,"searchPsacesToAddModList is null\n"); + AssertFatal(bwp->bwp_Dedicated->pdcch_Config->choice.setup->searchSpacesToAddModList->list.count>0, + "searchPsacesToAddModList is empty\n"); + + uint16_t rnti = UE_list->rnti[UE_id]; + + int first_ul_slot = num_slots_per_tdd - ul_slots; + NR_sched_pusch *pusch_sched = &UE_list->UE_sched_ctrl[UE_id].sched_pusch[slotP+K2-first_ul_slot]; + pusch_sched->frame = frameP; + pusch_sched->slot = slotP + K2; + pusch_sched->active = true; + nfapi_nr_pusch_pdu_t *pusch_pdu = &pusch_sched->pusch_pdu; + memset(pusch_pdu,0,sizeof(nfapi_nr_pusch_pdu_t)); + + LOG_D(MAC, "Scheduling UE specific PUSCH\n"); + //UL_tti_req = &nr_mac->UL_tti_req[CC_id]; + + //Resource Allocation in time domain + int startSymbolAndLength=0; + int StartSymbolIndex,NrOfSymbols,mapping_type; + + startSymbolAndLength = ubwp->bwp_Common->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[time_domain_assignment]->startSymbolAndLength; + SLIV2SL(startSymbolAndLength,&StartSymbolIndex,&NrOfSymbols); + pusch_pdu->start_symbol_index = StartSymbolIndex; + pusch_pdu->nr_of_symbols = NrOfSymbols; + + mapping_type = ubwp->bwp_Common->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList->list.array[time_domain_assignment]->mappingType; + + pusch_pdu->pdu_bit_map = PUSCH_PDU_BITMAP_PUSCH_DATA; + pusch_pdu->rnti = rnti; + pusch_pdu->handle = 0; //not yet used - pusch_pdu->bwp_size = NRRIV2BW(ubwp->bwp_Common->genericParameters.locationAndBandwidth,275); - pusch_pdu->bwp_start = NRRIV2PRBOFFSET(ubwp->bwp_Common->genericParameters.locationAndBandwidth,275); - pusch_pdu->subcarrier_spacing = ubwp->bwp_Common->genericParameters.subcarrierSpacing; - pusch_pdu->cyclic_prefix = 0; - //pusch information always include - //this informantion seems to be redundant. with hthe mcs_index and the modulation table, the mod_order and target_code_rate can be determined. - pusch_pdu->mcs_index = 9; - pusch_pdu->mcs_table = 0; //0: notqam256 [TS38.214, table 5.1.3.1-1] - corresponds to nr_target_code_rate_table1 in PHY - pusch_pdu->target_code_rate = nr_get_code_rate_ul(pusch_pdu->mcs_index,pusch_pdu->mcs_table) ; - pusch_pdu->qam_mod_order = nr_get_Qm_ul(pusch_pdu->mcs_index,pusch_pdu->mcs_table) ; - pusch_pdu->transform_precoding = 0; - pusch_pdu->data_scrambling_id = 0; //It equals the higher-layer parameter Data-scrambling-Identity if configured and the RNTI equals the C-RNTI, otherwise L2 needs to set it to physical cell id.; - pusch_pdu->nrOfLayers = 1; - pusch_pdu->resource_alloc = 1; //type 1 - //pusch_pdu->rb_bitmap;// for ressource alloc type 0 - pusch_pdu->rb_start = 0; - pusch_pdu->rb_size = 50; - pusch_pdu->vrb_to_prb_mapping = 0; - pusch_pdu->frequency_hopping = 0; - //pusch_pdu->tx_direct_current_location;//The uplink Tx Direct Current location for the carrier. Only values in the value range of this field between 0 and 3299, which indicate the subcarrier index within the carrier corresponding 1o the numerology of the corresponding uplink BWP and value 3300, which indicates "Outside the carrier" and value 3301, which indicates "Undetermined position within the carrier" are used. [TS38.331, UplinkTxDirectCurrentBWP IE] - pusch_pdu->uplink_frequency_shift_7p5khz = 0; - //Resource Allocation in time domain - pusch_pdu->start_symbol_index = 2; - pusch_pdu->nr_of_symbols = 12; + pusch_pdu->bwp_size = NRRIV2BW(ubwp->bwp_Common->genericParameters.locationAndBandwidth,275); + pusch_pdu->bwp_start = NRRIV2PRBOFFSET(ubwp->bwp_Common->genericParameters.locationAndBandwidth,275); + pusch_pdu->subcarrier_spacing = ubwp->bwp_Common->genericParameters.subcarrierSpacing; + pusch_pdu->cyclic_prefix = 0; + //pusch information always include + //this informantion seems to be redundant. with hthe mcs_index and the modulation table, the mod_order and target_code_rate can be determined. + pusch_pdu->mcs_index = 9; + pusch_pdu->mcs_table = 0; //0: notqam256 [TS38.214, table 5.1.3.1-1] - corresponds to nr_target_code_rate_table1 in PHY + pusch_pdu->target_code_rate = nr_get_code_rate_ul(pusch_pdu->mcs_index,pusch_pdu->mcs_table) ; + pusch_pdu->qam_mod_order = nr_get_Qm_ul(pusch_pdu->mcs_index,pusch_pdu->mcs_table) ; + if (pusch_Config->transformPrecoder == NULL) { + if (scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->msg3_transformPrecoder == NULL) + pusch_pdu->transform_precoding = 1; + else + pusch_pdu->transform_precoding = 0; + } + else + pusch_pdu->transform_precoding = *pusch_Config->transformPrecoder; + if (pusch_Config->dataScramblingIdentityPUSCH != NULL) + pusch_pdu->data_scrambling_id = *pusch_Config->dataScramblingIdentityPUSCH; + else + pusch_pdu->data_scrambling_id = *scc->physCellId; - // -------------------- - // ------- DMRS ------- - // -------------------- - uint16_t l_prime_mask = get_l_prime(pusch_pdu->nr_of_symbols, typeB, pusch_dmrs_pos0, pusch_len1); - pusch_pdu->ul_dmrs_symb_pos = l_prime_mask << pusch_pdu->start_symbol_index; - pusch_pdu->dmrs_config_type = 0; // dmrs-type 1 (the one with a single DMRS symbol in the beginning) - pusch_pdu->ul_dmrs_scrambling_id = 0; // If provided and the PUSCH is not a msg3 PUSCH, otherwise, L2 should set this to physical cell id - pusch_pdu->scid = 0; // DMRS sequence initialization [TS38.211, sec 6.4.1.1.1] - // Should match what is sent in DCI 0_1, otherwise set to 0 - //pusch_pdu->num_dmrs_cdm_grps_no_data; - //pusch_pdu->dmrs_ports; // DMRS ports. [TS38.212 7.3.1.1.2] provides description between DCI 0-1 content and DMRS ports - // Bitmap occupying the 11 LSBs with: bit 0: antenna port 1000 bit 11: antenna port 1011, - // and for each bit 0: DMRS port not used 1: DMRS port used - // -------------------------------------------------------------------------------------------------------------------------------------------- + pusch_pdu->nrOfLayers = 1; - // -------------------- - // ------- PTRS ------- - // -------------------- - uint8_t ptrs_mcs1 = 2; // higher layer parameter in PTRS-UplinkConfig - uint8_t ptrs_mcs2 = 4; // higher layer parameter in PTRS-UplinkConfig - uint8_t ptrs_mcs3 = 10; // higher layer parameter in PTRS-UplinkConfig - uint16_t n_rb0 = 25; // higher layer parameter in PTRS-UplinkConfig - uint16_t n_rb1 = 75; // higher layer parameter in PTRS-UplinkConfig - pusch_pdu->pusch_ptrs.ptrs_time_density = get_L_ptrs(ptrs_mcs1, ptrs_mcs2, ptrs_mcs3, pusch_pdu->mcs_index, pusch_pdu->mcs_table); - pusch_pdu->pusch_ptrs.ptrs_freq_density = get_K_ptrs(n_rb0, n_rb1, pusch_pdu->rb_size); - pusch_pdu->pusch_ptrs.ptrs_ports_list = (nfapi_nr_ptrs_ports_t *) malloc(2*sizeof(nfapi_nr_ptrs_ports_t)); - pusch_pdu->pusch_ptrs.ptrs_ports_list[0].ptrs_re_offset = 0; + //Pusch Allocation in frequency domain [TS38.214, sec 6.1.2.2] + if (pusch_Config->resourceAllocation==NR_PUSCH_Config__resourceAllocation_resourceAllocationType1) { + pusch_pdu->resource_alloc = 1; //type 1 + pusch_pdu->rb_start = 0; + if (get_softmodem_params()->phy_test==1) + pusch_pdu->rb_size = 50; + else + pusch_pdu->rb_size = 5; + } + else + AssertFatal(1==0,"Only frequency resource allocation type 1 is currently supported\n"); - if(1<pusch_ptrs.ptrs_time_density >= pusch_pdu->nr_of_symbols) - pusch_pdu->pdu_bit_map &= ~PUSCH_PDU_BITMAP_PUSCH_PTRS; // disable PUSCH PTRS - // -------------------------------------------------------------------------------------------------------------------------------------------- + pusch_pdu->vrb_to_prb_mapping = 0; - //Pusch Allocation in frequency domain [TS38.214, sec 6.1.2.2] - //Optional Data only included if indicated in pduBitmap - pusch_pdu->pusch_data.rv_index = 0; - pusch_pdu->pusch_data.harq_process_id = 0; - pusch_pdu->pusch_data.new_data_indicator = 0; - pusch_pdu->pusch_data.tb_size = nr_compute_tbs(pusch_pdu->qam_mod_order, - pusch_pdu->target_code_rate, - pusch_pdu->rb_size, - pusch_pdu->nr_of_symbols, - pusch_pdu->dmrs_config_type?4:6, //nb_re_dmrs - not sure where this is coming from - its not in the FAPI - 0, //nb_rb_oh - pusch_pdu->nrOfLayers)>>3; - pusch_pdu->pusch_data.num_cb = 0; //CBG not supported - //pusch_pdu->pusch_data.cb_present_and_position; - //pusch_pdu->pusch_uci; - //pusch_pdu->pusch_ptrs; - //pusch_pdu->dfts_ofdm; - //beamforming - //pusch_pdu->beamforming; //not used for now + if (pusch_Config->frequencyHopping==NULL) + pusch_pdu->frequency_hopping = 0; + else + pusch_pdu->frequency_hopping = 1; + + //pusch_pdu->tx_direct_current_location;//The uplink Tx Direct Current location for the carrier. Only values in the value range of this field between 0 and 3299, which indicate the subcarrier index within the carrier corresponding 1o the numerology of the corresponding uplink BWP and value 3300, which indicates "Outside the carrier" and value 3301, which indicates "Undetermined position within the carrier" are used. [TS38.331, UplinkTxDirectCurrentBWP IE] + //pusch_pdu->uplink_frequency_shift_7p5khz = 0; - ul_dci_request_pdu = &UL_dci_req->ul_dci_pdu_list[UL_dci_req->numPdus]; - memset((void*)ul_dci_request_pdu,0,sizeof(nfapi_nr_ul_dci_request_pdus_t)); - ul_dci_request_pdu->PDUType = NFAPI_NR_DL_TTI_PDCCH_PDU_TYPE; - ul_dci_request_pdu->PDUSize = (uint8_t)(2+sizeof(nfapi_nr_dl_tti_pdcch_pdu)); - nfapi_nr_dl_tti_pdcch_pdu_rel15_t *pdcch_pdu_rel15 = &ul_dci_request_pdu->pdcch_pdu.pdcch_pdu_rel15; + // -------------------- + // ------- DMRS ------- + // -------------------- + NR_DMRS_UplinkConfig_t *NR_DMRS_UplinkConfig; + if (mapping_type == NR_PUSCH_TimeDomainResourceAllocation__mappingType_typeA) + NR_DMRS_UplinkConfig = pusch_Config->dmrs_UplinkForPUSCH_MappingTypeA->choice.setup; + else + NR_DMRS_UplinkConfig = pusch_Config->dmrs_UplinkForPUSCH_MappingTypeB->choice.setup; + if (NR_DMRS_UplinkConfig->dmrs_Type == NULL) + pusch_pdu->dmrs_config_type = 0; + else + pusch_pdu->dmrs_config_type = 1; + pusch_pdu->scid = 0; // DMRS sequence initialization [TS38.211, sec 6.4.1.1.1] + if (pusch_pdu->transform_precoding) { // transform precoding disabled + long *scramblingid; + if (pusch_pdu->scid == 0) + scramblingid = NR_DMRS_UplinkConfig->transformPrecodingDisabled->scramblingID0; + else + scramblingid = NR_DMRS_UplinkConfig->transformPrecodingDisabled->scramblingID1; + if (scramblingid == NULL) + pusch_pdu->ul_dmrs_scrambling_id = *scc->physCellId; + else + pusch_pdu->ul_dmrs_scrambling_id = *scramblingid; + } + else { + pusch_pdu->ul_dmrs_scrambling_id = *scc->physCellId; + if (NR_DMRS_UplinkConfig->transformPrecodingEnabled->nPUSCH_Identity != NULL) + pusch_pdu->pusch_identity = *NR_DMRS_UplinkConfig->transformPrecodingEnabled->nPUSCH_Identity; + else + pusch_pdu->pusch_identity = *scc->physCellId; + } + pusch_dmrs_AdditionalPosition_t additional_pos; + if (NR_DMRS_UplinkConfig->dmrs_AdditionalPosition == NULL) + additional_pos = 2; + else { + if (*NR_DMRS_UplinkConfig->dmrs_AdditionalPosition == NR_DMRS_UplinkConfig__dmrs_AdditionalPosition_pos3) + additional_pos = 3; + else + additional_pos = *NR_DMRS_UplinkConfig->dmrs_AdditionalPosition; + } + pusch_maxLength_t pusch_maxLength; + if (NR_DMRS_UplinkConfig->maxLength == NULL) + pusch_maxLength = 1; + else + pusch_maxLength = 2; + uint16_t l_prime_mask = get_l_prime(pusch_pdu->nr_of_symbols, mapping_type, additional_pos, pusch_maxLength); + pusch_pdu->ul_dmrs_symb_pos = l_prime_mask << pusch_pdu->start_symbol_index; - int dci_formats[2]; - int rnti_types[2]; + pusch_pdu->num_dmrs_cdm_grps_no_data = 1; + pusch_pdu->dmrs_ports = 1; + // -------------------------------------------------------------------------------------------------------------------------------------------- - int CCEIndex = allocate_nr_CCEs(nr_mac, - 1, // bwp_id - 0, // coreset_id - 4, // aggregation, - 1, // search_space, 0 common, 1 ue-specific - UE_id, - 0); // m + // -------------------- + // ------- PTRS ------- + // -------------------- + if (NR_DMRS_UplinkConfig->phaseTrackingRS != NULL) { + // TODO to be fixed from RRC config + uint8_t ptrs_mcs1 = 2; // higher layer parameter in PTRS-UplinkConfig + uint8_t ptrs_mcs2 = 4; // higher layer parameter in PTRS-UplinkConfig + uint8_t ptrs_mcs3 = 10; // higher layer parameter in PTRS-UplinkConfig + uint16_t n_rb0 = 25; // higher layer parameter in PTRS-UplinkConfig + uint16_t n_rb1 = 75; // higher layer parameter in PTRS-UplinkConfig + pusch_pdu->pusch_ptrs.ptrs_time_density = get_L_ptrs(ptrs_mcs1, ptrs_mcs2, ptrs_mcs3, pusch_pdu->mcs_index, pusch_pdu->mcs_table); + pusch_pdu->pusch_ptrs.ptrs_freq_density = get_K_ptrs(n_rb0, n_rb1, pusch_pdu->rb_size); + pusch_pdu->pusch_ptrs.ptrs_ports_list = (nfapi_nr_ptrs_ports_t *) malloc(2*sizeof(nfapi_nr_ptrs_ports_t)); + pusch_pdu->pusch_ptrs.ptrs_ports_list[0].ptrs_re_offset = 0; - dci_formats[0] = NR_UL_DCI_FORMAT_0_0; - rnti_types[0] = NR_RNTI_C; - LOG_D(MAC,"Configuring ULDCI/PDCCH in %d.%d\n", frameP,slotP); - nr_configure_pdcch(pdcch_pdu_rel15, - 1, // ue-specific, - scc, - bwp); - - dci_pdu_rel15_t dci_pdu_rel15[MAX_DCI_CORESET]; + pusch_pdu->pdu_bit_map |= PUSCH_PDU_BITMAP_PUSCH_PTRS; // enable PUSCH PTRS + } + else{ + pusch_pdu->pdu_bit_map &= ~PUSCH_PDU_BITMAP_PUSCH_PTRS; // disable PUSCH PTRS + } - AssertFatal(CCEIndex>=0,"CCEIndex is negative \n"); - pdcch_pdu_rel15->CceIndex[pdcch_pdu_rel15->numDlDci] = CCEIndex; + // -------------------------------------------------------------------------------------------------------------------------------------------- - LOG_D(PHY,"CCEIndex %d\n",pdcch_pdu_rel15->CceIndex[pdcch_pdu_rel15->numDlDci]); + //Pusch Allocation in frequency domain [TS38.214, sec 6.1.2.2] + //Optional Data only included if indicated in pduBitmap + int8_t harq_id = select_ul_harq_pid(&UE_list->UE_sched_ctrl[UE_id]); + if (harq_id < 0) return; + NR_UE_ul_harq_t *cur_harq = &UE_list->UE_sched_ctrl[UE_id].ul_harq_processes[harq_id]; + pusch_pdu->pusch_data.harq_process_id = harq_id; + pusch_pdu->pusch_data.new_data_indicator = cur_harq->ndi; + pusch_pdu->pusch_data.rv_index = nr_rv_round_map[cur_harq->round]; - config_uldci(ubwp,pusch_pdu,pdcch_pdu_rel15, &dci_pdu_rel15[0], dci_formats, rnti_types); - - pdcch_pdu_rel15->PayloadSizeBits[0]=nr_dci_size(dci_formats[0],rnti_types[0],pdcch_pdu_rel15->BWPSize); - fill_dci_pdu_rel15(pdcch_pdu_rel15,&dci_pdu_rel15[0],dci_formats,rnti_types); - + cur_harq->state = ACTIVE_SCHED; + cur_harq->last_tx_slot = pusch_sched->slot; + + uint8_t num_dmrs_symb = 0; + + for(int dmrs_counter = pusch_pdu->start_symbol_index; dmrs_counter < pusch_pdu->start_symbol_index + pusch_pdu->nr_of_symbols; dmrs_counter++) + num_dmrs_symb += ((pusch_pdu->ul_dmrs_symb_pos >> dmrs_counter) & 1); + + uint8_t N_PRB_DMRS; + if (pusch_pdu->dmrs_config_type == 0) { + N_PRB_DMRS = pusch_pdu->num_dmrs_cdm_grps_no_data*6; + } + else { + N_PRB_DMRS = pusch_pdu->num_dmrs_cdm_grps_no_data*4; + } + + pusch_pdu->pusch_data.tb_size = nr_compute_tbs(pusch_pdu->qam_mod_order, + pusch_pdu->target_code_rate, + pusch_pdu->rb_size, + pusch_pdu->nr_of_symbols, + N_PRB_DMRS * num_dmrs_symb, + 0, //nb_rb_oh + 0, + pusch_pdu->nrOfLayers)>>3; + + UE_list->mac_stats[UE_id].ulsch_rounds[cur_harq->round]++; + if (cur_harq->round == 0) UE_list->mac_stats[UE_id].ulsch_total_bytes_scheduled+=pusch_pdu->pusch_data.tb_size; + + pusch_pdu->pusch_data.num_cb = 0; //CBG not supported + //pusch_pdu->pusch_data.cb_present_and_position; + //pusch_pdu->pusch_uci; + //pusch_pdu->pusch_ptrs; + //pusch_pdu->dfts_ofdm; + //beamforming + //pusch_pdu->beamforming; //not used for now + + + ul_dci_request_pdu = &UL_dci_req->ul_dci_pdu_list[UL_dci_req->numPdus]; + memset((void*)ul_dci_request_pdu,0,sizeof(nfapi_nr_ul_dci_request_pdus_t)); + ul_dci_request_pdu->PDUType = NFAPI_NR_DL_TTI_PDCCH_PDU_TYPE; + ul_dci_request_pdu->PDUSize = (uint8_t)(2+sizeof(nfapi_nr_dl_tti_pdcch_pdu)); + nfapi_nr_dl_tti_pdcch_pdu_rel15_t *pdcch_pdu_rel15 = &ul_dci_request_pdu->pdcch_pdu.pdcch_pdu_rel15; + UL_dci_req->numPdus+=1; + + int dci_formats[2]; + int rnti_types[2]; + + NR_SearchSpace_t *ss; + int target_ss = NR_SearchSpace__searchSpaceType_PR_ue_Specific; + + AssertFatal(bwp->bwp_Dedicated->pdcch_Config->choice.setup->searchSpacesToAddModList!=NULL,"searchPsacesToAddModList is null\n"); + AssertFatal(bwp->bwp_Dedicated->pdcch_Config->choice.setup->searchSpacesToAddModList->list.count>0, + "searchPsacesToAddModList is empty\n"); + + int found=0; + + for (int i=0;ibwp_Dedicated->pdcch_Config->choice.setup->searchSpacesToAddModList->list.count;i++) { + ss=bwp->bwp_Dedicated->pdcch_Config->choice.setup->searchSpacesToAddModList->list.array[i]; + AssertFatal(ss->controlResourceSetId != NULL,"ss->controlResourceSetId is null\n"); + AssertFatal(ss->searchSpaceType != NULL,"ss->searchSpaceType is null\n"); + if (ss->searchSpaceType->present == target_ss) { + found=1; + break; + } + } + AssertFatal(found==1,"Couldn't find an adequate searchspace\n"); + + if (ss->searchSpaceType->choice.ue_Specific->dci_Formats) + dci_formats[0] = NR_UL_DCI_FORMAT_0_1; + else + dci_formats[0] = NR_UL_DCI_FORMAT_0_0; + + rnti_types[0] = NR_RNTI_C; + LOG_D(MAC,"Configuring ULDCI/PDCCH in %d.%d\n", frameP,slotP); + + int ret = nr_configure_pdcch(nr_mac, + pdcch_pdu_rel15, + UE_list->rnti[UE_id], + 1, // ue-specific, + ss, + scc, + bwp); + + if (ret < 0) { + LOG_I(MAC,"CCE list not empty, couldn't schedule PUSCH\n"); + pusch_sched->active = false; + return; + } + else { + dci_pdu_rel15_t *dci_pdu_rel15 = calloc(MAX_DCI_CORESET,sizeof(dci_pdu_rel15_t)); + config_uldci(ubwp,pusch_pdu,pdcch_pdu_rel15,&dci_pdu_rel15[0],dci_formats,rnti_types,time_domain_assignment,UE_list->UE_sched_ctrl[UE_id].tpc0,n_ubwp,bwp_id); + fill_dci_pdu_rel15(scc,secondaryCellGroup,pdcch_pdu_rel15,dci_pdu_rel15,dci_formats,rnti_types,pusch_pdu->bwp_size,bwp_id); + free(dci_pdu_rel15); + } + } } diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c index 6d3f69f217..f4ec142da1 100644 --- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c +++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c @@ -33,10 +33,10 @@ #include "assertions.h" #include "LAYER2/MAC/mac.h" -#include "LAYER2/NR_MAC_gNB/nr_mac_gNB.h" -#include "LAYER2/NR_MAC_COMMON/nr_mac_extern.h" +#include "NR_MAC_gNB/nr_mac_gNB.h" +#include "NR_MAC_COMMON/nr_mac_extern.h" -#include "LAYER2/NR_MAC_gNB/mac_proto.h" +#include "NR_MAC_gNB/mac_proto.h" #include "common/utils/LOG/log.h" #include "common/utils/LOG/vcd_signal_dumper.h" #include "common/utils/nr/nr_common.h" @@ -68,8 +68,6 @@ extern RAN_CONTEXT_t RC; -extern int n_active_slices; - // Note the 2 scs values in the table names represent resp. scs_common and pdcch_scs /// LUT for the number of symbols in the coreset indexed by coreset index (4 MSB rmsi_pdcch_config) uint8_t nr_coreset_nsymb_pdcch_type_0_scs_15_15[15] = {2,2,2,3,3,3,1,1,2,2,3,3,1,2,3}; @@ -131,12 +129,11 @@ static inline uint8_t get_max_cces(uint8_t scs) { int allocate_nr_CCEs(gNB_MAC_INST *nr_mac, int bwp_id, - int coreset_id, + int list_id, int aggregation, int search_space, // 0 common, 1 ue-specific int UE_id, - int m - ) { + int m) { // uncomment these when we allocate for common search space // NR_COMMON_channels_t *cc = nr_mac->common_channels; // NR_ServingCellConfigCommon_t *scc = cc->ServingCellConfigCommon; @@ -148,19 +145,20 @@ int allocate_nr_CCEs(gNB_MAC_INST *nr_mac, NR_ControlResourceSet_t *coreset; + AssertFatal(UE_list->active[UE_id] >=0,"UE_id %d is not active\n",UE_id); + secondaryCellGroup = UE_list->secondaryCellGroup[UE_id]; + bwp=secondaryCellGroup->spCellConfig->spCellConfigDedicated->downlinkBWP_ToAddModList->list.array[bwp_id-1]; + if (search_space == 1) { - AssertFatal(UE_list->active[UE_id] >=0,"UE_id %d is not active\n",UE_id); - secondaryCellGroup = UE_list->secondaryCellGroup[UE_id]; - bwp=secondaryCellGroup->spCellConfig->spCellConfigDedicated->downlinkBWP_ToAddModList->list.array[bwp_id-1]; - coreset = bwp->bwp_Dedicated->pdcch_Config->choice.setup->controlResourceSetToAddModList->list.array[coreset_id]; + coreset = bwp->bwp_Dedicated->pdcch_Config->choice.setup->controlResourceSetToAddModList->list.array[list_id]; } else { - AssertFatal(1==0,"Add code for common search space\n"); + coreset = bwp->bwp_Common->pdcch_ConfigCommon->choice.setup->commonControlResourceSet; } + int coreset_id = coreset->controlResourceSetId; int *cce_list = nr_mac->cce_list[bwp_id][coreset_id]; - int n_rb=0; for (int i=0;i<6;i++) for (int j=0;j<8;j++) { @@ -182,7 +180,7 @@ int allocate_nr_CCEs(gNB_MAC_INST *nr_mac, } int first_cce = aggregation * (( Y + (m*N_cce)/(aggregation*M_s_max) + n_CI ) % CEILIDIV(N_cce,aggregation)); - for (int i=0;iconfig_type = NFAPI_NR_CSET_CONFIG_PDCCH_CONFIG; - AssertFatal(bwp->bwp_Dedicated->pdcch_Config->choice.setup->controlResourceSetToAddModList!=NULL, - "controlResourceSetToAddModList is null\n"); - AssertFatal(bwp->bwp_Dedicated->pdcch_Config->choice.setup->controlResourceSetToAddModList->list.count>0, - "controlResourceSetToAddModList is empty\n"); - NR_ControlResourceSet_t *coreset0 = bwp->bwp_Dedicated->pdcch_Config->choice.setup->controlResourceSetToAddModList->list.array[0]; - + NR_ControlResourceSet_t *temp_coreset; + NR_ControlResourceSetId_t coresetid = *ss->controlResourceSetId; + if (ss_type == 0) { // common search space + if (coresetid == 0){ + AssertFatal(1==0,"coreset0 currently not supported\n"); + } + else { + coreset = bwp->bwp_Common->pdcch_ConfigCommon->choice.setup->commonControlResourceSet; + AssertFatal(coresetid==coreset->controlResourceSetId,"ID of common ss coreset does not correspond to id set in the search space\n"); + } + } + else { + int n_list = bwp->bwp_Dedicated->pdcch_Config->choice.setup->controlResourceSetToAddModList->list.count; + for (int i=0; ibwp_Dedicated->pdcch_Config->choice.setup->controlResourceSetToAddModList->list.array[i]; + if (coresetid==temp_coreset->controlResourceSetId) { + coreset = temp_coreset; + cid = i; + break; + } + } + if(coreset==NULL) + AssertFatal(1==0,"Couldn't find coreset with id %ld\n",coresetid); + } pdcch_pdu->BWPSize = NRRIV2BW(bwp->bwp_Common->genericParameters.locationAndBandwidth,275); pdcch_pdu->BWPStart = NRRIV2PRBOFFSET(bwp->bwp_Common->genericParameters.locationAndBandwidth,275); pdcch_pdu->SubcarrierSpacing = bwp->bwp_Common->genericParameters.subcarrierSpacing; pdcch_pdu->CyclicPrefix = (bwp->bwp_Common->genericParameters.cyclicPrefix==NULL) ? 0 : *bwp->bwp_Common->genericParameters.cyclicPrefix; + + // first symbol + //AssertFatal(pdcch_scs==kHz15, "PDCCH SCS above 15kHz not allowed if a symbol above 2 is monitored"); + int sps = bwp->bwp_Common->genericParameters.cyclicPrefix == NULL ? 14 : 12; + + AssertFatal(ss->monitoringSymbolsWithinSlot!=NULL,"ss->monitoringSymbolsWithinSlot is null\n"); + AssertFatal(ss->monitoringSymbolsWithinSlot->buf!=NULL,"ss->monitoringSymbolsWithinSlot->buf is null\n"); - pdcch_pdu->DurationSymbols = coreset0->duration; + // for SPS=14 8 MSBs in positions 13 downto 6 + uint16_t monitoringSymbolsWithinSlot = (ss->monitoringSymbolsWithinSlot->buf[0]<<(sps-8)) | + (ss->monitoringSymbolsWithinSlot->buf[1]>>(16-sps)); + + for (int i=0; i>(sps-1-i))&1) { + pdcch_pdu->StartSymbolIndex=i; + break; + } + } + + pdcch_pdu->DurationSymbols = coreset->duration; - //frequencyDomainResources - /* uint8_t count=0, start=0, start_set=0; - // find coreset descriptor - - uint64_t bitmap = (((uint64_t)coreset0->frequencyDomainResources.buf[0])<<37)| - (((uint64_t)coreset0->frequencyDomainResources.buf[1])<<29)| - (((uint64_t)coreset0->frequencyDomainResources.buf[2])<<21)| - (((uint64_t)coreset0->frequencyDomainResources.buf[3])<<13)| - (((uint64_t)coreset0->frequencyDomainResources.buf[4])<<5)| - (((uint64_t)coreset0->frequencyDomainResources.buf[5])>>3); - - for (int i=0; i<45; i++) - if ((bitmap>>(44-i))&1) { - count++; - if (!start_set) { - start = i; - start_set = 1; - } - } - pdcch_pdu->rb_offset = 6*start; - pdcch_pdu->n_rb = 6*count; - */ for (int i=0;i<6;i++) - pdcch_pdu->FreqDomainResource[i] = coreset0->frequencyDomainResources.buf[i]; - //duration - + pdcch_pdu->FreqDomainResource[i] = coreset->frequencyDomainResources.buf[i]; + //cce-REG-MappingType - pdcch_pdu->CceRegMappingType = coreset0->cce_REG_MappingType.present == NR_ControlResourceSet__cce_REG_MappingType_PR_interleaved? + pdcch_pdu->CceRegMappingType = coreset->cce_REG_MappingType.present == NR_ControlResourceSet__cce_REG_MappingType_PR_interleaved? NFAPI_NR_CCE_REG_MAPPING_INTERLEAVED : NFAPI_NR_CCE_REG_MAPPING_NON_INTERLEAVED; + if (pdcch_pdu->CceRegMappingType == NFAPI_NR_CCE_REG_MAPPING_INTERLEAVED) { - pdcch_pdu->RegBundleSize = (coreset0->cce_REG_MappingType.choice.interleaved->reg_BundleSize == NR_ControlResourceSet__cce_REG_MappingType__interleaved__reg_BundleSize_n6) ? 6 : (2+coreset0->cce_REG_MappingType.choice.interleaved->reg_BundleSize); - pdcch_pdu->InterleaverSize = (coreset0->cce_REG_MappingType.choice.interleaved->interleaverSize==NR_ControlResourceSet__cce_REG_MappingType__interleaved__interleaverSize_n6) ? 6 : (2+coreset0->cce_REG_MappingType.choice.interleaved->interleaverSize); + pdcch_pdu->RegBundleSize = (coreset->cce_REG_MappingType.choice.interleaved->reg_BundleSize == NR_ControlResourceSet__cce_REG_MappingType__interleaved__reg_BundleSize_n6) ? 6 : (2+coreset->cce_REG_MappingType.choice.interleaved->reg_BundleSize); + pdcch_pdu->InterleaverSize = (coreset->cce_REG_MappingType.choice.interleaved->interleaverSize==NR_ControlResourceSet__cce_REG_MappingType__interleaved__interleaverSize_n6) ? 6 : (2+coreset->cce_REG_MappingType.choice.interleaved->interleaverSize); AssertFatal(scc->physCellId != NULL,"scc->physCellId is null\n"); - pdcch_pdu->ShiftIndex = coreset0->cce_REG_MappingType.choice.interleaved->shiftIndex != NULL ? *coreset0->cce_REG_MappingType.choice.interleaved->shiftIndex : *scc->physCellId; + pdcch_pdu->ShiftIndex = coreset->cce_REG_MappingType.choice.interleaved->shiftIndex != NULL ? *coreset->cce_REG_MappingType.choice.interleaved->shiftIndex : *scc->physCellId; } else { pdcch_pdu->RegBundleSize = 0; @@ -478,67 +493,46 @@ void nr_configure_pdcch(nfapi_nr_dl_tti_pdcch_pdu_rel15_t* pdcch_pdu, pdcch_pdu->CoreSetType = 1; //precoderGranularity - pdcch_pdu->precoderGranularity = coreset0->precoderGranularity; - - //TCI states - // - /* - //TCI present - if (coreset0->tci_PresentInDCI != NULL) { - AssertFatal(coreset0->tci_StatesPDCCH_ToAddList != NULL,"tci_StatesPDCCH_ToAddList is null\n"); - AssertFatal(coreset0->tci_StatesPDCCH_ToAddList->list.count>0,"TCI state list is empty\n"); - for (int i=0;itci_StatesPDCCH_ToAddList->list.count;i++) { - - } - */ - - for (int i=0;inumDlDci;i++) { - //pdcch-DMRS-ScramblingID - AssertFatal(coreset0->pdcch_DMRS_ScramblingID != NULL,"coreset0->pdcch_DMRS_ScramblingID is null\n"); - pdcch_pdu->ScramblingId[i] = *coreset0->pdcch_DMRS_ScramblingID; - } - - /// SearchSpace - - // first symbol - //AssertFatal(pdcch_scs==kHz15, "PDCCH SCS above 15kHz not allowed if a symbol above 2 is monitored"); - int sps = bwp->bwp_Common->genericParameters.cyclicPrefix == NULL ? 14 : 12; - - AssertFatal(bwp->bwp_Dedicated->pdcch_Config->choice.setup->searchSpacesToAddModList!=NULL,"searchPsacesToAddModList is null\n"); - AssertFatal(bwp->bwp_Dedicated->pdcch_Config->choice.setup->searchSpacesToAddModList->list.count>0, - "searchPsacesToAddModList is empty\n"); - NR_SearchSpace_t *ss=NULL; - int found=0; - int target_ss = NR_SearchSpace__searchSpaceType_PR_common; - if (ss_type == 1) { - target_ss = NR_SearchSpace__searchSpaceType_PR_ue_Specific; - } - - for (int i=0;ibwp_Dedicated->pdcch_Config->choice.setup->searchSpacesToAddModList->list.count;i++) { - ss=bwp->bwp_Dedicated->pdcch_Config->choice.setup->searchSpacesToAddModList->list.array[i]; - AssertFatal(ss->controlResourceSetId != NULL,"ss->controlResourceSetId is null\n"); - AssertFatal(ss->searchSpaceType != NULL,"ss->searchSpaceType is null\n"); - if (*ss->controlResourceSetId == coreset0->controlResourceSetId && - ss->searchSpaceType->present == target_ss) { - found=1; - break; - } - } - AssertFatal(found==1,"Couldn't find a searchspace corresponding to coreset0\n"); - AssertFatal(ss->monitoringSymbolsWithinSlot!=NULL,"ss->monitoringSymbolsWithinSlot is null\n"); - AssertFatal(ss->monitoringSymbolsWithinSlot->buf!=NULL,"ss->monitoringSymbolsWithinSlot->buf is null\n"); - - // for SPS=14 8 MSBs in positions 13 downto 6, - uint16_t monitoringSymbolsWithinSlot = (ss->monitoringSymbolsWithinSlot->buf[0]<<(sps-8)) | - (ss->monitoringSymbolsWithinSlot->buf[1]>>(16-sps)); - - for (int i=0; i>(sps-1-i))&1) { - pdcch_pdu->StartSymbolIndex=i; - break; - } - } + pdcch_pdu->precoderGranularity = coreset->precoderGranularity; + pdcch_pdu->dci_pdu.RNTI[pdcch_pdu->numDlDci]=rnti; + + if (coreset->pdcch_DMRS_ScramblingID != NULL && + ss->searchSpaceType->present == NR_SearchSpace__searchSpaceType_PR_ue_Specific) { + pdcch_pdu->dci_pdu.ScramblingId[pdcch_pdu->numDlDci] = *coreset->pdcch_DMRS_ScramblingID; + pdcch_pdu->dci_pdu.ScramblingRNTI[pdcch_pdu->numDlDci]=rnti; + } + else { + pdcch_pdu->dci_pdu.ScramblingId[pdcch_pdu->numDlDci] = *scc->physCellId; + pdcch_pdu->dci_pdu.ScramblingRNTI[pdcch_pdu->numDlDci]=0; + } + + uint8_t nr_of_candidates,aggregation_level; + find_aggregation_candidates(&aggregation_level, + &nr_of_candidates, + ss); + + CCEIndex = allocate_nr_CCEs(nr_mac, + 1, // bwp_id + cid, + aggregation_level, + ss->searchSpaceType->present-1, // search_space, 0 common, 1 ue-specific + 0, // UE-id + 0); // m + + if (CCEIndex<0) + return (CCEIndex); + + pdcch_pdu->dci_pdu.AggregationLevel[pdcch_pdu->numDlDci] = aggregation_level; + pdcch_pdu->dci_pdu.CceIndex[pdcch_pdu->numDlDci] = CCEIndex; + + if (ss->searchSpaceType->choice.ue_Specific->dci_Formats==NR_SearchSpace__searchSpaceType__ue_Specific__dci_Formats_formats0_0_And_1_0) + pdcch_pdu->dci_pdu.beta_PDCCH_1_0[pdcch_pdu->numDlDci]=0; + + pdcch_pdu->dci_pdu.powerControlOffsetSS[pdcch_pdu->numDlDci]=1; + pdcch_pdu->numDlDci++; + return (0); + } else { // this is for InitialBWP AssertFatal(1==0,"Fill in InitialBWP PDCCH configuration\n"); } @@ -730,21 +724,102 @@ void nr_configure_pucch(nfapi_nr_pucch_pdu_t* pucch_pdu, } +void prepare_dci(NR_CellGroupConfig_t *secondaryCellGroup, + dci_pdu_rel15_t *dci_pdu_rel15, + nr_dci_format_t format, + int bwp_id) { + + NR_BWP_Downlink_t *bwp=secondaryCellGroup->spCellConfig->spCellConfigDedicated->downlinkBWP_ToAddModList->list.array[bwp_id-1]; + + switch(format) { + case NR_UL_DCI_FORMAT_0_1: + // format indicator + dci_pdu_rel15->format_indicator = 0; + // carrier indicator + if (secondaryCellGroup->spCellConfig->spCellConfigDedicated->crossCarrierSchedulingConfig != NULL) + AssertFatal(1==0,"Cross Carrier Scheduling Config currently not supported\n"); + // supplementary uplink + if (secondaryCellGroup->spCellConfig->spCellConfigDedicated->supplementaryUplink != NULL) + AssertFatal(1==0,"Supplementary Uplink currently not supported\n"); + // SRS request + dci_pdu_rel15->srs_request.val = 0; + dci_pdu_rel15->ulsch_indicator = 1; + break; + case NR_DL_DCI_FORMAT_1_1: + // format indicator + dci_pdu_rel15->format_indicator = 1; + // carrier indicator + if (secondaryCellGroup->spCellConfig->spCellConfigDedicated->crossCarrierSchedulingConfig != NULL) + AssertFatal(1==0,"Cross Carrier Scheduling Config currently not supported\n"); + //vrb to prb mapping + if (bwp->bwp_Dedicated->pdsch_Config->choice.setup->vrb_ToPRB_Interleaver==NULL) + dci_pdu_rel15->vrb_to_prb_mapping.val = 0; + else + dci_pdu_rel15->vrb_to_prb_mapping.val = 1; + //bundling size indicator + if (bwp->bwp_Dedicated->pdsch_Config->choice.setup->prb_BundlingType.present == NR_PDSCH_Config__prb_BundlingType_PR_dynamicBundling) + AssertFatal(1==0,"Dynamic PRB bundling type currently not supported\n"); + //rate matching indicator + uint16_t msb = (bwp->bwp_Dedicated->pdsch_Config->choice.setup->rateMatchPatternGroup1==NULL)?0:1; + uint16_t lsb = (bwp->bwp_Dedicated->pdsch_Config->choice.setup->rateMatchPatternGroup2==NULL)?0:1; + dci_pdu_rel15->rate_matching_indicator.val = lsb | (msb<<1); + // aperiodic ZP CSI-RS trigger + if (bwp->bwp_Dedicated->pdsch_Config->choice.setup->aperiodic_ZP_CSI_RS_ResourceSetsToAddModList != NULL) + AssertFatal(1==0,"Aperiodic ZP CSI-RS currently not supported\n"); + // transmission configuration indication + if (bwp->bwp_Dedicated->pdcch_Config->choice.setup->controlResourceSetToAddModList->list.array[bwp_id-1]->tci_PresentInDCI != NULL) + AssertFatal(1==0,"TCI in DCI currently not supported\n"); + //srs resource set + if (secondaryCellGroup->spCellConfig->spCellConfigDedicated->uplinkConfig->carrierSwitching!=NULL) { + NR_SRS_CarrierSwitching_t *cs = secondaryCellGroup->spCellConfig->spCellConfigDedicated->uplinkConfig->carrierSwitching->choice.setup; + if (cs->srs_TPC_PDCCH_Group!=NULL){ + switch(cs->srs_TPC_PDCCH_Group->present) { + case NR_SRS_CarrierSwitching__srs_TPC_PDCCH_Group_PR_NOTHING: + dci_pdu_rel15->srs_request.val = 0; + break; + case NR_SRS_CarrierSwitching__srs_TPC_PDCCH_Group_PR_typeA: + AssertFatal(1==0,"SRS TPC PRCCH group type A currently not supported\n"); + break; + case NR_SRS_CarrierSwitching__srs_TPC_PDCCH_Group_PR_typeB: + AssertFatal(1==0,"SRS TPC PRCCH group type B currently not supported\n"); + break; + } + } + else + dci_pdu_rel15->srs_request.val = 0; + } + else + dci_pdu_rel15->srs_request.val = 0; + // CBGTI and CBGFI + if (secondaryCellGroup->spCellConfig->spCellConfigDedicated->pdsch_ServingCellConfig->choice.setup->codeBlockGroupTransmission != NULL) + AssertFatal(1==0,"CBG transmission currently not supported\n"); + break; + default : + AssertFatal(1==0,"Prepare dci currently only implemented for 1_1 and 0_1 \n"); + } +} + + +void fill_dci_pdu_rel15(NR_ServingCellConfigCommon_t *scc, + NR_CellGroupConfig_t *secondaryCellGroup, + nfapi_nr_dl_tti_pdcch_pdu_rel15_t *pdcch_pdu_rel15, + dci_pdu_rel15_t *dci_pdu_rel15, + int *dci_formats, + int *rnti_types, + int N_RB, + int bwp_id) { -void fill_dci_pdu_rel15(nfapi_nr_dl_tti_pdcch_pdu_rel15_t *pdcch_pdu_rel15, - dci_pdu_rel15_t *dci_pdu_rel15, - int *dci_formats, - int *rnti_types) { - - uint16_t N_RB = pdcch_pdu_rel15->BWPSize; uint8_t fsize=0, pos=0; for (int d=0;dnumDlDci;d++) { - uint64_t *dci_pdu = (uint64_t *)pdcch_pdu_rel15->Payload[d]; - AssertFatal(pdcch_pdu_rel15->PayloadSizeBits[d]<=64, "DCI sizes above 64 bits not yet supported"); + uint64_t *dci_pdu = (uint64_t *)pdcch_pdu_rel15->dci_pdu.Payload[d]; + int dci_size = nr_dci_size(scc,secondaryCellGroup,&dci_pdu_rel15[d],dci_formats[d],rnti_types[d],N_RB,bwp_id); + pdcch_pdu_rel15->dci_pdu.PayloadSizeBits[d] = dci_size; + AssertFatal(pdcch_pdu_rel15->dci_pdu.PayloadSizeBits[d]<=64, "DCI sizes above 64 bits not yet supported"); - int dci_size = pdcch_pdu_rel15->PayloadSizeBits[d]; + if(dci_formats[d]==NR_DL_DCI_FORMAT_1_1 || dci_formats[d]==NR_UL_DCI_FORMAT_0_1) + prepare_dci(secondaryCellGroup,&dci_pdu_rel15[d],dci_formats[d],bwp_id); /// Payload generation switch(dci_formats[d]) { @@ -754,25 +829,29 @@ void fill_dci_pdu_rel15(nfapi_nr_dl_tti_pdcch_pdu_rel15_t *pdcch_pdu_rel15, // Freq domain assignment fsize = (int)ceil( log2( (N_RB*(N_RB+1))>>1 ) ); pos=fsize; - *dci_pdu |= ((dci_pdu_rel15->frequency_domain_assignment&((1< %d (0x%lx)\n",dci_pdu_rel15->frequency_domain_assignment,fsize,N_RB,dci_size-pos,*dci_pdu); + *dci_pdu |= (((uint64_t)dci_pdu_rel15->frequency_domain_assignment.val&((1< %d (0x%lx)\n",dci_pdu_rel15->frequency_domain_assignment.val,fsize,N_RB,dci_size-pos,*dci_pdu); // Time domain assignment pos+=4; - *dci_pdu |= (((uint64_t)dci_pdu_rel15->time_domain_assignment&0xf) << (dci_size-pos)); - LOG_D(MAC,"time-domain assignment %d (3 bits)=> %d (0x%lx)\n",dci_pdu_rel15->time_domain_assignment,dci_size-pos,*dci_pdu); + *dci_pdu |= (((uint64_t)dci_pdu_rel15->time_domain_assignment.val&0xf) << (dci_size-pos)); + LOG_D(MAC,"time-domain assignment %d (3 bits)=> %d (0x%lx)\n",dci_pdu_rel15->time_domain_assignment.val,dci_size-pos,*dci_pdu); // VRB to PRB mapping pos++; - *dci_pdu |= ((uint64_t)dci_pdu_rel15->vrb_to_prb_mapping&0x1)<<(dci_size-pos); - LOG_D(MAC,"vrb to prb mapping %d (1 bits)=> %d (0x%lx)\n",dci_pdu_rel15->vrb_to_prb_mapping,dci_size-pos,*dci_pdu); + *dci_pdu |= ((uint64_t)dci_pdu_rel15->vrb_to_prb_mapping.val&0x1)<<(dci_size-pos); + LOG_D(MAC,"vrb to prb mapping %d (1 bits)=> %d (0x%lx)\n",dci_pdu_rel15->vrb_to_prb_mapping.val,dci_size-pos,*dci_pdu); // MCS pos+=5; *dci_pdu |= ((uint64_t)dci_pdu_rel15->mcs&0x1f)<<(dci_size-pos); - LOG_D(MAC,"mcs %d (5 bits)=> %d (0x%lx)\n",dci_pdu_rel15->mcs,dci_size-pos,*dci_pdu); +#ifdef DEBUG_FILL_DCI + LOG_I(MAC,"mcs %d (5 bits)=> %d (0x%lx)\n",dci_pdu_rel15->mcs,dci_size-pos,*dci_pdu); +#endif // TB scaling pos+=2; *dci_pdu |= ((uint64_t)dci_pdu_rel15->tb_scaling&0x3)<<(dci_size-pos); - LOG_D(MAC,"tb_scaling %d (2 bits)=> %d (0x%lx)\n",dci_pdu_rel15->tb_scaling,dci_size-pos,*dci_pdu); +#ifdef DEBUG_FILL_DCI + LOG_I(MAC,"tb_scaling %d (2 bits)=> %d (0x%lx)\n",dci_pdu_rel15->tb_scaling,dci_size-pos,*dci_pdu); +#endif break; case NR_RNTI_C: @@ -785,13 +864,13 @@ void fill_dci_pdu_rel15(nfapi_nr_dl_tti_pdcch_pdu_rel15_t *pdcch_pdu_rel15, // Freq domain assignment (275rb >> fsize = 16) fsize = (int)ceil( log2( (N_RB*(N_RB+1))>>1 ) ); pos+=fsize; - *dci_pdu |= (((uint64_t)dci_pdu_rel15->frequency_domain_assignment&((1<frequency_domain_assignment.val&((1< %d (0x%lx)\n",dci_pdu_rel15->frequency_domain_assignment,fsize,dci_size-pos,*dci_pdu); + LOG_D(MAC,"Freq domain assignment %d (%d bits)=> %d (0x%lx)\n",dci_pdu_rel15->frequency_domain_assignment.val,fsize,dci_size-pos,*dci_pdu); uint16_t is_ra = 1; for (int i=0; ifrequency_domain_assignment>>i)&1)) { + if (!((dci_pdu_rel15->frequency_domain_assignment.val>>i)&1)) { is_ra = 0; break; } @@ -803,7 +882,7 @@ void fill_dci_pdu_rel15(nfapi_nr_dl_tti_pdcch_pdu_rel15_t *pdcch_pdu_rel15, // UL/SUL indicator 1 bit pos++; - *dci_pdu |= (dci_pdu_rel15->ul_sul_indicator&1)<<(dci_size-pos); + *dci_pdu |= (dci_pdu_rel15->ul_sul_indicator.val&1)<<(dci_size-pos); // SS/PBCH index 6 bits pos+=6; @@ -820,13 +899,13 @@ void fill_dci_pdu_rel15(nfapi_nr_dl_tti_pdcch_pdu_rel15_t *pdcch_pdu_rel15, // Time domain assignment 4bit pos+=4; - *dci_pdu |= ((dci_pdu_rel15->time_domain_assignment&0xf) << (dci_size-pos)); - LOG_D(MAC,"Time domain assignment %d (%d bits)=> %d (0x%lx)\n",dci_pdu_rel15->time_domain_assignment,4,dci_size-pos,*dci_pdu); + *dci_pdu |= ((dci_pdu_rel15->time_domain_assignment.val&0xf) << (dci_size-pos)); + LOG_D(MAC,"Time domain assignment %d (%d bits)=> %d (0x%lx)\n",dci_pdu_rel15->time_domain_assignment.val,4,dci_size-pos,*dci_pdu); // VRB to PRB mapping 1bit pos++; - *dci_pdu |= (dci_pdu_rel15->vrb_to_prb_mapping&1)<<(dci_size-pos); - LOG_D(MAC,"VRB to PRB %d (%d bits)=> %d (0x%lx)\n",dci_pdu_rel15->vrb_to_prb_mapping,1,dci_size-pos,*dci_pdu); + *dci_pdu |= (dci_pdu_rel15->vrb_to_prb_mapping.val&1)<<(dci_size-pos); + LOG_D(MAC,"VRB to PRB %d (%d bits)=> %d (0x%lx)\n",dci_pdu_rel15->vrb_to_prb_mapping.val,1,dci_size-pos,*dci_pdu); // MCS 5bit //bit over 32, so dci_pdu ++ pos+=5; @@ -850,8 +929,8 @@ void fill_dci_pdu_rel15(nfapi_nr_dl_tti_pdcch_pdu_rel15_t *pdcch_pdu_rel15, // Downlink assignment index 2bit pos+=2; - *dci_pdu |= ((dci_pdu_rel15->dai&3)<<(dci_size-pos)); - LOG_D(MAC,"DAI %d (%d bits)=> %d (0x%lx)\n",dci_pdu_rel15->dai,2,dci_size-pos,*dci_pdu); + *dci_pdu |= ((dci_pdu_rel15->dai[0].val&3)<<(dci_size-pos)); + LOG_D(MAC,"DAI %d (%d bits)=> %d (0x%lx)\n",dci_pdu_rel15->dai[0].val,2,dci_size-pos,*dci_pdu); // TPC command for scheduled PUCCH 2bit pos+=2; @@ -865,8 +944,8 @@ void fill_dci_pdu_rel15(nfapi_nr_dl_tti_pdcch_pdu_rel15_t *pdcch_pdu_rel15, // PDSCH-to-HARQ_feedback timing indicator 3bit pos+=3; - *dci_pdu |= ((dci_pdu_rel15->pdsch_to_harq_feedback_timing_indicator&0x7)<<(dci_size-pos)); - LOG_D(MAC,"PDSCH to HARQ TI %d (%d bits)=> %d (0x%lx)\n",dci_pdu_rel15->pdsch_to_harq_feedback_timing_indicator,3,dci_size-pos,*dci_pdu); + *dci_pdu |= ((dci_pdu_rel15->pdsch_to_harq_feedback_timing_indicator.val&0x7)<<(dci_size-pos)); + LOG_D(MAC,"PDSCH to HARQ TI %d (%d bits)=> %d (0x%lx)\n",dci_pdu_rel15->pdsch_to_harq_feedback_timing_indicator.val,3,dci_size-pos,*dci_pdu); } //end else break; @@ -882,12 +961,12 @@ void fill_dci_pdu_rel15(nfapi_nr_dl_tti_pdcch_pdu_rel15_t *pdcch_pdu_rel15, // Freq domain assignment 0-16 bit fsize = (int)ceil( log2( (N_RB*(N_RB+1))>>1 ) ); for (int i=0; ifrequency_domain_assignment>>(fsize-i-1))&1)<<(dci_size-pos++); + *dci_pdu |= (((uint64_t)dci_pdu_rel15->frequency_domain_assignment.val>>(fsize-i-1))&1)<<(dci_size-pos++); // Time domain assignment 4 bit for (int i=0; i<4; i++) - *dci_pdu |= (((uint64_t)dci_pdu_rel15->time_domain_assignment>>(3-i))&1)<<(dci_size-pos++); + *dci_pdu |= (((uint64_t)dci_pdu_rel15->time_domain_assignment.val>>(3-i))&1)<<(dci_size-pos++); // VRB to PRB mapping 1 bit - *dci_pdu |= ((uint64_t)dci_pdu_rel15->vrb_to_prb_mapping&1)<<(dci_size-pos++); + *dci_pdu |= ((uint64_t)dci_pdu_rel15->vrb_to_prb_mapping.val&1)<<(dci_size-pos++); // MCS 5 bit for (int i=0; i<5; i++) *dci_pdu |= (((uint64_t)dci_pdu_rel15->mcs>>(4-i))&1)<<(dci_size-pos++); @@ -903,12 +982,12 @@ void fill_dci_pdu_rel15(nfapi_nr_dl_tti_pdcch_pdu_rel15_t *pdcch_pdu_rel15, // Freq domain assignment 0-16 bit fsize = (int)ceil( log2( (N_RB*(N_RB+1))>>1 ) ); for (int i=0; ifrequency_domain_assignment>>(fsize-i-1))&1)<<(dci_size-pos++); + *dci_pdu |= ((dci_pdu_rel15->frequency_domain_assignment.val>>(fsize-i-1))&1)<<(dci_size-pos++); // Time domain assignment 4 bit for (int i=0; i<4; i++) - *dci_pdu |= (((uint64_t)dci_pdu_rel15->time_domain_assignment>>(3-i))&1)<<(dci_size-pos++); + *dci_pdu |= (((uint64_t)dci_pdu_rel15->time_domain_assignment.val>>(3-i))&1)<<(dci_size-pos++); // VRB to PRB mapping 1 bit - *dci_pdu |= ((uint64_t)dci_pdu_rel15->vrb_to_prb_mapping&1)<<(dci_size-pos++); + *dci_pdu |= ((uint64_t)dci_pdu_rel15->vrb_to_prb_mapping.val&1)<<(dci_size-pos++); // MCS 5bit //bit over 32, so dci_pdu ++ for (int i=0; i<5; i++) *dci_pdu |= (((uint64_t)dci_pdu_rel15->mcs>>(4-i))&1)<<(dci_size-pos++); @@ -924,12 +1003,12 @@ void fill_dci_pdu_rel15(nfapi_nr_dl_tti_pdcch_pdu_rel15_t *pdcch_pdu_rel15, // Freq domain assignment 0-16 bit fsize = (int)ceil( log2( (N_RB*(N_RB+1))>>1 ) ); for (int i=0; ifrequency_domain_assignment>>(fsize-i-1))&1)<<(dci_size-pos++); + *dci_pdu |= (((uint64_t)dci_pdu_rel15->frequency_domain_assignment.val>>(fsize-i-1))&1)<<(dci_size-pos++); // Time domain assignment 4 bit for (int i=0; i<4; i++) - *dci_pdu |= (((uint64_t)dci_pdu_rel15->time_domain_assignment>>(3-i))&1)<<(dci_size-pos++); + *dci_pdu |= (((uint64_t)dci_pdu_rel15->time_domain_assignment.val>>(3-i))&1)<<(dci_size-pos++); // VRB to PRB mapping 1 bit - *dci_pdu |= ((uint64_t)dci_pdu_rel15->vrb_to_prb_mapping&1)<<(dci_size-pos++); + *dci_pdu |= ((uint64_t)dci_pdu_rel15->vrb_to_prb_mapping.val&1)<<(dci_size-pos++); // MCS 5bit //bit over 32, so dci_pdu ++ for (int i=0; i<5; i++) *dci_pdu |= (((uint64_t)dci_pdu_rel15->mcs>>(4-i))&1)<<(dci_size-pos++); @@ -944,7 +1023,7 @@ void fill_dci_pdu_rel15(nfapi_nr_dl_tti_pdcch_pdu_rel15_t *pdcch_pdu_rel15, // Downlink assignment index – 2 bits for (int i=0; i<2; i++) - *dci_pdu |= (((uint64_t)dci_pdu_rel15->dai>>(1-i))&1)<<(dci_size-pos++); + *dci_pdu |= (((uint64_t)dci_pdu_rel15->dai[0].val>>(1-i))&1)<<(dci_size-pos++); // TPC command for scheduled PUCCH – 2 bits for (int i=0; i<2; i++) @@ -957,7 +1036,7 @@ void fill_dci_pdu_rel15(nfapi_nr_dl_tti_pdcch_pdu_rel15_t *pdcch_pdu_rel15, // PDSCH-to-HARQ_feedback timing indicator – 3 bits for (int i=0; i<3; i++) - *dci_pdu |= (((uint64_t)dci_pdu_rel15->pdsch_to_harq_feedback_timing_indicator>>(2-i))&1)<<(dci_size-pos++); + *dci_pdu |= (((uint64_t)dci_pdu_rel15->pdsch_to_harq_feedback_timing_indicator.val>>(2-i))&1)<<(dci_size-pos++); break; } @@ -972,12 +1051,12 @@ void fill_dci_pdu_rel15(nfapi_nr_dl_tti_pdcch_pdu_rel15_t *pdcch_pdu_rel15, // Freq domain assignment max 16 bit fsize = (int)ceil( log2( (N_RB*(N_RB+1))>>1 ) ); for (int i=0; ifrequency_domain_assignment>>(fsize-i-1))&1)<<(dci_size-pos++); + *dci_pdu |= ((dci_pdu_rel15->frequency_domain_assignment.val>>(fsize-i-1))&1)<<(dci_size-pos++); // Time domain assignment 4bit for (int i=0; i<4; i++) - *dci_pdu |= (((uint64_t)dci_pdu_rel15->time_domain_assignment>>(3-i))&1)<<(dci_size-pos++); + *dci_pdu |= (((uint64_t)dci_pdu_rel15->time_domain_assignment.val>>(3-i))&1)<<(dci_size-pos++); // Frequency hopping flag – 1 bit - *dci_pdu |= ((uint64_t)dci_pdu_rel15->frequency_hopping_flag&1)<<(dci_size-pos++); + *dci_pdu |= ((uint64_t)dci_pdu_rel15->frequency_hopping_flag.val&1)<<(dci_size-pos++); // MCS 5 bit for (int i=0; i<5; i++) *dci_pdu |= (((uint64_t)dci_pdu_rel15->mcs>>(4-i))&1)<<(dci_size-pos++); @@ -1001,7 +1080,7 @@ void fill_dci_pdu_rel15(nfapi_nr_dl_tti_pdcch_pdu_rel15_t *pdcch_pdu_rel15, // UL/SUL indicator – 1 bit /* commented for now (RK): need to get this from BWP descriptor if (cfg->pucch_config.pucch_GroupHopping.value) - *dci_pdu |= ((uint64_t)dci_pdu_rel15->ul_sul_indicator&1)<<(dci_size-pos++); + *dci_pdu |= ((uint64_t)dci_pdu_rel15->ul_sul_indicator.val&1)<<(dci_size-pos++); */ break; @@ -1012,12 +1091,12 @@ void fill_dci_pdu_rel15(nfapi_nr_dl_tti_pdcch_pdu_rel15_t *pdcch_pdu_rel15, // Freq domain assignment max 16 bit fsize = (int)ceil( log2( (N_RB*(N_RB+1))>>1 ) ); for (int i=0; ifrequency_domain_assignment>>(fsize-i-1))&1)<<(dci_size-pos++); + *dci_pdu |= ((dci_pdu_rel15->frequency_domain_assignment.val>>(fsize-i-1))&1)<<(dci_size-pos++); // Time domain assignment 4bit for (int i=0; i<4; i++) - *dci_pdu |= (((uint64_t)dci_pdu_rel15->time_domain_assignment>>(3-i))&1)<<(dci_size-pos++); + *dci_pdu |= (((uint64_t)dci_pdu_rel15->time_domain_assignment.val>>(3-i))&1)<<(dci_size-pos++); // Frequency hopping flag – 1 bit - *dci_pdu |= ((uint64_t)dci_pdu_rel15->frequency_hopping_flag&1)<<(dci_size-pos++); + *dci_pdu |= ((uint64_t)dci_pdu_rel15->frequency_hopping_flag.val&1)<<(dci_size-pos++); // MCS 5 bit for (int i=0; i<5; i++) *dci_pdu |= (((uint64_t)dci_pdu_rel15->mcs>>(4-i))&1)<<(dci_size-pos++); @@ -1042,12 +1121,223 @@ void fill_dci_pdu_rel15(nfapi_nr_dl_tti_pdcch_pdu_rel15_t *pdcch_pdu_rel15, /* commented for now (RK): need to get this information from BWP descriptor if (cfg->pucch_config.pucch_GroupHopping.value) - *dci_pdu |= ((uint64_t)dci_pdu_rel15->ul_sul_indicator&1)<<(dci_size-pos++); + *dci_pdu |= ((uint64_t)dci_pdu_rel15->ul_sul_indicator.val&1)<<(dci_size-pos++); */ break; } break; + + case NR_UL_DCI_FORMAT_0_1: + switch(rnti_types[d]) + { + case NR_RNTI_C: + // Indicating a DL DCI format 1bit + pos=1; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->format_indicator&0x1)<<(dci_size-pos); + + // Carrier indicator + pos+=dci_pdu_rel15->carrier_indicator.nbits; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->carrier_indicator.val&((1<carrier_indicator.nbits)-1))<<(dci_size-pos); + + // UL/SUL Indicator + pos+=dci_pdu_rel15->ul_sul_indicator.nbits; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->ul_sul_indicator.val&((1<ul_sul_indicator.nbits)-1))<<(dci_size-pos); + + // BWP indicator + pos+=dci_pdu_rel15->bwp_indicator.nbits; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->bwp_indicator.val&((1<bwp_indicator.nbits)-1))<<(dci_size-pos); + + // Frequency domain resource assignment + pos+=dci_pdu_rel15->frequency_domain_assignment.nbits; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->frequency_domain_assignment.val&((1<frequency_domain_assignment.nbits)-1)) << (dci_size-pos); + + // Time domain resource assignment + pos+=dci_pdu_rel15->time_domain_assignment.nbits; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->time_domain_assignment.val&((1<time_domain_assignment.nbits)-1)) << (dci_size-pos); + + // Frequency hopping + pos+=dci_pdu_rel15->frequency_hopping_flag.nbits; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->frequency_hopping_flag.val&((1<frequency_hopping_flag.nbits)-1)) << (dci_size-pos); + + // MCS 5bit + pos+=5; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->mcs&0x1f)<<(dci_size-pos); + + // New data indicator 1bit + pos+=1; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->ndi&0x1)<<(dci_size-pos); + + // Redundancy version 2bit + pos+=2; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->rv&0x3)<<(dci_size-pos); + + // HARQ process number 4bit + pos+=4; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->harq_pid&0xf)<<(dci_size-pos); + + // 1st Downlink assignment index + pos+=dci_pdu_rel15->dai[0].nbits; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->dai[0].val&((1<dai[0].nbits)-1))<<(dci_size-pos); + + // 2nd Downlink assignment index + pos+=dci_pdu_rel15->dai[1].nbits; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->dai[1].val&((1<dai[1].nbits)-1))<<(dci_size-pos); + + // TPC command for scheduled PUSCH 2bit + pos+=2; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->tpc&0x3)<<(dci_size-pos); + + // SRS resource indicator + pos+=dci_pdu_rel15->srs_resource_indicator.nbits; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->srs_resource_indicator.val&((1<srs_resource_indicator.nbits)-1))<<(dci_size-pos); + + // Precoding info and n. of layers + pos+=dci_pdu_rel15->precoding_information.nbits; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->precoding_information.val&((1<precoding_information.nbits)-1))<<(dci_size-pos); + + // Antenna ports + pos+=dci_pdu_rel15->antenna_ports.nbits; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->antenna_ports.val&((1<antenna_ports.nbits)-1))<<(dci_size-pos); + + // SRS request + pos+=dci_pdu_rel15->srs_request.nbits; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->srs_request.val&((1<srs_request.nbits)-1))<<(dci_size-pos); + + // CSI request + pos+=dci_pdu_rel15->csi_request.nbits; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->csi_request.val&((1<csi_request.nbits)-1))<<(dci_size-pos); + + // CBG transmission information + pos+=dci_pdu_rel15->cbgti.nbits; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->cbgti.val&((1<cbgti.nbits)-1))<<(dci_size-pos); + + // PTRS DMRS association + pos+=dci_pdu_rel15->ptrs_dmrs_association.nbits; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->ptrs_dmrs_association.val&((1<ptrs_dmrs_association.nbits)-1))<<(dci_size-pos); + + // Beta offset indicator + pos+=dci_pdu_rel15->beta_offset_indicator.nbits; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->beta_offset_indicator.val&((1<beta_offset_indicator.nbits)-1))<<(dci_size-pos); + + // DMRS sequence initialization + pos+=dci_pdu_rel15->dmrs_sequence_initialization.nbits; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->dmrs_sequence_initialization.val&((1<dmrs_sequence_initialization.nbits)-1))<<(dci_size-pos); + + // UL-SCH indicator + pos+=1; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->ulsch_indicator&0x1)<<(dci_size-pos); + + break; + } + break; + + case NR_DL_DCI_FORMAT_1_1: + // Indicating a DL DCI format 1bit + pos=1; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->format_indicator&0x1)<<(dci_size-pos); + + // Carrier indicator + pos+=dci_pdu_rel15->carrier_indicator.nbits; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->carrier_indicator.val&((1<carrier_indicator.nbits)-1))<<(dci_size-pos); + + // BWP indicator + pos+=dci_pdu_rel15->bwp_indicator.nbits; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->bwp_indicator.val&((1<bwp_indicator.nbits)-1))<<(dci_size-pos); + + // Frequency domain resource assignment + pos+=dci_pdu_rel15->frequency_domain_assignment.nbits; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->frequency_domain_assignment.val&((1<frequency_domain_assignment.nbits)-1)) << (dci_size-pos); + + // Time domain resource assignment + pos+=dci_pdu_rel15->time_domain_assignment.nbits; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->time_domain_assignment.val&((1<time_domain_assignment.nbits)-1)) << (dci_size-pos); + + // VRB-to-PRB mapping + pos+=dci_pdu_rel15->vrb_to_prb_mapping.nbits; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->vrb_to_prb_mapping.val&((1<vrb_to_prb_mapping.nbits)-1))<<(dci_size-pos); + + // PRB bundling size indicator + pos+=dci_pdu_rel15->prb_bundling_size_indicator.nbits; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->prb_bundling_size_indicator.val&((1<prb_bundling_size_indicator.nbits)-1))<<(dci_size-pos); + + // Rate matching indicator + pos+=dci_pdu_rel15->rate_matching_indicator.nbits; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->rate_matching_indicator.val&((1<rate_matching_indicator.nbits)-1))<<(dci_size-pos); + + // ZP CSI-RS trigger + pos+=dci_pdu_rel15->zp_csi_rs_trigger.nbits; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->zp_csi_rs_trigger.val&((1<zp_csi_rs_trigger.nbits)-1)) << (dci_size-pos); + + //TB1 + // MCS 5bit + pos+=5; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->mcs&0x1f)<<(dci_size-pos); + + // New data indicator 1bit + pos+=1; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->ndi&0x1)<<(dci_size-pos); + + // Redundancy version 2bit + pos+=2; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->rv&0x3)<<(dci_size-pos); + + //TB2 + // MCS 5bit + pos+=dci_pdu_rel15->mcs2.nbits; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->mcs2.val&((1<mcs2.nbits)-1))<<(dci_size-pos); + + // New data indicator 1bit + pos+=dci_pdu_rel15->ndi2.nbits; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->ndi2.val&((1<ndi2.nbits)-1))<<(dci_size-pos); + + // Redundancy version 2bit + pos+=dci_pdu_rel15->rv2.nbits; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->rv2.val&((1<rv2.nbits)-1))<<(dci_size-pos); + + // HARQ process number 4bit + pos+=4; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->harq_pid&0xf)<<(dci_size-pos); + + // Downlink assignment index + pos+=dci_pdu_rel15->dai[0].nbits; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->dai[0].val&((1<dai[0].nbits)-1))<<(dci_size-pos); + + // TPC command for scheduled PUCCH 2bit + pos+=2; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->tpc&0x3)<<(dci_size-pos); + + // PUCCH resource indicator 3bit + pos+=3; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->pucch_resource_indicator&0x7)<<(dci_size-pos); + + // PDSCH-to-HARQ_feedback timing indicator + pos+=dci_pdu_rel15->pdsch_to_harq_feedback_timing_indicator.nbits; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->pdsch_to_harq_feedback_timing_indicator.val&((1<pdsch_to_harq_feedback_timing_indicator.nbits)-1))<<(dci_size-pos); + + // Antenna ports + pos+=dci_pdu_rel15->antenna_ports.nbits; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->antenna_ports.val&((1<antenna_ports.nbits)-1))<<(dci_size-pos); + + // TCI + pos+=dci_pdu_rel15->transmission_configuration_indication.nbits; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->transmission_configuration_indication.val&((1<transmission_configuration_indication.nbits)-1))<<(dci_size-pos); + + // SRS request + pos+=dci_pdu_rel15->srs_request.nbits; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->srs_request.val&((1<srs_request.nbits)-1))<<(dci_size-pos); + + // CBG transmission information + pos+=dci_pdu_rel15->cbgti.nbits; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->cbgti.val&((1<cbgti.nbits)-1))<<(dci_size-pos); + + // CBG flushing out information + pos+=dci_pdu_rel15->cbgfi.nbits; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->cbgfi.val&((1<cbgfi.nbits)-1))<<(dci_size-pos); + + // DMRS sequence init + pos+=1; + *dci_pdu |= ((uint64_t)dci_pdu_rel15->dmrs_sequence_initialization.val&0x1)<<(dci_size-pos); } } } @@ -1089,7 +1379,6 @@ int to_absslot(nfapi_nr_config_request_scf_t *cfg,int frame,int slot) { } - int extract_startSymbol(int startSymbolAndLength) { int tmp = startSymbolAndLength/14; int tmp2 = startSymbolAndLength%14; @@ -1153,6 +1442,11 @@ int add_new_nr_ue(module_id_t mod_idP, rnti_t rntiP){ int UE_id; int i; NR_UE_list_t *UE_list = &RC.nrmac[mod_idP]->UE_list; + NR_COMMON_channels_t *cc = RC.nrmac[mod_idP]->common_channels; + NR_ServingCellConfigCommon_t *scc = cc->ServingCellConfigCommon; + int num_slots_ul = scc->tdd_UL_DL_ConfigurationCommon->pattern1.nrofUplinkSlots; + if (scc->tdd_UL_DL_ConfigurationCommon->pattern1.nrofUplinkSymbols>0) + num_slots_ul++; LOG_I(MAC, "[gNB %d] Adding UE with rnti %x (next avail %d, num_UEs %d)\n", mod_idP, rntiP, @@ -1171,6 +1465,17 @@ int add_new_nr_ue(module_id_t mod_idP, rnti_t rntiP){ memset((void *) &UE_list->UE_sched_ctrl[UE_id], 0, sizeof(NR_UE_sched_ctrl_t)); + UE_list->UE_sched_ctrl[UE_id].ul_rssi = 0; + UE_list->UE_sched_ctrl[UE_id].sched_pucch = (NR_sched_pucch *)malloc(num_slots_ul*sizeof(NR_sched_pucch)); + UE_list->UE_sched_ctrl[UE_id].sched_pusch = (NR_sched_pusch *)malloc(num_slots_ul*sizeof(NR_sched_pusch)); + for (int k=0; kUE_sched_ctrl[UE_id].sched_pucch[k], + 0, + sizeof(NR_sched_pucch)); + memset((void *) &UE_list->UE_sched_ctrl[UE_id].sched_pusch[k], + 0, + sizeof(NR_sched_pusch)); + } LOG_I(MAC, "gNB %d] Add NR UE_id %d : rnti %x\n", mod_idP, UE_id, @@ -1188,6 +1493,17 @@ int add_new_nr_ue(module_id_t mod_idP, rnti_t rntiP){ } +uint8_t nr_get_tpc(int target, uint8_t cqi, int incr) { + // al values passed to this function are x10 + + int snrx10 = (cqi*5) - 640; + if (snrx10 > target + incr) return 0; // decrease 1dB + if (snrx10 < target - incr) return 2; // increase 1dB + if (snrx10 < target - (3*incr)) return 3; // increase 3dB + return 1; // no change +} + + void get_pdsch_to_harq_feedback(int Mod_idP, int UE_id, NR_SearchSpace__searchSpaceType_PR ss_type, @@ -1207,48 +1523,51 @@ void get_pdsch_to_harq_feedback(int Mod_idP, pdsch_to_harq_feedback[i] = i+1; } else { + // searching for a ue specific search space int found=0; - + for (int i=0;ibwp_Dedicated->pdcch_Config->choice.setup->searchSpacesToAddModList->list.count;i++) { ss=bwp->bwp_Dedicated->pdcch_Config->choice.setup->searchSpacesToAddModList->list.array[i]; AssertFatal(ss->controlResourceSetId != NULL,"ss->controlResourceSetId is null\n"); AssertFatal(ss->searchSpaceType != NULL,"ss->searchSpaceType is null\n"); if (ss->searchSpaceType->present == ss_type) { - found=1; - break; + found=1; + break; } } AssertFatal(found==1,"Couldn't find a ue specific searchspace\n"); + + if (ss->searchSpaceType->choice.ue_Specific->dci_Formats == NR_SearchSpace__searchSpaceType__ue_Specific__dci_Formats_formats0_0_And_1_0) { for (int i=0; i<8; i++) pdsch_to_harq_feedback[i] = i+1; } else { - if(ubwp->bwp_Dedicated->pucch_Config->choice.setup->dl_DataToUL_ACK != NULL) - pdsch_to_harq_feedback = (uint8_t *)ubwp->bwp_Dedicated->pucch_Config->choice.setup->dl_DataToUL_ACK; + if(ubwp->bwp_Dedicated->pucch_Config->choice.setup->dl_DataToUL_ACK != NULL) { + for (int i=0; i<8; i++) + pdsch_to_harq_feedback[i] = *ubwp->bwp_Dedicated->pucch_Config->choice.setup->dl_DataToUL_ACK->list.array[i]; + } else - AssertFatal(found==1,"There is no allocated dl_DataToUL_ACK for pdsch to harq feedback\n"); + AssertFatal(0==1,"There is no allocated dl_DataToUL_ACK for pdsch to harq feedback\n"); } } } - // function to update pucch scheduling parameters in UE list when a USS DL is scheduled void nr_update_pucch_scheduling(int Mod_idP, int UE_id, frame_t frameP, sub_frame_t slotP, int slots_per_tdd, - NR_sched_pucch *sched_pucch) { + int *pucch_id) { NR_ServingCellConfigCommon_t *scc = RC.nrmac[Mod_idP]->common_channels->ServingCellConfigCommon; NR_UE_list_t *UE_list = &RC.nrmac[Mod_idP]->UE_list; - int first_ul_slot_tdd,k; NR_sched_pucch *curr_pucch; + int first_ul_slot_tdd,k,i; uint8_t pdsch_to_harq_feedback[8]; int found = 0; - int i = 0; int nr_ulmix_slots = scc->tdd_UL_DL_ConfigurationCommon->pattern1.nrofUplinkSlots; if (scc->tdd_UL_DL_ConfigurationCommon->pattern1.nrofUplinkSymbols!=0) nr_ulmix_slots++; @@ -1257,98 +1576,59 @@ void nr_update_pucch_scheduling(int Mod_idP, NR_SearchSpace__searchSpaceType_PR ss_type = NR_SearchSpace__searchSpaceType_PR_ue_Specific; get_pdsch_to_harq_feedback(Mod_idP,UE_id,ss_type,pdsch_to_harq_feedback); - // if the list of pucch to be scheduled is empty - if (UE_list->UE_sched_ctrl[UE_id].sched_pucch == NULL) { - sched_pucch->frame = frameP; - sched_pucch->next_sched_pucch = NULL; - sched_pucch->dai_c = 1; - sched_pucch->resource_indicator = 0; // in phytest with only 1 UE we are using just the 1st resource - if ( nr_ulmix_slots > 0 ) { + // for each possible ul or mixed slot + for (k=0; kUE_sched_ctrl[UE_id].sched_pucch[k]; + // if there is free room in current pucch structure + if (curr_pucch->dai_cframe = frameP; + curr_pucch->dai_c++; + curr_pucch->resource_indicator = 0; // in phytest with only 1 UE we are using just the 1st resource // first pucch occasion in first UL or MIXED slot first_ul_slot_tdd = scc->tdd_UL_DL_ConfigurationCommon->pattern1.nrofDownlinkSlots; - for (k=0; kul_slot = first_ul_slot_tdd + k + (slotP - (slotP % slots_per_tdd)); - sched_pucch->timing_indicator = pdsch_to_harq_feedback[i]; - } - else - AssertFatal(1==0,"No Uplink slot available in accordance to allowed timing indicator\n"); - } - else - AssertFatal(1==0,"No Uplink Slots in this Frame\n"); - - UE_list->UE_sched_ctrl[UE_id].sched_pucch = sched_pucch; - } - else { // to be tested - curr_pucch = UE_list->UE_sched_ctrl[UE_id].sched_pucch; - if (curr_pucch->dai_cul_slot % slots_per_tdd)-(slotP % slots_per_tdd)) + i = 0; + while (i<8 && found == 0) { // look if timing indicator is among allowed values + if (pdsch_to_harq_feedback[i]==(first_ul_slot_tdd+k)-(slotP % slots_per_tdd)) found = 1; if (found == 0) i++; } - if (found == 1) { // scheduling this harq-ack in current pucch - sched_pucch = curr_pucch; - sched_pucch->dai_c = 1 + sched_pucch->dai_c; - sched_pucch->timing_indicator = pdsch_to_harq_feedback[i]; - } - } - if (curr_pucch->dai_c==MAX_ACK_BITS || found == 0) { // if current pucch is full or no timing indicator allowed - // look for pucch occasions in other UL of mixed slots - for (k=scc->tdd_UL_DL_ConfigurationCommon->pattern1.nrofDownlinkSlots; kul_slot % slots_per_tdd)) { // skip current scheduled slot (already checked) - i = 0; - while (i<8 && found == 0) { // look if timing indicator is among allowed values - if (pdsch_to_harq_feedback[i]==k-(slotP % slots_per_tdd)) - found = 1; - if (found == 0) i++; - } - if (found == 1) { - if (k<(curr_pucch->ul_slot % slots_per_tdd)) { // we need to add a pucch occasion before current pucch - sched_pucch->frame = frameP; - sched_pucch->ul_slot = k + (slotP - (slotP % slots_per_tdd)); - sched_pucch->next_sched_pucch = curr_pucch; - sched_pucch->dai_c = 1; - sched_pucch->resource_indicator = 0; // in phytest with only 1 UE we are using just the 1st resource - sched_pucch->timing_indicator = pdsch_to_harq_feedback[i]; - UE_list->UE_sched_ctrl[UE_id].sched_pucch = sched_pucch; - } - else { - while (curr_pucch->next_sched_pucch != NULL && k!=(curr_pucch->ul_slot % slots_per_tdd)) - curr_pucch = curr_pucch->next_sched_pucch; - if (curr_pucch == NULL) { // creating a new item in the list - sched_pucch->frame = frameP; - sched_pucch->next_sched_pucch = NULL; - sched_pucch->dai_c = 1; - sched_pucch->timing_indicator = pdsch_to_harq_feedback[i]; - sched_pucch->resource_indicator = 0; // in phytest with only 1 UE we are using just the 1st resource - sched_pucch->ul_slot = k + (slotP - (slotP % slots_per_tdd)); - curr_pucch->next_sched_pucch = (NR_sched_pucch*) malloc(sizeof(NR_sched_pucch)); - curr_pucch->next_sched_pucch = sched_pucch; - } - else { - if (curr_pucch->dai_c==MAX_ACK_BITS) - found = 0; // if pucch at index k is already full we have to find a new one in a following occasion - else { // scheduling this harq-ack in current pucch - sched_pucch = curr_pucch; - sched_pucch->dai_c = 1 + sched_pucch->dai_c; - sched_pucch->timing_indicator = pdsch_to_harq_feedback[i]; - } - } - } - } - } + if (found == 1) { + // computing slot in which pucch is scheduled + curr_pucch->ul_slot = first_ul_slot_tdd + k + (slotP - (slotP % slots_per_tdd)); + curr_pucch->timing_indicator = i; // index in the list of timing indicators + *pucch_id = k; + return; } } } + AssertFatal(1==0,"No Uplink slot available in accordance to allowed timing indicator\n"); +} + + +void find_aggregation_candidates(uint8_t *aggregation_level, + uint8_t *nr_of_candidates, + NR_SearchSpace_t *ss) { + + if (ss->nrofCandidates->aggregationLevel1 != NR_SearchSpace__nrofCandidates__aggregationLevel1_n0) { + *aggregation_level = 1; + *nr_of_candidates = ss->nrofCandidates->aggregationLevel1; + } + if (ss->nrofCandidates->aggregationLevel2 != NR_SearchSpace__nrofCandidates__aggregationLevel2_n0) { + *aggregation_level = 2; + *nr_of_candidates = ss->nrofCandidates->aggregationLevel2; + } + if (ss->nrofCandidates->aggregationLevel4 != NR_SearchSpace__nrofCandidates__aggregationLevel4_n0) { + *aggregation_level = 4; + *nr_of_candidates = ss->nrofCandidates->aggregationLevel4; + } + if (ss->nrofCandidates->aggregationLevel8 != NR_SearchSpace__nrofCandidates__aggregationLevel8_n0) { + *aggregation_level = 8; + *nr_of_candidates = ss->nrofCandidates->aggregationLevel8; + } + if (ss->nrofCandidates->aggregationLevel16 != NR_SearchSpace__nrofCandidates__aggregationLevel16_n0) { + *aggregation_level = 16; + *nr_of_candidates = ss->nrofCandidates->aggregationLevel16; + } } diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c index eb8d338949..bb0dad7064 100644 --- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c +++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c @@ -28,12 +28,15 @@ * @ingroup _mac */ + #include "LAYER2/NR_MAC_gNB/mac_proto.h" #include "executables/softmodem-common.h" //#define ENABLE_MAC_PAYLOAD_DEBUG 1 + void nr_process_mac_pdu( module_id_t module_idP, + rnti_t rnti, uint8_t CC_id, frame_t frameP, uint8_t *pduP, @@ -87,7 +90,13 @@ void nr_process_mac_pdu( /*#ifdef DEBUG_HEADER_PARSING LOG_D(MAC, "[UE] LCID %d, PDU length %d\n", ((NR_MAC_SUBHEADER_FIXED *)pdu_ptr)->LCID, pdu_len); #endif*/ - + case UL_SCH_LCID_RECOMMENDED_BITRATE_QUERY: + // 38.321 Ch6.1.3.20 + mac_ce_len = 2; + break; + case UL_SCH_LCID_CONFIGURED_GRANT_CONFIRMATION: + // 38.321 Ch6.1.3.7 + break; case UL_SCH_LCID_S_BSR: //38.321 section 6.1.3.1 //fixed length @@ -170,6 +179,24 @@ void nr_process_mac_pdu( // end of MAC PDU, can ignore the rest. break; + // MAC SDUs + case UL_SCH_LCID_SRB1: + // todo + break; + case UL_SCH_LCID_SRB2: + // todo + break; + case UL_SCH_LCID_SRB3: + // todo + break; + case UL_SCH_LCID_CCCH_MSG3: + // todo + break; + case UL_SCH_LCID_CCCH: + // todo + mac_subheader_len = 2; + break; + case UL_SCH_LCID_DTCH: // check if LCID is valid at current time. if(((NR_MAC_SUBHEADER_SHORT *)pdu_ptr)->F){ @@ -183,8 +210,9 @@ void nr_process_mac_pdu( mac_subheader_len = 2; } - LOG_D(MAC, "[UE %d] Frame %d : DLSCH -> DL-DTCH %d (gNB %d, %d bytes)\n", module_idP, frameP, rx_lcid, module_idP, mac_sdu_len); - + LOG_D(MAC, "[UE %d] Frame %d : ULSCH -> UL-DTCH %d (gNB %d, %d bytes)\n", module_idP, frameP, rx_lcid, module_idP, mac_sdu_len); + int UE_id = find_nr_UE_id(module_idP, rnti); + RC.nrmac[module_idP]->UE_list.mac_stats[UE_id].lc_bytes_rx[rx_lcid] += mac_sdu_len; #if defined(ENABLE_MAC_PAYLOAD_DEBUG) LOG_T(MAC, "[UE %d] First 32 bytes of DLSCH : \n", module_idP); @@ -193,25 +221,33 @@ void nr_process_mac_pdu( LOG_T(MAC, "\n"); #endif - - if (IS_SOFTMODEM_NOS1){ - if (rx_lcid < NB_RB_MAX && rx_lcid >= UL_SCH_LCID_DTCH) { - - mac_rlc_data_ind(module_idP, - 0x1234, - module_idP, - frameP, - ENB_FLAG_YES, - MBMS_FLAG_NO, - rx_lcid, - (char *) (pdu_ptr + mac_subheader_len), - mac_sdu_len, - 1, - NULL); - } else { - LOG_E(MAC, "[UE %d] Frame %d : unknown LCID %d (gNB %d)\n", module_idP, frameP, rx_lcid, module_idP); - } + if(IS_SOFTMODEM_NOS1){ + mac_rlc_data_ind(module_idP, + 0x1234, + module_idP, + frameP, + ENB_FLAG_YES, + MBMS_FLAG_NO, + rx_lcid, + (char *) (pdu_ptr + mac_subheader_len), + mac_sdu_len, + 1, + NULL); } + else{ + mac_rlc_data_ind(module_idP, + rnti, + module_idP, + frameP, + ENB_FLAG_YES, + MBMS_FLAG_NO, + rx_lcid, + (char *) (pdu_ptr + mac_subheader_len), + mac_sdu_len, + 1, + NULL); + } + break; @@ -223,12 +259,44 @@ void nr_process_mac_pdu( pdu_len -= ( mac_subheader_len + mac_ce_len + mac_sdu_len ); if (pdu_len < 0) { - LOG_E(MAC, "%s() residual mac pdu length < 0!\n", __func__); + LOG_E(MAC, "%s() residual mac pdu length < 0!, pdu_len: %d\n", __func__, pdu_len); return; } } } +void handle_nr_ul_harq(uint16_t slot, NR_UE_sched_ctrl_t *sched_ctrl, NR_mac_stats_t *stats, nfapi_nr_crc_t crc_pdu) { + + int max_harq_rounds = 4; // TODO define macro + uint8_t hrq_id = crc_pdu.harq_id; + NR_UE_ul_harq_t *cur_harq = &sched_ctrl->ul_harq_processes[hrq_id]; + if (cur_harq->state==ACTIVE_SCHED) { + if (!crc_pdu.tb_crc_status) { + cur_harq->ndi ^= 1; + cur_harq->round = 0; + cur_harq->state = INACTIVE; // passed -> make inactive. can be used by scheduder for next grant +#ifdef UL_HARQ_PRINT + printf("[HARQ HANDLER] Ulharq id %d crc passed, freeing it for scheduler\n",hrq_id); +#endif + } else { + cur_harq->round++; + cur_harq->state = ACTIVE_NOT_SCHED; +#ifdef UL_HARQ_PRINT + printf("[HARQ HANDLER] Ulharq id %d crc failed, requesting retransmission\n",hrq_id); +#endif + } + + if (!(cur_harq->roundndi ^= 1; + cur_harq->state = INACTIVE; // failed after 4 rounds -> make inactive + cur_harq->round = 0; + LOG_D(MAC,"[HARQ HANDLER] RNTI %x: Ulharq id %d crc failed in all round, freeing it for scheduler\n",crc_pdu.rnti,hrq_id); + stats->ulsch_errors++; + } + return; + } else + LOG_E(MAC,"Incorrect ULSCH HARQ process %d or invalid state %d\n",hrq_id,cur_harq->state); +} /* * When data are received on PHY and transmitted to MAC @@ -241,7 +309,8 @@ void nr_rx_sdu(const module_id_t gnb_mod_idP, uint8_t *sduP, const uint16_t sdu_lenP, const uint16_t timing_advance, - const uint8_t ul_cqi){ + const uint8_t ul_cqi, + const uint16_t rssi){ int current_rnti = 0, UE_id = -1, harq_pid = 0; gNB_MAC_INST *gNB_mac = NULL; NR_UE_list_t *UE_list = NULL; @@ -251,10 +320,12 @@ void nr_rx_sdu(const module_id_t gnb_mod_idP, UE_id = find_nr_UE_id(gnb_mod_idP, current_rnti); gNB_mac = RC.nrmac[gnb_mod_idP]; UE_list = &gNB_mac->UE_list; + int target_snrx10 = gNB_mac->pusch_target_snrx10; if (UE_id != -1) { UE_scheduling_control = &(UE_list->UE_sched_ctrl[UE_id]); + UE_list->mac_stats[UE_id].ulsch_total_bytes_rx += sdu_lenP; LOG_D(MAC, "[gNB %d][PUSCH %d] CC_id %d %d.%d Received ULSCH sdu from PHY (rnti %x, UE_id %d) ul_cqi %d\n", gnb_mod_idP, harq_pid, @@ -265,20 +336,49 @@ void nr_rx_sdu(const module_id_t gnb_mod_idP, UE_id, ul_cqi); + // if not missed detection (10dB threshold for now) + if (UE_scheduling_control->ul_rssi < (100+rssi)) { + UE_scheduling_control->tpc0 = nr_get_tpc(target_snrx10,ul_cqi,30); + UE_scheduling_control->ta_update = timing_advance; + UE_scheduling_control->ul_rssi = rssi; + LOG_D(MAC, "[UE %d] PUSCH TPC %d and TA %d\n",UE_id,UE_scheduling_control->tpc0,UE_scheduling_control->ta_update); + } + else{ + UE_scheduling_control->tpc0 = 1; + } + #if defined(ENABLE_MAC_PAYLOAD_DEBUG) - LOG_I(MAC, "Printing received UL MAC payload at gNB side: %d \n"); - for (int i = 0; i < sdu_lenP ; i++) { + LOG_I(MAC, "Printing received UL MAC payload at gNB side: %d \n"); + for (int i = 0; i < sdu_lenP ; i++) { //harq_process_ul_ue->a[i] = (unsigned char) rand(); //printf("a[%d]=0x%02x\n",i,harq_process_ul_ue->a[i]); printf("%02x ",(unsigned char)sduP[i]); - } - printf("\n"); + } + printf("\n"); #endif if (sduP != NULL){ - //UE_scheduling_control->ta_update = timing_advance; LOG_D(MAC, "Received PDU at MAC gNB \n"); - nr_process_mac_pdu(gnb_mod_idP, CC_idP, frameP, sduP, sdu_lenP); + nr_process_mac_pdu(gnb_mod_idP, current_rnti, CC_idP, frameP, sduP, sdu_lenP); + } + else { + + } + } + else { + // random access pusch with TC-RNTI + if (sduP != NULL) { // if the CRC passed + for (int i = 0; i < MAX_MOBILES_PER_GNB; i++) { + if (UE_list->active[i] == TRUE) { + if (UE_list->tc_rnti[i] == current_rnti) { + // for now the only thing we are doing is set the UE as 5G connected + UE_list->fiveG_connected[i] = true; + LOG_I(MAC, "[gNB %d][RAPROC] PUSCH with TC_RNTI %x received correctly and UE_id %d is now 5G connected\n", + gnb_mod_idP, current_rnti, i); + } + } + } } } } + diff --git a/openair2/LAYER2/NR_MAC_gNB/mac_proto.h b/openair2/LAYER2/NR_MAC_gNB/mac_proto.h index 54604a8ccc..1c27c1af27 100644 --- a/openair2/LAYER2/NR_MAC_gNB/mac_proto.h +++ b/openair2/LAYER2/NR_MAC_gNB/mac_proto.h @@ -31,8 +31,9 @@ #ifndef __LAYER2_NR_MAC_PROTO_H__ #define __LAYER2_NR_MAC_PROTO_H__ -#include "nr_mac_gNB.h" #include "PHY/defs_gNB.h" + +#include "LAYER2/NR_MAC_gNB/nr_mac_gNB.h" #include "NR_TAG-Id.h" #define MAX_ACK_BITS 2 //only format 0 is available for now @@ -49,6 +50,8 @@ void config_common(int Mod_idP, int rrc_mac_config_req_gNB(module_id_t Mod_idP, int ssb_SubcarrierOffset, int pdsch_AntennaPorts, + int pusch_tgt_snrx10, + int pucch_tgt_snrx10, NR_ServingCellConfigCommon_t *scc, int nsa_flag, uint32_t rnti, @@ -61,7 +64,6 @@ void clear_nr_nfapi_information(gNB_MAC_INST * gNB, sub_frame_t subframeP); void gNB_dlsch_ulsch_scheduler(module_id_t module_idP, - frame_t frame_txP, sub_frame_t slot_txP, frame_t frame_rxP, sub_frame_t slot_rxP); int nr_generate_dlsch_pdu(module_id_t Mod_idP, @@ -78,6 +80,48 @@ void nr_schedule_ue_spec(module_id_t module_idP, frame_t frameP, sub_frame_t slo void schedule_nr_mib(module_id_t module_idP, frame_t frameP, sub_frame_t subframeP); +/////// Random Access MAC-PHY interface functions and primitives /////// + +void nr_schedule_RA(module_id_t module_idP, frame_t frameP, sub_frame_t slotP); + +/* \brief Function to indicate a received preamble on PRACH. It initiates the RA procedure. +@param module_idP Instance ID of gNB +@param preamble_index index of the received RA request +@param slotP Slot number on which to act +@param timing_offset Offset in samples of the received PRACH w.r.t. eNB timing. This is used to +@param rnti RA rnti corresponding to this PRACH preamble +@param rach_resource type (0=non BL/CE,1 CE level 0,2 CE level 1, 3 CE level 2,4 CE level 3) +*/ +void nr_initiate_ra_proc(module_id_t module_idP, int CC_id, frame_t frameP, sub_frame_t slotP, + uint16_t preamble_index, uint8_t freq_index, uint8_t symbol, int16_t timing_offset); + +void nr_clear_ra_proc(module_id_t module_idP, int CC_id, frame_t frameP); + +int nr_allocate_CCEs(int module_idP, int CC_idP, frame_t frameP, sub_frame_t slotP, int test_only); + +void nr_get_Msg3alloc(NR_ServingCellConfigCommon_t *scc, + NR_BWP_Uplink_t *ubwp, + sub_frame_t current_subframe, + frame_t current_frame, + NR_RA_t *ra); + +/* \brief Function in gNB to fill RAR pdu when requested by PHY. +@param ra Instance of RA resources of gNB +@param dlsch_buffer Pointer to RAR input buffer +@param N_RB_UL Number of UL resource blocks +*/ +void nr_fill_rar(uint8_t Mod_idP, + NR_RA_t * ra, + uint8_t * dlsch_buffer, + nfapi_nr_pusch_pdu_t *pusch_pdu); + + +void schedule_nr_prach(module_id_t module_idP, frame_t frameP, sub_frame_t slotP); + +uint16_t nr_mac_compute_RIV(uint16_t N_RB_DL, uint16_t RBstart, uint16_t Lcrbs); + +/////// Phy test scheduler /////// + void nr_schedule_css_dlsch_phytest(module_id_t module_idP, frame_t frameP, sub_frame_t subframeP); @@ -90,7 +134,13 @@ int configure_fapi_dl_pdu(int Mod_id, uint16_t *rbSize, uint16_t *rbStart); -void config_uldci(NR_BWP_Uplink_t *ubwp,nfapi_nr_pusch_pdu_t *pusch_pdu,nfapi_nr_dl_tti_pdcch_pdu_rel15_t *pdcch_pdu_rel15, dci_pdu_rel15_t *dci_pdu_rel15, int *dci_formats, int *rnti_types); +void config_uldci(NR_BWP_Uplink_t *ubwp, + nfapi_nr_pusch_pdu_t *pusch_pdu, + nfapi_nr_dl_tti_pdcch_pdu_rel15_t *pdcch_pdu_rel15, + dci_pdu_rel15_t *dci_pdu_rel15, + int *dci_formats, int *rnti_types, + int time_domain_assignment, uint8_t tpc, + int n_ubwp, int bwp_id); void configure_fapi_dl_Tx(module_id_t Mod_idP, frame_t frameP, @@ -106,16 +156,25 @@ void nr_schedule_uss_dlsch_phytest(module_id_t module_idP, NR_sched_pucch *pucch_sched, nfapi_nr_dl_tti_pdsch_pdu_rel15_t *pdsch_config); -void nr_schedule_uss_ulsch_phytest(int Mod_idP, - frame_t frameP, - sub_frame_t slotP); +void nr_schedule_pusch(int Mod_idP, + int UE_id, + int num_slots_per_tdd, + int ul_slots, + frame_t frameP, + sub_frame_t slotP); + +void nr_schedule_pucch(int Mod_idP, + int UE_id, + int nr_ulmix_slots, + frame_t frameP, + sub_frame_t slotP); void nr_update_pucch_scheduling(int Mod_idP, int UE_id, frame_t frameP, sub_frame_t slotP, int slots_per_tdd, - NR_sched_pucch *sched_pucch); + int *pucch_id); void get_pdsch_to_harq_feedback(int Mod_idP, int UE_id, @@ -140,6 +199,7 @@ int nr_is_dci_opportunity(nfapi_nr_search_space_t search_space, uint16_t slot, nfapi_nr_config_request_scf_t cfg); */ + void nr_configure_pucch(nfapi_nr_pucch_pdu_t* pucch_pdu, NR_ServingCellConfigCommon_t *scc, NR_BWP_Uplink_t *bwp, @@ -147,23 +207,47 @@ void nr_configure_pucch(nfapi_nr_pucch_pdu_t* pucch_pdu, uint16_t O_uci, uint16_t O_ack, uint8_t SR_flag); -void nr_configure_pdcch(nfapi_nr_dl_tti_pdcch_pdu_rel15_t* pdcch_pdu, - int ss_type, - NR_ServingCellConfigCommon_t *scc, - NR_BWP_Downlink_t *bwp); -void fill_dci_pdu_rel15(nfapi_nr_dl_tti_pdcch_pdu_rel15_t *pdcch_pdu_rel15, +void find_search_space(int ss_type, + NR_BWP_Downlink_t *bwp, + NR_SearchSpace_t *ss); + +int nr_configure_pdcch(gNB_MAC_INST *nr_mac, + nfapi_nr_dl_tti_pdcch_pdu_rel15_t* pdcch_pdu, + uint16_t rnti, + int ss_type, + NR_SearchSpace_t *ss, + NR_ServingCellConfigCommon_t *scc, + NR_BWP_Downlink_t *bwp); + +void fill_dci_pdu_rel15(NR_ServingCellConfigCommon_t *scc, + NR_CellGroupConfig_t *secondaryCellGroup, + nfapi_nr_dl_tti_pdcch_pdu_rel15_t *pdcch_pdu_rel15, dci_pdu_rel15_t *dci_pdu_rel15, int *dci_formats, - int *rnti_types); + int *rnti_types, + int N_RB, + int bwp_id); + +void prepare_dci(NR_CellGroupConfig_t *secondaryCellGroup, + dci_pdu_rel15_t *dci_pdu_rel15, + nr_dci_format_t format, + int bwp_id); + +void find_aggregation_candidates(uint8_t *aggregation_level, + uint8_t *nr_of_candidates, + NR_SearchSpace_t *ss); + +uint8_t nr_get_tpc(int target, uint8_t cqi, int incr); + int get_spf(nfapi_nr_config_request_scf_t *cfg); int to_absslot(nfapi_nr_config_request_scf_t *cfg,int frame,int slot); -void get_band(uint64_t downlink_frequency, uint16_t *current_band, int32_t *current_offset, lte_frame_type_t *current_type); - void nr_get_tbs_dl(nfapi_nr_dl_tti_pdsch_pdu *pdsch_pdu, - int x_overhead); + int x_overhead, + uint8_t numdmrscdmgroupnodata, + uint8_t tb_scaling); /** \brief Computes Q based on I_MCS PDSCH and table_idx for downlink. Implements MCS Tables from 38.214. */ uint8_t nr_get_Qm_dl(uint8_t Imcs, uint8_t table_idx); uint32_t nr_get_code_rate_dl(uint8_t Imcs, uint8_t table_idx); @@ -182,17 +266,6 @@ int find_nr_UE_id(module_id_t mod_idP, rnti_t rntiP); int add_new_nr_ue(module_id_t mod_idP, rnti_t rntiP); -int get_num_dmrs(uint16_t dmrs_mask ); -uint8_t get_l0_ul(uint8_t mapping_type, uint8_t dmrs_typeA_position); -int32_t get_l_prime(uint8_t duration_in_symbols, uint8_t mapping_type, pusch_dmrs_AdditionalPosition_t additional_pos, pusch_maxLength_t pusch_maxLength); - -uint8_t get_L_ptrs(uint8_t mcs1, uint8_t mcs2, uint8_t mcs3, uint8_t I_mcs, uint8_t mcs_table); -uint8_t get_K_ptrs(uint16_t nrb0, uint16_t nrb1, uint16_t N_RB); - -uint16_t nr_dci_size(nr_dci_format_t format, - nr_rnti_type_t rnti_type, - uint16_t N_RB); - int allocate_nr_CCEs(gNB_MAC_INST *nr_mac, int bwp_id, int coreset_id, @@ -202,9 +275,6 @@ int allocate_nr_CCEs(gNB_MAC_INST *nr_mac, int m ); -int is_nr_DL_slot(NR_ServingCellConfigCommon_t *scc,slot_t slotP); -int is_nr_UL_slot(NR_ServingCellConfigCommon_t *scc,slot_t slotP); - int get_dlscs(nfapi_nr_config_request_t *cfg); int get_ulscs(nfapi_nr_config_request_t *cfg); @@ -224,13 +294,33 @@ void config_nr_mib(int Mod_idP, int intraFreqReselection); +void nr_generate_Msg2(module_id_t module_idP, + int CC_id, + frame_t frameP, + sub_frame_t slotP); + +void nr_schedule_reception_msg3(module_id_t module_idP, int CC_id, frame_t frameP, sub_frame_t slotP); + +void schedule_fapi_ul_pdu(int Mod_idP, + frame_t frameP, + sub_frame_t slotP, + int num_slots_per_tdd, + int ul_slots, + int time_domain_assignment); + void nr_process_mac_pdu( module_id_t module_idP, + rnti_t rnti, uint8_t CC_id, frame_t frameP, uint8_t *pduP, uint16_t mac_pdu_len); +int binomial(int n, int k); + +bool is_xlsch_in_slot(uint64_t bitmap, sub_frame_t slot); + + /* \brief Function to indicate a received SDU on ULSCH. @param Mod_id Instance ID of gNB @param CC_id Component carrier index @@ -247,6 +337,11 @@ void nr_rx_sdu(const module_id_t gnb_mod_idP, const rnti_t rntiP, uint8_t * sduP, const uint16_t sdu_lenP, - const uint16_t timing_advance, const uint8_t ul_cqi); + const uint16_t timing_advance, + const uint8_t ul_cqi, + const uint16_t rssi); +void handle_nr_ul_harq(uint16_t slot, NR_UE_sched_ctrl_t *sched_ctrl, NR_mac_stats_t *stats, nfapi_nr_crc_t crc_pdu); + +void handle_nr_uci(NR_UL_IND_t *UL_info, NR_UE_sched_ctrl_t *sched_ctrl, NR_mac_stats_t *stats, int target_snrx10); #endif /*__LAYER2_NR_MAC_PROTO_H__*/ diff --git a/openair2/LAYER2/NR_MAC_gNB/main.c b/openair2/LAYER2/NR_MAC_gNB/main.c index 9e8415776b..bd0be8c409 100644 --- a/openair2/LAYER2/NR_MAC_gNB/main.c +++ b/openair2/LAYER2/NR_MAC_gNB/main.c @@ -30,11 +30,12 @@ */ -#include "mac_proto.h" -#include "LAYER2/NR_MAC_COMMON/nr_mac_extern.h" +#include "NR_MAC_gNB/mac_proto.h" +#include "NR_MAC_COMMON/nr_mac_extern.h" #include "assertions.h" #include "LAYER2/PDCP_v10.1.0/pdcp.h" +#include "LAYER2/nr_pdcp/nr_pdcp_entity.h" #include "RRC/NR/nr_rrc_defs.h" #include "common/utils/LOG/log.h" //#include "RRC/L2_INTERFACE/openair_rrc_L2_interface.h" @@ -89,7 +90,7 @@ void mac_top_init_gNB(void) pdcp_layer_init(); if(IS_SOFTMODEM_NOS1) - nr_ip_over_LTE_DRB_preconfiguration(); + nr_DRB_preconfiguration(); rrc_init_nr_global_param(); @@ -113,6 +114,14 @@ void mac_top_init_gNB(void) UE_list->next[list_el] = list_el + 1; UE_list->next_ul[list_el] = list_el + 1; UE_list->active[list_el] = FALSE; + for (int list_harq = 0; list_harq < NR_MAX_NB_HARQ_PROCESSES; list_harq++) { + UE_list->UE_sched_ctrl[list_el].harq_processes[list_harq].round = 0; + UE_list->UE_sched_ctrl[list_el].harq_processes[list_harq].ndi = 0; + UE_list->UE_sched_ctrl[list_el].harq_processes[list_harq].is_waiting = 0; + UE_list->UE_sched_ctrl[list_el].ul_harq_processes[list_harq].round = 0; + UE_list->UE_sched_ctrl[list_el].ul_harq_processes[list_harq].ndi = 0; + UE_list->UE_sched_ctrl[list_el].ul_harq_processes[list_harq].state = 0; + } } UE_list->next[list_el] = -1; diff --git a/openair2/LAYER2/NR_MAC_gNB/nr_compute_tbs_common.c b/openair2/LAYER2/NR_MAC_gNB/nr_compute_tbs_common.c index e4e3ac05df..df23b64e07 100644 --- a/openair2/LAYER2/NR_MAC_gNB/nr_compute_tbs_common.c +++ b/openair2/LAYER2/NR_MAC_gNB/nr_compute_tbs_common.c @@ -39,6 +39,7 @@ uint32_t nr_compute_tbs(uint16_t Qm, uint16_t nb_symb_sch, uint16_t nb_dmrs_prb, uint16_t nb_rb_oh, + uint8_t tb_scaling, uint8_t Nl) { @@ -54,7 +55,7 @@ uint32_t nr_compute_tbs(uint16_t Qm, scale = (R>1024)?11:10; // Intermediate number of information bits - Ninfo = (nb_re * R * Qm * Nl)>>scale; + Ninfo = ((nb_re * R * Qm * Nl)>>scale)>>tb_scaling; if (Ninfo <=3824) { n = max(3, floor(log2(Ninfo)) - 6); diff --git a/openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h b/openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h index bf9358dd43..bd8f0208c6 100644 --- a/openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h +++ b/openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h @@ -42,30 +42,106 @@ #include #include +/* Commmon */ +#include "targets/ARCH/COMMON/common_lib.h" +#include "COMMON/platform_constants.h" +#include "common/ran_context.h" + +/* RRC */ #include "NR_BCCH-BCH-Message.h" #include "NR_CellGroupConfig.h" #include "NR_ServingCellConfigCommon.h" #include "NR_MeasConfig.h" +/* PHY */ +#include "PHY/defs_gNB.h" +#include "PHY/TOOLS/time_meas.h" + +/* Interface */ #include "nfapi_nr_interface_scf.h" #include "NR_PHY_INTERFACE/NR_IF_Module.h" -#include "COMMON/platform_constants.h" -#include "common/ran_context.h" +/* MAC */ #include "LAYER2/MAC/mac.h" #include "LAYER2/MAC/mac_proto.h" #include "LAYER2/NR_MAC_COMMON/nr_mac_extern.h" -#include "PHY/defs_gNB.h" -#include "PHY/TOOLS/time_meas.h" -#include "targets/ARCH/COMMON/common_lib.h" - -#include "nr_mac_common.h" +#include "LAYER2/NR_MAC_COMMON/nr_mac_common.h" +#include "NR_TAG.h" +/* Defs */ #define MAX_NUM_BWP 2 #define MAX_NUM_CORESET 2 #define MAX_NUM_CCE 90 +/*!\brief Maximum number of random access process */ +#define NR_NB_RA_PROC_MAX 4 -#include "NR_TAG.h" +typedef enum { + RA_IDLE = 0, + Msg2 = 1, + WAIT_Msg3 = 2, + Msg4 = 3, + WAIT_Msg4_ACK = 4 +} RA_gNB_state_t; + +/*! \brief gNB template for the Random access information */ +typedef struct { + /// Flag to indicate this process is active + RA_gNB_state_t state; + /// BWP id of RA process + int bwp_id; + /// CORESET0 configured flag + int coreset0_configured; + /// Slot where preamble was received + uint8_t preamble_slot; + /// Subframe where Msg2 is to be sent + uint8_t Msg2_slot; + /// Frame where Msg2 is to be sent + frame_t Msg2_frame; + /// Subframe where Msg3 is to be sent + sub_frame_t Msg3_slot; + /// Frame where Msg3 is to be sent + frame_t Msg3_frame; + /// Msg3 time domain allocation index + uint8_t Msg3_tda_id; + /// Subframe where Msg4 is to be sent + sub_frame_t Msg4_slot; + /// Frame where Msg4 is to be sent + frame_t Msg4_frame; + /// harq_pid used for Msg4 transmission + uint8_t harq_pid; + /// UE RNTI allocated during RAR + rnti_t rnti; + /// RA RNTI allocated from received PRACH + uint16_t RA_rnti; + /// Received preamble_index + uint8_t preamble_index; + /// Received UE Contention Resolution Identifier + uint8_t cont_res_id[6]; + /// Timing offset indicated by PHY + int16_t timing_offset; + /// Timeout for RRC connection + int16_t RRC_timer; + /// Msg3 first RB + uint8_t msg3_first_rb; + /// Msg3 number of RB + uint8_t msg3_nb_rb; + /// Msg3 TPC command + uint8_t msg3_TPC; + /// Msg3 ULdelay command + uint8_t msg3_ULdelay; + /// Msg3 cqireq command + uint8_t msg3_cqireq; + /// Round of Msg3 HARQ + uint8_t msg3_round; + /// Msg3 pusch pdu + nfapi_nr_pusch_pdu_t pusch_pdu; + /// TBS used for Msg4 + int msg4_TBsize; + /// MCS used for Msg4 + int msg4_mcs; + /// RA search space + NR_SearchSpace_t *ra_ss; +} NR_RA_t; /*! \brief gNB common channels */ typedef struct { @@ -73,6 +149,7 @@ typedef struct { int p_gNB; int Ncp; int nr_band; + lte_frame_type_t frame_type; uint64_t dl_CarrierFreq; NR_BCCH_BCH_Message_t *mib; NR_ServingCellConfigCommon_t *ServingCellConfigCommon; @@ -93,7 +170,7 @@ typedef struct { /// Outgoing RAR pdu for PHY RAR_PDU RAR_pdu; /// Template for RA computations - RA_t ra[NB_RA_PROC_MAX]; + NR_RA_t ra[NR_NB_RA_PROC_MAX]; /// VRB map for common channels uint8_t vrb_map[100]; /// VRB map for common channels and retransmissions by PHICH @@ -102,30 +179,150 @@ typedef struct { uint8_t num_sf_allocation_pattern; } NR_COMMON_channels_t; + +// SP ZP CSI-RS Resource Set Activation/Deactivation MAC CE +typedef struct sp_zp_csirs { + bool is_scheduled; //ZP CSI-RS ACT/Deact MAC CE is scheduled + bool act_deact; //Activation/Deactivation indication + uint8_t serv_cell_id; //Identity of Serving cell for which MAC CE applies + uint8_t bwpid; //Downlink BWP id + uint8_t rsc_id; //SP ZP CSI-RS resource set +} sp_zp_csirs_t; + +//SP CSI-RS / CSI-IM Resource Set Activation/Deactivation MAC CE +#define MAX_CSI_RESOURCE_SET 64 +typedef struct csi_rs_im { + bool is_scheduled; + bool act_deact; + uint8_t serv_cellid; + uint8_t bwp_id; + bool im; + uint8_t csi_im_rsc_id; + uint8_t nzp_csi_rsc_id; + uint8_t nb_tci_resource_set_id; + uint8_t tci_state_id [ MAX_CSI_RESOURCE_SET ]; +} csi_rs_im_t; + +typedef struct pdcchStateInd { + bool is_scheduled; + uint8_t servingCellId; + uint8_t coresetId; + uint8_t tciStateId; +} pdcchStateInd_t; + +typedef struct SPCSIReportingpucch { + bool is_scheduled; + uint8_t servingCellId; + uint8_t bwpId; + bool s0tos3_actDeact[4]; +} SPCSIReportingpucch_t; + +#define MAX_APERIODIC_TRIGGER_STATES 128 //38.331 +typedef struct aperiodicCSI_triggerStateSelection { + bool is_scheduled; + uint8_t servingCellId; + uint8_t bwpId; + uint8_t highestTriggerStateSelected; + bool triggerStateSelection[MAX_APERIODIC_TRIGGER_STATES]; +} aperiodicCSI_triggerStateSelection_t; + +#define MAX_TCI_STATES 128 //38.331 +typedef struct pdschTciStatesActDeact { + bool is_scheduled; + uint8_t servingCellId; + uint8_t bwpId; + uint8_t highestTciStateActivated; + bool tciStateActDeact[MAX_TCI_STATES]; +} pdschTciStatesActDeact_t; + +typedef struct UE_info { + sp_zp_csirs_t sp_zp_csi_rs; + csi_rs_im_t csi_im; + pdcchStateInd_t pdcch_state_ind; + SPCSIReportingpucch_t SP_CSI_reporting_pucch; + aperiodicCSI_triggerStateSelection_t aperi_CSI_trigger; + pdschTciStatesActDeact_t pdsch_TCI_States_ActDeact; +} NR_UE_mac_ce_ctrl_t; + + typedef struct NR_sched_pucch { int frame; int ul_slot; uint8_t dai_c; uint8_t timing_indicator; uint8_t resource_indicator; - struct NR_sched_pucch *next_sched_pucch; + bool active; } NR_sched_pucch; +typedef struct NR_sched_pusch { + int frame; + int slot; + bool active; + nfapi_nr_pusch_pdu_t pusch_pdu; +} NR_sched_pusch; + +typedef struct NR_UE_harq { + uint8_t is_waiting; + uint8_t ndi; + uint8_t round; + uint16_t feedback_slot; +} NR_UE_harq_t; + +typedef enum { + INACTIVE = 0, + ACTIVE_NOT_SCHED, + ACTIVE_SCHED +} NR_UL_harq_states_t; + +typedef struct NR_UE_ul_harq { + uint8_t ndi; + uint8_t round; + uint16_t last_tx_slot; + NR_UL_harq_states_t state; +} NR_UE_ul_harq_t; + /*! \brief scheduling control information set through an API */ typedef struct { uint64_t dlsch_in_slot_bitmap; // static bitmap signaling which slot in a tdd period contains dlsch uint64_t ulsch_in_slot_bitmap; // static bitmap signaling which slot in a tdd period contains ulsch NR_sched_pucch *sched_pucch; + NR_sched_pusch *sched_pusch; uint16_t ta_timer; int16_t ta_update; + uint8_t tpc0; + uint8_t tpc1; + uint16_t ul_rssi; + uint8_t current_harq_pid; + NR_UE_harq_t harq_processes[NR_MAX_NB_HARQ_PROCESSES]; + NR_UE_ul_harq_t ul_harq_processes[NR_MAX_NB_HARQ_PROCESSES]; + int dummy; + NR_UE_mac_ce_ctrl_t UE_mac_ce_ctrl;// MAC CE related information } NR_UE_sched_ctrl_t; -/*! \brief UE list used by eNB to order UEs/CC for scheduling*/ +typedef struct NR_preamble_ue { + uint8_t num_preambles; + uint8_t *preamble_list; +} NR_preamble_ue; + typedef struct { + int lc_bytes_tx[64]; + int lc_bytes_rx[64]; + int dlsch_rounds[8]; + int dlsch_errors; + int dlsch_total_bytes; + int ulsch_rounds[8]; + int ulsch_errors; + int ulsch_total_bytes_scheduled; + int ulsch_total_bytes_rx; +} NR_mac_stats_t; + +/*! \brief UE list used by gNB to order UEs/CC for scheduling*/ +typedef struct { DLSCH_PDU DLSCH_pdu[4][MAX_MOBILES_PER_GNB]; /// scheduling control info NR_UE_sched_ctrl_t UE_sched_ctrl[MAX_MOBILES_PER_GNB]; + NR_mac_stats_t mac_stats[MAX_MOBILES_PER_GNB]; int next[MAX_MOBILES_PER_GNB]; int head; int next_ul[MAX_MOBILES_PER_GNB]; @@ -133,11 +330,14 @@ typedef struct { int avail; int num_UEs; boolean_t active[MAX_MOBILES_PER_GNB]; + boolean_t fiveG_connected[MAX_MOBILES_PER_GNB]; rnti_t rnti[MAX_MOBILES_PER_GNB]; + rnti_t tc_rnti[MAX_MOBILES_PER_GNB]; + NR_preamble_ue preambles[MAX_MOBILES_PER_GNB]; NR_CellGroupConfig_t *secondaryCellGroup[MAX_MOBILES_PER_GNB]; } NR_UE_list_t; -/*! \brief top level gNB MAC structure */ +/*! \brief top level eNB MAC structure */ typedef struct gNB_MAC_INST_s { /// Ethernet parameters for northbound midhaul interface eth_params_t eth_params_n; @@ -145,14 +345,14 @@ typedef struct gNB_MAC_INST_s { eth_params_t eth_params_s; /// Module module_id_t Mod_id; - /// frame counter - frame_t frame; - /// slot counter - int slot; /// timing advance group NR_TAG_t *tag; /// Pointer to IF module instance for PHY NR_IF_Module_t *if_inst; + /// Pusch target SNR + int pusch_target_snrx10; + /// Pucch target SNR + int pucch_target_snrx10; /// TA command int ta_command; /// MAC CE flag indicating TA length @@ -178,7 +378,7 @@ typedef struct gNB_MAC_INST_s { /// UL handle uint32_t ul_handle; - // MAC function execution peformance profiler + // MAC function execution peformance profiler /// processing time of eNB scheduler time_stats_t eNB_scheduler; /// processing time of eNB scheduler for SI @@ -203,66 +403,4 @@ typedef struct gNB_MAC_INST_s { int cce_list[MAX_NUM_BWP][MAX_NUM_CORESET][MAX_NUM_CCE]; } gNB_MAC_INST; -typedef struct { - uint8_t format_indicator; //1 bit - uint16_t frequency_domain_assignment; //up to 16 bits - uint8_t time_domain_assignment; // 4 bits - uint8_t frequency_hopping_flag; //1 bit - - uint8_t ra_preamble_index; //6 bits - uint8_t ss_pbch_index; //6 bits - uint8_t prach_mask_index; //4 bits - - uint8_t vrb_to_prb_mapping; //0 or 1 bit - uint8_t mcs; //5 bits - uint8_t ndi; //1 bit - uint8_t rv; //2 bits - uint8_t harq_pid; //4 bits - uint8_t dai; //0, 2 or 4 bits - uint8_t dai1; //1 or 2 bits - uint8_t dai2; //0 or 2 bits - uint8_t tpc; //2 bits - uint8_t pucch_resource_indicator; //3 bits - uint8_t pdsch_to_harq_feedback_timing_indicator; //0, 1, 2 or 3 bits - - uint8_t short_messages_indicator; //2 bits - uint8_t short_messages; //8 bits - uint8_t tb_scaling; //2 bits - - uint8_t carrier_indicator; //0 or 3 bits - uint8_t bwp_indicator; //0, 1 or 2 bits - uint8_t prb_bundling_size_indicator; //0 or 1 bits - uint8_t rate_matching_indicator; //0, 1 or 2 bits - uint8_t zp_csi_rs_trigger; //0, 1 or 2 bits - uint8_t transmission_configuration_indication; //0 or 3 bits - uint8_t srs_request; //2 bits - uint8_t cbgti; //CBG Transmission Information: 0, 2, 4, 6 or 8 bits - uint8_t cbgfi; //CBG Flushing Out Information: 0 or 1 bit - uint8_t dmrs_sequence_initialization; //0 or 1 bit - - uint8_t srs_resource_indicator; - uint8_t precoding_information; - uint8_t csi_request; - uint8_t ptrs_dmrs_association; - uint8_t beta_offset_indicator; //0 or 2 bits - - uint8_t slot_format_indicator_count; - uint8_t *slot_format_indicators; - - uint8_t pre_emption_indication_count; - uint16_t *pre_emption_indications; //14 bit - - uint8_t block_number_count; - uint8_t *block_numbers; - - uint8_t ul_sul_indicator; //0 or 1 bit - uint8_t antenna_ports; - - uint16_t reserved; //1_0/C-RNTI:10 bits, 1_0/P-RNTI: 6 bits, 1_0/SI-&RA-RNTI: 16 bits - uint16_t padding; - -} dci_pdu_rel15_t; - - - #endif /*__LAYER2_NR_MAC_GNB_H__ */ diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp.c b/openair2/LAYER2/PDCP_v10.1.0/pdcp.c index b0e6143de1..33f268f07f 100644 --- a/openair2/LAYER2/PDCP_v10.1.0/pdcp.c +++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp.c @@ -503,8 +503,6 @@ pdcp_data_ind( //----------------------------------------------------------------------------- { pdcp_t *pdcp_p = NULL; - list_t *sdu_list_p = NULL; - mem_block_t *new_sdu_p = NULL; uint8_t pdcp_header_len = 0; uint8_t pdcp_tailer_len = 0; pdcp_sn_t sequence_number = 0; @@ -576,7 +574,6 @@ pdcp_data_ind( } } - sdu_list_p = &pdcp_sdu_list; if (sdu_buffer_sizeP == 0) { LOG_W(PDCP, "SDU buffer size is zero! Ignoring this chunk!\n"); @@ -974,9 +971,8 @@ pdcp_data_ind( #endif if (FALSE == packet_forwarded) { - new_sdu_p = get_free_mem_block(sdu_buffer_sizeP - payload_offset + sizeof (pdcp_data_ind_header_t), __func__); + notifiedFIFO_elt_t * new_sdu_p = newNotifiedFIFO_elt(sdu_buffer_sizeP - payload_offset + sizeof (pdcp_data_ind_header_t), 0, NULL, NULL); - if (new_sdu_p) { if ((MBMS_flagP == 0) && (pdcp_p->rlc_mode == RLC_MODE_AM)) { pdcp_p->last_submitted_pdcp_rx_sn = sequence_number; } @@ -984,14 +980,15 @@ pdcp_data_ind( /* * Prepend PDCP indication header which is going to be removed at pdcp_fifo_flush_sdus() */ - memset(new_sdu_p->data, 0, sizeof (pdcp_data_ind_header_t)); - ((pdcp_data_ind_header_t *) new_sdu_p->data)->data_size = sdu_buffer_sizeP - payload_offset; + pdcp_data_ind_header_t * pdcpHead=(pdcp_data_ind_header_t *)NotifiedFifoData(new_sdu_p); + memset(pdcpHead, 0, sizeof (pdcp_data_ind_header_t)); + pdcpHead->data_size = sdu_buffer_sizeP - payload_offset; AssertFatal((sdu_buffer_sizeP - payload_offset >= 0), "invalid PDCP SDU size!"); // Here there is no virtualization possible // set ((pdcp_data_ind_header_t *) new_sdu_p->data)->inst for IP layer here if (ctxt_pP->enb_flag == ENB_FLAG_NO) { - ((pdcp_data_ind_header_t *) new_sdu_p->data)->rb_id = rb_id; + pdcpHead->rb_id = rb_id; if (EPC_MODE_ENABLED) { /* for the UE compiled in S1 mode, we need 1 here @@ -1002,45 +999,40 @@ pdcp_data_ind( #ifdef UESIM_EXPANSION if (UE_NAS_USE_TUN) { - ((pdcp_data_ind_header_t *) new_sdu_p->data)->inst = ctxt_pP->module_id; + pdcpHead->inst = ctxt_pP->module_id; } else { - ((pdcp_data_ind_header_t *) new_sdu_p->data)->inst = 0; + pdcpHead->inst = 0; } #else - ((pdcp_data_ind_header_t *) new_sdu_p->data)->inst = ctxt_pP->module_id; + pdcpHead->inst = ctxt_pP->module_id; #endif } else { // nfapi_mode if (UE_NAS_USE_TUN) { - ((pdcp_data_ind_header_t *) new_sdu_p->data)->inst = ctxt_pP->module_id; + pdcpHead->inst = ctxt_pP->module_id; } else { - ((pdcp_data_ind_header_t *) new_sdu_p->data)->inst = 1; + pdcpHead->inst = 1; } } // nfapi_mode } } else { - ((pdcp_data_ind_header_t *) new_sdu_p->data)->rb_id = rb_id + (ctxt_pP->module_id * LTE_maxDRB); - ((pdcp_data_ind_header_t *) new_sdu_p->data)->inst = ctxt_pP->module_id; + pdcpHead->rb_id = rb_id + (ctxt_pP->module_id * LTE_maxDRB); + pdcpHead->inst = ctxt_pP->module_id; } if( LOG_DEBUGFLAG(DEBUG_PDCP) ) { static uint32_t pdcp_inst = 0; - ((pdcp_data_ind_header_t *) new_sdu_p->data)->inst = pdcp_inst++; - LOG_D(PDCP, "inst=%d size=%d\n", ((pdcp_data_ind_header_t *) new_sdu_p->data)->inst, ((pdcp_data_ind_header_t *) new_sdu_p->data)->data_size); + pdcpHead->inst = pdcp_inst++; + LOG_D(PDCP, "inst=%d size=%d\n", pdcpHead->inst, pdcpHead->data_size); } - memcpy(&new_sdu_p->data[sizeof (pdcp_data_ind_header_t)], + memcpy(pdcpHead+1, &sdu_buffer_pP->data[payload_offset], sdu_buffer_sizeP - payload_offset); - - #if defined(ENABLE_PDCP_PAYLOAD_DEBUG) - LOG_I(PDCP, "Printing first bytes of PDCP SDU before adding it to the list: \n"); - for (int i=0; i<30; i++){ - LOG_I(PDCP, "%x", sdu_buffer_pP->data[i]); - } - #endif - list_add_tail_eurecom (new_sdu_p, sdu_list_p); - } + if( LOG_DEBUGFLAG(DEBUG_PDCP) ) + log_dump(PDCP, pdcpHead+1, min(sdu_buffer_sizeP - payload_offset,30) , LOG_DUMP_CHAR, + "Printing first bytes of PDCP SDU before adding it to the list: \n"); + pushNotifiedFIFO(&pdcp_sdu_list, new_sdu_p); /* Print octets of incoming data in hexadecimal form */ LOG_D(PDCP, "Following content has been received from RLC (%d,%d)(PDCP header has already been removed):\n", @@ -2361,101 +2353,6 @@ void pdcp_module_cleanup (void) { } -void nr_ip_over_LTE_DRB_preconfiguration(void){ - - // Addition for the use-case of 4G stack on top of 5G-NR. - // We need to configure pdcp and rlc instances without having an actual - // UE RRC Connection. In order to be able to test the NR PHY with some injected traffic - // on top of the LTE stack. - protocol_ctxt_t ctxt; - LTE_DRB_ToAddModList_t* DRB_configList=NULL; - DRB_configList = CALLOC(1, sizeof(LTE_DRB_ToAddModList_t)); - struct LTE_LogicalChannelConfig *DRB_lchan_config = NULL; - struct LTE_RLC_Config *DRB_rlc_config = NULL; - struct LTE_PDCP_Config *DRB_pdcp_config = NULL; - struct LTE_PDCP_Config__rlc_UM *PDCP_rlc_UM = NULL; - - struct LTE_DRB_ToAddMod *DRB_config = NULL; - struct LTE_LogicalChannelConfig__ul_SpecificParameters *DRB_ul_SpecificParameters = NULL; - long *logicalchannelgroup_drb; - - - //Static preconfiguration of DRB - DRB_config = CALLOC(1, sizeof(*DRB_config)); - - DRB_config->eps_BearerIdentity = CALLOC(1, sizeof(long)); - // allowed value 5..15, value : x+4 - *(DRB_config->eps_BearerIdentity) = 1; //ue_context_pP->ue_context.e_rab[i].param.e_rab_id;//+ 4; // especial case generation - // DRB_config->drb_Identity = 1 + drb_identity_index + e_rab_done;// + i ;// (DRB_Identity_t) ue_context_pP->ue_context.e_rab[i].param.e_rab_id; - // 1 + drb_identiy_index; - DRB_config->drb_Identity = 1; - DRB_config->logicalChannelIdentity = CALLOC(1, sizeof(long)); - *(DRB_config->logicalChannelIdentity) = DRB_config->drb_Identity + 2; //(long) (ue_context_pP->ue_context.e_rab[i].param.e_rab_id + 2); // value : x+2 - - DRB_rlc_config = CALLOC(1, sizeof(*DRB_rlc_config)); - DRB_config->rlc_Config = DRB_rlc_config; - - DRB_pdcp_config = CALLOC(1, sizeof(*DRB_pdcp_config)); - DRB_config->pdcp_Config = DRB_pdcp_config; - DRB_pdcp_config->discardTimer = CALLOC(1, sizeof(long)); - *DRB_pdcp_config->discardTimer = LTE_PDCP_Config__discardTimer_infinity; - DRB_pdcp_config->rlc_AM = NULL; - DRB_pdcp_config->rlc_UM = NULL; - - DRB_rlc_config->present = LTE_RLC_Config_PR_um_Bi_Directional; - DRB_rlc_config->choice.um_Bi_Directional.ul_UM_RLC.sn_FieldLength = LTE_SN_FieldLength_size10; - DRB_rlc_config->choice.um_Bi_Directional.dl_UM_RLC.sn_FieldLength = LTE_SN_FieldLength_size10; - DRB_rlc_config->choice.um_Bi_Directional.dl_UM_RLC.t_Reordering = LTE_T_Reordering_ms35; - // PDCP - PDCP_rlc_UM = CALLOC(1, sizeof(*PDCP_rlc_UM)); - DRB_pdcp_config->rlc_UM = PDCP_rlc_UM; - PDCP_rlc_UM->pdcp_SN_Size = LTE_PDCP_Config__rlc_UM__pdcp_SN_Size_len12bits; - - DRB_pdcp_config->headerCompression.present = LTE_PDCP_Config__headerCompression_PR_notUsed; - - DRB_lchan_config = CALLOC(1, sizeof(*DRB_lchan_config)); - DRB_config->logicalChannelConfig = DRB_lchan_config; - DRB_ul_SpecificParameters = CALLOC(1, sizeof(*DRB_ul_SpecificParameters)); - DRB_lchan_config->ul_SpecificParameters = DRB_ul_SpecificParameters; - - DRB_ul_SpecificParameters->priority= 4; - - DRB_ul_SpecificParameters->prioritisedBitRate = LTE_LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_kBps8; - //LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_infinity; - DRB_ul_SpecificParameters->bucketSizeDuration = - LTE_LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms50; - - logicalchannelgroup_drb = CALLOC(1, sizeof(long)); - *logicalchannelgroup_drb = 1;//(i+1) % 3; - DRB_ul_SpecificParameters->logicalChannelGroup = logicalchannelgroup_drb; - - ASN_SEQUENCE_ADD(&DRB_configList->list,DRB_config); - - if (ENB_NAS_USE_TUN){ - PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, 0, ENB_FLAG_YES, 0x1234, 0, 0,0); - } - else{ - PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, 0, ENB_FLAG_NO, 0x1234, 0, 0,0); - } - - rrc_pdcp_config_asn1_req(&ctxt, - (LTE_SRB_ToAddModList_t *) NULL, - DRB_configList, - (LTE_DRB_ToReleaseList_t *) NULL, - 0xff, NULL, NULL, NULL - , (LTE_PMCH_InfoList_r9_t *) NULL, - &DRB_config->drb_Identity); - - rrc_rlc_config_asn1_req(&ctxt, - (LTE_SRB_ToAddModList_t*)NULL, - DRB_configList, - (LTE_DRB_ToReleaseList_t*)NULL - //#if (RRC_VERSION >= MAKE_VERSION(10, 0, 0)) - ,(LTE_PMCH_InfoList_r9_t *)NULL - , 0, 0 - //#endif - ); -} //----------------------------------------------------------------------------- void pdcp_layer_init(void) //----------------------------------------------------------------------------- @@ -2467,7 +2364,7 @@ void pdcp_layer_init(void) /* * Initialize SDU list */ - list_init(&pdcp_sdu_list, NULL); + initNotifiedFIFO(&pdcp_sdu_list); pdcp_coll_p = hashtable_create ((LTE_maxDRB + 2) * NUMBER_OF_UE_MAX, NULL, pdcp_free); AssertFatal(pdcp_coll_p != NULL, "UNRECOVERABLE error, PDCP hashtable_create failed"); @@ -2540,7 +2437,8 @@ void pdcp_layer_init(void) void pdcp_layer_cleanup (void) //----------------------------------------------------------------------------- { - list_free (&pdcp_sdu_list); + //list_free (&pdcp_sdu_list); + while(pollNotifiedFIFO(&pdcp_sdu_list)) {}; hashtable_destroy(&pdcp_coll_p); #ifdef MBMS_MULTICAST_OUT diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp.h b/openair2/LAYER2/PDCP_v10.1.0/pdcp.h index e9ac85866c..de8a1b385b 100644 --- a/openair2/LAYER2/PDCP_v10.1.0/pdcp.h +++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp.h @@ -34,10 +34,6 @@ #ifndef __PDCP_H__ # define __PDCP_H__ //----------------------------------------------------------------------------- -#ifndef NON_ACCESS_STRATUM - #include "UTIL/MEM/mem_block.h" - #include "UTIL/LISTS/list.h" -#endif //NON_ACCESS_STRATUM //----------------------------------------------------------------------------- #include "RRC/LTE/rrc_defs.h" #include "COMMON/platform_constants.h" @@ -522,7 +518,7 @@ pdcp_mbms_t pdcp_mbms_array_eNB[NUMBER_OF_eNB_MAX][LTE_maxServiceC sdu_size_t pdcp_output_sdu_bytes_to_write; sdu_size_t pdcp_output_header_bytes_to_write; -list_t pdcp_sdu_list; +notifiedFIFO_t pdcp_sdu_list; int pdcp_sent_a_sdu; pdcp_data_req_header_t pdcp_input_header; unsigned char pdcp_input_sdu_buffer[MAX_IP_PACKET_SIZE]; diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c b/openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c index d203408e55..c9a62d573b 100644 --- a/openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c +++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c @@ -55,7 +55,6 @@ extern int otg_enabled; #include "common/utils/LOG/log.h" #include "UTIL/OTG/otg_tx.h" #include "nfapi/oai_integration/vendor_ext.h" -#include "UTIL/FIFO/pad_list.h" #include "common/utils/LOG/vcd_signal_dumper.h" #include "platform_constants.h" #include "msc.h" @@ -91,7 +90,6 @@ extern struct msghdr nas_msg_rx; extern uint16_t inst_pdcp_list[NUMBER_OF_UE_MAX]; #endif -extern Packet_OTG_List_t *otg_pdcp_buffer; # include "gtpv1u_eNB_task.h" @@ -111,69 +109,60 @@ void debug_pdcp_pc5s_sdu(sidelink_pc5s_element *sl_pc5s_msg, char *title) { } //----------------------------------------------------------------------------- int pdcp_fifo_flush_sdus(const protocol_ctxt_t *const ctxt_pP) { - mem_block_t *sdu_p; + notifiedFIFO_elt_t *sdu_p; int pdcp_nb_sdu_sent = 0; int ret=0; + while ((sdu_p = pollNotifiedFIFO(&pdcp_sdu_list)) != NULL ) { + pdcp_data_ind_header_t * pdcpHead=(pdcp_data_ind_header_t *)NotifiedFifoData(sdu_p); - while ((sdu_p = list_get_head (&pdcp_sdu_list)) != NULL && ((pdcp_data_ind_header_t *)(sdu_p->data))->inst == ctxt_pP->module_id) { - ((pdcp_data_ind_header_t *)(sdu_p->data))->inst = 0; - int rb_id = ((pdcp_data_ind_header_t *)(sdu_p->data))->rb_id; + /* Note: we ignore the instance ID in the context and use the one in the + * PDCP packet to pick the right socket below */ + + int rb_id = pdcpHead->rb_id; int sizeToWrite= sizeof (pdcp_data_ind_header_t) + - ((pdcp_data_ind_header_t *) sdu_p->data)->data_size; - + pdcpHead->data_size; + void * pdcpData=(void*)(pdcpHead+1); if (rb_id == 10) { //hardcoded for PC5-Signaling if( LOG_DEBUGFLAG(DEBUG_PDCP) ) { - debug_pdcp_pc5s_sdu((sidelink_pc5s_element *)&(sdu_p->data[sizeof(pdcp_data_ind_header_t)]), + debug_pdcp_pc5s_sdu((sidelink_pc5s_element *)pdcpData, "pdcp_fifo_flush_sdus sends a aPC5S message"); } - ret = sendto(pdcp_pc5_sockfd, &(sdu_p->data[sizeof(pdcp_data_ind_header_t)]), + ret = sendto(pdcp_pc5_sockfd, pdcpData, sizeof(sidelink_pc5s_element), 0, (struct sockaddr *)&prose_pdcp_addr,sizeof(prose_pdcp_addr) ); } else if (UE_NAS_USE_TUN) { - //ret = write(nas_sock_fd[ctxt_pP->module_id], &(sdu_p->data[sizeof(pdcp_data_ind_header_t)]),sizeToWrite ); + //ret = write(nas_sock_fd[pdcpHead->inst], &(sdu_p->data[sizeof(pdcp_data_ind_header_t)]),sizeToWrite ); if(rb_id == mbms_rab_id){ - ret = write(nas_sock_mbms_fd, &(sdu_p->data[sizeof(pdcp_data_ind_header_t)]),sizeToWrite ); - LOG_I(PDCP,"[PDCP_FIFOS] ret %d TRIED TO PUSH MBMS DATA TO rb_id %d handle %d sizeToWrite %d\n",ret,rb_id,nas_sock_fd[ctxt_pP->module_id],sizeToWrite); + ret = write(nas_sock_mbms_fd, pdcpData,sizeToWrite ); + LOG_I(PDCP,"[PDCP_FIFOS] ret %d TRIED TO PUSH MBMS DATA TO rb_id %d handle %d sizeToWrite %d\n", + ret,rb_id,nas_sock_fd[pdcpHead->inst],sizeToWrite); } else { - #if defined(ENABLE_PDCP_PAYLOAD_DEBUG) - LOG_I(PHY, "PDCP output to be sent to TUN interface: \n"); - for (int i = sizeof(pdcp_data_ind_header_t); i < sizeToWrite; i++) { - printf("%02x ",(unsigned char)sdu_p->data[i]); - } - printf("\n"); - #endif - ret = write(nas_sock_fd[ctxt_pP->module_id], &(sdu_p->data[sizeof(pdcp_data_ind_header_t)]),sizeToWrite ); - //LOG_I(PDCP,"[PDCP_FIFOS] ret %d TRIED TO PUSH DATA TO rb_id %d handle %d sizeToWrite %d\n",ret,rb_id,nas_sock_fd[ctxt_pP->module_id],sizeToWrite); + if( LOG_DEBUGFLAG(DEBUG_PDCP) ) + log_dump(PDCP, pdcpData, sizeToWrite, LOG_DUMP_CHAR,"PDCP output to be sent to TUN interface: \n"); + ret = write(nas_sock_fd[pdcpHead->inst], pdcpData,sizeToWrite ); + LOG_T(PDCP,"[UE PDCP_FIFOS] ret %d TRIED TO PUSH DATA TO rb_id %d handle %d sizeToWrite %d\n", + ret,rb_id,nas_sock_fd[pdcpHead->inst],sizeToWrite); } } else if (ENB_NAS_USE_TUN) { - #if defined(ENABLE_PDCP_PAYLOAD_DEBUG) - LOG_I(PHY, "PDCP output to be sent to TUN interface: \n"); - for (int i = sizeof(pdcp_data_ind_header_t); i < sizeToWrite; i++) { - printf("%02x ",(unsigned char)sdu_p->data[i]); - } - printf("\n"); - #endif - ret = write(nas_sock_fd[0], &(sdu_p->data[sizeof(pdcp_data_ind_header_t)]), sizeToWrite); - + if( LOG_DEBUGFLAG(DEBUG_PDCP) ) + log_dump(PDCP, pdcpData, sizeToWrite, LOG_DUMP_CHAR,"PDCP output to be sent to TUN interface: \n"); + ret = write(nas_sock_fd[0], pdcpData, sizeToWrite); + LOG_T(PDCP,"[NB PDCP_FIFOS] ret %d TRIED TO PUSH DATA TO rb_id %d handle %d sizeToWrite %d\n",ret,rb_id,nas_sock_fd[0],sizeToWrite); } else if (PDCP_USE_NETLINK) { - memcpy(NLMSG_DATA(nas_nlh_tx), (uint8_t *) sdu_p->data, sizeToWrite); + memcpy(NLMSG_DATA(nas_nlh_tx), (uint8_t *) pdcpHead, sizeToWrite); nas_nlh_tx->nlmsg_len = sizeToWrite; ret = sendmsg(nas_sock_fd[0],&nas_msg_tx,0); } // PDCP_USE_NETLINK AssertFatal(ret >= 0,"[PDCP_FIFOS] pdcp_fifo_flush_sdus (errno: %d %s), nas_sock_fd[0]: %d\n", errno, strerror(errno), nas_sock_fd[0]); - #if defined(ENABLE_PDCP_PAYLOAD_DEBUG) - LOG_I(PDCP, "Printing first bytes of PDCP SDU before removing it from the list: \n"); - for (int i=0; i<30; i++){ - LOG_I(PDCP, "%x", sdu_p->data[i]); - } - #endif - list_remove_head (&pdcp_sdu_list); - free_mem_block (sdu_p, __func__); + if( LOG_DEBUGFLAG(DEBUG_PDCP) ) + log_dump(PDCP, pdcpData, min(sizeToWrite,30) , LOG_DUMP_CHAR, + "Printing first bytes of PDCP SDU before removing it from the list: \n"); + delNotifiedFIFO_elt (sdu_p); pdcp_nb_sdu_sent ++; } @@ -181,12 +170,13 @@ int pdcp_fifo_flush_sdus(const protocol_ctxt_t *const ctxt_pP) { } int pdcp_fifo_flush_mbms_sdus(const protocol_ctxt_t *const ctxt_pP) { - mem_block_t *sdu_p; + notifiedFIFO_elt_t *sdu_p; int pdcp_nb_sdu_sent = 0; //int ret=0; - while ((sdu_p = list_get_head (&pdcp_sdu_list)) != NULL && ((pdcp_data_ind_header_t *)(sdu_p->data))->inst == ctxt_pP->module_id) { - ((pdcp_data_ind_header_t *)(sdu_p->data))->inst = 0; + while ((sdu_p = pollNotifiedFIFO(&pdcp_sdu_list)) != NULL ) { + pdcp_data_ind_header_t * pdcpHead=(pdcp_data_ind_header_t *)NotifiedFifoData(sdu_p); + AssertFatal(pdcpHead->inst==ctxt_pP->module_id, "To implement correctly multi module id\n"); //int rb_id = ((pdcp_data_ind_header_t *)(sdu_p->data))->rb_id; //int sizeToWrite= sizeof (pdcp_data_ind_header_t) + //((pdcp_data_ind_header_t *) sdu_p->data)->data_size; @@ -212,8 +202,8 @@ int pdcp_fifo_flush_mbms_sdus(const protocol_ctxt_t *const ctxt_pP) { //} // PDCP_USE_NETLINK //AssertFatal(ret >= 0,"[PDCP_FIFOS] pdcp_fifo_flush_sdus (errno: %d %s)\n", errno, strerror(errno)); - list_remove_head (&pdcp_sdu_list); - free_mem_block (sdu_p, __func__); + //AssertFatal(ret >= 0,"[PDCP_FIFOS] pdcp_fifo_flush_sdus (errno: %d %s)\n", errno, strerror(errno)); + delNotifiedFIFO_elt (sdu_p); pdcp_nb_sdu_sent ++; } @@ -320,7 +310,7 @@ int pdcp_fifo_read_input_mbms_sdus_fromtun (const protocol_ctxt_t *const ctxt_p ctxt.module_id, ctxt.rnti, ctxt.enb_flag); if (h_rc == HASH_TABLE_OK) { - LOG_I(PDCP, "[FRAME %5u][UE][NETLINK][IP->PDCP] INST %d: Received socket with length %d on Rab %ld \n", + LOG_D(PDCP, "[FRAME %5u][UE][NETLINK][IP->PDCP] INST %d: Received socket with length %d on Rab %ld \n", ctxt.frame, ctxt.instance, len, rab_id); LOG_D(PDCP, "[FRAME %5u][UE][IP][INSTANCE %u][RB %ld][--- PDCP_DATA_REQ / %d Bytes --->][PDCP][MOD %u][UE %04x][RB %ld]\n", ctxt.frame, ctxt.instance, rab_id, len, ctxt.module_id, diff --git a/openair2/LAYER2/RLC/rlc.c b/openair2/LAYER2/RLC/rlc.c index 2fb844f05a..98c8c3e252 100644 --- a/openair2/LAYER2/RLC/rlc.c +++ b/openair2/LAYER2/RLC/rlc.c @@ -519,7 +519,7 @@ rlc_op_status_t rlc_data_req (const protocol_ctxt_t *const ctxt_pP, // LOG_I(RLC,"DUY rlc_data_req: mbms_rb_id in RLC instant is: %d\n", mbms_rb_id); if (sdu_pP != NULL) { if (sdu_sizeP > 0) { - LOG_I(RLC,"received a packet with size %d for MBMS \n", sdu_sizeP); + LOG_D(RLC,"received a packet with size %d for MBMS \n", sdu_sizeP); new_sdu_p = get_free_mem_block (sdu_sizeP + sizeof (struct rlc_um_data_req_alloc), __func__); if (new_sdu_p != NULL) { diff --git a/openair2/LAYER2/RLC/rlc_rrc.c b/openair2/LAYER2/RLC/rlc_rrc.c index 85ee4e0571..4313f379fe 100644 --- a/openair2/LAYER2/RLC/rlc_rrc.c +++ b/openair2/LAYER2/RLC/rlc_rrc.c @@ -640,7 +640,8 @@ rlc_union_t *rrc_rlc_add_rlc ( } else if (h_rc == HASH_TABLE_KEY_NOT_EXISTS) { rlc_union_p = calloc(1, sizeof(rlc_union_t)); h_rc = hashtable_insert(rlc_coll_p, key, rlc_union_p); - h_lcid_rc = hashtable_insert(rlc_coll_p, key_lcid, rlc_union_p); + if(MBMS_flagP != TRUE) + h_lcid_rc = hashtable_insert(rlc_coll_p, key_lcid, rlc_union_p); if ((h_rc == HASH_TABLE_OK) && (h_lcid_rc == HASH_TABLE_OK)) { if (MBMS_flagP == TRUE) { diff --git a/openair2/LAYER2/nr_pdcp/nr_pdcp_entity.c b/openair2/LAYER2/nr_pdcp/nr_pdcp_entity.c new file mode 100644 index 0000000000..e25201c22c --- /dev/null +++ b/openair2/LAYER2/nr_pdcp/nr_pdcp_entity.c @@ -0,0 +1,74 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +#include "nr_pdcp_entity.h" + +#include "nr_pdcp_entity_drb_am.h" + +#include "LOG/log.h" + +nr_pdcp_entity_t *new_nr_pdcp_entity_srb( + int rb_id, + void (*deliver_sdu)(void *deliver_sdu_data, struct nr_pdcp_entity_t *entity, + char *buf, int size), + void *deliver_sdu_data, + void (*deliver_pdu)(void *deliver_pdu_data, struct nr_pdcp_entity_t *entity, + char *buf, int size, int sdu_id), + void *deliver_pdu_data) +{ + abort(); +} + +nr_pdcp_entity_t *new_nr_pdcp_entity_drb_am( + int rb_id, + void (*deliver_sdu)(void *deliver_sdu_data, struct nr_pdcp_entity_t *entity, + char *buf, int size), + void *deliver_sdu_data, + void (*deliver_pdu)(void *deliver_pdu_data, struct nr_pdcp_entity_t *entity, + char *buf, int size, int sdu_id), + void *deliver_pdu_data) +{ + nr_pdcp_entity_drb_am_t *ret; + + ret = calloc(1, sizeof(nr_pdcp_entity_drb_am_t)); + if (ret == NULL) { + LOG_E(PDCP, "%s:%d:%s: out of memory\n", __FILE__, __LINE__, __FUNCTION__); + exit(1); + } + + ret->common.recv_pdu = nr_pdcp_entity_drb_am_recv_pdu; + ret->common.recv_sdu = nr_pdcp_entity_drb_am_recv_sdu; + ret->common.set_integrity_key = nr_pdcp_entity_drb_am_set_integrity_key; + + ret->common.delete = nr_pdcp_entity_drb_am_delete; + + ret->common.deliver_sdu = deliver_sdu; + ret->common.deliver_sdu_data = deliver_sdu_data; + + ret->common.deliver_pdu = deliver_pdu; + ret->common.deliver_pdu_data = deliver_pdu_data; + + ret->rb_id = rb_id; + + ret->common.maximum_nr_pdcp_sn = 4095; + + return (nr_pdcp_entity_t *)ret; +} diff --git a/openair2/LAYER2/nr_pdcp/nr_pdcp_entity.h b/openair2/LAYER2/nr_pdcp/nr_pdcp_entity.h new file mode 100644 index 0000000000..45555ad6af --- /dev/null +++ b/openair2/LAYER2/nr_pdcp/nr_pdcp_entity.h @@ -0,0 +1,65 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +#ifndef _NR_PDCP_ENTITY_H_ +#define _NR_PDCP_ENTITY_H_ + +typedef struct nr_pdcp_entity_t { + /* functions provided by the PDCP module */ + void (*recv_pdu)(struct nr_pdcp_entity_t *entity, char *buffer, int size); + void (*recv_sdu)(struct nr_pdcp_entity_t *entity, char *buffer, int size, + int sdu_id); + void (*delete)(struct nr_pdcp_entity_t *entity); + void (*set_integrity_key)(struct nr_pdcp_entity_t *entity, char *key); + + /* callbacks provided to the PDCP module */ + void (*deliver_sdu)(void *deliver_sdu_data, struct nr_pdcp_entity_t *entity, + char *buf, int size); + void *deliver_sdu_data; + void (*deliver_pdu)(void *deliver_pdu_data, struct nr_pdcp_entity_t *entity, + char *buf, int size, int sdu_id); + void *deliver_pdu_data; + int tx_hfn; + int next_nr_pdcp_tx_sn; + int maximum_nr_pdcp_sn; +} nr_pdcp_entity_t; + +nr_pdcp_entity_t *new_nr_pdcp_entity_srb( + int rb_id, + void (*deliver_sdu)(void *deliver_sdu_data, struct nr_pdcp_entity_t *entity, + char *buf, int size), + void *deliver_sdu_data, + void (*deliver_pdu)(void *deliver_pdu_data, struct nr_pdcp_entity_t *entity, + char *buf, int size, int sdu_id), + void *deliver_pdu_data); + +nr_pdcp_entity_t *new_nr_pdcp_entity_drb_am( + int rb_id, + void (*deliver_sdu)(void *deliver_sdu_data, struct nr_pdcp_entity_t *entity, + char *buf, int size), + void *deliver_sdu_data, + void (*deliver_pdu)(void *deliver_pdu_data, struct nr_pdcp_entity_t *entity, + char *buf, int size, int sdu_id), + void *deliver_pdu_data); + +void nr_DRB_preconfiguration(void); + +#endif /* _NR_PDCP_ENTITY_H_ */ diff --git a/openair2/LAYER2/nr_pdcp/nr_pdcp_entity_drb_am.c b/openair2/LAYER2/nr_pdcp/nr_pdcp_entity_drb_am.c new file mode 100644 index 0000000000..85f638d66d --- /dev/null +++ b/openair2/LAYER2/nr_pdcp/nr_pdcp_entity_drb_am.c @@ -0,0 +1,71 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +#include "nr_pdcp_entity_drb_am.h" + +#include +#include +#include + +void nr_pdcp_entity_drb_am_recv_pdu(nr_pdcp_entity_t *_entity, char *buffer, int size) +{ + nr_pdcp_entity_drb_am_t *entity = (nr_pdcp_entity_drb_am_t *)_entity; + + if (size < 3) abort(); + if (!(buffer[0] & 0x80)) { printf("%s:%d:%s: fatal\n", __FILE__, __LINE__, __FUNCTION__); exit(1); } + entity->common.deliver_sdu(entity->common.deliver_sdu_data, + (nr_pdcp_entity_t *)entity, buffer+3, size-3); +} + +void nr_pdcp_entity_drb_am_recv_sdu(nr_pdcp_entity_t *_entity, char *buffer, int size, + int sdu_id) +{ + nr_pdcp_entity_drb_am_t *entity = (nr_pdcp_entity_drb_am_t *)_entity; + int sn; + char buf[size+2]; + + sn = entity->common.next_nr_pdcp_tx_sn; + + entity->common.next_nr_pdcp_tx_sn++; + if (entity->common.next_nr_pdcp_tx_sn > entity->common.maximum_nr_pdcp_sn) { + entity->common.next_nr_pdcp_tx_sn = 0; + entity->common.tx_hfn++; + } + + buf[0] = 0x80 | ((sn >> 16) & 0x3); + buf[1] = (sn >> 8) & 0xff; + buf[2] = sn & 0xff; + memcpy(buf+3, buffer, size); + + entity->common.deliver_pdu(entity->common.deliver_pdu_data, + (nr_pdcp_entity_t *)entity, buf, size+3, sdu_id); +} + +void nr_pdcp_entity_drb_am_set_integrity_key(nr_pdcp_entity_t *_entity, char *key) +{ + /* nothing to do */ +} + +void nr_pdcp_entity_drb_am_delete(nr_pdcp_entity_t *_entity) +{ + nr_pdcp_entity_drb_am_t *entity = (nr_pdcp_entity_drb_am_t *)_entity; + free(entity); +} diff --git a/openair2/LAYER2/nr_pdcp/nr_pdcp_entity_drb_am.h b/openair2/LAYER2/nr_pdcp/nr_pdcp_entity_drb_am.h new file mode 100644 index 0000000000..faa8226e93 --- /dev/null +++ b/openair2/LAYER2/nr_pdcp/nr_pdcp_entity_drb_am.h @@ -0,0 +1,38 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +#ifndef _NR_PDCP_ENTITY_DRB_AM_H_ +#define _NR_PDCP_ENTITY_DRB_AM_H_ + +#include "nr_pdcp_entity.h" + +typedef struct { + nr_pdcp_entity_t common; + int rb_id; +} nr_pdcp_entity_drb_am_t; + +void nr_pdcp_entity_drb_am_recv_pdu(nr_pdcp_entity_t *entity, char *buffer, int size); +void nr_pdcp_entity_drb_am_recv_sdu(nr_pdcp_entity_t *entity, char *buffer, int size, + int sdu_id); +void nr_pdcp_entity_drb_am_set_integrity_key(nr_pdcp_entity_t *entity, char *key); +void nr_pdcp_entity_drb_am_delete(nr_pdcp_entity_t *entity); + +#endif /* _NR_PDCP_ENTITY_DRB_AM_H_ */ diff --git a/openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.c b/openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.c new file mode 100644 index 0000000000..c8b385bbfc --- /dev/null +++ b/openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.c @@ -0,0 +1,946 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +#include "nr_pdcp_ue_manager.h" +#include "NR_RadioBearerConfig.h" +#include "NR_RLC-BearerConfig.h" +#include "NR_CellGroupConfig.h" +#include "openair2/RRC/NR/nr_rrc_proto.h" + +/* from OAI */ +#include "pdcp.h" + +#define TODO do { \ + printf("%s:%d:%s: todo\n", __FILE__, __LINE__, __FUNCTION__); \ + exit(1); \ + } while (0) + +static nr_pdcp_ue_manager_t *nr_pdcp_ue_manager; + +/* necessary globals for OAI, not used internally */ +hash_table_t *pdcp_coll_p; +static uint64_t pdcp_optmask; + +/****************************************************************************/ +/* rlc_data_req queue - begin */ +/****************************************************************************/ + +#include + +/* NR PDCP and RLC both use "big locks". In some cases a thread may do + * lock(rlc) followed by lock(pdcp) (typically when running 'rx_sdu'). + * Another thread may first do lock(pdcp) and then lock(rlc) (typically + * the GTP module calls 'pdcp_data_req' that, in a previous implementation + * was indirectly calling 'rlc_data_req' which does lock(rlc)). + * To avoid the resulting deadlock it is enough to ensure that a call + * to lock(pdcp) will never be followed by a call to lock(rlc). So, + * here we chose to have a separate thread that deals with rlc_data_req, + * out of the PDCP lock. Other solutions may be possible. + * So instead of calling 'rlc_data_req' directly we have a queue and a + * separate thread emptying it. + */ + +typedef struct { + protocol_ctxt_t ctxt_pP; + srb_flag_t srb_flagP; + MBMS_flag_t MBMS_flagP; + rb_id_t rb_idP; + mui_t muiP; + confirm_t confirmP; + sdu_size_t sdu_sizeP; + mem_block_t *sdu_pP; +} rlc_data_req_queue_item; + +#define RLC_DATA_REQ_QUEUE_SIZE 10000 + +typedef struct { + rlc_data_req_queue_item q[RLC_DATA_REQ_QUEUE_SIZE]; + volatile int start; + volatile int length; + pthread_mutex_t m; + pthread_cond_t c; +} rlc_data_req_queue; + +static rlc_data_req_queue q; + +extern rlc_op_status_t nr_rrc_rlc_config_asn1_req (const protocol_ctxt_t * const ctxt_pP, + const NR_SRB_ToAddModList_t * const srb2add_listP, + const NR_DRB_ToAddModList_t * const drb2add_listP, + const NR_DRB_ToReleaseList_t * const drb2release_listP, + const LTE_PMCH_InfoList_r9_t * const pmch_InfoList_r9_pP, + struct NR_CellGroupConfig__rlc_BearerToAddModList *rlc_bearer2add_list); + +static void *rlc_data_req_thread(void *_) +{ + int i; + + while (1) { + if (pthread_mutex_lock(&q.m) != 0) abort(); + while (q.length == 0) + if (pthread_cond_wait(&q.c, &q.m) != 0) abort(); + i = q.start; + if (pthread_mutex_unlock(&q.m) != 0) abort(); + + rlc_data_req(&q.q[i].ctxt_pP, + q.q[i].srb_flagP, + q.q[i].MBMS_flagP, + q.q[i].rb_idP, + q.q[i].muiP, + q.q[i].confirmP, + q.q[i].sdu_sizeP, + q.q[i].sdu_pP, + NULL, + NULL); + + if (pthread_mutex_lock(&q.m) != 0) abort(); + + q.length--; + q.start = (q.start + 1) % RLC_DATA_REQ_QUEUE_SIZE; + + if (pthread_cond_signal(&q.c) != 0) abort(); + if (pthread_mutex_unlock(&q.m) != 0) abort(); + } +} + +static void init_nr_rlc_data_req_queue(void) +{ + pthread_t t; + + pthread_mutex_init(&q.m, NULL); + pthread_cond_init(&q.c, NULL); + + if (pthread_create(&t, NULL, rlc_data_req_thread, NULL) != 0) { + LOG_E(PDCP, "%s:%d:%s: fatal\n", __FILE__, __LINE__, __FUNCTION__); + exit(1); + } +} + +static void enqueue_rlc_data_req(const protocol_ctxt_t *const ctxt_pP, + const srb_flag_t srb_flagP, + const MBMS_flag_t MBMS_flagP, + const rb_id_t rb_idP, + const mui_t muiP, + confirm_t confirmP, + sdu_size_t sdu_sizeP, + mem_block_t *sdu_pP, + void *_unused1, void *_unused2) +{ + int i; + int logged = 0; + + if (pthread_mutex_lock(&q.m) != 0) abort(); + while (q.length == RLC_DATA_REQ_QUEUE_SIZE) { + if (!logged) { + logged = 1; + LOG_W(PDCP, "%s: rlc_data_req queue is full\n", __FUNCTION__); + } + if (pthread_cond_wait(&q.c, &q.m) != 0) abort(); + } + + i = (q.start + q.length) % RLC_DATA_REQ_QUEUE_SIZE; + q.length++; + + q.q[i].ctxt_pP = *ctxt_pP; + q.q[i].srb_flagP = srb_flagP; + q.q[i].MBMS_flagP = MBMS_flagP; + q.q[i].rb_idP = rb_idP; + q.q[i].muiP = muiP; + q.q[i].confirmP = confirmP; + q.q[i].sdu_sizeP = sdu_sizeP; + q.q[i].sdu_pP = sdu_pP; + + if (pthread_cond_signal(&q.c) != 0) abort(); + if (pthread_mutex_unlock(&q.m) != 0) abort(); +} + +/****************************************************************************/ +/* rlc_data_req queue - end */ +/****************************************************************************/ + +/****************************************************************************/ +/* hacks to be cleaned up at some point - begin */ +/****************************************************************************/ + +#include "LAYER2/MAC/mac_extern.h" + +static void reblock_tun_socket(void) +{ + extern int nas_sock_fd[]; + int f; + + f = fcntl(nas_sock_fd[0], F_GETFL, 0); + f &= ~(O_NONBLOCK); + if (fcntl(nas_sock_fd[0], F_SETFL, f) == -1) { + LOG_E(PDCP, "reblock_tun_socket failed\n"); + exit(1); + } +} + +static void *enb_tun_read_thread(void *_) +{ + extern int nas_sock_fd[]; + char rx_buf[NL_MAX_PAYLOAD]; + int len; + int rnti; + protocol_ctxt_t ctxt; + + int rb_id = 1; + + while (1) { + len = read(nas_sock_fd[0], &rx_buf, NL_MAX_PAYLOAD); + if (len == -1) { + LOG_E(PDCP, "%s:%d:%s: fatal\n", __FILE__, __LINE__, __FUNCTION__); + exit(1); + } + +printf("\n\n\n########## nas_sock_fd read returns len %d\n", len); + + nr_pdcp_manager_lock(nr_pdcp_ue_manager); + rnti = nr_pdcp_get_first_rnti(nr_pdcp_ue_manager); + nr_pdcp_manager_unlock(nr_pdcp_ue_manager); + + if (rnti == -1) continue; + + ctxt.module_id = 0; + ctxt.enb_flag = 1; + ctxt.instance = 0; + ctxt.frame = 0; + ctxt.subframe = 0; + ctxt.eNB_index = 0; + ctxt.configured = 1; + ctxt.brOption = 0; + + ctxt.rnti = rnti; + + pdcp_data_req(&ctxt, SRB_FLAG_NO, rb_id, RLC_MUI_UNDEFINED, + RLC_SDU_CONFIRM_NO, len, (unsigned char *)rx_buf, + PDCP_TRANSMISSION_MODE_DATA, NULL, NULL); + } + + return NULL; +} + +static void *ue_tun_read_thread(void *_) +{ + extern int nas_sock_fd[]; + char rx_buf[NL_MAX_PAYLOAD]; + int len; + int rnti; + protocol_ctxt_t ctxt; + + int rb_id = 1; + + while (1) { + len = read(nas_sock_fd[0], &rx_buf, NL_MAX_PAYLOAD); + if (len == -1) { + LOG_E(PDCP, "%s:%d:%s: fatal\n", __FILE__, __LINE__, __FUNCTION__); + exit(1); + } + +printf("\n\n\n########## nas_sock_fd read returns len %d\n", len); + + nr_pdcp_manager_lock(nr_pdcp_ue_manager); + rnti = nr_pdcp_get_first_rnti(nr_pdcp_ue_manager); + nr_pdcp_manager_unlock(nr_pdcp_ue_manager); + + if (rnti == -1) continue; + + ctxt.module_id = 0; + ctxt.enb_flag = 0; + ctxt.instance = 0; + ctxt.frame = 0; + ctxt.subframe = 0; + ctxt.eNB_index = 0; + ctxt.configured = 1; + ctxt.brOption = 0; + + ctxt.rnti = rnti; + + pdcp_data_req(&ctxt, SRB_FLAG_NO, rb_id, RLC_MUI_UNDEFINED, + RLC_SDU_CONFIRM_NO, len, (unsigned char *)rx_buf, + PDCP_TRANSMISSION_MODE_DATA, NULL, NULL); + } + + return NULL; +} + +static void start_pdcp_tun_enb(void) +{ + pthread_t t; + + reblock_tun_socket(); + + if (pthread_create(&t, NULL, enb_tun_read_thread, NULL) != 0) { + LOG_E(PDCP, "%s:%d:%s: fatal\n", __FILE__, __LINE__, __FUNCTION__); + exit(1); + } +} + +static void start_pdcp_tun_ue(void) +{ + pthread_t t; + + reblock_tun_socket(); + + if (pthread_create(&t, NULL, ue_tun_read_thread, NULL) != 0) { + LOG_E(PDCP, "%s:%d:%s: fatal\n", __FILE__, __LINE__, __FUNCTION__); + exit(1); + } +} + +/****************************************************************************/ +/* hacks to be cleaned up at some point - end */ +/****************************************************************************/ + +int pdcp_fifo_flush_sdus(const protocol_ctxt_t *const ctxt_pP) +{ + return 0; +} + +void pdcp_layer_init(void) +{ + /* hack: be sure to initialize only once */ + static pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER; + static int initialized = 0; + if (pthread_mutex_lock(&m) != 0) abort(); + if (initialized) { + if (pthread_mutex_unlock(&m) != 0) abort(); + return; + } + initialized = 1; + if (pthread_mutex_unlock(&m) != 0) abort(); + + nr_pdcp_ue_manager = new_nr_pdcp_ue_manager(1); + init_nr_rlc_data_req_queue(); +} + +#include "nfapi/oai_integration/vendor_ext.h" +#include "targets/RT/USER/lte-softmodem.h" +#include "openair2/RRC/NAS/nas_config.h" + +uint64_t pdcp_module_init(uint64_t _pdcp_optmask) +{ + /* hack: be sure to initialize only once */ + static pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER; + static int initialized = 0; + if (pthread_mutex_lock(&m) != 0) abort(); + if (initialized) { + abort(); + } + initialized = 1; + if (pthread_mutex_unlock(&m) != 0) abort(); + +#if 0 + pdcp_optmask = _pdcp_optmask; + return pdcp_optmask; +#endif + /* temporary enforce netlink when UE_NAS_USE_TUN is set, + this is while switching from noS1 as build option + to noS1 as config option */ + if ( _pdcp_optmask & UE_NAS_USE_TUN_BIT) { + pdcp_optmask = pdcp_optmask | PDCP_USE_NETLINK_BIT ; + } + + pdcp_optmask = pdcp_optmask | _pdcp_optmask ; + LOG_I(PDCP, "pdcp init,%s %s\n", + ((LINK_ENB_PDCP_TO_GTPV1U)?"usegtp":""), + ((PDCP_USE_NETLINK)?"usenetlink":"")); + + if (PDCP_USE_NETLINK) { + nas_getparams(); + + if(UE_NAS_USE_TUN) { + int num_if = (NFAPI_MODE == NFAPI_UE_STUB_PNF || IS_SOFTMODEM_SIML1 )?MAX_NUMBER_NETIF:1; + netlink_init_tun("ue",num_if); + //Add --nr-ip-over-lte option check for next line + if (IS_SOFTMODEM_NOS1) + nas_config(1, 1, 2, "ue"); + LOG_I(PDCP, "UE pdcp will use tun interface\n"); + start_pdcp_tun_ue(); + } else if(ENB_NAS_USE_TUN) { + netlink_init_tun("enb",1); + nas_config(1, 1, 1, "enb"); + LOG_I(PDCP, "ENB pdcp will use tun interface\n"); + start_pdcp_tun_enb(); + } else { + LOG_I(PDCP, "pdcp will use kernel modules\n"); + abort(); + netlink_init(); + } + } + return pdcp_optmask ; +} + +static void deliver_sdu_drb(void *_ue, nr_pdcp_entity_t *entity, + char *buf, int size) +{ + extern int nas_sock_fd[]; + int len; + nr_pdcp_ue_t *ue = _ue; + MessageDef *message_p; + uint8_t *gtpu_buffer_p; + int rb_id; + int i; + + if(IS_SOFTMODEM_NOS1){ + len = write(nas_sock_fd[0], buf, size); + if (len != size) { + LOG_E(PDCP, "%s:%d:%s: fatal\n", __FILE__, __LINE__, __FUNCTION__); + exit(1); + } + } + else{ + for (i = 0; i < 5; i++) { + if (entity == ue->drb[i]) { + rb_id = i+1; + goto rb_found; + } + } + + LOG_E(PDCP, "%s:%d:%s: fatal, no RB found for ue %d\n", + __FILE__, __LINE__, __FUNCTION__, ue->rnti); + exit(1); + + rb_found: + gtpu_buffer_p = itti_malloc(TASK_PDCP_ENB, TASK_GTPV1_U, + size + GTPU_HEADER_OVERHEAD_MAX); + AssertFatal(gtpu_buffer_p != NULL, "OUT OF MEMORY"); + memcpy(>pu_buffer_p[GTPU_HEADER_OVERHEAD_MAX], buf, size); + message_p = itti_alloc_new_message(TASK_PDCP_ENB, GTPV1U_ENB_TUNNEL_DATA_REQ); + AssertFatal(message_p != NULL, "OUT OF MEMORY"); + GTPV1U_ENB_TUNNEL_DATA_REQ(message_p).buffer = gtpu_buffer_p; + GTPV1U_ENB_TUNNEL_DATA_REQ(message_p).length = size; + GTPV1U_ENB_TUNNEL_DATA_REQ(message_p).offset = GTPU_HEADER_OVERHEAD_MAX; + GTPV1U_ENB_TUNNEL_DATA_REQ(message_p).rnti = ue->rnti; + GTPV1U_ENB_TUNNEL_DATA_REQ(message_p).rab_id = rb_id + 4; + printf("!!!!!!! deliver_sdu_drb (drb %d) sending message to gtp size %d: ", rb_id, size); + //for (i = 0; i < size; i++) printf(" %2.2x", (unsigned char)buf[i]); + printf("\n"); + itti_send_msg_to_task(TASK_GTPV1_U, INSTANCE_DEFAULT, message_p); + + } +} + +static void deliver_pdu_drb(void *_ue, nr_pdcp_entity_t *entity, + char *buf, int size, int sdu_id) +{ + nr_pdcp_ue_t *ue = _ue; + int rb_id; + protocol_ctxt_t ctxt; + int i; + mem_block_t *memblock; + + for (i = 0; i < 5; i++) { + if (entity == ue->drb[i]) { + rb_id = i+1; + goto rb_found; + } + } + + LOG_E(PDCP, "%s:%d:%s: fatal, no RB found for ue %d\n", + __FILE__, __LINE__, __FUNCTION__, ue->rnti); + exit(1); + +rb_found: + ctxt.module_id = 0; + ctxt.enb_flag = 1; + ctxt.instance = 0; + ctxt.frame = 0; + ctxt.subframe = 0; + ctxt.eNB_index = 0; + ctxt.configured = 1; + ctxt.brOption = 0; + + ctxt.rnti = ue->rnti; + + memblock = get_free_mem_block(size, __FUNCTION__); + memcpy(memblock->data, buf, size); + +printf("!!!!!!! deliver_pdu_drb (srb %d) calling rlc_data_req size %d: ", rb_id, size); +//for (i = 0; i < size; i++) printf(" %2.2x", (unsigned char)memblock->data[i]); +printf("\n"); + enqueue_rlc_data_req(&ctxt, 0, MBMS_FLAG_NO, rb_id, sdu_id, 0, size, memblock, NULL, NULL); +} + +boolean_t pdcp_data_ind( + const protocol_ctxt_t *const ctxt_pP, + const srb_flag_t srb_flagP, + const MBMS_flag_t MBMS_flagP, + const rb_id_t rb_id, + const sdu_size_t sdu_buffer_size, + mem_block_t *const sdu_buffer) +{ + nr_pdcp_ue_t *ue; + nr_pdcp_entity_t *rb; + int rnti = ctxt_pP->rnti; + + if (ctxt_pP->module_id != 0 || + //ctxt_pP->enb_flag != 1 || + ctxt_pP->instance != 0 || + ctxt_pP->eNB_index != 0 || + ctxt_pP->configured != 1 || + ctxt_pP->brOption != 0) { + LOG_E(PDCP, "%s:%d:%s: fatal\n", __FILE__, __LINE__, __FUNCTION__); + exit(1); + } + + if (ctxt_pP->enb_flag) + T(T_ENB_PDCP_UL, T_INT(ctxt_pP->module_id), T_INT(rnti), + T_INT(rb_id), T_INT(sdu_buffer_size)); + + nr_pdcp_manager_lock(nr_pdcp_ue_manager); + ue = nr_pdcp_manager_get_ue(nr_pdcp_ue_manager, rnti); + + if (srb_flagP == 1) { + if (rb_id < 1 || rb_id > 2) + rb = NULL; + else + rb = ue->srb[rb_id - 1]; + } else { + if (rb_id < 1 || rb_id > 5) + rb = NULL; + else + rb = ue->drb[rb_id - 1]; + } + + if (rb != NULL) { + rb->recv_pdu(rb, (char *)sdu_buffer->data, sdu_buffer_size); + } else { + LOG_E(PDCP, "%s:%d:%s: fatal: no RB found (rb_id %ld, srb_flag %d)\n", + __FILE__, __LINE__, __FUNCTION__, rb_id, srb_flagP); + exit(1); + } + + nr_pdcp_manager_unlock(nr_pdcp_ue_manager); + + free_mem_block(sdu_buffer, __FUNCTION__); + + return 1; +} + +void pdcp_run(const protocol_ctxt_t *const ctxt_pP) +{ + MessageDef *msg_p; + int result; + protocol_ctxt_t ctxt; + + while (1) { + itti_poll_msg(ctxt_pP->enb_flag ? TASK_PDCP_ENB : TASK_PDCP_UE, &msg_p); + if (msg_p == NULL) + break; + switch (ITTI_MSG_ID(msg_p)) { + case RRC_DCCH_DATA_REQ: + PROTOCOL_CTXT_SET_BY_MODULE_ID( + &ctxt, + RRC_DCCH_DATA_REQ(msg_p).module_id, + RRC_DCCH_DATA_REQ(msg_p).enb_flag, + RRC_DCCH_DATA_REQ(msg_p).rnti, + RRC_DCCH_DATA_REQ(msg_p).frame, + 0, + RRC_DCCH_DATA_REQ(msg_p).eNB_index); + result = pdcp_data_req(&ctxt, + SRB_FLAG_YES, + RRC_DCCH_DATA_REQ(msg_p).rb_id, + RRC_DCCH_DATA_REQ(msg_p).muip, + RRC_DCCH_DATA_REQ(msg_p).confirmp, + RRC_DCCH_DATA_REQ(msg_p).sdu_size, + RRC_DCCH_DATA_REQ(msg_p).sdu_p, + RRC_DCCH_DATA_REQ(msg_p).mode, + NULL, NULL); + + if (result != TRUE) + LOG_E(PDCP, "PDCP data request failed!\n"); + result = itti_free(ITTI_MSG_ORIGIN_ID(msg_p), RRC_DCCH_DATA_REQ(msg_p).sdu_p); + AssertFatal(result == EXIT_SUCCESS, "Failed to free memory (%d)!\n", result); + break; + default: + LOG_E(PDCP, "Received unexpected message %s\n", ITTI_MSG_NAME(msg_p)); + break; + } + } +} + +static void add_srb(int rnti, struct NR_SRB_ToAddMod *s) +{ + TODO; +} + +static void add_drb_am(int rnti, struct NR_DRB_ToAddMod *s) +{ + nr_pdcp_entity_t *pdcp_drb; + nr_pdcp_ue_t *ue; + + int drb_id = s->drb_Identity; + +printf("\n\n################# rnti %d add drb %d\n\n\n", rnti, drb_id); + + if (drb_id != 1) { + LOG_E(PDCP, "%s:%d:%s: fatal, bad drb id %d\n", + __FILE__, __LINE__, __FUNCTION__, drb_id); + exit(1); + } + + nr_pdcp_manager_lock(nr_pdcp_ue_manager); + ue = nr_pdcp_manager_get_ue(nr_pdcp_ue_manager, rnti); + if (ue->drb[drb_id-1] != NULL) { + LOG_D(PDCP, "%s:%d:%s: warning DRB %d already exist for ue %d, do nothing\n", + __FILE__, __LINE__, __FUNCTION__, drb_id, rnti); + } else { + pdcp_drb = new_nr_pdcp_entity_drb_am(drb_id, deliver_sdu_drb, ue, deliver_pdu_drb, ue); + nr_pdcp_ue_add_drb_pdcp_entity(ue, drb_id, pdcp_drb); + + LOG_D(PDCP, "%s:%d:%s: added drb %d to ue %d\n", + __FILE__, __LINE__, __FUNCTION__, drb_id, rnti); + } + nr_pdcp_manager_unlock(nr_pdcp_ue_manager); +} + +static void add_drb(int rnti, struct NR_DRB_ToAddMod *s, NR_RLC_Config_t *rlc_Config) +{ + switch (rlc_Config->present) { + case NR_RLC_Config_PR_am: + add_drb_am(rnti, s); + break; + case NR_RLC_Config_PR_um_Bi_Directional: + //add_drb_um(rnti, s); + /* hack */ + add_drb_am(rnti, s); + break; + default: + LOG_E(PDCP, "%s:%d:%s: fatal: unhandled DRB type\n", + __FILE__, __LINE__, __FUNCTION__); + exit(1); + } +} + +boolean_t nr_rrc_pdcp_config_asn1_req( + const protocol_ctxt_t *const ctxt_pP, + NR_SRB_ToAddModList_t *const srb2add_list, + NR_DRB_ToAddModList_t *const drb2add_list, + NR_DRB_ToReleaseList_t *const drb2release_list, + const uint8_t security_modeP, + uint8_t *const kRRCenc, + uint8_t *const kRRCint, + uint8_t *const kUPenc +#if (LTE_RRC_VERSION >= MAKE_VERSION(9, 0, 0)) + ,LTE_PMCH_InfoList_r9_t *pmch_InfoList_r9 +#endif + ,rb_id_t *const defaultDRB, + struct NR_CellGroupConfig__rlc_BearerToAddModList *rlc_bearer2add_list) + //struct NR_RLC_Config *rlc_Config) +{ + int rnti = ctxt_pP->rnti; + int i; + + if (//ctxt_pP->enb_flag != 1 || + ctxt_pP->module_id != 0 || + ctxt_pP->instance != 0 || + ctxt_pP->eNB_index != 0 || + //ctxt_pP->configured != 2 || + //srb2add_list == NULL || + //drb2add_list != NULL || + drb2release_list != NULL || + security_modeP != 255 || + //kRRCenc != NULL || + //kRRCint != NULL || + //kUPenc != NULL || + pmch_InfoList_r9 != NULL /*|| + defaultDRB != NULL */) { + TODO; + } + + if (srb2add_list != NULL) { + for (i = 0; i < srb2add_list->list.count; i++) { + add_srb(rnti, srb2add_list->list.array[i]); + } + } + + if (drb2add_list != NULL) { + for (i = 0; i < drb2add_list->list.count; i++) { + LOG_I(PDCP, "Before calling add_drb \n"); + add_drb(rnti, drb2add_list->list.array[i], rlc_bearer2add_list->list.array[i]->rlc_Config); + } + } + + /* update security */ + if (kRRCint != NULL) { + /* todo */ + } + + free(kRRCenc); + free(kRRCint); + free(kUPenc); + + return 0; +} + +/* Dummy function due to dependency from LTE libraries */ +boolean_t rrc_pdcp_config_asn1_req( + const protocol_ctxt_t *const ctxt_pP, + LTE_SRB_ToAddModList_t *const srb2add_list, + LTE_DRB_ToAddModList_t *const drb2add_list, + LTE_DRB_ToReleaseList_t *const drb2release_list, + const uint8_t security_modeP, + uint8_t *const kRRCenc, + uint8_t *const kRRCint, + uint8_t *const kUPenc +#if (LTE_RRC_VERSION >= MAKE_VERSION(9, 0, 0)) + ,LTE_PMCH_InfoList_r9_t *pmch_InfoList_r9 +#endif + ,rb_id_t *const defaultDRB) +{ + return 0; +} + +void nr_DRB_preconfiguration(void) +{ + + NR_RadioBearerConfig_t *rbconfig = NULL; + struct NR_CellGroupConfig__rlc_BearerToAddModList *Rlc_Bearer_ToAdd_list = NULL; + protocol_ctxt_t ctxt; + //fill_default_rbconfig(rb_config, 5, 1); + rbconfig = calloc(1, sizeof(*rbconfig)); + + rbconfig->srb_ToAddModList = NULL; + rbconfig->srb3_ToRelease = NULL; + rbconfig->drb_ToAddModList = calloc(1,sizeof(*rbconfig->drb_ToAddModList)); + NR_DRB_ToAddMod_t *drb_ToAddMod = calloc(1,sizeof(*drb_ToAddMod)); + drb_ToAddMod->cnAssociation = calloc(1,sizeof(*drb_ToAddMod->cnAssociation)); + drb_ToAddMod->cnAssociation->present = NR_DRB_ToAddMod__cnAssociation_PR_eps_BearerIdentity; + drb_ToAddMod->cnAssociation->choice.eps_BearerIdentity= 5; + drb_ToAddMod->drb_Identity = 1; + drb_ToAddMod->reestablishPDCP = NULL; + drb_ToAddMod->recoverPDCP = NULL; + drb_ToAddMod->pdcp_Config = calloc(1,sizeof(*drb_ToAddMod->pdcp_Config)); + drb_ToAddMod->pdcp_Config->drb = calloc(1,sizeof(*drb_ToAddMod->pdcp_Config->drb)); + drb_ToAddMod->pdcp_Config->drb->discardTimer = calloc(1,sizeof(*drb_ToAddMod->pdcp_Config->drb->discardTimer)); + *drb_ToAddMod->pdcp_Config->drb->discardTimer=NR_PDCP_Config__drb__discardTimer_ms30; + drb_ToAddMod->pdcp_Config->drb->pdcp_SN_SizeUL = calloc(1,sizeof(*drb_ToAddMod->pdcp_Config->drb->pdcp_SN_SizeUL)); + *drb_ToAddMod->pdcp_Config->drb->pdcp_SN_SizeUL = NR_PDCP_Config__drb__pdcp_SN_SizeUL_len12bits; + drb_ToAddMod->pdcp_Config->drb->pdcp_SN_SizeDL = calloc(1,sizeof(*drb_ToAddMod->pdcp_Config->drb->pdcp_SN_SizeDL)); + *drb_ToAddMod->pdcp_Config->drb->pdcp_SN_SizeDL = NR_PDCP_Config__drb__pdcp_SN_SizeDL_len12bits; + drb_ToAddMod->pdcp_Config->drb->headerCompression.present = NR_PDCP_Config__drb__headerCompression_PR_notUsed; + drb_ToAddMod->pdcp_Config->drb->headerCompression.choice.notUsed = 0; + + drb_ToAddMod->pdcp_Config->drb->integrityProtection=NULL; + drb_ToAddMod->pdcp_Config->drb->statusReportRequired=NULL; + drb_ToAddMod->pdcp_Config->drb->outOfOrderDelivery=NULL; + drb_ToAddMod->pdcp_Config->moreThanOneRLC = NULL; + + drb_ToAddMod->pdcp_Config->t_Reordering = calloc(1,sizeof(*drb_ToAddMod->pdcp_Config->t_Reordering)); + *drb_ToAddMod->pdcp_Config->t_Reordering = NR_PDCP_Config__t_Reordering_ms0; + drb_ToAddMod->pdcp_Config->ext1 = NULL; + + ASN_SEQUENCE_ADD(&rbconfig->drb_ToAddModList->list,drb_ToAddMod); + + rbconfig->drb_ToReleaseList = NULL; + + rbconfig->securityConfig = calloc(1,sizeof(*rbconfig->securityConfig)); + rbconfig->securityConfig->securityAlgorithmConfig = calloc(1,sizeof(*rbconfig->securityConfig->securityAlgorithmConfig)); + rbconfig->securityConfig->securityAlgorithmConfig->cipheringAlgorithm = NR_CipheringAlgorithm_nea0; + rbconfig->securityConfig->securityAlgorithmConfig->integrityProtAlgorithm=NULL; + rbconfig->securityConfig->keyToUse = calloc(1,sizeof(*rbconfig->securityConfig->keyToUse)); + *rbconfig->securityConfig->keyToUse = NR_SecurityConfig__keyToUse_master; + + xer_fprint(stdout, &asn_DEF_NR_RadioBearerConfig, (const void*)rbconfig); + + + NR_RLC_BearerConfig_t *RLC_BearerConfig = calloc(1,sizeof(*RLC_BearerConfig)); + + RLC_BearerConfig->logicalChannelIdentity = 4; + RLC_BearerConfig->servedRadioBearer = calloc(1,sizeof(*RLC_BearerConfig->servedRadioBearer)); + RLC_BearerConfig->servedRadioBearer->present = NR_RLC_BearerConfig__servedRadioBearer_PR_drb_Identity; + + RLC_BearerConfig->servedRadioBearer->choice.drb_Identity=1; + RLC_BearerConfig->reestablishRLC=calloc(1,sizeof(*RLC_BearerConfig->reestablishRLC)); + *RLC_BearerConfig->reestablishRLC=NR_RLC_BearerConfig__reestablishRLC_true; + RLC_BearerConfig->rlc_Config=calloc(1,sizeof(*RLC_BearerConfig->rlc_Config)); + + // RLC UM Bi-directional Bearer configuration + RLC_BearerConfig->rlc_Config->present = NR_RLC_Config_PR_um_Bi_Directional; + RLC_BearerConfig->rlc_Config->choice.um_Bi_Directional = calloc(1,sizeof(*RLC_BearerConfig->rlc_Config->choice.um_Bi_Directional)); + RLC_BearerConfig->rlc_Config->choice.um_Bi_Directional->ul_UM_RLC.sn_FieldLength = calloc(1,sizeof(*RLC_BearerConfig->rlc_Config->choice.um_Bi_Directional->ul_UM_RLC.sn_FieldLength)); + *RLC_BearerConfig->rlc_Config->choice.um_Bi_Directional->ul_UM_RLC.sn_FieldLength = NR_SN_FieldLengthUM_size12; + + RLC_BearerConfig->rlc_Config->choice.um_Bi_Directional->dl_UM_RLC.sn_FieldLength = calloc(1,sizeof(*RLC_BearerConfig->rlc_Config->choice.um_Bi_Directional->dl_UM_RLC.sn_FieldLength)); + *RLC_BearerConfig->rlc_Config->choice.um_Bi_Directional->dl_UM_RLC.sn_FieldLength = NR_SN_FieldLengthUM_size12; + RLC_BearerConfig->rlc_Config->choice.um_Bi_Directional->dl_UM_RLC.t_Reassembly = NR_T_Reassembly_ms15; + + // RLC AM Bearer configuration + /*RLC_BearerConfig->rlc_Config->present = NR_RLC_Config_PR_am; + RLC_BearerConfig->rlc_Config->choice.am = calloc(1,sizeof(*RLC_BearerConfig->rlc_Config->choice.am)); + RLC_BearerConfig->rlc_Config->choice.am->ul_AM_RLC.sn_FieldLength = calloc(1,sizeof(*RLC_BearerConfig->rlc_Config->choice.am->ul_AM_RLC.sn_FieldLength)); + *RLC_BearerConfig->rlc_Config->choice.am->ul_AM_RLC.sn_FieldLength = NR_SN_FieldLengthAM_size18; + RLC_BearerConfig->rlc_Config->choice.am->ul_AM_RLC.t_PollRetransmit = NR_T_PollRetransmit_ms45; + RLC_BearerConfig->rlc_Config->choice.am->ul_AM_RLC.pollPDU = NR_PollPDU_p64; + RLC_BearerConfig->rlc_Config->choice.am->ul_AM_RLC.pollByte = NR_PollByte_kB500; + RLC_BearerConfig->rlc_Config->choice.am->ul_AM_RLC.maxRetxThreshold = NR_UL_AM_RLC__maxRetxThreshold_t32; + + RLC_BearerConfig->rlc_Config->choice.am->dl_AM_RLC.sn_FieldLength = calloc(1,sizeof(*RLC_BearerConfig->rlc_Config->choice.am->dl_AM_RLC.sn_FieldLength)); + *RLC_BearerConfig->rlc_Config->choice.am->dl_AM_RLC.sn_FieldLength = NR_SN_FieldLengthAM_size18; + RLC_BearerConfig->rlc_Config->choice.am->dl_AM_RLC.t_Reassembly = NR_T_Reassembly_ms15; + RLC_BearerConfig->rlc_Config->choice.am->dl_AM_RLC.t_StatusProhibit = NR_T_StatusProhibit_ms15;*/ + + RLC_BearerConfig->mac_LogicalChannelConfig = calloc(1,sizeof(*RLC_BearerConfig->mac_LogicalChannelConfig)); + RLC_BearerConfig->mac_LogicalChannelConfig->ul_SpecificParameters = calloc(1,sizeof(*RLC_BearerConfig->mac_LogicalChannelConfig->ul_SpecificParameters)); + RLC_BearerConfig->mac_LogicalChannelConfig->ul_SpecificParameters->priority = 1; + RLC_BearerConfig->mac_LogicalChannelConfig->ul_SpecificParameters->prioritisedBitRate = NR_LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_infinity; + RLC_BearerConfig->mac_LogicalChannelConfig->ul_SpecificParameters->bucketSizeDuration = NR_LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms50; + RLC_BearerConfig->mac_LogicalChannelConfig->ul_SpecificParameters->allowedServingCells = NULL; + RLC_BearerConfig->mac_LogicalChannelConfig->ul_SpecificParameters->allowedSCS_List = NULL; + RLC_BearerConfig->mac_LogicalChannelConfig->ul_SpecificParameters->maxPUSCH_Duration = NULL; + RLC_BearerConfig->mac_LogicalChannelConfig->ul_SpecificParameters->configuredGrantType1Allowed = NULL; + RLC_BearerConfig->mac_LogicalChannelConfig->ul_SpecificParameters->logicalChannelGroup = calloc(1,sizeof(*RLC_BearerConfig->mac_LogicalChannelConfig->ul_SpecificParameters->logicalChannelGroup)); + *RLC_BearerConfig->mac_LogicalChannelConfig->ul_SpecificParameters->logicalChannelGroup = 1; + RLC_BearerConfig->mac_LogicalChannelConfig->ul_SpecificParameters->schedulingRequestID = NULL; + RLC_BearerConfig->mac_LogicalChannelConfig->ul_SpecificParameters->logicalChannelSR_Mask = false; + RLC_BearerConfig->mac_LogicalChannelConfig->ul_SpecificParameters->logicalChannelSR_DelayTimerApplied = false; + RLC_BearerConfig->mac_LogicalChannelConfig->ul_SpecificParameters->bitRateQueryProhibitTimer = NULL; + + Rlc_Bearer_ToAdd_list = calloc(1,sizeof(*Rlc_Bearer_ToAdd_list)); + ASN_SEQUENCE_ADD(&Rlc_Bearer_ToAdd_list->list, RLC_BearerConfig); + + if (ENB_NAS_USE_TUN){ + PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, 0, ENB_FLAG_YES, 0x1234, 0, 0,0); + } + else{ + PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, 0, ENB_FLAG_NO, 0x1234, 0, 0,0); + } + + nr_rrc_pdcp_config_asn1_req( + &ctxt, + (NR_SRB_ToAddModList_t *) NULL, + rbconfig->drb_ToAddModList , + rbconfig->drb_ToReleaseList, + 0xff, + NULL, + NULL, + NULL, + NULL, + NULL, + Rlc_Bearer_ToAdd_list); + + nr_rrc_rlc_config_asn1_req (&ctxt, + (NR_SRB_ToAddModList_t *) NULL, + rbconfig->drb_ToAddModList, + rbconfig->drb_ToReleaseList, + (LTE_PMCH_InfoList_r9_t *) NULL, + Rlc_Bearer_ToAdd_list); +} + +uint64_t get_pdcp_optmask(void) +{ + return pdcp_optmask; +} + +boolean_t pdcp_remove_UE( + const protocol_ctxt_t *const ctxt_pP) +{ + TODO; + return 1; +} + +void pdcp_config_set_security(const protocol_ctxt_t* const ctxt_pP, pdcp_t *pdcp_pP, rb_id_t rb_id, + uint16_t lc_idP, uint8_t security_modeP, uint8_t *kRRCenc_pP, uint8_t *kRRCint_pP, uint8_t *kUPenc_pP) +{ + TODO; +} + +static boolean_t pdcp_data_req_drb( + protocol_ctxt_t *ctxt_pP, + const rb_id_t rb_id, + const mui_t muiP, + const confirm_t confirmP, + const sdu_size_t sdu_buffer_size, + unsigned char *const sdu_buffer) +{ +printf("pdcp_data_req called size %d\n", sdu_buffer_size); + nr_pdcp_ue_t *ue; + nr_pdcp_entity_t *rb; + int rnti = ctxt_pP->rnti; + + if (ctxt_pP->module_id != 0 || + //ctxt_pP->enb_flag != 1 || + ctxt_pP->instance != 0 || + ctxt_pP->eNB_index != 0 /*|| + ctxt_pP->configured != 1 || + ctxt_pP->brOption != 0*/) { + LOG_E(PDCP, "%s:%d:%s: fatal\n", __FILE__, __LINE__, __FUNCTION__); + exit(1); + } + + nr_pdcp_manager_lock(nr_pdcp_ue_manager); + + ue = nr_pdcp_manager_get_ue(nr_pdcp_ue_manager, rnti); + + if (rb_id < 1 || rb_id > 5) + rb = NULL; + else + rb = ue->drb[rb_id - 1]; + + if (rb == NULL) { + LOG_E(PDCP, "%s:%d:%s: fatal: no DRB found (rnti %d, rb_id %ld)\n", + __FILE__, __LINE__, __FUNCTION__, rnti, rb_id); + exit(1); + } + + rb->recv_sdu(rb, (char *)sdu_buffer, sdu_buffer_size, muiP); + + nr_pdcp_manager_unlock(nr_pdcp_ue_manager); + + return 1; +} + +boolean_t pdcp_data_req( + protocol_ctxt_t *ctxt_pP, + const srb_flag_t srb_flagP, + const rb_id_t rb_id, + const mui_t muiP, + const confirm_t confirmP, + const sdu_size_t sdu_buffer_size, + unsigned char *const sdu_buffer, + const pdcp_transmission_mode_t mode +#if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0)) + ,const uint32_t *const sourceL2Id + ,const uint32_t *const destinationL2Id +#endif + ) +{ + if (srb_flagP) { TODO; } + return pdcp_data_req_drb(ctxt_pP, rb_id, muiP, confirmP, sdu_buffer_size, + sdu_buffer); +} + +void pdcp_set_pdcp_data_ind_func(pdcp_data_ind_func_t pdcp_data_ind) +{ + /* nothing to do */ +} + +void pdcp_set_rlc_data_req_func(send_rlc_data_req_func_t send_rlc_data_req) +{ + /* nothing to do */ +} + +//Dummy function needed due to LTE dependencies +void +pdcp_mbms_run ( const protocol_ctxt_t *const ctxt_pP){ + /* nothing to do */ +} diff --git a/openair2/LAYER2/nr_pdcp/nr_pdcp_ue_manager.c b/openair2/LAYER2/nr_pdcp/nr_pdcp_ue_manager.c new file mode 100644 index 0000000000..ca51da3d5f --- /dev/null +++ b/openair2/LAYER2/nr_pdcp/nr_pdcp_ue_manager.c @@ -0,0 +1,198 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +#include "nr_pdcp_ue_manager.h" + +#include +#include +#include + +#include "LOG/log.h" + +typedef struct { + pthread_mutex_t lock; + nr_pdcp_ue_t **ue_list; + int ue_count; + int enb_flag; +} nr_pdcp_ue_manager_internal_t; + +nr_pdcp_ue_manager_t *new_nr_pdcp_ue_manager(int enb_flag) +{ + nr_pdcp_ue_manager_internal_t *ret; + + ret = calloc(1, sizeof(nr_pdcp_ue_manager_internal_t)); + if (ret == NULL) { + LOG_E(PDCP, "%s:%d:%s: out of memory\n", __FILE__, __LINE__, __FUNCTION__); + exit(1); + } + + if (pthread_mutex_init(&ret->lock, NULL)) abort(); + ret->enb_flag = enb_flag; + + return ret; +} + +int nr_pdcp_manager_get_enb_flag(nr_pdcp_ue_manager_t *_m) +{ + nr_pdcp_ue_manager_internal_t *m = _m; + return m->enb_flag; +} + +void nr_pdcp_manager_lock(nr_pdcp_ue_manager_t *_m) +{ + nr_pdcp_ue_manager_internal_t *m = _m; + if (pthread_mutex_lock(&m->lock)) { + LOG_E(PDCP, "%s:%d:%s: fatal\n", __FILE__, __LINE__, __FUNCTION__); + exit(1); + } +} + +void nr_pdcp_manager_unlock(nr_pdcp_ue_manager_t *_m) +{ + nr_pdcp_ue_manager_internal_t *m = _m; + if (pthread_mutex_unlock(&m->lock)) { + LOG_E(PDCP, "%s:%d:%s: fatal\n", __FILE__, __LINE__, __FUNCTION__); + exit(1); + } +} + +/* must be called with lock acquired */ +nr_pdcp_ue_t *nr_pdcp_manager_get_ue(nr_pdcp_ue_manager_t *_m, int rnti) +{ + /* TODO: optimze */ + nr_pdcp_ue_manager_internal_t *m = _m; + int i; + + for (i = 0; i < m->ue_count; i++) + if (m->ue_list[i]->rnti == rnti) + return m->ue_list[i]; + + LOG_D(PDCP, "%s:%d:%s: new UE %d\n", __FILE__, __LINE__, __FUNCTION__, rnti); + + m->ue_count++; + m->ue_list = realloc(m->ue_list, sizeof(nr_pdcp_ue_t *) * m->ue_count); + if (m->ue_list == NULL) { + LOG_E(PDCP, "%s:%d:%s: out of memory\n", __FILE__, __LINE__, __FUNCTION__); + exit(1); + } + m->ue_list[m->ue_count-1] = calloc(1, sizeof(nr_pdcp_ue_t)); + if (m->ue_list[m->ue_count-1] == NULL) { + LOG_E(PDCP, "%s:%d:%s: out of memory\n", __FILE__, __LINE__, __FUNCTION__); + exit(1); + } + + m->ue_list[m->ue_count-1]->rnti = rnti; + + return m->ue_list[m->ue_count-1]; +} + +/* must be called with lock acquired */ +void nr_pdcp_manager_remove_ue(nr_pdcp_ue_manager_t *_m, int rnti) +{ + nr_pdcp_ue_manager_internal_t *m = _m; + nr_pdcp_ue_t *ue; + int i; + int j; + + for (i = 0; i < m->ue_count; i++) + if (m->ue_list[i]->rnti == rnti) + break; + + if (i == m->ue_count) { + LOG_D(PDCP, "%s:%d:%s: warning: ue %d not found\n", + __FILE__, __LINE__, __FUNCTION__, + rnti); + return; + } + + ue = m->ue_list[i]; + + for (j = 0; j < 2; j++) + if (ue->srb[j] != NULL) + ue->srb[j]->delete(ue->srb[j]); + + for (j = 0; j < 5; j++) + if (ue->drb[j] != NULL) + ue->drb[j]->delete(ue->drb[j]); + + free(ue); + + m->ue_count--; + if (m->ue_count == 0) { + free(m->ue_list); + m->ue_list = NULL; + return; + } + + memmove(&m->ue_list[i], &m->ue_list[i+1], + (m->ue_count - i) * sizeof(nr_pdcp_ue_t *)); + m->ue_list = realloc(m->ue_list, m->ue_count * sizeof(nr_pdcp_ue_t *)); + if (m->ue_list == NULL) { + LOG_E(PDCP, "%s:%d:%s: fatal\n", __FILE__, __LINE__, __FUNCTION__); + exit(1); + } +} + +/* must be called with lock acquired */ +void nr_pdcp_ue_add_srb_pdcp_entity(nr_pdcp_ue_t *ue, int srb_id, nr_pdcp_entity_t *entity) +{ + if (srb_id < 1 || srb_id > 2) { + LOG_E(PDCP, "%s:%d:%s: fatal, bad srb id\n", __FILE__, __LINE__, __FUNCTION__); + exit(1); + } + + srb_id--; + + if (ue->srb[srb_id] != NULL) { + LOG_E(PDCP, "%s:%d:%s: fatal, srb already present\n", + __FILE__, __LINE__, __FUNCTION__); + exit(1); + } + + ue->srb[srb_id] = entity; +} + +/* must be called with lock acquired */ +void nr_pdcp_ue_add_drb_pdcp_entity(nr_pdcp_ue_t *ue, int drb_id, nr_pdcp_entity_t *entity) +{ + if (drb_id < 1 || drb_id > 5) { + LOG_E(PDCP, "%s:%d:%s: fatal, bad drb id\n", __FILE__, __LINE__, __FUNCTION__); + exit(1); + } + + drb_id--; + + if (ue->drb[drb_id] != NULL) { + LOG_E(PDCP, "%s:%d:%s: fatal, drb already present\n", + __FILE__, __LINE__, __FUNCTION__); + exit(1); + } + + ue->drb[drb_id] = entity; +} + +int nr_pdcp_get_first_rnti(nr_pdcp_ue_manager_t *_m) +{ + nr_pdcp_ue_manager_internal_t *m = _m; + if (m->ue_count == 0) + return -1; + return m->ue_list[0]->rnti; +} diff --git a/openair2/LAYER2/nr_pdcp/nr_pdcp_ue_manager.h b/openair2/LAYER2/nr_pdcp/nr_pdcp_ue_manager.h new file mode 100644 index 0000000000..0de2f024b3 --- /dev/null +++ b/openair2/LAYER2/nr_pdcp/nr_pdcp_ue_manager.h @@ -0,0 +1,65 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +#ifndef _NR_PDCP_UE_MANAGER_H_ +#define _NR_PDCP_UE_MANAGER_H_ + +#include "nr_pdcp_entity.h" + +typedef void nr_pdcp_ue_manager_t; + +typedef struct nr_pdcp_ue_t { + int rnti; + nr_pdcp_entity_t *srb[2]; + nr_pdcp_entity_t *drb[5]; +} nr_pdcp_ue_t; + +/***********************************************************************/ +/* manager functions */ +/***********************************************************************/ + +nr_pdcp_ue_manager_t *new_nr_pdcp_ue_manager(int enb_flag); + +int nr_pdcp_manager_get_enb_flag(nr_pdcp_ue_manager_t *m); + +void nr_pdcp_manager_lock(nr_pdcp_ue_manager_t *m); +void nr_pdcp_manager_unlock(nr_pdcp_ue_manager_t *m); + +nr_pdcp_ue_t *nr_pdcp_manager_get_ue(nr_pdcp_ue_manager_t *m, int rnti); +void nr_pdcp_manager_remove_ue(nr_pdcp_ue_manager_t *m, int rnti); + +/***********************************************************************/ +/* ue functions */ +/***********************************************************************/ + +void nr_pdcp_ue_add_srb_pdcp_entity(nr_pdcp_ue_t *ue, int srb_id, + nr_pdcp_entity_t *entity); +void nr_pdcp_ue_add_drb_pdcp_entity(nr_pdcp_ue_t *ue, int drb_id, + nr_pdcp_entity_t *entity); + +/***********************************************************************/ +/* hacks */ +/***********************************************************************/ + +/* returns -1 if no UE */ +int nr_pdcp_get_first_rnti(nr_pdcp_ue_manager_t *m); + +#endif /* _NR_PDCP_UE_MANAGER_H_ */ diff --git a/openair2/LAYER2/nr_rlc/asn1_utils.c b/openair2/LAYER2/nr_rlc/asn1_utils.c index 46f7d90da5..43d55af1ac 100644 --- a/openair2/LAYER2/nr_rlc/asn1_utils.c +++ b/openair2/LAYER2/nr_rlc/asn1_utils.c @@ -21,14 +21,14 @@ #include "rlc.h" -int decode_t_reordering(int v) +int decode_t_reassembly(int v) { - static int tab[32] = { - 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, - 90, 95, 100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200, 1600 + static int tab[31] = { + 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, + 95, 100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200 }; - if (v < 0 || v > 31) { + if (v < 0 || v > 30) { LOG_E(RLC, "%s:%d:%s: fatal\n", __FILE__, __LINE__, __FUNCTION__); exit(1); } @@ -72,11 +72,13 @@ int decode_t_poll_retransmit(int v) int decode_poll_pdu(int v) { - static int tab[8] = { - 4, 8, 16, 32, 64, 128, 256, -1 /* -1 means infinity */ + static int tab[24] = { + 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 6144, 8192, 12288, + 16384, 20480, 24576, 28672, 32768, 40960, 49152, 57344, 65536 + -1 /* -1 means infinity */ }; - if (v < 0 || v > 7) { + if (v < 0 || v > 23) { LOG_E(RLC, "%s:%d:%s: fatal\n", __FILE__, __LINE__, __FUNCTION__); exit(1); } @@ -86,12 +88,23 @@ int decode_poll_pdu(int v) int decode_poll_byte(int v) { - static int tab[15] = { - 25, 50, 75, 100, 125, 250, 375, 500, 750, 1000, 1250, 1500, 2000, 3000, + static int tab[44] = { + /* KB */ + 1024 * 1, 1024 * 2, 1024 * 5, 1024 * 8, 1024 * 10, + 1024 * 15, 1024 * 25, 1024 * 50, 1024 * 75, 1024 * 100, + 1024 * 125, 1024 * 250, 1024 * 375, 1024 * 500, 1024 * 750, + 1024 * 1000, 1024 * 1250, 1024 * 1500, 1024 * 2000, 1024 * 3000, + 1024 * 4000, 1024 * 4500, 1024 * 5000, 1024 * 5500, 1024 * 6000, + 1024 * 6500, 1024 * 7000, 1024 * 7500, + /* MB */ + 1024 * 1024 * 8, 1024 * 1024 * 9, 1024 * 1024 * 10, 1024 * 1024 * 11, + 1024 * 1024 * 12, 1024 * 1024 * 13, 1024 * 1024 * 14, 1024 * 1024 * 15, + 1024 * 1024 * 16, 1024 * 1024 * 17, 1024 * 1024 * 18, 1024 * 1024 * 20, + 1024 * 1024 * 25, 1024 * 1024 * 30, 1024 * 1024 * 40, -1 /* -1 means infinity */ }; - if (v < 0 || v > 14) { + if (v < 0 || v > 43) { LOG_E(RLC, "%s:%d:%s: fatal\n", __FILE__, __LINE__, __FUNCTION__); exit(1); } @@ -114,10 +127,24 @@ int decode_max_retx_threshold(int v) return tab[v]; } -int decode_sn_field_length(int v) +int decode_sn_field_length_um(int v) { static int tab[2] = { - 5, 10 + 6, 12 + }; + + if (v < 0 || v > 1) { + LOG_E(RLC, "%s:%d:%s: fatal\n", __FILE__, __LINE__, __FUNCTION__); + exit(1); + } + + return tab[v]; +} + +int decode_sn_field_length_am(int v) +{ + static int tab[2] = { + 12, 18 }; if (v < 0 || v > 1) { diff --git a/openair2/LAYER2/nr_rlc/asn1_utils.h b/openair2/LAYER2/nr_rlc/asn1_utils.h index 61394c9c69..6f010b02da 100644 --- a/openair2/LAYER2/nr_rlc/asn1_utils.h +++ b/openair2/LAYER2/nr_rlc/asn1_utils.h @@ -19,15 +19,16 @@ * contact@openairinterface.org */ -#ifndef _ASN1_UTILS_H_ -#define _ASN1_UTILS_H_ +#ifndef _OPENAIR2_LAYER2_NR_RLC_ASN1_UTILS_H_ +#define _OPENAIR2_LAYER2_NR_RLC_ASN1_UTILS_H_ -int decode_t_reordering(int v); +int decode_t_reassembly(int v); int decode_t_status_prohibit(int v); int decode_t_poll_retransmit(int v); int decode_poll_pdu(int v); int decode_poll_byte(int v); int decode_max_retx_threshold(int v); -int decode_sn_field_length(int v); +int decode_sn_field_length_um(int v); +int decode_sn_field_length_am(int v); -#endif /* _ASN1_UTILS_H_ */ +#endif /* _OPENAIR2_LAYER2_NR_RLC_ASN1_UTILS_H_ */ diff --git a/openair2/LAYER2/nr_rlc/nr_rlc_entity_am.c b/openair2/LAYER2/nr_rlc/nr_rlc_entity_am.c index 8f3d49d8c2..78a49e4604 100644 --- a/openair2/LAYER2/nr_rlc/nr_rlc_entity_am.c +++ b/openair2/LAYER2/nr_rlc/nr_rlc_entity_am.c @@ -109,7 +109,8 @@ static void consider_retransmission(nr_rlc_entity_am_t *entity, * upper layers should deal with this condition, internally it's better * for the RLC code to keep going with this segment (we only remove * a segment that was ACKed) - */ + */ + LOG_D(RLC, "RLC segment to be added at the ReTx list \n"); nr_rlc_sdu_segment_list_append(&entity->retransmit_list, &entity->retransmit_end, cur); @@ -1588,6 +1589,8 @@ void nr_rlc_entity_am_recv_sdu(nr_rlc_entity_t *_entity, sdu = nr_rlc_new_sdu(buffer, size, sdu_id); + LOG_D(RLC, "Created new RLC SDU and append it to the RLC list \n"); + nr_rlc_sdu_segment_list_append(&entity->tx_list, &entity->tx_end, sdu); } diff --git a/openair2/LAYER2/nr_rlc/nr_rlc_entity_um.c b/openair2/LAYER2/nr_rlc/nr_rlc_entity_um.c index 09f29ebe67..4ef952667d 100644 --- a/openair2/LAYER2/nr_rlc/nr_rlc_entity_um.c +++ b/openair2/LAYER2/nr_rlc/nr_rlc_entity_um.c @@ -588,9 +588,10 @@ static void check_t_reassembly(nr_rlc_entity_um_t *entity) cur = entity->rx_list; while (cur != NULL && sn_compare_rx(entity, cur->sn, entity->rx_next_reassembly) < 0) { - nr_rlc_free_pdu(cur); + nr_rlc_pdu_t *p = cur; cur = cur->next; entity->rx_list = cur; + nr_rlc_free_pdu(p); } if (sn_compare_rx(entity, entity->rx_next_highest, diff --git a/openair2/LAYER2/nr_rlc/nr_rlc_oai_api.c b/openair2/LAYER2/nr_rlc/nr_rlc_oai_api.c index ff0d446e3f..919cf1a46a 100644 --- a/openair2/LAYER2/nr_rlc/nr_rlc_oai_api.c +++ b/openair2/LAYER2/nr_rlc/nr_rlc_oai_api.c @@ -27,19 +27,23 @@ #include "asn1_utils.h" #include "nr_rlc_ue_manager.h" #include "nr_rlc_entity.h" +#include "NR_RLC-BearerConfig.h" +#include "NR_DRB-ToAddMod.h" +#include "NR_DRB-ToAddModList.h" +#include "NR_SRB-ToAddModList.h" +#include "NR_DRB-ToReleaseList.h" +#include "NR_CellGroupConfig.h" +#include "NR_RLC-Config.h" #include static nr_rlc_ue_manager_t *nr_rlc_ue_manager; /* TODO: handle time a bit more properly */ -//#if 0 static uint64_t nr_rlc_current_time; static int nr_rlc_current_time_last_frame; static int nr_rlc_current_time_last_subframe; -//#endif -//#if 0 void mac_rlc_data_ind ( const module_id_t module_idP, const rnti_t rntiP, @@ -72,8 +76,8 @@ void mac_rlc_data_ind ( LOG_I(RLC, "RLC instance for the given UE was not found \n"); switch (channel_idP) { - case 1 ... 2: rb = ue->srb[channel_idP - 1]; break; - case 3 ... 7: rb = ue->drb[channel_idP - 3]; break; + case 1 ... 3: rb = ue->srb[channel_idP - 1]; break; + case 4 ... 8: rb = ue->drb[channel_idP - 4]; break; default: rb = NULL; break; } @@ -113,8 +117,8 @@ tbs_size_t mac_rlc_data_req( ue = nr_rlc_manager_get_ue(nr_rlc_ue_manager, rntiP); switch (channel_idP) { - case 1 ... 2: rb = ue->srb[channel_idP - 1]; break; - case 3 ... 7: rb = ue->drb[channel_idP - 3]; break; + case 1 ... 3: rb = ue->srb[channel_idP - 1]; break; + case 4 ... 8: rb = ue->drb[channel_idP - 4]; break; default: rb = NULL; break; } @@ -123,7 +127,7 @@ tbs_size_t mac_rlc_data_req( maxsize = tb_sizeP; ret = rb->generate_pdu(rb, buffer_pP, maxsize); } else { - LOG_E(RLC, "%s:%d:%s: fatal: data req for unknown RB\n", __FILE__, __LINE__, __FUNCTION__); + LOG_E(RLC, "%s:%d:%s: fatal: data req for unknown RB, channel_idP: %d\n", __FILE__, __LINE__, __FUNCTION__, channel_idP); exit(1); ret = 0; } @@ -166,8 +170,8 @@ mac_rlc_status_resp_t mac_rlc_status_ind( ue = nr_rlc_manager_get_ue(nr_rlc_ue_manager, rntiP); switch (channel_idP) { - case 1 ... 2: rb = ue->srb[channel_idP - 1]; break; - case 3 ... 7: rb = ue->drb[channel_idP - 3]; break; + case 1 ... 3: rb = ue->srb[channel_idP - 1]; break; + case 4 ... 8: rb = ue->drb[channel_idP - 4]; break; default: rb = NULL; break; } @@ -195,7 +199,6 @@ mac_rlc_status_resp_t mac_rlc_status_ind( ret.head_sdu_is_segmented = 0; return ret; } -//#endif rlc_buffer_occupancy_t mac_rlc_get_buffer_occupancy_ind( const module_id_t module_idP, @@ -227,8 +230,8 @@ rlc_buffer_occupancy_t mac_rlc_get_buffer_occupancy_ind( ue = nr_rlc_manager_get_ue(nr_rlc_ue_manager, rntiP); switch (channel_idP) { - case 1 ... 2: rb = ue->srb[channel_idP - 1]; break; - case 3 ... 7: rb = ue->drb[channel_idP - 3]; break; + case 1 ... 3: rb = ue->srb[channel_idP - 1]; break; + case 4 ... 8: rb = ue->drb[channel_idP - 4]; break; default: rb = NULL; break; } @@ -254,7 +257,6 @@ rlc_buffer_occupancy_t mac_rlc_get_buffer_occupancy_ind( int oai_emulation; -//#if 0 rlc_op_status_t rlc_data_req (const protocol_ctxt_t *const ctxt_pP, const srb_flag_t srb_flagP, const MBMS_flag_t MBMS_flagP, @@ -306,9 +308,7 @@ rlc_op_status_t rlc_data_req (const protocol_ctxt_t *const ctxt_pP, return RLC_OP_STATUS_OK; } -//#endif -//#if 0 int rlc_module_init(int enb_flag) { static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; @@ -329,13 +329,10 @@ int rlc_module_init(int enb_flag) return 0; } -//#endif -//#if 0 void rlc_util_print_hex_octets(comp_name_t componentP, unsigned char *dataP, const signed long sizeP) { } -//#endif static void deliver_sdu(void *_ue, nr_rlc_entity_t *entity, char *buf, int size) { @@ -522,7 +519,7 @@ rb_found: #endif } -__attribute__ ((unused)) static void add_srb(int rnti, struct LTE_SRB_ToAddMod *s) +static void add_srb(int rnti, struct LTE_SRB_ToAddMod *s) { nr_rlc_entity_t *nr_rlc_am; nr_rlc_ue_t *ue; @@ -532,7 +529,6 @@ __attribute__ ((unused)) static void add_srb(int rnti, struct LTE_SRB_ToAddMod * int srb_id = s->srb_Identity; int logical_channel_group; - //int t_reordering; int t_status_prohibit; int t_poll_retransmit; int poll_pdu; @@ -575,7 +571,6 @@ __attribute__ ((unused)) static void add_srb(int rnti, struct LTE_SRB_ToAddMod * exit(1); } am = &r->choice.explicitValue.choice.am; - //t_reordering = decode_t_reordering(am->dl_AM_RLC.t_Reordering); t_status_prohibit = decode_t_status_prohibit(am->dl_AM_RLC.t_StatusProhibit); t_poll_retransmit = decode_t_poll_retransmit(am->ul_AM_RLC.t_PollRetransmit); poll_pdu = decode_poll_pdu(am->ul_AM_RLC.pollPDU); @@ -585,7 +580,6 @@ __attribute__ ((unused)) static void add_srb(int rnti, struct LTE_SRB_ToAddMod * } case LTE_SRB_ToAddMod__rlc_Config_PR_defaultValue: /* default values from 36.331 9.2.1 */ - //t_reordering = 35; t_status_prohibit = 0; t_poll_retransmit = 45; poll_pdu = -1; @@ -628,18 +622,17 @@ __attribute__ ((unused)) static void add_srb(int rnti, struct LTE_SRB_ToAddMod * nr_rlc_manager_unlock(nr_rlc_ue_manager); } -static void add_drb_am(int rnti, struct LTE_DRB_ToAddMod *s) +static void add_drb_am(int rnti, struct NR_DRB_ToAddMod *s, NR_RLC_BearerConfig_t *rlc_BearerConfig) { nr_rlc_entity_t *nr_rlc_am; nr_rlc_ue_t *ue; - struct LTE_RLC_Config *r = s->rlc_Config; - struct LTE_LogicalChannelConfig *l = s->logicalChannelConfig; + struct NR_RLC_Config *r = rlc_BearerConfig->rlc_Config; + struct NR_LogicalChannelConfig *l = rlc_BearerConfig->mac_LogicalChannelConfig; int drb_id = s->drb_Identity; - int channel_id = *s->logicalChannelIdentity; + int channel_id = rlc_BearerConfig->logicalChannelIdentity; int logical_channel_group; - //int t_reordering; int t_status_prohibit; int t_poll_retransmit; int poll_pdu; @@ -654,7 +647,7 @@ static void add_drb_am(int rnti, struct LTE_DRB_ToAddMod *s) exit(1); } - if (channel_id != drb_id + 2) { + if (channel_id != drb_id + 3) { LOG_E(RLC, "%s:%d:%s: todo, remove this limitation\n", __FILE__, __LINE__, __FUNCTION__); exit(1); @@ -669,15 +662,20 @@ static void add_drb_am(int rnti, struct LTE_DRB_ToAddMod *s) } switch (r->present) { - case LTE_RLC_Config_PR_am: { - struct LTE_RLC_Config__am *am; - am = &r->choice.am; - //t_reordering = decode_t_reordering(am->dl_AM_RLC.t_Reordering); + case NR_RLC_Config_PR_am: { + struct NR_RLC_Config__am *am; + am = r->choice.am; + t_reassembly = decode_t_reassembly(am->dl_AM_RLC.t_Reassembly); t_status_prohibit = decode_t_status_prohibit(am->dl_AM_RLC.t_StatusProhibit); t_poll_retransmit = decode_t_poll_retransmit(am->ul_AM_RLC.t_PollRetransmit); poll_pdu = decode_poll_pdu(am->ul_AM_RLC.pollPDU); poll_byte = decode_poll_byte(am->ul_AM_RLC.pollByte); max_retx_threshold = decode_max_retx_threshold(am->ul_AM_RLC.maxRetxThreshold); + if (*am->dl_AM_RLC.sn_FieldLength != *am->ul_AM_RLC.sn_FieldLength) { + LOG_E(RLC, "%s:%d:%s: fatal\n", __FILE__, __LINE__, __FUNCTION__); + exit(1); + } + sn_field_length = decode_sn_field_length_am(*am->dl_AM_RLC.sn_FieldLength); break; } default: @@ -691,14 +689,6 @@ static void add_drb_am(int rnti, struct LTE_DRB_ToAddMod *s) LOG_D(RLC, "%s:%d:%s: warning DRB %d already exist for ue %d, do nothing\n", __FILE__, __LINE__, __FUNCTION__, drb_id, rnti); } else { - /* hack: hardcode values for NR */ - t_poll_retransmit = 45; - t_reassembly = 35; - t_status_prohibit = 0; - poll_pdu = -1; - poll_byte = -1; - max_retx_threshold = 8; - sn_field_length = 12; nr_rlc_am = new_nr_rlc_entity_am(100000, 100000, deliver_sdu, ue, @@ -716,18 +706,17 @@ static void add_drb_am(int rnti, struct LTE_DRB_ToAddMod *s) nr_rlc_manager_unlock(nr_rlc_ue_manager); } -static void add_drb_um(int rnti, struct LTE_DRB_ToAddMod *s) +static void add_drb_um(int rnti, struct NR_DRB_ToAddMod *s, NR_RLC_BearerConfig_t *rlc_BearerConfig) { nr_rlc_entity_t *nr_rlc_um; nr_rlc_ue_t *ue; - struct LTE_RLC_Config *r = s->rlc_Config; - struct LTE_LogicalChannelConfig *l = s->logicalChannelConfig; + struct NR_RLC_Config *r = rlc_BearerConfig->rlc_Config; + struct NR_LogicalChannelConfig *l = rlc_BearerConfig->mac_LogicalChannelConfig; int drb_id = s->drb_Identity; - int channel_id = *s->logicalChannelIdentity; + int channel_id = rlc_BearerConfig->logicalChannelIdentity; int logical_channel_group; - //int t_reordering; int sn_field_length; int t_reassembly; @@ -737,7 +726,7 @@ static void add_drb_um(int rnti, struct LTE_DRB_ToAddMod *s) exit(1); } - if (channel_id != drb_id + 2) { + if (channel_id != drb_id + 3) { LOG_E(RLC, "%s:%d:%s: todo, remove this limitation\n", __FILE__, __LINE__, __FUNCTION__); exit(1); @@ -752,15 +741,15 @@ static void add_drb_um(int rnti, struct LTE_DRB_ToAddMod *s) } switch (r->present) { - case LTE_RLC_Config_PR_um_Bi_Directional: { - struct LTE_RLC_Config__um_Bi_Directional *um; - um = &r->choice.um_Bi_Directional; - //t_reordering = decode_t_reordering(um->dl_UM_RLC.t_Reordering); - if (um->dl_UM_RLC.sn_FieldLength != um->ul_UM_RLC.sn_FieldLength) { + case NR_RLC_Config_PR_um_Bi_Directional: { + struct NR_RLC_Config__um_Bi_Directional *um; + um = r->choice.um_Bi_Directional; + t_reassembly = decode_t_reassembly(um->dl_UM_RLC.t_Reassembly); + if (*um->dl_UM_RLC.sn_FieldLength != *um->ul_UM_RLC.sn_FieldLength) { LOG_E(RLC, "%s:%d:%s: fatal\n", __FILE__, __LINE__, __FUNCTION__); exit(1); } - sn_field_length = decode_sn_field_length(um->dl_UM_RLC.sn_FieldLength); + sn_field_length = decode_sn_field_length_um(*um->dl_UM_RLC.sn_FieldLength); break; } default: @@ -774,9 +763,6 @@ static void add_drb_um(int rnti, struct LTE_DRB_ToAddMod *s) LOG_D(RLC, "%s:%d:%s: warning DRB %d already exist for ue %d, do nothing\n", __FILE__, __LINE__, __FUNCTION__, drb_id, rnti); } else { - /* hack: hardcode values for NR */ - t_reassembly = 35; - sn_field_length = 6; nr_rlc_um = new_nr_rlc_entity_um(1000000, 1000000, deliver_sdu, ue, @@ -790,14 +776,14 @@ static void add_drb_um(int rnti, struct LTE_DRB_ToAddMod *s) nr_rlc_manager_unlock(nr_rlc_ue_manager); } -__attribute__ ((unused)) static void add_drb(int rnti, struct LTE_DRB_ToAddMod *s) +static void add_drb(int rnti, struct NR_DRB_ToAddMod *s, struct NR_RLC_BearerConfig *rlc_BearerConfig) { - switch (s->rlc_Config->present) { - case LTE_RLC_Config_PR_am: - add_drb_am(rnti, s); + switch (rlc_BearerConfig->rlc_Config->present) { + case NR_RLC_Config_PR_am: + add_drb_am(rnti, s, rlc_BearerConfig); break; - case LTE_RLC_Config_PR_um_Bi_Directional: - add_drb_um(rnti, s); + case NR_RLC_Config_PR_um_Bi_Directional: + add_drb_um(rnti, s, rlc_BearerConfig); break; default: LOG_E(RLC, "%s:%d:%s: fatal: unhandled DRB type\n", @@ -806,7 +792,7 @@ __attribute__ ((unused)) static void add_drb(int rnti, struct LTE_DRB_ToAddMod * } } -//#if 0 +/* Dummy function due to dependency from LTE libraries */ rlc_op_status_t rrc_rlc_config_asn1_req (const protocol_ctxt_t * const ctxt_pP, const LTE_SRB_ToAddModList_t * const srb2add_listP, const LTE_DRB_ToAddModList_t * const drb2add_listP, @@ -814,6 +800,16 @@ rlc_op_status_t rrc_rlc_config_asn1_req (const protocol_ctxt_t * const ctxt_pP const LTE_PMCH_InfoList_r9_t * const pmch_InfoList_r9_pP, const uint32_t sourceL2Id, const uint32_t destinationL2Id) +{ + return 0; +} + +rlc_op_status_t nr_rrc_rlc_config_asn1_req (const protocol_ctxt_t * const ctxt_pP, + const LTE_SRB_ToAddModList_t * const srb2add_listP, + const NR_DRB_ToAddModList_t * const drb2add_listP, + const NR_DRB_ToReleaseList_t * const drb2release_listP, + const LTE_PMCH_InfoList_r9_t * const pmch_InfoList_r9_pP, + struct NR_CellGroupConfig__rlc_BearerToAddModList *rlc_bearer2add_list) { int rnti = ctxt_pP->rnti; int i; @@ -845,15 +841,13 @@ rlc_op_status_t rrc_rlc_config_asn1_req (const protocol_ctxt_t * const ctxt_pP if (drb2add_listP != NULL) { for (i = 0; i < drb2add_listP->list.count; i++) { - add_drb(rnti, drb2add_listP->list.array[i]); + add_drb(rnti, drb2add_listP->list.array[i], rlc_bearer2add_list->list.array[i]); } } return RLC_OP_STATUS_OK; } -//#endif -//#if 0 rlc_op_status_t rrc_rlc_config_req ( const protocol_ctxt_t* const ctxt_pP, const srb_flag_t srb_flagP, @@ -912,16 +906,12 @@ rlc_op_status_t rrc_rlc_config_req ( nr_rlc_manager_unlock(nr_rlc_ue_manager); return RLC_OP_STATUS_OK; } -//#endif -//#if 0 void rrc_rlc_register_rrc (rrc_data_ind_cb_t rrc_data_indP, rrc_data_conf_cb_t rrc_data_confP) { /* nothing to do */ } -//#endif -//#if 0 rlc_op_status_t rrc_rlc_remove_ue (const protocol_ctxt_t* const x) { LOG_D(RLC, "%s:%d:%s: remove UE %d\n", __FILE__, __LINE__, __FUNCTION__, x->rnti); @@ -931,4 +921,3 @@ rlc_op_status_t rrc_rlc_remove_ue (const protocol_ctxt_t* const x) return RLC_OP_STATUS_OK; } -//#endif diff --git a/openair2/LAYER2/nr_rlc/nr_rlc_ue_manager.h b/openair2/LAYER2/nr_rlc/nr_rlc_ue_manager.h index 464cf3d083..f578faaf38 100644 --- a/openair2/LAYER2/nr_rlc/nr_rlc_ue_manager.h +++ b/openair2/LAYER2/nr_rlc/nr_rlc_ue_manager.h @@ -28,7 +28,7 @@ typedef void nr_rlc_ue_manager_t; typedef struct nr_rlc_ue_t { int rnti; - nr_rlc_entity_t *srb[2]; + nr_rlc_entity_t *srb[3]; nr_rlc_entity_t *drb[5]; } nr_rlc_ue_t; diff --git a/openair2/LAYER2/rlc_v2/asn1_utils.h b/openair2/LAYER2/rlc_v2/asn1_utils.h index 61394c9c69..fadaf16f0a 100644 --- a/openair2/LAYER2/rlc_v2/asn1_utils.h +++ b/openair2/LAYER2/rlc_v2/asn1_utils.h @@ -19,8 +19,8 @@ * contact@openairinterface.org */ -#ifndef _ASN1_UTILS_H_ -#define _ASN1_UTILS_H_ +#ifndef _OPENAIR2_LAYER2_RLC_V2_ASN1_UTILS_H_ +#define _OPENAIR2_LAYER2_RLC_V2_ASN1_UTILS_H_ int decode_t_reordering(int v); int decode_t_status_prohibit(int v); @@ -30,4 +30,4 @@ int decode_poll_byte(int v); int decode_max_retx_threshold(int v); int decode_sn_field_length(int v); -#endif /* _ASN1_UTILS_H_ */ +#endif /* _OPENAIR2_LAYER2_RLC_V2_ASN1_UTILS_H_ */ diff --git a/openair2/M2AP/m2ap_MCE_interface_management.c b/openair2/M2AP/m2ap_MCE_interface_management.c index 1bef834179..e162c9a5de 100644 --- a/openair2/M2AP/m2ap_MCE_interface_management.c +++ b/openair2/M2AP/m2ap_MCE_interface_management.c @@ -521,6 +521,7 @@ int MCE_send_MBMS_SCHEDULING_INFORMATION(instance_t instance, /*uint32_t assoc_i mbsfn_subframe_configuration->radioframeAllocationPeriod = m2ap_mbms_scheduling_information->mbms_area_config_list[i].mbms_sf_config_list[j].radioframe_allocation_period; mbsfn_subframe_configuration->radioframeAllocationOffset = m2ap_mbms_scheduling_information->mbms_area_config_list[i].mbms_sf_config_list[j].radioframe_allocation_offset; if(m2ap_mbms_scheduling_information->mbms_area_config_list[i].mbms_sf_config_list[j].is_four_sf){ + LOG_I(M2AP,"is_four_sf\n"); mbsfn_subframe_configuration->subframeAllocation.present = M2AP_MBSFN_Subframe_Configuration__subframeAllocation_PR_fourFrames; mbsfn_subframe_configuration->subframeAllocation.choice.oneFrame.buf = MALLOC(3); mbsfn_subframe_configuration->subframeAllocation.choice.oneFrame.buf[2] = ((m2ap_mbms_scheduling_information->mbms_area_config_list[i].mbms_sf_config_list[j].subframe_allocation) & 0xFF); @@ -530,6 +531,7 @@ int MCE_send_MBMS_SCHEDULING_INFORMATION(instance_t instance, /*uint32_t assoc_i mbsfn_subframe_configuration->subframeAllocation.choice.oneFrame.bits_unused = 0; }else{ + LOG_I(M2AP,"is_one_sf\n"); mbsfn_subframe_configuration->subframeAllocation.present = M2AP_MBSFN_Subframe_Configuration__subframeAllocation_PR_oneFrame; mbsfn_subframe_configuration->subframeAllocation.choice.oneFrame.buf = MALLOC(1); mbsfn_subframe_configuration->subframeAllocation.choice.oneFrame.size = 1; @@ -1357,11 +1359,10 @@ int MCE_handle_MBMS_SESSION_UPDATE_RESPONSE(instance_t instance, -int MCE_handle_MBMS_SESSION_UPDATE_FAILURE(instance_t instance, - uint32_t assoc_id, - uint32_t stream, - M2AP_M2AP_PDU_t *pdu){ +int MCE_handle_MBMS_SESSION_UPDATE_FAILURE(instance_t instance,module_id_t du_mod_idP){ + AssertFatal(1==0,"Not implemented yet\n"); + } /* @@ -1378,16 +1379,138 @@ int MCE_handle_MBMS_SERVICE_COUNTING_RESPONSE(instance_t instance, uint32_t assoc_id, uint32_t stream, M2AP_M2AP_PDU_t *pdu){ - AssertFatal(1==0,"Not implemented yet\n"); + //int i; + //AssertFatal(1==0,"Not implemented yet\n"); + LOG_D(M2AP, "MCE_handle_MBMS_SERVICE_COUNTING_RESPONSE\n"); + + AssertFatal(pdu->present == M2AP_M2AP_PDU_PR_successfulOutcome, + "pdu->present != M2AP_M2AP_PDU_PR_successfulOutcome\n"); + AssertFatal(pdu->choice.successfulOutcome.procedureCode == M2AP_ProcedureCode_id_mbmsServiceCounting, + "pdu->choice.successfulOutcome->procedureCode != M2AP_ProcedureCode_id_mbmsServiceCounting\n"); + AssertFatal(pdu->choice.successfulOutcome.criticality == M2AP_Criticality_reject, + "pdu->choice.successfulOutcome->criticality != M2AP_Criticality_reject\n"); + AssertFatal(pdu->choice.successfulOutcome.value.present == M2AP_SuccessfulOutcome__value_PR_MbmsServiceCountingResponse, + "pdu->choice.successfulOutcome.value.present != M2AP_SuccessfulOutcome__value_PR_MbmsServiceCountingResponse\n"); + + + M2AP_MbmsServiceCountingResponse_t *in = &pdu->choice.successfulOutcome.value.choice.MbmsServiceCountingResponse; + //M2AP_MbmsServiceCountingResponse_Ies_t *ie; + //int MCE_MBMS_M2AP_ID=-1; + //int ENB_MBMS_M2AP_ID=-1; + + + MessageDef *msg_g = itti_alloc_new_message(TASK_M2AP_MCE,M2AP_MBMS_SERVICE_COUNTING_RESP); //TODO + + LOG_D(M2AP, "M2AP: MbmsServiceCounting-Resp: protocolIEs.list.count %d\n", + in->protocolIEs.list.count); + for (int i=0;i < in->protocolIEs.list.count; i++) { + //ie = in->protocolIEs.list.array[i]; + // switch (ie->id) { + // case M2AP_ProtocolIE_ID_id_MCE_MBMS_M2AP_ID: + // AssertFatal(ie->criticality == M2AP_Criticality_reject, + // "ie->criticality != M2AP_Criticality_reject\n"); + // AssertFatal(ie->value.present == M2AP_SessionStartResponse_Ies__value_PR_MCE_MBMS_M2AP_ID, + // "ie->value.present != M2AP_sessionStartResponse_IEs__value_PR_MCE_MBMS_M2AP_ID\n"); + // MCE_MBMS_M2AP_ID=ie->value.choice.MCE_MBMS_M2AP_ID; + // LOG_D(M2AP, "M2AP: SessionStart-Resp: MCE_MBMS_M2AP_ID %d\n", + // MCE_MBMS_M2AP_ID); + // break; + // case M2AP_ProtocolIE_ID_id_ENB_MBMS_M2AP_ID: + // AssertFatal(ie->criticality == M2AP_Criticality_reject, + // "ie->criticality != M2AP_Criticality_reject\n"); + // AssertFatal(ie->value.present == M2AP_SessionStartResponse_Ies__value_PR_ENB_MBMS_M2AP_ID, + // "ie->value.present != M2AP_sessionStartResponse_Ies__value_PR_ENB_MBMS_M2AP_ID\n"); + // ENB_MBMS_M2AP_ID=ie->value.choice.ENB_MBMS_M2AP_ID; + // LOG_D(M2AP, "M2AP: SessionStart-Resp: ENB_MBMS_M2AP_ID %d\n", + // ENB_MBMS_M2AP_ID); + // break; + // } + } + + //AssertFatal(MCE_MBMS_M2AP_ID!=-1,"MCE_MBMS_M2AP_ID was not sent\n"); + //AssertFatal(ENB_MBMS_M2AP_ID!=-1,"ENB_MBMS_M2AP_ID was not sent\n"); + //M2AP_SESSION_START_RESP(msg_p). +// MSC_LOG_RX_MESSAGE( +// MSC_M2AP_MCE, +// MSC_M2AP_ENB, + //return 0; +// 0, +// 0, +// MSC_AS_TIME_FMT" MCE_handle_M2_SESSION_START_RESPONSE successfulOutcome assoc_id %d", +// 0,0,//MSC_AS_TIME_ARGS(ctxt_pP), +// assoc_id); +// + //LOG_D(M2AP, "Sending ITTI message to ENB_APP with assoc_id (%d->%d)\n", + //assoc_id,ENB_MODULE_ID_TO_INSTANCE(assoc_id)); + + itti_send_msg_to_task(TASK_MCE_APP, ENB_MODULE_ID_TO_INSTANCE(assoc_id), msg_g); + return 0; + } -int MCE_handle_MBMS_SESSION_COUNTING_FAILURE(instance_t instance, - uint32_t assoc_id, - uint32_t stream, - M2AP_M2AP_PDU_t *pdu){ - AssertFatal(1==0,"Not implemented yet\n"); +int MCE_handle_MBMS_SESSION_COUNTING_FAILURE(instance_t instance, module_id_t du_mod_idP){ + + M2AP_M2AP_PDU_t pdu; + M2AP_MbmsServiceCountingRequest_t *out; + M2AP_MbmsServiceCountingRequest_Ies_t *ie; + + uint8_t *buffer; + uint32_t len; + //int i=0; + //int j=0; + + /* Create */ + /* 0. pdu Type */ + memset(&pdu, 0, sizeof(pdu)); + pdu.present = M2AP_M2AP_PDU_PR_initiatingMessage; + //pdu.choice.initiatingMessage = (M2AP_InitiatingMessage_t *)calloc(1, sizeof(M2AP_InitiatingMessage_t)); + pdu.choice.initiatingMessage.procedureCode = M2AP_ProcedureCode_id_mbmsServiceCounting; + pdu.choice.initiatingMessage.criticality = M2AP_Criticality_reject; + pdu.choice.initiatingMessage.value.present = M2AP_InitiatingMessage__value_PR_MbmsServiceCountingRequest; + out = &pdu.choice.initiatingMessage.value.choice.MbmsServiceCountingRequest; + + /* mandatory */ + /* c1. MCCH_Update_Time */ //long + ie=(M2AP_MbmsServiceCountingRequest_Ies_t *)calloc(1,sizeof(M2AP_MbmsSchedulingInformation_Ies_t)); + ie->id = M2AP_ProtocolIE_ID_id_MCCH_Update_Time; + ie->criticality = M2AP_Criticality_reject; + ie->value.present = M2AP_MbmsServiceCountingRequest_Ies__value_PR_MCCH_Update_Time; + //ie->value.choice.MCCH_Update_Time = ; + //ie->value.choice.MCCH_Update_Time = m2ap_mbms_scheduling_information->mcch_update_time; + + ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie); + + + /* mandatory */ + /* c1. MCE_MBMS_M2AP_ID (integer value) */ //long + ie = (M2AP_MbmsServiceCountingRequest_Ies_t *)calloc(1, sizeof(M2AP_MbmsServiceCountingRequest_Ies_t)); + ie->id = M2AP_ProtocolIE_ID_id_MBSFN_Area_ID; + ie->criticality = M2AP_Criticality_reject; + ie->value.present = M2AP_MbmsServiceCountingRequest_Ies__value_PR_MBSFN_Area_ID; + //ie->value.choice.MCE_MBMS_M2AP_ID = /*F1AP_get_next_transaction_identifier(enb_mod_idP, du_mod_idP);*/ //? + ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie); + + /* mandatory */ + /* c2. TMGI (integrer value) */ + ie = (M2AP_MbmsServiceCountingRequest_Ies_t *)calloc(1, sizeof(M2AP_MbmsServiceCountingRequest_Ies_t )); + ie->id = M2AP_ProtocolIE_ID_id_MBMS_Counting_Request_Session; + ie->criticality = M2AP_Criticality_reject; + ie->value.present = M2AP_MbmsServiceCountingRequest_Ies__value_PR_MBMS_Counting_Request_Session; + + //M2AP_MBMS_Counting_Request_Session_t * m2ap_mbms_counting_request_session = &ie->value.choice.MBMS_Counting_Request_Session; + + //&ie->choice.TMGI.pLMN_Identity); + //INT16_TO_OCTET_STRING(0,&ie->choice.TMGI.serviceId); + ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie); + + if (m2ap_encode_pdu(&pdu, &buffer, &len) < 0) { + LOG_E(M2AP, "Failed to encode MBMS Service Counting Results Report\n"); + return -1; + } + + return 0; } diff --git a/openair2/M2AP/m2ap_MCE_interface_management.h b/openair2/M2AP/m2ap_MCE_interface_management.h index 6b899e9ea2..2b1d5824af 100644 --- a/openair2/M2AP/m2ap_MCE_interface_management.h +++ b/openair2/M2AP/m2ap_MCE_interface_management.h @@ -150,10 +150,7 @@ int MCE_handle_MBMS_SESSION_UPDATE_RESPONSE(instance_t instance, uint32_t stream, M2AP_M2AP_PDU_t *pdu); -int MCE_handle_MBMS_SESSION_UPDATE_FAILURE(instance_t instance, - uint32_t assoc_id, - uint32_t stream, - M2AP_M2AP_PDU_t *pdu); +int MCE_handle_MBMS_SESSION_UPDATE_FAILURE(instance_t instance,module_id_t du_mod_idP); /* * Service Counting Request @@ -165,10 +162,7 @@ int MCE_handle_MBMS_SERVICE_COUNTING_RESPONSE(instance_t instance, uint32_t stream, M2AP_M2AP_PDU_t *pdu); -int MCE_handle_MBMS_SESSION_COUNTING_FAILURE(instance_t instance, - uint32_t assoc_id, - uint32_t stream, - M2AP_M2AP_PDU_t *pdu); +int MCE_handle_MBMS_SESSION_COUNTING_FAILURE(instance_t instance, module_id_t du_mod_idP); /* * Service Counting Results Report */ diff --git a/openair2/M2AP/m2ap_eNB.c b/openair2/M2AP/m2ap_eNB.c index 206b7cf8ca..39c769a43d 100644 --- a/openair2/M2AP/m2ap_eNB.c +++ b/openair2/M2AP/m2ap_eNB.c @@ -142,6 +142,22 @@ void m2ap_eNB_handle_sctp_association_resp(instance_t instance, sctp_new_associa sctp_new_association_resp->ulp_cnx_id); //m2ap_handle_m2_setup_message(instance_p, m2ap_enb_data_p, // sctp_new_association_resp->sctp_state == SCTP_STATE_SHUTDOWN); + + sleep(4); + int index; + /* Trying to connect to the provided list of eNB ip address */ + for (index = 0; index < instance_p->nb_m2; index++) { + //M2AP_INFO("eNB[%d] eNB id %u acting as an initiator (client)\n", + // instance_id, instance->eNB_id); + m2ap_eNB_register_eNB(instance_p, + &instance_p->target_mce_m2_ip_address[index], + &instance_p->enb_m2_ip_address, + instance_p->sctp_in_streams, + instance_p->sctp_out_streams, + instance_p->enb_port_for_M2C, + instance_p->multi_sd); + } + return; } @@ -304,6 +320,8 @@ void m2ap_eNB_handle_register_eNB(instance_t instance, DevCheck(new_instance->mcc == m2ap_register_eNB->mcc, new_instance->mcc, m2ap_register_eNB->mcc, 0); DevCheck(new_instance->mnc == m2ap_register_eNB->mnc, new_instance->mnc, m2ap_register_eNB->mnc, 0); M2AP_WARN("eNB[%d] already registered\n", instance); + + } else { new_instance = calloc(1, sizeof(m2ap_eNB_instance_t)); DevAssert(new_instance != NULL); diff --git a/openair2/M2AP/m2ap_eNB_interface_management.c b/openair2/M2AP/m2ap_eNB_interface_management.c index 95b8372025..9649d919c3 100644 --- a/openair2/M2AP/m2ap_eNB_interface_management.c +++ b/openair2/M2AP/m2ap_eNB_interface_management.c @@ -163,8 +163,12 @@ int eNB_handle_MBMS_SCHEDULING_INFORMATION(instance_t instance, M2AP_MBMS_SCHEDULING_INFORMATION(message_p).mbms_area_config_list[i].mbms_sf_config_list[j].radioframe_allocation_period = m2ap_mbsfn_sf_configuration->radioframeAllocationPeriod; M2AP_MBMS_SCHEDULING_INFORMATION(message_p).mbms_area_config_list[i].mbms_sf_config_list[j].radioframe_allocation_offset = m2ap_mbsfn_sf_configuration->radioframeAllocationOffset; if( m2ap_mbsfn_sf_configuration->subframeAllocation.present == M2AP_MBSFN_Subframe_Configuration__subframeAllocation_PR_fourFrames ) { + LOG_I(RRC,"is_four_sf\n"); + M2AP_MBMS_SCHEDULING_INFORMATION(message_p).mbms_area_config_list[i].mbms_sf_config_list[j].is_four_sf = 1; M2AP_MBMS_SCHEDULING_INFORMATION(message_p).mbms_area_config_list[i].mbms_sf_config_list[j].subframe_allocation = m2ap_mbsfn_sf_configuration->subframeAllocation.choice.oneFrame.buf[0] | (m2ap_mbsfn_sf_configuration->subframeAllocation.choice.oneFrame.buf[1]<<8) | (m2ap_mbsfn_sf_configuration->subframeAllocation.choice.oneFrame.buf[0]<<16); }else{ + LOG_I(RRC,"is_one_sf\n"); + M2AP_MBMS_SCHEDULING_INFORMATION(message_p).mbms_area_config_list[i].mbms_sf_config_list[j].is_four_sf = 0; M2AP_MBMS_SCHEDULING_INFORMATION(message_p).mbms_area_config_list[i].mbms_sf_config_list[j].subframe_allocation = (m2ap_mbsfn_sf_configuration->subframeAllocation.choice.oneFrame.buf[0] >> 2) & 0x3F; } } @@ -1262,46 +1266,226 @@ int eNB_handle_MBMS_SERVICE_COUNTING_REQ(instance_t instance, uint32_t stream, M2AP_M2AP_PDU_t *pdu) { - LOG_D(M2AP, "eNB_handle_MBMS_SERVICE_COUNTING_REQUEST assoc_id %d\n",assoc_id); - MessageDef *message_p; + LOG_D(M2AP, "eNB_handle_MBMS_SERVICE_COUNTING_REQUEST assoc_id %d\n",assoc_id); + + //MessageDef *message_p; //M2AP_MbmsServiceCountingRequest_t *container; //M2AP_MbmsServiceCountingRequest_Ies_t *ie; + M2AP_MbmsServiceCountingRequest_t *in; + M2AP_MbmsServiceCountingRequest_Ies_t *ie; //int i = 0; + int j; DevAssert(pdu != NULL); // container = &pdu->choice.initiatingMessage.value.choice.MbmsServiceCountingRequest; + in = &pdu->choice.initiatingMessage.value.choice.MbmsServiceCountingRequest; /* M2 Setup Request == Non UE-related procedure -> stream 0 */ if (stream != 0) { - LOG_D(M2AP, "[SCTP %d] Received MMBS session start request on stream != 0 (%d)\n", + LOG_D(M2AP, "[SCTP %d] Received MMBS service Counting Request on stream != 0 (%d)\n", assoc_id, stream); } - message_p = itti_alloc_new_message (TASK_M2AP_ENB, M2AP_MBMS_SERVICE_COUNTING_REQ); + for (j=0;j < in->protocolIEs.list.count; j++) { + ie = in->protocolIEs.list.array[j]; + switch (ie->id) { + case M2AP_ProtocolIE_ID_id_MCCH_Update_Time: + AssertFatal(ie->criticality == M2AP_Criticality_reject, + "ie->criticality != M2AP_Criticality_reject\n"); + AssertFatal(ie->value.present == M2AP_MbmsServiceCountingRequest_Ies__value_PR_MCCH_Update_Time, + "ie->value.present != M2AP_MbmsServiceCountingRequest_Ies__value_PR_MCCH_Update_Time\n"); + LOG_D(M2AP, "M2AP: : MCCH_Update_Time \n"); + break; + case M2AP_ProtocolIE_ID_id_MBSFN_Area_ID: + AssertFatal(ie->criticality == M2AP_Criticality_reject, + "ie->criticality != M2AP_Criticality_reject\n"); + AssertFatal(ie->value.present == M2AP_MbmsServiceCountingRequest_Ies__value_PR_MBSFN_Area_ID, + "ie->value.present != M2AP_MbmsServiceCountingRequest_Ies__value_PR_MBSFN_Area_ID\n"); + LOG_D(M2AP, "M2AP: : MBSFN_Area_ID \n"); + break; + case M2AP_ProtocolIE_ID_id_MBMS_Counting_Request_Session: + AssertFatal(ie->criticality == M2AP_Criticality_reject, + "ie->criticality != M2AP_Criticality_reject\n"); + AssertFatal(ie->value.present == M2AP_MbmsServiceCountingRequest_Ies__value_PR_MBMS_Counting_Request_Session, + "ie->value.present != M2AP_MbmsServiceCountingRequest_Ies__value_PR_MBMS_Counting_Request_Session\n"); + LOG_D(M2AP, "M2AP: : MBMS_Counting_Request_Session \n"); + + //ie->value.choice.MBMS_Counting_Request_Session.list.count; + + break; + + } + } - itti_send_msg_to_task(TASK_ENB_APP, ENB_MODULE_ID_TO_INSTANCE(instance), message_p); - + //message_p = itti_alloc_new_message (TASK_M2AP_ENB, M2AP_MBMS_SERVICE_COUNTING_REQ); return 0; } int eNB_send_MBMS_SERVICE_COUNTING_REPORT(instance_t instance, m2ap_mbms_service_counting_report_t * m2ap_mbms_service_counting_report) { - AssertFatal(1==0,"Not implemented yet\n"); + M2AP_M2AP_PDU_t pdu; + M2AP_MbmsServiceCountingResultsReport_t *out; + M2AP_MbmsServiceCountingResultsReport_Ies_t *ie; + + uint8_t *buffer; + uint32_t len; + //int i = 0; + // + // memset(&pdu, 0, sizeof(pdu)); + pdu.present = M2AP_M2AP_PDU_PR_initiatingMessage; + //pdu.choice.initiatingMessage = (M2AP_InitiatingMessage_t *)calloc(1, sizeof(M2AP_InitiatingMessage_t)); + pdu.choice.initiatingMessage.procedureCode = M2AP_ProcedureCode_id_mbmsServiceCountingResultsReport; + pdu.choice.initiatingMessage.criticality = M2AP_Criticality_reject; + pdu.choice.initiatingMessage.value.present = M2AP_InitiatingMessage__value_PR_MbmsServiceCountingResultsReport; + out = &pdu.choice.initiatingMessage.value.choice.MbmsServiceCountingResultsReport; + + + /* Create */ + /* 0. Message Type */ + memset(&pdu, 0, sizeof(pdu)); + pdu.present = M2AP_M2AP_PDU_PR_initiatingMessage; + //pdu.choice.successfulOutcome = (M2AP_SuccessfulOutcome_t *)calloc(1, sizeof(M2AP_SuccessfulOutcome_t)); + pdu.choice.initiatingMessage.procedureCode = M2AP_ProcedureCode_id_mbmsServiceCountingResultsReport; + pdu.choice.initiatingMessage.criticality = M2AP_Criticality_reject; + pdu.choice.initiatingMessage.value.present = M2AP_InitiatingMessage__value_PR_MbmsServiceCountingResultsReport; + out = &pdu.choice.initiatingMessage.value.choice.MbmsServiceCountingResultsReport; + + /* mandatory */ + /* c1. MBSFN_Area_ID (integer value) */ //long + ie = (M2AP_MbmsServiceCountingResultsReport_Ies_t *)calloc(1, sizeof(M2AP_MbmsServiceCountingResultsReport_Ies_t)); + ie->id = M2AP_ProtocolIE_ID_id_MBSFN_Area_ID; + ie->criticality = M2AP_Criticality_reject; + ie->value.present = M2AP_MbmsServiceCountingResultsReport_Ies__value_PR_MBSFN_Area_ID; + //ie->value.choice.MCE_MBMS_M2AP_ID = /*F1AP_get_next_transaction_identifier(enb_mod_idP, du_mod_idP);*/ //? + ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie); + + /* mandatory */ + /* c1. MBSFN_Area_ID (integer value) */ //long + ie = (M2AP_MbmsServiceCountingResultsReport_Ies_t *)calloc(1, sizeof(M2AP_MbmsServiceCountingResultsReport_Ies_t)); + ie->id = M2AP_ProtocolIE_ID_id_MBMS_Counting_Result_List; + ie->criticality = M2AP_Criticality_reject; + ie->value.present = M2AP_MbmsServiceCountingResultsReport_Ies__value_PR_MBMS_Counting_Result_List; + //ie->value.choice.MCE_MBMS_M2AP_ID = /*F1AP_get_next_transaction_identifier(enb_mod_idP, du_mod_idP);*/ //? + M2AP_MBMS_Counting_Result_List_t * m2ap_mbms_counting_result_list = &ie->value.choice.MBMS_Counting_Result_List; + + M2AP_MBMS_Counting_Result_Item_t * m2ap_mbms_counting_result_item = (M2AP_MBMS_Counting_Result_Item_t*)calloc(1,sizeof(M2AP_MBMS_Counting_Result_Item_t)); + m2ap_mbms_counting_result_item->id = M2AP_ProtocolIE_ID_id_MBMS_Counting_Result_Item; + m2ap_mbms_counting_result_item->criticality = M2AP_Criticality_reject; + m2ap_mbms_counting_result_item->value.present = M2AP_MBMS_Counting_Result_Item__value_PR_MBMS_Counting_Result; + M2AP_MBMS_Counting_Result_t * m2ap_mbms_counting_result = &m2ap_mbms_counting_result_item->value.choice.MBMS_Counting_Result; + + M2AP_TMGI_t * tmgi = &m2ap_mbms_counting_result->tmgi; + MCC_MNC_TO_PLMNID(0,0,3,&tmgi->pLMNidentity);/*instance_p->mcc, instance_p->mnc, instance_p->mnc_digit_length,*/ + uint8_t TMGI[5] = {4,3,2,1,0}; + OCTET_STRING_fromBuf(&tmgi->serviceID,(const char*)&TMGI[2],3); + + //M2AP_CountingResult_t * m2ap_counting_result = &m2ap_mbms_counting_result->countingResult; + + ASN_SEQUENCE_ADD(&m2ap_mbms_counting_result_list->list,m2ap_mbms_counting_result_item); + + + + ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie); + + if (m2ap_encode_pdu(&pdu, &buffer, &len) < 0) { + LOG_E(M2AP, "Failed to encode MBMS Service Counting Results Report\n"); + return -1; + } return 0; } + int eNB_send_MBMS_SERVICE_COUNTING_RESP(instance_t instance, m2ap_mbms_service_counting_resp_t * m2ap_mbms_service_counting_resp) { AssertFatal(1==0,"Not implemented yet\n"); + M2AP_M2AP_PDU_t pdu; + M2AP_MbmsServiceCountingResponse_t *out; + M2AP_MbmsServiceCountingResponse_Ies_t *ie; + + uint8_t *buffer; + uint32_t len; + //int i = 0; + + /* Create */ + /* 0. Message Type */ + memset(&pdu, 0, sizeof(pdu)); + pdu.present = M2AP_M2AP_PDU_PR_successfulOutcome; + //pdu.choice.successfulOutcome = (M2AP_SuccessfulOutcome_t *)calloc(1, sizeof(M2AP_SuccessfulOutcome_t)); + pdu.choice.successfulOutcome.procedureCode = M2AP_ProcedureCode_id_mbmsServiceCounting; + pdu.choice.successfulOutcome.criticality = M2AP_Criticality_reject; + pdu.choice.successfulOutcome.value.present = M2AP_SuccessfulOutcome__value_PR_MbmsServiceCountingResponse; + out = &pdu.choice.successfulOutcome.value.choice.MbmsServiceCountingResponse; + + + /* mandatory */ + /* c1. MCE_MBMS_M2AP_ID (integer value) */ //long + ie = (M2AP_MbmsServiceCountingResponse_Ies_t*)calloc(1, sizeof(M2AP_MbmsServiceCountingResponse_Ies_t)); + ie->id = M2AP_ProtocolIE_ID_id_MCE_MBMS_M2AP_ID; + ie->criticality = M2AP_Criticality_reject; + ie->value.present = M2AP_MbmsServiceCountingResponse_Ies__value_PR_CriticalityDiagnostics; + //ie->value.choice.MCE_MBMS_M2AP_ID = /*F1AP_get_next_transaction_identifier(enb_mod_idP, du_mod_idP);*/ //? + ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie); + + if (m2ap_encode_pdu(&pdu, &buffer, &len) < 0) { + LOG_E(M2AP, "Failed to encode MBMS Service Counting Results Report\n"); + return -1; + } + + return 0; return 0; } + int eNB_send_MBMS_SERVICE_COUNTING_FAILURE(instance_t instance, m2ap_mbms_service_counting_failure_t * m2ap_mbms_service_counting_failure) { - AssertFatal(1==0,"Not implemented yet\n"); + M2AP_M2AP_PDU_t pdu; + M2AP_MbmsServiceCountingFailure_t *out; + M2AP_MbmsServiceCountingFailure_Ies_t *ie; + + uint8_t *buffer; + uint32_t len; + //int i = 0; + + /* Create */ + /* 0. Message Type */ + memset(&pdu, 0, sizeof(pdu)); + pdu.present = M2AP_M2AP_PDU_PR_unsuccessfulOutcome; + //pdu.choice.successfulOutcome = (M2AP_SuccessfulOutcome_t *)calloc(1, sizeof(M2AP_SuccessfulOutcome_t)); + pdu.choice.unsuccessfulOutcome.procedureCode = M2AP_ProcedureCode_id_mbmsServiceCounting; + pdu.choice.unsuccessfulOutcome.criticality = M2AP_Criticality_reject; + pdu.choice.unsuccessfulOutcome.value.present = M2AP_UnsuccessfulOutcome__value_PR_MbmsServiceCountingFailure; + out = &pdu.choice.unsuccessfulOutcome.value.choice.MbmsServiceCountingFailure; + + + /* mandatory */ + /* c1. MCE_MBMS_M2AP_ID (integer value) */ //long + ie = (M2AP_MbmsServiceCountingFailure_Ies_t*)calloc(1, sizeof(M2AP_MbmsServiceCountingFailure_Ies_t)); + ie->id = M2AP_ProtocolIE_ID_id_ENB_MBMS_M2AP_ID; + ie->criticality = M2AP_Criticality_reject; + ie->value.present = M2AP_MbmsServiceCountingFailure_Ies__value_PR_CriticalityDiagnostics; + //ie->value.choice.MCE_MBMS_M2AP_ID = /*F1AP_get_next_transaction_identifier(enb_mod_idP, du_mod_idP);*/ //? + ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie); + + /* mandatory */ + /* c2. Cause */ + ie = (M2AP_MbmsServiceCountingFailure_Ies_t *)calloc(1, sizeof(M2AP_MbmsServiceCountingFailure_Ies_t)); + ie->id = M2AP_ProtocolIE_ID_id_Cause; + ie->criticality = M2AP_Criticality_ignore; + ie->value.present = M2AP_MbmsServiceCountingFailure_Ies__value_PR_Cause; + ie->value.choice.Cause.present = M2AP_Cause_PR_radioNetwork; + ie->value.choice.Cause.choice.radioNetwork = M2AP_CauseRadioNetwork_unspecified; + ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie); + + + if (m2ap_encode_pdu(&pdu, &buffer, &len) < 0) { + LOG_E(M2AP, "Failed to encode MBMS Service Counting Results Report\n"); + return -1; + } + + return 0; } diff --git a/openair2/MCE_APP/mce_app.c b/openair2/MCE_APP/mce_app.c index 6f7454c321..817c863f7b 100644 --- a/openair2/MCE_APP/mce_app.c +++ b/openair2/MCE_APP/mce_app.c @@ -372,7 +372,8 @@ void *MCE_app_task(void *args_p) { // /* Try to register each MCE with MCE each other */ if (is_m3ap_MCE_enabled() /*&& !NODE_IS_DU(RC.rrc[0]->node_type)*/) { - ///*m3_register_mce_pending =*/ MCE_app_register_m3 (mce_id_start, mce_id_end); + ///*m3_register_mce_pending =*/ + MCE_app_register_m3 (mce_id_start, mce_id_end); } do { @@ -627,7 +628,7 @@ void *MCE_app_task(void *args_p) { //} - /*m3_register_mce_pending =*/ MCE_app_register_m3 (mce_id_start, mce_id_end); + /*m3_register_mce_pending =*/ //MCE_app_register_m3 (mce_id_start, mce_id_end); //MCE_app_send_m2ap_session_start_req(0); break; diff --git a/openair2/NR_PHY_INTERFACE/NR_IF_Module.c b/openair2/NR_PHY_INTERFACE/NR_IF_Module.c index b19f46e299..fe98244fa6 100644 --- a/openair2/NR_PHY_INTERFACE/NR_IF_Module.c +++ b/openair2/NR_PHY_INTERFACE/NR_IF_Module.c @@ -38,8 +38,10 @@ #include "LAYER2/MAC/mac_proto.h" #include "LAYER2/NR_MAC_gNB/mac_proto.h" #include "common/ran_context.h" +#include "executables/softmodem-common.h" #define MAX_IF_MODULES 100 +//#define UL_HARQ_PRINT NR_IF_Module_t *if_inst[MAX_IF_MODULES]; NR_Sched_Rsp_t Sched_INFO[MAX_IF_MODULES][MAX_NUM_CCs]; @@ -62,92 +64,22 @@ void handle_nr_rach(NR_UL_IND_t *UL_info) { if (UL_info->rach_ind.pdu_list[0].num_preamble>0) AssertFatal(UL_info->rach_ind.pdu_list[0].num_preamble==1, "More than 1 preamble not supported\n"); - - /*nr_initiate_ra_proc(UL_info->module_id, + + nr_initiate_ra_proc(UL_info->module_id, UL_info->CC_id, UL_info->rach_ind.sfn, UL_info->rach_ind.slot, UL_info->rach_ind.pdu_list[0].preamble_list[0].preamble_index, UL_info->rach_ind.pdu_list[0].freq_index, UL_info->rach_ind.pdu_list[0].symbol_index, - UL_info->rach_ind.pdu_list[0].preamble_list[0].timing_advance);*/ + UL_info->rach_ind.pdu_list[0].preamble_list[0].timing_advance); } } -void handle_nr_sr(NR_UL_IND_t *UL_info) { +void handle_nr_ulsch(NR_UL_IND_t *UL_info, NR_UE_sched_ctrl_t *sched_ctrl, NR_mac_stats_t *stats) { - - /* if (nfapi_mode == 1) // PNF - { - if (UL_info->sr_ind.sr_indication_body.number_of_srs>0) - { - // oai_nfapi_sr_indication(&UL_info->sr_ind); - } - } - else - { - - - for (int i=0;isr_ind.sr_indication_body.number_of_srs;i++) - SR_indication(UL_info->module_id, - UL_info->CC_id, - UL_info->frame, - UL_info->slot, - UL_info->sr_ind.sr_indication_body.sr_pdu_list[i].rx_ue_information.rnti, - UL_info->sr_ind.sr_indication_body.sr_pdu_list[i].ul_cqi_information.ul_cqi); - - - - } - - UL_info->sr_ind.sr_indication_body.number_of_srs=0;*/ -} - -void handle_nr_cqi(NR_UL_IND_t *UL_info) { - - /* - for (int i=0;icqi_ind.number_of_cqis;i++) - cqi_indication(UL_info->module_id, - UL_info->CC_id, - UL_info->frame, - UL_info->slot, - UL_info->cqi_ind.cqi_pdu_list[i].rx_ue_information.rnti, - &UL_info->cqi_ind.cqi_pdu_list[i].cqi_indication_rel9, - UL_info->cqi_ind.cqi_raw_pdu_list[i].pdu, - &UL_info->cqi_ind.cqi_pdu_list[i].ul_cqi_information); - - UL_info->cqi_ind.number_of_cqis=0;*/ - -} - -void handle_nr_harq(NR_UL_IND_t *UL_info) { - /* if (nfapi_mode == 1 && UL_info->harq_ind.harq_indication_body.number_of_harqs>0) { // PNF - //LOG_D(PHY, "UL_info->harq_ind.harq_indication_body.number_of_harqs:%d Send to VNF\n", UL_info->harq_ind.harq_indication_body.number_of_harqs); - int retval = oai_nfapi_harq_indication(&UL_info->harq_ind); - - if (retval!=0) { - LOG_E(PHY, "Failed to encode NFAPI HARQ_IND retval:%d\n", retval); - } - - UL_info->harq_ind.harq_indication_body.number_of_harqs = 0; - } - else - { - - for (int i=0;iharq_ind.harq_indication_body.number_of_harqs;i++) - harq_indication(UL_info->module_id, - UL_info->CC_id, - NFAPI_SFNSF2SFN(UL_info->harq_ind.sfn_sf), - NFAPI_SFNSF2SF(UL_info->harq_ind.sfn_sf), - &UL_info->harq_ind.harq_indication_body.harq_pdu_list[i]); - - UL_info->harq_ind.harq_indication_body.number_of_harqs=0; - }*/ -} - -void handle_nr_ulsch(NR_UL_IND_t *UL_info) { if(nfapi_mode == 1) { if (UL_info->crc_ind.number_crcs>0) { //LOG_D(PHY,"UL_info->crc_ind.crc_indication_body.number_of_crcs:%d CRC_IND:SFN/SF:%d\n", UL_info->crc_ind.crc_indication_body.number_of_crcs, NFAPI_SFNSF2DEC(UL_info->crc_ind.sfn_sf)); @@ -174,6 +106,8 @@ void handle_nr_ulsch(NR_UL_IND_t *UL_info) { UL_info->rx_ind.pdu_list[i].rnti) { LOG_D(PHY, "UL_info->crc_ind.crc_indication_body.crc_pdu_list[%d].crc_indication_rel8.crc_flag:%d\n", j, UL_info->crc_ind.crc_list[j].tb_crc_status); + handle_nr_ul_harq(UL_info->slot, sched_ctrl, stats, UL_info->crc_ind.crc_list[j]); + if (UL_info->crc_ind.crc_list[j].tb_crc_status == 1) { // CRC error indication LOG_D(MAC,"Frame %d, Slot %d Calling rx_sdu (CRC error) \n",UL_info->frame,UL_info->slot); @@ -185,7 +119,8 @@ void handle_nr_ulsch(NR_UL_IND_t *UL_info) { (uint8_t *)NULL, UL_info->rx_ind.pdu_list[i].pdu_length, UL_info->rx_ind.pdu_list[i].timing_advance, - UL_info->rx_ind.pdu_list[i].ul_cqi); + UL_info->rx_ind.pdu_list[i].ul_cqi, + UL_info->rx_ind.pdu_list[i].rssi); } else { LOG_D(MAC,"Frame %d, Slot %d Calling rx_sdu (CRC ok) \n",UL_info->frame,UL_info->slot); nr_rx_sdu(UL_info->module_id, @@ -196,7 +131,8 @@ void handle_nr_ulsch(NR_UL_IND_t *UL_info) { UL_info->rx_ind.pdu_list[i].pdu, UL_info->rx_ind.pdu_list[i].pdu_length, UL_info->rx_ind.pdu_list[i].timing_advance, - UL_info->rx_ind.pdu_list[i].ul_cqi); + UL_info->rx_ind.pdu_list[i].ul_cqi, + UL_info->rx_ind.pdu_list[i].rssi); } break; } @@ -224,9 +160,9 @@ void NR_UL_indication(NR_UL_IND_t *UL_info) { NR_Sched_Rsp_t *sched_info = &Sched_INFO[module_id][CC_id]; NR_IF_Module_t *ifi = if_inst[module_id]; gNB_MAC_INST *mac = RC.nrmac[module_id]; - LOG_D(PHY,"SFN/SF:%d%d module_id:%d CC_id:%d UL_info[rx_ind:%d crcs:%d]\n", + LOG_D(PHY,"SFN/SF:%d%d module_id:%d CC_id:%d UL_info[rach_pdus:%d rx_ind:%d crcs:%d]\n", UL_info->frame,UL_info->slot, - module_id,CC_id, + module_id,CC_id, UL_info->rach_ind.number_of_pdus, UL_info->rx_ind.number_of_pdus, UL_info->crc_ind.number_crcs); if (nfapi_mode != 1) { @@ -244,12 +180,11 @@ void NR_UL_indication(NR_UL_IND_t *UL_info) { // clear DL/UL info for new scheduling round clear_nr_nfapi_information(mac,CC_id,UL_info->frame,UL_info->slot); handle_nr_rach(UL_info); - handle_nr_sr(UL_info); - handle_nr_cqi(UL_info); - handle_nr_harq(UL_info); + + handle_nr_uci(UL_info,&mac->UE_list.UE_sched_ctrl[0],&mac->UE_list.mac_stats[0],mac->pucch_target_snrx10); // clear HI prior to handling ULSCH mac->UL_dci_req[CC_id].numPdus = 0; - handle_nr_ulsch(UL_info); + handle_nr_ulsch(UL_info, &mac->UE_list.UE_sched_ctrl[0],&mac->UE_list.mac_stats[0]); if (nfapi_mode != 1) { if (ifi->CC_mask == ((1<config[CC_id]; int spf = get_spf(cfg); gNB_dlsch_ulsch_scheduler(module_id, - UL_info->frame, - UL_info->slot, (UL_info->frame+((UL_info->slot>(spf-1-sl_ahead))?1:0)) % 1024, (UL_info->slot+sl_ahead)%spf); @@ -274,13 +207,7 @@ void NR_UL_indication(NR_UL_IND_t *UL_info) { sched_info->DL_req = &mac->DL_req[CC_id]; sched_info->UL_dci_req = &mac->UL_dci_req[CC_id]; - if ((mac->common_channels[CC_id].ServingCellConfigCommon->tdd_UL_DL_ConfigurationCommon==NULL) || - (is_nr_UL_slot(mac->common_channels[CC_id].ServingCellConfigCommon,UL_info->slot)>0)) { - //printf("NR_UL_indication: this is an UL slot. UL_info: frame %d, slot %d. UL_tti_req: frame %d, slot %d\n",UL_info->frame,UL_info->slot,mac->UL_tti_req[CC_id].SFN,mac->UL_tti_req[CC_id].Slot); - sched_info->UL_tti_req = &mac->UL_tti_req[CC_id]; - } - else - sched_info->UL_tti_req = NULL; + sched_info->UL_tti_req = &mac->UL_tti_req[CC_id]; sched_info->TX_req = &mac->TX_req[CC_id]; #ifdef DUMP_FAPI diff --git a/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c b/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c index 64a814bcdb..91cc965473 100644 --- a/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c +++ b/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c @@ -32,9 +32,9 @@ #include "PHY/defs_nr_UE.h" #include "NR_IF_Module.h" -#include "mac_proto.h" +#include "NR_MAC_UE/mac_proto.h" #include "assertions.h" -#include "LAYER2/NR_MAC_UE/mac_extern.h" +#include "NR_MAC_UE/mac_extern.h" #include "SCHED_NR_UE/fapi_nr_ue_l1.h" #include "executables/softmodem-common.h" @@ -93,6 +93,14 @@ int8_t handle_dlsch (module_id_t module_id, int cc_id, uint8_t gNB_index, fapi_n */ } +int8_t handle_rar (nr_downlink_indication_t *dl_info){ + + LOG_D(MAC, "handling RAR at MAC layer \n"); + nr_process_rar (dl_info); + return 0; + +} + int nr_ue_ul_indication(nr_uplink_indication_t *ul_info){ NR_UE_L2_STATE_t ret; @@ -105,14 +113,11 @@ int nr_ue_ul_indication(nr_uplink_indication_t *ul_info){ mac->dl_config_request.number_pdus = 0; // clean previous FAPI messages - ret = nr_ue_scheduler( - ul_info->module_id, - ul_info->gNB_index, - ul_info->cc_id, - ul_info->frame, - ul_info->slot, - ul_info->ssb_index, - 0, 0); // TODO check tx/rx frame/slot is need for NR version + ret = nr_ue_scheduler(NULL, ul_info); + + if (is_nr_UL_slot(mac->scc, ul_info->slot_tx) && get_softmodem_params()->do_ra){ + nr_ue_prach_scheduler(module_id, ul_info->frame_tx, ul_info->slot_tx); + } switch(ret){ case UE_CONNECTION_OK: @@ -127,14 +132,13 @@ int nr_ue_ul_indication(nr_uplink_indication_t *ul_info){ break; } - mac->if_module->scheduled_response(&mac->scheduled_response); return 0; } int nr_ue_dl_indication(nr_downlink_indication_t *dl_info, NR_UL_TIME_ALIGNMENT_t *ul_time_alignment){ - + int32_t i; uint32_t ret_mask = 0x0; module_id_t module_id = dl_info->module_id; @@ -142,132 +146,101 @@ int nr_ue_dl_indication(nr_downlink_indication_t *dl_info, NR_UL_TIME_ALIGNMENT_ fapi_nr_dl_config_request_t *dl_config = &mac->dl_config_request; fapi_nr_ul_config_request_t *ul_config = &mac->ul_config_request; - dl_config->number_pdus = 0; - ul_config->number_pdus = 0; - //hook up pointers - mac->scheduled_response.dl_config = dl_config; - mac->scheduled_response.ul_config = ul_config; - mac->scheduled_response.tx_request = &mac->tx_request; - mac->scheduled_response.module_id = dl_info->module_id; - mac->scheduled_response.CC_id = dl_info->cc_id; - mac->scheduled_response.frame = dl_info->frame; - mac->scheduled_response.slot = dl_info->slot; + if (!dl_info->dci_ind && !dl_info->rx_ind) { + // UL indication to schedule DCI reception + nr_ue_scheduler(dl_info, NULL); + } else { + // UL indication after reception of DCI or DL PDU + dl_config->number_pdus = 0; + ul_config->number_pdus = 0; + //hook up pointers + mac->scheduled_response.dl_config = dl_config; + mac->scheduled_response.ul_config = ul_config; + mac->scheduled_response.tx_request = &mac->tx_request; + mac->scheduled_response.module_id = dl_info->module_id; + mac->scheduled_response.CC_id = dl_info->cc_id; + mac->scheduled_response.frame = dl_info->frame; + mac->scheduled_response.slot = dl_info->slot; - if(dl_info->dci_ind != NULL){ - LOG_D(MAC,"[L2][IF MODULE][DL INDICATION][DCI_IND]\n"); - for(i=0; idci_ind->number_of_dcis; ++i){ - LOG_D(MAC,">>>NR_IF_Module i=%d, dl_info->dci_ind->number_of_dcis=%d\n",i,dl_info->dci_ind->number_of_dcis); - // fapi_nr_dci_pdu_rel15_t *dci = &dl_info->dci_ind->dci_list[i].dci; + if(dl_info->dci_ind != NULL){ + LOG_D(MAC,"[L2][IF MODULE][DL INDICATION][DCI_IND]\n"); + for(i=0; idci_ind->number_of_dcis; ++i){ + LOG_D(MAC,">>>NR_IF_Module i=%d, dl_info->dci_ind->number_of_dcis=%d\n",i,dl_info->dci_ind->number_of_dcis); - ret_mask |= (handle_dci(dl_info->module_id, - dl_info->cc_id, - dl_info->gNB_index, - dl_info->dci_ind->dci_list+i)<< FAPI_NR_DCI_IND); - - AssertFatal( nr_ue_if_module_inst[module_id] != NULL, "IF module is void!\n" ); - nr_ue_if_module_inst[module_id]->scheduled_response(&mac->scheduled_response); - - - /*switch((dl_info->dci_ind->dci_list+i)->dci_type){ - case FAPI_NR_DCI_TYPE_0_0: - case FAPI_NR_DCI_TYPE_0_1: - case FAPI_NR_DCI_TYPE_1_1: - case FAPI_NR_DCI_TYPE_2_0: - case FAPI_NR_DCI_TYPE_2_1: - case FAPI_NR_DCI_TYPE_2_2: - case FAPI_NR_DCI_TYPE_2_3: - AssertFatal(1==0, "Not yet support at this moment!\n"); - break; - - case FAPI_NR_DCI_TYPE_1_0: - - dl_config->dl_config_list[dl_config->number_pdus].pdu_type = FAPI_NR_DL_CONFIG_TYPE_DLSCH; - - // mapping into DL_CONFIG_REQ for DL-SCH - fapi_nr_dl_config_dlsch_pdu_rel15_t *dlsch_config_pdu = &dl_config->dl_config_list[dl_config->number_pdus].dlsch_config_pdu.dlsch_config_rel15; - - dl_config->dl_config_list[dl_config->number_pdus].dlsch_config_pdu.rnti = 0x0000; // TX RNTI: UE-spec - memcpy(dlsch_config_pdu, dci, sizeof(fapi_nr_dci_pdu_rel15_t)); - - dl_config->number_pdus = dl_config->number_pdus + 1; - - ret_mask |= (handle_dci( - dl_info->module_id, - dl_info->cc_id, - dl_info->gNB_index, - dci, - (dl_info->dci_ind->dci_list+i)->rnti, - (dl_info->dci_ind->dci_list+i)->dci_type)) << FAPI_NR_DCI_IND; - - - - break; - - default: - break; - }*/ - - //(dl_info->dci_list+i)->rnti - } - } - - if(dl_info->rx_ind != NULL){ - LOG_D(MAC,"[L2][IF MODULE][DL INDICATION][RX_IND], Number of PDUs: %d \n", dl_info->rx_ind->number_pdus); - for(i=0; irx_ind->number_pdus; ++i){ - switch(dl_info->rx_ind->rx_indication_body[i].pdu_type){ - case FAPI_NR_RX_PDU_TYPE_MIB: - ret_mask |= (handle_bcch_bch(dl_info->module_id, dl_info->cc_id, dl_info->gNB_index, - (dl_info->rx_ind->rx_indication_body+i)->mib_pdu.pdu, - (dl_info->rx_ind->rx_indication_body+i)->mib_pdu.additional_bits, - (dl_info->rx_ind->rx_indication_body+i)->mib_pdu.ssb_index, - (dl_info->rx_ind->rx_indication_body+i)->mib_pdu.ssb_length, - (dl_info->rx_ind->rx_indication_body+i)->mib_pdu.cell_id )) << FAPI_NR_RX_PDU_TYPE_MIB; - LOG_D(MAC,"[L2][IF MODULE][DL INDICATION][RX_IND], MIB case Number of PDUs: %d \n", dl_info->rx_ind->number_pdus); - /*ret_mask |= (handle_bcch_bch( dl_info->module_id, dl_info->cc_id, dl_info->gNB_index, - dl_info->rx_ind->rx_indication_body[i].mib_pdu.pdu, - dl_info->rx_ind->rx_indication_body[i].mib_pdu.additional_bits, - dl_info->rx_ind->rx_indication_body[i].mib_pdu.ssb_index, - dl_info->rx_ind->rx_indication_body[i].mib_pdu.ssb_length, - dl_info->rx_ind->rx_indication_body[i].mib_pdu.cell_id )) << FAPI_NR_RX_PDU_TYPE_MIB;*/ - break; - case FAPI_NR_RX_PDU_TYPE_SIB: - ret_mask |= (handle_bcch_dlsch(dl_info->module_id, dl_info->cc_id, dl_info->gNB_index, - (dl_info->rx_ind->rx_indication_body+i)->sib_pdu.sibs_mask, - (dl_info->rx_ind->rx_indication_body+i)->sib_pdu.pdu, - (dl_info->rx_ind->rx_indication_body+i)->sib_pdu.pdu_length )) << FAPI_NR_RX_PDU_TYPE_SIB; - break; - case FAPI_NR_RX_PDU_TYPE_DLSCH: - // ret_mask |= (0) << FAPI_NR_RX_PDU_TYPE_DLSCH; - ret_mask |= (handle_dlsch(dl_info->module_id, dl_info->cc_id, dl_info->gNB_index, dl_info->dci_ind, - (dl_info->rx_ind->rx_indication_body+i)->pdsch_pdu.pdu, - (dl_info->rx_ind->rx_indication_body+i)->pdsch_pdu.pdu_length, dl_info->frame, dl_info->slot, ul_time_alignment)) << FAPI_NR_RX_PDU_TYPE_DLSCH; - - LOG_D(MAC,"[L2][IF MODULE][DL INDICATION][RX_IND], DLSCH case Number of PDUs: %d \n", dl_info->rx_ind->number_pdus); - - /* - // dl_config structure just stores what was received - not really needed - dl_config->dl_config_list[dl_config->number_pdus].pdu_type = FAPI_NR_DL_CONFIG_TYPE_DLSCH; - dl_config->number_pdus = dl_config->number_pdus + 1; - */ - - /*ret_mask |= (handle_dlsch(dl_info->module_id, dl_info->cc_id, dl_info->gNB_index, dl_info->dci_ind, - dl_info->rx_ind->rx_indication_body[i].pdsch_pdu.pdu, - dl_info->rx_ind->rx_indication_body[i].pdsch_pdu.pdu_length, dl_info->frame, dl_info->slot)) << FAPI_NR_RX_PDU_TYPE_DLSCH; - - */ - break; - default: - - break; + int8_t ret = handle_dci(dl_info->module_id, + dl_info->cc_id, + dl_info->gNB_index, + dl_info->dci_ind->dci_list+i); + ret_mask |= (ret << FAPI_NR_DCI_IND); + if (ret >= 0) { + AssertFatal( nr_ue_if_module_inst[module_id] != NULL, "IF module is void!\n" ); + nr_ue_if_module_inst[module_id]->scheduled_response(&mac->scheduled_response); + } } } + + if(dl_info->rx_ind != NULL){ + + LOG_D(MAC,"[L2][IF MODULE][DL INDICATION][RX_IND], Number of PDUs: %d \n", dl_info->rx_ind->number_pdus); + + for(i=0; irx_ind->number_pdus; ++i){ + + switch(dl_info->rx_ind->rx_indication_body[i].pdu_type){ + + case FAPI_NR_RX_PDU_TYPE_MIB: + ret_mask |= (handle_bcch_bch(dl_info->module_id, dl_info->cc_id, dl_info->gNB_index, + (dl_info->rx_ind->rx_indication_body+i)->mib_pdu.pdu, + (dl_info->rx_ind->rx_indication_body+i)->mib_pdu.additional_bits, + (dl_info->rx_ind->rx_indication_body+i)->mib_pdu.ssb_index, + (dl_info->rx_ind->rx_indication_body+i)->mib_pdu.ssb_length, + (dl_info->rx_ind->rx_indication_body+i)->mib_pdu.cell_id)) << FAPI_NR_RX_PDU_TYPE_MIB; + + LOG_D(MAC,"[L2][IF MODULE][DL INDICATION][RX_IND], MIB case Number of PDUs: %d \n", dl_info->rx_ind->number_pdus); + + break; + + case FAPI_NR_RX_PDU_TYPE_SIB: + + ret_mask |= (handle_bcch_dlsch(dl_info->module_id, + dl_info->cc_id, dl_info->gNB_index, + (dl_info->rx_ind->rx_indication_body+i)->sib_pdu.sibs_mask, + (dl_info->rx_ind->rx_indication_body+i)->sib_pdu.pdu, + (dl_info->rx_ind->rx_indication_body+i)->sib_pdu.pdu_length)) << FAPI_NR_RX_PDU_TYPE_SIB; + + break; + + case FAPI_NR_RX_PDU_TYPE_DLSCH: + + ret_mask |= (handle_dlsch(dl_info->module_id, dl_info->cc_id, dl_info->gNB_index, + dl_info->dci_ind, + (dl_info->rx_ind->rx_indication_body+i)->pdsch_pdu.pdu, + (dl_info->rx_ind->rx_indication_body+i)->pdsch_pdu.pdu_length, + dl_info->frame, + dl_info->slot, + ul_time_alignment)) << FAPI_NR_RX_PDU_TYPE_DLSCH; + + LOG_D(MAC,"[L2][IF MODULE][DL INDICATION][RX_IND], DLSCH case Number of PDUs: %d \n", dl_info->rx_ind->number_pdus); + + break; + + case FAPI_NR_RX_PDU_TYPE_RAR: + + ret_mask |= (handle_rar(dl_info)) << FAPI_NR_RX_PDU_TYPE_RAR; + + break; + + default: + break; + } + } + } + + //clean up nr_downlink_indication_t *dl_info + dl_info->rx_ind = NULL; + dl_info->dci_ind = NULL; + } - - //clean up nr_downlink_indication_t *dl_info - dl_info->rx_ind = NULL; - dl_info->dci_ind = NULL; - return 0; } @@ -305,7 +278,12 @@ int nr_ue_dcireq(nr_dcireq_t *dcireq) { dl_config->sfn=UE_mac->dl_config_request.sfn; dl_config->slot=UE_mac->dl_config_request.slot; dl_config->number_pdus=0; - - ue_dci_configuration(UE_mac,dl_config,dcireq->frame,dcireq->slot); + + //printf(" UE_mac->dl_config_request.slot %d VS dcireq->slot %d \n", UE_mac->dl_config_request.slot, dcireq->slot); + + LOG_D(PHY, "Entering UE DCI configuration frame %d slot %d \n", dcireq->frame, dcireq->slot); + + ue_dci_configuration(UE_mac, dl_config, dcireq->frame, dcireq->slot); + return 0; } diff --git a/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.h b/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.h index 0784e71584..df2d78f0cb 100755 --- a/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.h +++ b/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.h @@ -72,7 +72,8 @@ typedef struct { /// NR UE FAPI-like P7 message, direction: L1 to L2 /// data reception indication structure fapi_nr_rx_indication_t *rx_ind; - + /// ssb_index, if ssb is not present in current TTI, value set to -1 + int ssb_index; /// dci reception indication structure fapi_nr_dci_indication_t *dci_ind; @@ -87,11 +88,13 @@ typedef struct { /// component carrier id int cc_id; /// frame - frame_t frame; - /// slot - uint32_t slot; - /// ssb_index, if ssb is not present in current TTI, thie value set to -1 - int ssb_index; + frame_t frame_rx; + /// slot rx + uint32_t slot_rx; + /// frame tx + frame_t frame_tx; + /// slot tx + uint32_t slot_tx; /// dci reception indication structure fapi_nr_dci_indication_t *dci_ind; } nr_uplink_indication_t; diff --git a/openair2/PHY_INTERFACE/phy_stub_UE.c b/openair2/PHY_INTERFACE/phy_stub_UE.c index 7ea77862cf..946c752665 100644 --- a/openair2/PHY_INTERFACE/phy_stub_UE.c +++ b/openair2/PHY_INTERFACE/phy_stub_UE.c @@ -804,7 +804,37 @@ void dl_config_req_UE_MAC_dci(int sfn, UE_mac_inst[ue_id].first_ULSCH_Tx = 1; } } - } else { + } + //else if (dl_config_pdu_list[i].pdu_type == NFAPI_DL_CONFIG_BCH_PDU_TYPE) { + // // BCH case: Last parameter is 1 if first time synchronization and zero + // // otherwise. Not sure which value to put for our case. + // if (UE_mac_inst[Mod_id].UE_mode[0] == NOT_SYNCHED){ + // dl_phy_sync_success(Mod_id, sfn, 0, 1); + // LOG_E(MAC, + // "%s(): Received MIB: UE_mode: %d, sfn/sf: %d.%d\n", + // __func__, + // UE_mac_inst[Mod_id].UE_mode[0], + // sfn, + // sf); + // UE_mac_inst[Mod_id].UE_mode[0] = PRACH; + // } else { + // dl_phy_sync_success(Mod_id, sfn, 0, 0); + // } + //} else if (dl_config_pdu_list[i].pdu_type == NFAPI_DL_CONFIG_MCH_PDU_TYPE){ + // if (UE_mac_inst[Mod_id].UE_mode[0] == NOT_SYNCHED) { + // /* this check is in the code before refactoring, but I don't know + // * why. Leave it in here for the moment */ + // continue; + // } + // nfapi_dl_config_request_pdu_t *dl_config_pdu_tmp = &dl_config_pdu_list[i]; + // const int pdu_index = dl_config_pdu_tmp->dlsch_pdu.dlsch_pdu_rel8.pdu_index; + // ue_send_mch_sdu(Mod_id, 0, sfn, + // tx_request_pdu_list[pdu_index].segments[0].segment_data, + // tx_request_pdu_list[pdu_index].segments[0].segment_length, + // 0,0); + + //} + else { LOG_W(MAC, "can not handle special RNTI %x\n", rnti); } } diff --git a/openair2/RRC/LTE/L2_interface.c b/openair2/RRC/LTE/L2_interface.c index 68017be85b..d9682b466f 100644 --- a/openair2/RRC/LTE/L2_interface.c +++ b/openair2/RRC/LTE/L2_interface.c @@ -28,6 +28,15 @@ * \email: raymond.knopp@eurecom.fr */ +/*! \file l2_interface.c + * \brief layer 2 interface, added support for FeMBMS RRC sublayer + * \author Javier Morgade + * \date 2020 + * \version 1.0 + * \email: javier.morgade@ieee.org + */ + + #include "platform_types.h" #include "rrc_defs.h" #include "rrc_extern.h" @@ -65,6 +74,9 @@ mac_rrc_data_req( uint8_t Sdu_size = 0; uint8_t sfn = (uint8_t)((frameP>>2)&0xff); + uint8_t sfn_fembms = (uint8_t)((frameP>>4)&0xff); + sfn_fembms = sfn_fembms<<2; + if (LOG_DEBUGFLAG(DEBUG_RRC)) { LOG_D(RRC,"[eNB %d] mac_rrc_data_req to SRB ID=%ld\n",Mod_idP,Srb_id); } @@ -72,12 +84,14 @@ mac_rrc_data_req( eNB_RRC_INST *rrc; rrc_eNB_carrier_data_t *carrier; LTE_BCCH_BCH_Message_t *mib; + LTE_BCCH_BCH_Message_MBMS_t *mib_fembms; rrc = RC.rrc[Mod_idP]; carrier = &rrc->carrier[0]; mib = &carrier->mib; + mib_fembms = &carrier->mib_fembms; if((Srb_id & RAB_OFFSET) == BCCH_SI_MBMS){ - if (frameP%4 == 0) { + if (frameP%8 == 0) { memcpy(&buffer_pP[0], RC.rrc[Mod_idP]->carrier[CC_id].SIB1_MBMS, RC.rrc[Mod_idP]->carrier[CC_id].sizeof_SIB1_MBMS); @@ -159,6 +173,22 @@ mac_rrc_data_req( return(3); } + if( (Srb_id & RAB_OFFSET ) == MIBCH_MBMS) { + mib_fembms->message.systemFrameNumber_r14.buf = &sfn_fembms; + enc_rval = uper_encode_to_buffer(&asn_DEF_LTE_BCCH_BCH_Message_MBMS, + NULL, + (void *)mib_fembms, + carrier->MIB_FeMBMS, + 24); + LOG_I(RRC,"Encoded MIB MBMS for frame %d (%p), bits %lu %x,%x,%x %x bits_unused %d\n",sfn_fembms>>2,carrier->MIB_FeMBMS,enc_rval.encoded,carrier->MIB_FeMBMS[0],carrier->MIB_FeMBMS[1],carrier->MIB_FeMBMS[2],mib_fembms->message.systemFrameNumber_r14.buf[0],mib_fembms->message.systemFrameNumber_r14.bits_unused); + buffer_pP[0]=carrier->MIB_FeMBMS[0]; + buffer_pP[1]=carrier->MIB_FeMBMS[1]; + buffer_pP[2]=carrier->MIB_FeMBMS[2]; + AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %lu)!\n", + enc_rval.failed_type->name, enc_rval.encoded); + return(3); + } + if( (Srb_id & RAB_OFFSET ) == CCCH) { struct rrc_eNB_ue_context_s *ue_context_p = rrc_eNB_get_ue_context(RC.rrc[Mod_idP],rnti); @@ -203,8 +233,10 @@ mac_rrc_data_req( RC.rrc[Mod_idP]->carrier[CC_id].MCCH_MESSAGE[mbsfn_sync_area], RC.rrc[Mod_idP]->carrier[CC_id].sizeof_MCCH_MESSAGE[mbsfn_sync_area]); + LOG_D(RRC,"[eNB %d] Frame %d : MCCH request => MCCH_MESSAGE \n",Mod_idP,frameP); + if (LOG_DEBUGFLAG(DEBUG_RRC)) { - LOG_W(RRC,"[eNB %d] Frame %d : MCCH request => MCCH_MESSAGE \n",Mod_idP,frameP); + LOG_D(RRC,"[eNB %d] Frame %d : MCCH request => MCCH_MESSAGE \n",Mod_idP,frameP); for (int i=0; icarrier[CC_id].sizeof_MCCH_MESSAGE[mbsfn_sync_area]; i++) { LOG_T(RRC,"%x.",buffer_pP[i]); @@ -216,6 +248,29 @@ mac_rrc_data_req( return (RC.rrc[Mod_idP]->carrier[CC_id].sizeof_MCCH_MESSAGE[mbsfn_sync_area]); } + if((Srb_id & RAB_OFFSET) == MCCH_COUNTING) { + if(RC.rrc[Mod_idP]->carrier[CC_id].MCCH_MESS_COUNTING[mbsfn_sync_area].Active==0) { + return 0; // this parameter is set in function init_mcch in rrc_eNB.c + } + + memcpy(&buffer_pP[0], + RC.rrc[Mod_idP]->carrier[CC_id].MCCH_MESSAGE_COUNTING[mbsfn_sync_area], + RC.rrc[Mod_idP]->carrier[CC_id].sizeof_MCCH_MESSAGE_COUNTING[mbsfn_sync_area]); + + if (LOG_DEBUGFLAG(DEBUG_RRC)) { + LOG_W(RRC,"[eNB %d] Frame %d : MCCH request => MCCH_MESSAGE_COUNTING \n",Mod_idP,frameP); + + for (int i=0; icarrier[CC_id].sizeof_MCCH_MESSAGE_COUNTING[mbsfn_sync_area]; i++) { + LOG_T(RRC,"%x.",buffer_pP[i]); + } + + LOG_T(RRC,"\n"); + } /* LOG_DEBUGFLAG(DEBUG_RRC) */ + + return (RC.rrc[Mod_idP]->carrier[CC_id].sizeof_MCCH_MESSAGE_COUNTING[mbsfn_sync_area]); + } + + if ((Srb_id & RAB_OFFSET) == BCCH_SIB1_BR) { memcpy(&buffer_pP[0], RC.rrc[Mod_idP]->carrier[CC_id].SIB1_BR, diff --git a/openair2/RRC/LTE/L2_interface_ue.c b/openair2/RRC/LTE/L2_interface_ue.c index 61ab63955d..8c55dbaeb5 100644 --- a/openair2/RRC/LTE/L2_interface_ue.c +++ b/openair2/RRC/LTE/L2_interface_ue.c @@ -19,7 +19,7 @@ * contact@openairinterface.org */ -/*! \file l2_interface.c +/*! \file l2_interface_ue.c * \brief layer 2 interface, used to support different RRC sublayer * \author Raymond Knopp and Navid Nikaein * \date 2010-2014 @@ -28,6 +28,16 @@ * \email: raymond.knopp@eurecom.fr */ + +/*! \file l2_interface_ue.c + * \brief layer 2 interface, added support for FeMBMS RRC sublayer + * \author J. Morgade + * \date 2020 + * \version 1.0 + * \email: javier.morgade@ieee.org + */ + + #include "platform_types.h" #include "rrc_defs.h" #include "rrc_extern.h" @@ -219,6 +229,7 @@ mac_rrc_data_ind_ue( if ((srb_idP & RAB_OFFSET) == MCCH) { LOG_T(RRC,"[UE %d] Frame %d: Received SDU on MBSFN sync area %d for MCCH on SRB %ld from eNB %d\n", module_idP,frameP, mbsfn_sync_areaP, srb_idP & RAB_OFFSET,eNB_indexP); + { MessageDef *message_p; int msg_sdu_size = sizeof(RRC_MAC_MCCH_DATA_IND (message_p).sdu); diff --git a/openair2/RRC/LTE/MESSAGES/asn1_msg.c b/openair2/RRC/LTE/MESSAGES/asn1_msg.c index 583e10da94..09e6245fec 100644 --- a/openair2/RRC/LTE/MESSAGES/asn1_msg.c +++ b/openair2/RRC/LTE/MESSAGES/asn1_msg.c @@ -28,6 +28,14 @@ * \email: raymond.knopp@eurecom.fr and navid.nikaein@eurecom.fr */ +/*! \file asn1_msg.c + * \brief added primitives to build the asn1 messages for FeMBMS + * \author Javier Morgade + * \date 2019-2020 + * \version 1.0 + * \email: javier.morgade@ieee.org + */ + #include #include #include /* for atoi(3) */ @@ -185,7 +193,8 @@ uint8_t get_adjacent_cell_mod_id(uint16_t phyCellId) { uint8_t do_MIB_FeMBMS(rrc_eNB_carrier_data_t *carrier, uint32_t N_RB_DL, uint32_t additionalNonMBSFN, uint32_t frame) { asn_enc_rval_t enc_rval; LTE_BCCH_BCH_Message_MBMS_t *mib_fembms=&carrier->mib_fembms; - uint8_t sfn = (uint8_t)((frame>>2)&0xff); + frame=198; + uint8_t sfn = (uint8_t)((frame>>4)&0xff); uint16_t *spare = calloc(1,sizeof(uint16_t)); if( spare == NULL ) abort(); @@ -223,15 +232,16 @@ uint8_t do_MIB_FeMBMS(rrc_eNB_carrier_data_t *carrier, uint32_t N_RB_DL, uint32_ (uint32_t)mib_fembms->message.dl_Bandwidth_MBMS_r14, (uint32_t)additionalNonMBSFN, (uint32_t)sfn); + sfn = sfn<<2; mib_fembms->message.systemFrameNumber_r14.buf = &sfn; mib_fembms->message.systemFrameNumber_r14.size = 1; - mib_fembms->message.systemFrameNumber_r14.bits_unused=0; + mib_fembms->message.systemFrameNumber_r14.bits_unused=2; mib_fembms->message.spare.buf = (uint8_t *)spare; mib_fembms->message.spare.size = 2; - mib_fembms->message.spare.bits_unused = 6; // This makes a spare of 10 bits + mib_fembms->message.spare.bits_unused = 3; // This makes a spare of 10 bits //TODO additionalNonBMSFNSubframes-r14 INTEGER (0..3) ? //if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) { - //xer_fprint(stdout, &asn_DEF_LTE_BCCH_BCH_Message_MBMS, (void *)mib_fembms); + xer_fprint(stdout, &asn_DEF_LTE_BCCH_BCH_Message_MBMS, (void *)mib_fembms); //} enc_rval = uper_encode_to_buffer(&asn_DEF_LTE_BCCH_BCH_Message_MBMS, NULL, @@ -387,7 +397,11 @@ uint8_t do_SIB1_MBMS(rrc_eNB_carrier_data_t *carrier, // SystemInformation_t systemInformation; int num_plmn = configuration->num_plmn; - LTE_PLMN_IdentityInfo_t *PLMN_identity_info; + //LTE_PLMN_IdentityInfo_t *PLMN_identity_info; + LTE_PLMN_IdentityInfo_t * PLMN_identity_info = &carrier->PLMN_identity_info_MBMS[0]; + //LTE_MCC_MNC_Digit_t dummy_mcc[num_plmn][3], dummy_mnc[num_plmn][3]; + //LTE_MCC_MNC_Digit_t *dummy_mcc = &carrier->dummy_mcc_MBMS[0][0]; + //LTE_MCC_MNC_Digit_t *dummy_mnc = &carrier->dummy_mnc_MBMS[0][0]; LTE_MCC_MNC_Digit_t *dummy_mcc_0; LTE_MCC_MNC_Digit_t *dummy_mcc_1; LTE_MCC_MNC_Digit_t *dummy_mcc_2; @@ -395,7 +409,9 @@ uint8_t do_SIB1_MBMS(rrc_eNB_carrier_data_t *carrier, LTE_MCC_MNC_Digit_t *dummy_mnc_1; LTE_MCC_MNC_Digit_t *dummy_mnc_2; asn_enc_rval_t enc_rval; - LTE_SchedulingInfo_MBMS_r14_t *schedulingInfo; + //LTE_SchedulingInfo_MBMS_r14_t *schedulingInfo; + //LTE_SchedulingInfo_MBMS_r14_t schedulingInfo; + LTE_SchedulingInfo_MBMS_r14_t *schedulingInfo = &carrier->schedulingInfo_MBMS; LTE_SIB_Type_t *sib_type; uint8_t *buffer = carrier->SIB1_MBMS; LTE_BCCH_DL_SCH_Message_MBMS_t *bcch_message = &carrier->siblock1_MBMS; @@ -408,6 +424,8 @@ uint8_t do_SIB1_MBMS(rrc_eNB_carrier_data_t *carrier, // memcpy(&bcch_message.message.choice.c1.choice.systemInformationBlockType1,sib1,sizeof(SystemInformationBlockType1_t)); *sib1_MBMS = &bcch_message->message.choice.c1.choice.systemInformationBlockType1_MBMS_r14; PLMN_identity_info = CALLOC(1, sizeof(LTE_PLMN_IdentityInfo_t) * num_plmn); + //memset(&schedulingInfo,0,sizeof(LTE_SchedulingInfo_MBMS_r14_t)); + memset(schedulingInfo,0,sizeof(LTE_SchedulingInfo_MBMS_r14_t)); if (PLMN_identity_info == NULL) exit(1); @@ -528,7 +546,7 @@ uint8_t do_SIB1_MBMS(rrc_eNB_carrier_data_t *carrier, MBSFN_Area1->mcch_Config_r9.sf_AllocInfo_r9.size= 1; MBSFN_Area1->mcch_Config_r9.sf_AllocInfo_r9.buf[0]=0x20<<2; // FDD: SF1 MBSFN_Area1->mcch_Config_r9.sf_AllocInfo_r9.bits_unused= 2; - MBSFN_Area1->mcch_Config_r9.signallingMCS_r9= LTE_MBSFN_AreaInfo_r9__mcch_Config_r9__signallingMCS_r9_n7; + MBSFN_Area1->mcch_Config_r9.signallingMCS_r9= LTE_MBSFN_AreaInfo_r9__mcch_Config_r9__signallingMCS_r9_n2; (MBSFN_Area1)->ext1 = CALLOC (1, sizeof(*(MBSFN_Area1)->ext1)); memset((MBSFN_Area1)->ext1,0,sizeof(*(MBSFN_Area1)->ext1)); MBSFN_Area1->ext1->subcarrierSpacingMBMS_r14 = CALLOC(1,sizeof(*( MBSFN_Area1->ext1)->subcarrierSpacingMBMS_r14)); @@ -541,18 +559,18 @@ uint8_t do_SIB1_MBMS(rrc_eNB_carrier_data_t *carrier, if(1) { (*sib1_MBMS)->nonMBSFN_SubframeConfig_r14 = CALLOC(1,sizeof(struct LTE_NonMBSFN_SubframeConfig_r14)); memset((*sib1_MBMS)->nonMBSFN_SubframeConfig_r14,0,sizeof(struct LTE_NonMBSFN_SubframeConfig_r14)); - (*sib1_MBMS)->nonMBSFN_SubframeConfig_r14->radioFrameAllocationPeriod_r14 = LTE_NonMBSFN_SubframeConfig_r14__radioFrameAllocationPeriod_r14_rf8; + (*sib1_MBMS)->nonMBSFN_SubframeConfig_r14->radioFrameAllocationPeriod_r14 = LTE_NonMBSFN_SubframeConfig_r14__radioFrameAllocationPeriod_r14_rf4; (*sib1_MBMS)->nonMBSFN_SubframeConfig_r14->radioFrameAllocationOffset_r14 = 0; (*sib1_MBMS)->nonMBSFN_SubframeConfig_r14->subframeAllocation_r14.buf = MALLOC(2); //100000001 byte(0)=10000000 byte(1)=xxxxxxx1 - (*sib1_MBMS)->nonMBSFN_SubframeConfig_r14->subframeAllocation_r14.buf[0] = 0x80<<0; - (*sib1_MBMS)->nonMBSFN_SubframeConfig_r14->subframeAllocation_r14.buf[1] = 0x1<<7; + (*sib1_MBMS)->nonMBSFN_SubframeConfig_r14->subframeAllocation_r14.buf[0] = 0x8<<0; + (*sib1_MBMS)->nonMBSFN_SubframeConfig_r14->subframeAllocation_r14.buf[1] = 0; (*sib1_MBMS)->nonMBSFN_SubframeConfig_r14->subframeAllocation_r14.size = 2; (*sib1_MBMS)->nonMBSFN_SubframeConfig_r14->subframeAllocation_r14.bits_unused = 7; } //if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) { - //xer_fprint(stdout, &asn_DEF_LTE_BCCH_DL_SCH_Message_MBMS, (void *)bcch_message); + xer_fprint(stdout, &asn_DEF_LTE_BCCH_DL_SCH_Message_MBMS, (void *)bcch_message); //} enc_rval = uper_encode_to_buffer(&asn_DEF_LTE_BCCH_DL_SCH_Message_MBMS, NULL, @@ -2310,7 +2328,7 @@ uint8_t do_SidelinkUEInformation(uint8_t Mod_id, uint8_t *buffer, LTE_SL_Destin return((enc_rval.encoded+7)/8); } -uint8_t do_RRCConnectionSetupComplete(uint8_t Mod_id, uint8_t *buffer, const uint8_t Transaction_id, const int dedicatedInfoNASLength, const char *dedicatedInfoNAS) { +uint8_t do_RRCConnectionSetupComplete(uint8_t Mod_id, uint8_t *buffer, const uint8_t Transaction_id, uint8_t sel_plmn_id, const int dedicatedInfoNASLength, const char *dedicatedInfoNAS) { asn_enc_rval_t enc_rval; LTE_UL_DCCH_Message_t ul_dcch_msg; LTE_RRCConnectionSetupComplete_t *rrcConnectionSetupComplete; @@ -2323,7 +2341,7 @@ uint8_t do_RRCConnectionSetupComplete(uint8_t Mod_id, uint8_t *buffer, const uin rrcConnectionSetupComplete->criticalExtensions.choice.c1.present = LTE_RRCConnectionSetupComplete__criticalExtensions__c1_PR_rrcConnectionSetupComplete_r8; rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.nonCriticalExtension=CALLOC(1, sizeof(*rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.nonCriticalExtension)); - rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.selectedPLMN_Identity= 1; + rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.selectedPLMN_Identity= sel_plmn_id; rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.registeredMME = NULL;//calloc(1,sizeof(*rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.registeredMME)); /* @@ -3198,6 +3216,42 @@ uint8_t do_UECapabilityEnquiry( const protocol_ctxt_t *const ctxt_pP, ASN_SEQUENCE_ADD(&dl_dcch_msg.message.choice.c1.choice.ueCapabilityEnquiry.criticalExtensions.choice.c1.choice.ueCapabilityEnquiry_r8.ue_CapabilityRequest.list, &rat); + /* request NR configuration */ + LTE_UECapabilityEnquiry_r8_IEs_t *r8 = &dl_dcch_msg.message.choice.c1.choice.ueCapabilityEnquiry.criticalExtensions.choice.c1.choice.ueCapabilityEnquiry_r8; + LTE_UECapabilityEnquiry_v8a0_IEs_t r8_a0; + LTE_UECapabilityEnquiry_v1180_IEs_t r11_80; + LTE_UECapabilityEnquiry_v1310_IEs_t r13_10; + LTE_UECapabilityEnquiry_v1430_IEs_t r14_30; + LTE_UECapabilityEnquiry_v1510_IEs_t r15_10; + + memset(&r8_a0, 0, sizeof(r8_a0)); + memset(&r11_80, 0, sizeof(r11_80)); + memset(&r13_10, 0, sizeof(r13_10)); + memset(&r14_30, 0, sizeof(r14_30)); + memset(&r15_10, 0, sizeof(r15_10)); + + r8->nonCriticalExtension = &r8_a0; + r8_a0.nonCriticalExtension = &r11_80; + r11_80.nonCriticalExtension = &r13_10; + r13_10.nonCriticalExtension = &r14_30; + r14_30.nonCriticalExtension = &r15_10; + + /* TODO: no hardcoded values here */ + + OCTET_STRING_t req_freq; + unsigned char req_freq_buf[5] = { 0x00, 0x20, 0x1a, 0x02, 0x68 }; // bands 7 & nr78 + //unsigned char req_freq_buf[5] = { 0x00, 0x20, 0x1a, 0x08, 0x18 }; // bands 7 & nr260 + + //unsigned char req_freq_buf[13] = { 0x00, 0xc0, 0x18, 0x01, 0x01, 0x30, 0x4b, 0x04, 0x0e, 0x08, 0x24, 0x04, 0xd0 }; +// unsigned char req_freq_buf[21] = { +//0x01, 0x60, 0x18, 0x05, 0x80, 0xc0, 0x04, 0x04, 0xc1, 0x2c, 0x10, 0x08, 0x20, 0x30, 0x40, 0xe0, 0x82, 0x40, 0x28, 0x80, 0x9a +// }; + + req_freq.buf = req_freq_buf; + req_freq.size = 5; +// req_freq.size = 21; + + r15_10.requestedFreqBandsNR_MRDC_r15 = &req_freq; if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) { xer_fprint(stdout, &asn_DEF_LTE_DL_DCCH_Message, (void *)&dl_dcch_msg); } @@ -3276,17 +3330,17 @@ uint8_t do_NR_UECapabilityEnquiry( const protocol_ctxt_t *const ctxt_pP, /* TODO: no hardcoded values here */ OCTET_STRING_t req_freq; - //unsigned char req_freq_buf[5] = { 0x00, 0x20, 0x1a, 0x02, 0x68 }; // bands 7 & nr78 + unsigned char req_freq_buf[5] = { 0x00, 0x20, 0x1a, 0x02, 0x68 }; // bands 7 & nr78 //unsigned char req_freq_buf[5] = { 0x00, 0x20, 0x1a, 0x08, 0x18 }; // bands 7 & nr260 //unsigned char req_freq_buf[13] = { 0x00, 0xc0, 0x18, 0x01, 0x01, 0x30, 0x4b, 0x04, 0x0e, 0x08, 0x24, 0x04, 0xd0 }; - unsigned char req_freq_buf[21] = { -0x01, 0x60, 0x18, 0x05, 0x80, 0xc0, 0x04, 0x04, 0xc1, 0x2c, 0x10, 0x08, 0x20, 0x30, 0x40, 0xe0, 0x82, 0x40, 0x28, 0x80, 0x9a - }; +// unsigned char req_freq_buf[21] = { +//0x01, 0x60, 0x18, 0x05, 0x80, 0xc0, 0x04, 0x04, 0xc1, 0x2c, 0x10, 0x08, 0x20, 0x30, 0x40, 0xe0, 0x82, 0x40, 0x28, 0x80, 0x9a +// }; req_freq.buf = req_freq_buf; req_freq.size = 5; - req_freq.size = 21; +// req_freq.size = 21; r15_10.requestedFreqBandsNR_MRDC_r15 = &req_freq; diff --git a/openair2/RRC/LTE/MESSAGES/asn1_msg.h b/openair2/RRC/LTE/MESSAGES/asn1_msg.h index dda2340610..640d18a61f 100644 --- a/openair2/RRC/LTE/MESSAGES/asn1_msg.h +++ b/openair2/RRC/LTE/MESSAGES/asn1_msg.h @@ -142,7 +142,11 @@ uint8_t do_SidelinkUEInformation(uint8_t Mod_id, uint8_t *buffer, LTE_SL_Destina /** \brief Generate an RRCConnectionSetupComplete UL-DCCH-Message (UE) @param buffer Pointer to PER-encoded ASN.1 description of UL-DCCH-Message PDU @returns Size of encoded bit stream in bytes*/ -uint8_t do_RRCConnectionSetupComplete(uint8_t Mod_id, uint8_t *buffer, const uint8_t Transaction_id, const int dedicatedInfoNASLength, +uint8_t do_RRCConnectionSetupComplete(uint8_t Mod_id, + uint8_t *buffer, + const uint8_t Transaction_id, + uint8_t sel_plmn_id, + const int dedicatedInfoNASLength, const char *dedicatedInfoNAS); /** \brief Generate an RRCConnectionReconfigurationComplete UL-DCCH-Message (UE) diff --git a/openair2/RRC/LTE/rrc_UE.c b/openair2/RRC/LTE/rrc_UE.c index 4116f5367e..c5aa2bc0f8 100644 --- a/openair2/RRC/LTE/rrc_UE.c +++ b/openair2/RRC/LTE/rrc_UE.c @@ -128,8 +128,13 @@ static int decode_SIB1_MBMS( const protocol_ctxt_t *const ctxt_pP, const uint8_t * \param ctxt_pP Running context * \param eNB_index Index of corresponding eNB/CH * \param Transaction_id Transaction identifier + * \param sel_plmn_id selected PLMN Identity */ -static void rrc_ue_generate_RRCConnectionSetupComplete( const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB_index, const uint8_t Transaction_id ); +static void rrc_ue_generate_RRCConnectionSetupComplete( + const protocol_ctxt_t *const ctxt_pP, + const uint8_t eNB_index, + const uint8_t Transaction_id, + uint8_t sel_plmn_id); /** \brief Generates/Encodes RRCConnectionReconfigurationComplete message at UE * \param ctxt_pP Running context @@ -150,14 +155,19 @@ static uint8_t check_trigger_meas_event( LTE_Q_OffsetRange_t ofs, LTE_Q_OffsetRange_t ocs, long a3_offset, LTE_TimeToTrigger_t ttt); static void decode_MBSFNAreaConfiguration(module_id_t module_idP, uint8_t eNB_index, frame_t frameP,uint8_t mbsfn_sync_area); +static void decode_MBMSCountingRequest(module_id_t module_idP, uint8_t eNB_index, frame_t frameP,uint8_t mbsfn_sync_area); + uint8_t rrc_ue_generate_SidelinkUEInformation( const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB_index,LTE_SL_DestinationInfoList_r12_t *destinationInfoList, long *discTxResourceReq, SL_TRIGGER_t mode); - - - - - +void +rrc_ue_process_MBMSCountingRequest( + const protocol_ctxt_t *const ctxt_pP, + LTE_MBMSCountingRequest_r10_t *MBMSCountingRequest, + uint8_t eNB_index + ); + +protocol_ctxt_t ctxt_pP_local; /*------------------------------------------------------------------------------*/ @@ -367,6 +377,7 @@ char openair_rrc_ue_init( const module_id_t ue_mod_idP, const unsigned char eNB_ rrc_set_state (ue_mod_idP, RRC_STATE_INACTIVE); rrc_set_sub_state (ue_mod_idP, RRC_SUB_STATE_INACTIVE); LOG_I(RRC,"[UE %d] INIT State = RRC_IDLE (eNB %d)\n",ctxt.module_id,eNB_index); + UE_rrc_inst[ctxt.module_id].selected_plmn_identity = 1; UE_rrc_inst[ctxt.module_id].Info[eNB_index].State=RRC_IDLE; UE_rrc_inst[ctxt.module_id].Info[eNB_index].T300_active = 0; UE_rrc_inst[ctxt.module_id].Info[eNB_index].T304_active = 0; @@ -490,7 +501,11 @@ rrc_t310_expiration( } //----------------------------------------------------------------------------- -static void rrc_ue_generate_RRCConnectionSetupComplete( const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB_index, const uint8_t Transaction_id ) { +static void rrc_ue_generate_RRCConnectionSetupComplete( + const protocol_ctxt_t *const ctxt_pP, + const uint8_t eNB_index, + const uint8_t Transaction_id, + uint8_t sel_plmn_id) { uint8_t buffer[100]; uint8_t size; const char *nas_msg; @@ -504,12 +519,13 @@ static void rrc_ue_generate_RRCConnectionSetupComplete( const protocol_ctxt_t *c nas_msg_length = sizeof(nas_attach_req_imsi); } - size = do_RRCConnectionSetupComplete(ctxt_pP->module_id, buffer, Transaction_id, nas_msg_length, nas_msg); + size = do_RRCConnectionSetupComplete(ctxt_pP->module_id, buffer, Transaction_id, sel_plmn_id, nas_msg_length, nas_msg); LOG_I(RRC,"[UE %d][RAPROC] Frame %d : Logical Channel UL-DCCH (SRB1), Generating RRCConnectionSetupComplete (bytes%d, eNB %d)\n", ctxt_pP->module_id,ctxt_pP->frame, size, eNB_index); LOG_D(RLC, "[FRAME %05d][RRC_UE][MOD %02d][][--- PDCP_DATA_REQ/%d Bytes (RRCConnectionSetupComplete to eNB %d MUI %d) --->][PDCP][MOD %02d][RB %02d]\n", ctxt_pP->frame, ctxt_pP->module_id+NB_eNB_INST, size, eNB_index, rrc_mui, ctxt_pP->module_id+NB_eNB_INST, DCCH); + ctxt_pP_local.rnti = ctxt_pP->rnti; rrc_data_req_ue ( ctxt_pP, DCCH, @@ -624,7 +640,8 @@ int rrc_ue_decode_ccch( const protocol_ctxt_t *const ctxt_pP, const SRB_INFO *co rrc_ue_generate_RRCConnectionSetupComplete( ctxt_pP, eNB_index, - dl_ccch_msg->message.choice.c1.choice.rrcConnectionSetup.rrc_TransactionIdentifier); + dl_ccch_msg->message.choice.c1.choice.rrcConnectionSetup.rrc_TransactionIdentifier, + UE_rrc_inst[ctxt_pP->module_id].selected_plmn_identity); rval = 0; break; @@ -1561,6 +1578,65 @@ rrc_ue_process_securityModeCommand( securityModeCommand->criticalExtensions.present); } +void +rrc_ue_process_MBMSCountingRequest( + const protocol_ctxt_t *const ctxt_pP, + LTE_MBMSCountingRequest_r10_t *MBMSCountingRequest, + uint8_t eNB_index +) +{ + asn_enc_rval_t enc_rval; + LTE_UL_DCCH_Message_t ul_dcch_msg; + struct LTE_CountingResponseInfo_r10 CountingResponse; + uint8_t buffer[200]; + //int i; + LOG_I(RRC,"[UE %d] Frame %d: Receiving from (MCCH), Processing MBMSCoutingRequest (eNB %d)\n", + ctxt_pP->module_id, + ctxt_pP->frame, + eNB_index); + memset((void *)&ul_dcch_msg,0,sizeof(LTE_UL_DCCH_Message_t)); + memset((void *)&CountingResponse,0,sizeof(struct LTE_CountingResponseInfo_r10)); + + + ul_dcch_msg.message.present = LTE_UL_DCCH_MessageType_PR_c1; + ul_dcch_msg.message.choice.c1.present = LTE_UL_DCCH_MessageType__c1_PR_mbmsCountingResponse_r10; + LTE_MBMSCountingResponse_r10_t *MBMSCountingResponse = &ul_dcch_msg.message.choice.c1.choice.mbmsCountingResponse_r10; + + MBMSCountingResponse->criticalExtensions.present = LTE_MBMSCountingResponse_r10__criticalExtensions_PR_c1; + MBMSCountingResponse->criticalExtensions.choice.c1.present = LTE_MBMSCountingResponse_r10__criticalExtensions__c1_PR_countingResponse_r10; + LTE_MBMSCountingResponse_r10_IEs_t *MBMSCountingResponse_r10_IEs = &MBMSCountingResponse->criticalExtensions.choice.c1.choice.countingResponse_r10; + + MBMSCountingResponse_r10_IEs->mbsfn_AreaIndex_r10 = calloc(1,sizeof(long)); + // MBMSCountingResponse_r10_IEs->countingResponseList_r10 = calloc(1,sizeof(struct LTE_CountingResponseList_r10)); +// +// ASN_SEQUENCE_ADD( +// &MBMSCountingResponse->criticalExtensions.choice.c1.choice.countingResponse_r10.countingResponseList_r10.list, +// &CountingResponse); +// + + enc_rval = uper_encode_to_buffer(&asn_DEF_LTE_UL_DCCH_Message, NULL, (void *) &ul_dcch_msg, buffer, 100); + AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %jd)!\n", + enc_rval.failed_type->name, enc_rval.encoded); + + if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) { + xer_fprint(stdout, &asn_DEF_LTE_UL_DCCH_Message, (void *)&ul_dcch_msg); + } + xer_fprint(stdout, &asn_DEF_LTE_UL_DCCH_Message, (void *)&ul_dcch_msg); + + + LOG_I(RRC,"MBMSCountingResponse Encoded %zd bits (%zd bytes)\n",enc_rval.encoded,(enc_rval.encoded+7)/8); + rrc_data_req_ue ( + &ctxt_pP_local, + DCCH, + rrc_mui++, + SDU_CONFIRM_NO, + (enc_rval.encoded + 7) / 8, + buffer, + PDCP_TRANSMISSION_MODE_CONTROL); + +} + + //----------------------------------------------------------------------------- void rrc_ue_process_ueCapabilityEnquiry( @@ -2178,8 +2254,8 @@ rrc_ue_decode_dcch( #endif } -const char siWindowLength[8][5] = {"1ms","2ms","5ms","10ms","15ms","20ms","40ms","ERR"}; -const char siWindowLength_int[7] = {1,2,5,10,15,20,40}; +const char siWindowLength[9][5] = {"1ms","2ms","5ms","10ms","15ms","20ms","40ms","80ms","ERR"}; +const char siWindowLength_int[8] = {1,2,5,10,15,20,40,80}; const char SIBType[12][6] = {"SIB3","SIB4","SIB5","SIB6","SIB7","SIB8","SIB9","SIB10","SIB11","SIB12","SIB13","Spare"}; const char SIBPeriod[8][6]= {"rf8","rf16","rf32","rf64","rf128","rf256","rf512","ERR"}; @@ -2689,7 +2765,7 @@ int decode_SIB1_MBMS( const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB_in //LOG_I( RRC, "TDD subframeAssignment : %ld\n", sib1_MBMS->tdd_Config->subframeAssignment ); //LOG_I( RRC, "TDD specialSubframePatterns : %ld\n", sib1_MBMS->tdd_Config->specialSubframePatterns ); //} - LOG_I( RRC, "siWindowLength : %s\n", siWindowLength[min(sib1_MBMS->si_WindowLength_r14,7)] ); + LOG_I( RRC, "siWindowLength : %s\n", siWindowLength[min(sib1_MBMS->si_WindowLength_r14,8)] ); LOG_I( RRC, "systemInfoValueTag : %ld\n", sib1_MBMS->systemInfoValueTag_r14 ); UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIperiod_MBMS = siPeriod_int[sib1_MBMS->schedulingInfoList_MBMS_r14.list.array[0]->si_Periodicity_r14]; UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIwindowsize_MBMS = siWindowLength_int[sib1_MBMS->si_WindowLength_r14]; @@ -2794,44 +2870,43 @@ int decode_SIB1( const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB_index, LTE_SystemInformationBlockType1_t *sib1 = UE_rrc_inst[ctxt_pP->module_id].sib1[eNB_index]; VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_UE_DECODE_SIB1, VCD_FUNCTION_IN ); LOG_I( RRC, "[UE %d] : Dumping SIB 1\n", ctxt_pP->module_id ); - LTE_PLMN_Identity_t *PLMN_identity = &sib1->cellAccessRelatedInfo.plmn_IdentityList.list.array[0]->plmn_Identity; - int mccdigits = PLMN_identity->mcc->list.count; - int mncdigits = PLMN_identity->mnc.list.count; - int mcc; + const int n = sib1->cellAccessRelatedInfo.plmn_IdentityList.list.count; + for (int i = 0; i < n; ++i) { + LTE_PLMN_Identity_t *PLMN_identity = &sib1->cellAccessRelatedInfo.plmn_IdentityList.list.array[i]->plmn_Identity; + int mccdigits = PLMN_identity->mcc->list.count; + int mncdigits = PLMN_identity->mnc.list.count; - if (mccdigits == 2) { - mcc = *PLMN_identity->mcc->list.array[0]*10 + *PLMN_identity->mcc->list.array[1]; - } else { - mcc = *PLMN_identity->mcc->list.array[0]*100 + *PLMN_identity->mcc->list.array[1]*10 + *PLMN_identity->mcc->list.array[2]; + int mcc; + if (mccdigits == 2) { + mcc = *PLMN_identity->mcc->list.array[0]*10 + *PLMN_identity->mcc->list.array[1]; + } else { + mcc = *PLMN_identity->mcc->list.array[0]*100 + *PLMN_identity->mcc->list.array[1]*10 + *PLMN_identity->mcc->list.array[2]; + } + + int mnc; + if (mncdigits == 2) { + mnc = *PLMN_identity->mnc.list.array[0]*10 + *PLMN_identity->mnc.list.array[1]; + } else { + mnc = *PLMN_identity->mnc.list.array[0]*100 + *PLMN_identity->mnc.list.array[1]*10 + *PLMN_identity->mnc.list.array[2]; + } + + LOG_I( RRC, "PLMN %d MCC %0*d, MNC %0*d\n", i + 1, mccdigits, mcc, mncdigits, mnc); + // search internal table for provider name + int plmn_ind = 0; + + while (plmn_data[plmn_ind].mcc > 0) { + if ((plmn_data[plmn_ind].mcc == mcc) && (plmn_data[plmn_ind].mnc == mnc)) { + LOG_I( RRC, "Found %s (name from internal table)\n", plmn_data[plmn_ind].oper_short ); + break; + } + + plmn_ind++; + } } - - int mnc; - - if (mncdigits == 2) { - mnc = *PLMN_identity->mnc.list.array[0]*10 + *PLMN_identity->mnc.list.array[1]; - } else { - mnc = *PLMN_identity->mnc.list.array[0]*100 + *PLMN_identity->mnc.list.array[1]*10 + *PLMN_identity->mnc.list.array[2]; - } - - LOG_I( RRC, "PLMN MCC %0*d, MNC %0*d, TAC 0x%04x\n", mccdigits, mcc, mncdigits, mnc, + LOG_I( RRC, "TAC 0x%04x\n", ((sib1->cellAccessRelatedInfo.trackingAreaCode.size == 2)?((sib1->cellAccessRelatedInfo.trackingAreaCode.buf[0]<<8) + sib1->cellAccessRelatedInfo.trackingAreaCode.buf[1]):0)); LOG_I( RRC, "cellReservedForOperatorUse : raw:%ld decoded:%s\n", sib1->cellAccessRelatedInfo.plmn_IdentityList.list.array[0]->cellReservedForOperatorUse, SIBreserved(sib1->cellAccessRelatedInfo.plmn_IdentityList.list.array[0]->cellReservedForOperatorUse) ); - // search internal table for provider name - int plmn_ind = 0; - - while (plmn_data[plmn_ind].mcc > 0) { - if ((plmn_data[plmn_ind].mcc == mcc) && (plmn_data[plmn_ind].mnc == mnc)) { - LOG_I( RRC, "Found %s (name from internal table)\n", plmn_data[plmn_ind].oper_short ); - break; - } - - plmn_ind++; - } - - if (plmn_data[plmn_ind].mcc < 0) { - LOG_I( RRC, "Found Unknown operator (no entry in internal table)\n" ); - } LOG_I( RRC, "cellAccessRelatedInfo.cellIdentity : raw:%"PRIu32" decoded:%02x.%02x.%02x.%02x\n", BIT_STRING_to_uint32( &sib1->cellAccessRelatedInfo.cellIdentity ), @@ -2888,7 +2963,7 @@ int decode_SIB1( const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB_index, LOG_I( RRC, "TDD specialSubframePatterns : %ld\n", sib1->tdd_Config->specialSubframePatterns ); } - LOG_I( RRC, "siWindowLength : %s\n", siWindowLength[min(sib1->si_WindowLength,7)] ); + LOG_I( RRC, "siWindowLength : %s\n", siWindowLength[min(sib1->si_WindowLength,8)] ); LOG_I( RRC, "systemInfoValueTag : %ld\n", sib1->systemInfoValueTag ); UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIperiod = siPeriod_int[sib1->schedulingInfoList.list.array[0]->si_Periodicity]; UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIwindowsize = siWindowLength_int[sib1->si_WindowLength]; @@ -2970,6 +3045,7 @@ int decode_SIB1( const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB_index, NAS_CELL_SELECTION_CNF (msg_p).rsrp = rsrp; itti_send_msg_to_task(TASK_NAS_UE, ctxt_pP->instance, msg_p); cell_valid = 1; + UE_rrc_inst[ctxt_pP->module_id].selected_plmn_identity = plmn + 1; break; } } @@ -2980,7 +3056,11 @@ int decode_SIB1( const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB_index, MessageDef *msg_p; msg_p = itti_alloc_new_message(TASK_RRC_UE, PHY_FIND_NEXT_CELL_REQ); itti_send_msg_to_task(TASK_PHY_UE, ctxt_pP->instance, msg_p); - LOG_E(RRC, "Synched with a cell, but PLMN doesn't match our SIM, the message PHY_FIND_NEXT_CELL_REQ is sent but lost in current UE implementation! \n"); + LOG_E(RRC, + "Synched with a cell, but PLMN doesn't match our SIM " + "(selected_plmn_identity %d), the message PHY_FIND_NEXT_CELL_REQ " + "is sent but lost in current UE implementation!\n", + UE_rrc_inst[ctxt_pP->module_id].selected_plmn_identity); } } @@ -4210,7 +4290,7 @@ int decode_MCCH_Message( const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB ctxt_pP->frame, mbsfn_sync_area); return 0; // avoid decoding to prevent memory bloating - } else if(UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].State >= RRC_CONNECTED /*|| UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].State == RRC_RECONFIGURED*/){ + } else if(1/*UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].State >= RRC_CONNECTED*/ /*|| UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].State == RRC_RECONFIGURED*/){ dec_rval = uper_decode_complete(NULL, &asn_DEF_LTE_MCCH_Message, (void **)&mcch, @@ -4229,6 +4309,7 @@ int decode_MCCH_Message( const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) { xer_fprint(stdout, &asn_DEF_LTE_MCCH_Message, (void *)mcch); } + xer_fprint(stdout, &asn_DEF_LTE_MCCH_Message, (void *)mcch); if (mcch->message.present == LTE_MCCH_MessageType_PR_c1) { LOG_D(RRC,"[UE %d] Found mcch message \n", @@ -4250,7 +4331,29 @@ int decode_MCCH_Message( const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB ctxt_pP->frame, mbsfn_sync_area); } + }else if(mcch->message.present == LTE_MCCH_MessageType_PR_later){ + LOG_D(RRC,"[UE %d] Found mcch message \n", + ctxt_pP->module_id); + if(mcch->message.choice.later.present == LTE_MCCH_MessageType__later_PR_c2){ + if(mcch->message.choice.later.choice.c2.present == LTE_MCCH_MessageType__later__c2_PR_mbmsCountingRequest_r10){ + LOG_I(RRC,"[UE %d] Frame %d : Found MBMSCountingRequest from eNB %d %p\n", + ctxt_pP->module_id, + ctxt_pP->frame, + eNB_index,&mcch->message.choice.later.choice.c2.choice.mbmsCountingRequest_r10); + + rrc_ue_process_MBMSCountingRequest(ctxt_pP,&mcch->message.choice.later.choice.c2.choice.mbmsCountingRequest_r10,eNB_index); + + decode_MBMSCountingRequest( + ctxt_pP->module_id, + eNB_index, + ctxt_pP->frame, + mbsfn_sync_area); + + + } + } } + } return 0; @@ -4308,7 +4411,7 @@ void decode_MBSFNAreaConfiguration( module_id_t ue_mod_idP, uint8_t eNB_index, f (struct LTE_NonMBSFN_SubframeConfig_r14 *)NULL, (LTE_MBSFN_AreaInfoList_r9_t *)NULL ); - if(UE_rrc_inst[ue_mod_idP].Info[eNB_index].State >= RRC_CONNECTED /*|| UE_rrc_inst[ue_mod_idP].Info[eNB_index].State == RRC_RECONFIGURED*/) + if(1/*UE_rrc_inst[ue_mod_idP].Info[eNB_index].State >= RRC_CONNECTED*/ /*|| UE_rrc_inst[ue_mod_idP].Info[eNB_index].State == RRC_RECONFIGURED*/) UE_rrc_inst[ue_mod_idP].Info[eNB_index].MCCHStatus[mbsfn_sync_area] = 1; PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_idP, ENB_FLAG_NO, UE_rrc_inst[ue_mod_idP].Info[eNB_index].rnti, frameP, 0,eNB_index); // Config Radio Bearer for MBMS user data (similar way to configure for eNB side in init_MBMS function) @@ -4332,6 +4435,13 @@ void decode_MBSFNAreaConfiguration( module_id_t ue_mod_idP, uint8_t eNB_index, f // */ } +void decode_MBMSCountingRequest( module_id_t ue_mod_idP, uint8_t eNB_index, frame_t frameP, uint8_t mbsfn_sync_area ) { + //uint8_t i; + //protocol_ctxt_t ctxt; + + + +} //----------------------------------------------------------------------------- void *rrc_ue_task( void *args_p ) { diff --git a/openair2/RRC/LTE/rrc_defs.h b/openair2/RRC/LTE/rrc_defs.h index f050733a13..c498e3c6fe 100644 --- a/openair2/RRC/LTE/rrc_defs.h +++ b/openair2/RRC/LTE/rrc_defs.h @@ -40,6 +40,10 @@ #include "rrc_types.h" //#include "PHY/phy_defs.h" #include "LAYER2/RLC/rlc.h" +#include "RRC/NR/nr_rrc_types.h" +#include "NR_UE-MRDC-Capability.h" +#include "NR_UE-NR-Capability.h" + #include "COMMON/platform_constants.h" #include "COMMON/platform_types.h" @@ -267,6 +271,7 @@ typedef enum UE_STATE_e { RRC_RECONFIGURED, RRC_HO_EXECUTION, RRC_NR_NSA, + RRC_NR_NSA_RECONFIGURED } UE_STATE_t; typedef enum HO_STATE_e { @@ -382,6 +387,7 @@ typedef enum e_rab_satus_e { E_RAB_STATUS_DONE, // from the eNB perspective E_RAB_STATUS_ESTABLISHED, // get the reconfigurationcomplete form UE E_RAB_STATUS_REESTABLISHED, // after HO + E_RAB_STATUS_TOMODIFY, // ENDC NSA E_RAB_STATUS_FAILED, E_RAB_STATUS_TORELEASE // to release DRB between eNB and UE } e_rab_status_t; @@ -568,6 +574,10 @@ typedef struct eNB_RRC_UE_s { LTE_UE_EUTRA_Capability_t *UE_Capability; int UE_Capability_size; + NR_UE_MRDC_Capability_t *UE_Capability_MRDC; + int UE_MRDC_Capability_size; + NR_UE_NR_Capability_t *UE_Capability_nr; + int UE_NR_Capability_size; ImsiMobileIdentity_t imsi; /* KeNB as derived from KASME received from EPC */ @@ -613,6 +623,7 @@ typedef struct eNB_RRC_UE_s { /* Number of e_rab to be modified in the list */ uint8_t nb_of_modify_e_rabs; uint8_t nb_of_failed_e_rabs; + uint8_t nb_of_modify_endc_e_rabs; e_rab_param_t modify_e_rab[NB_RB_MAX];//[S1AP_MAX_E_RAB]; /* list of e_rab to be setup by RRC layers */ e_rab_param_t e_rab[NB_RB_MAX];//[S1AP_MAX_E_RAB]; @@ -627,6 +638,10 @@ typedef struct eNB_RRC_UE_s { uint32_t enb_gtp_teid[S1AP_MAX_E_RAB]; transport_layer_addr_t enb_gtp_addrs[S1AP_MAX_E_RAB]; rb_id_t enb_gtp_ebi[S1AP_MAX_E_RAB]; + // LG: For GTPV1 TUNNELS ENDC + uint32_t gnb_gtp_endc_teid[S1AP_MAX_E_RAB]; + transport_layer_addr_t gnb_gtp_endc_addrs[S1AP_MAX_E_RAB]; + rb_id_t gnb_gtp_endc_ebi[S1AP_MAX_E_RAB]; /* Total number of e_rab already setup in the list */ uint8_t nb_x2u_e_rabs; // LG: For GTPV1 TUNNELS(X2U) @@ -701,6 +716,9 @@ typedef struct { LTE_BCCH_BCH_Message_MBMS_t mib_fembms; LTE_BCCH_DL_SCH_Message_MBMS_t siblock1_MBMS; LTE_BCCH_DL_SCH_Message_MBMS_t systemInformation_MBMS; + LTE_SchedulingInfo_MBMS_r14_t schedulingInfo_MBMS; + LTE_PLMN_IdentityInfo_t PLMN_identity_info_MBMS[6]; + LTE_MCC_MNC_Digit_t dummy_mcc_MBMS[6][3], dummy_mnc_MBMS[6][3]; LTE_SystemInformationBlockType1_t *sib1; LTE_SystemInformationBlockType2_t *sib2; LTE_SystemInformationBlockType3_t *sib3; @@ -717,6 +735,12 @@ typedef struct { LTE_MCCH_Message_t mcch; LTE_MBSFNAreaConfiguration_r9_t *mcch_message; SRB_INFO MCCH_MESS[8];// MAX_MBSFN_AREA + uint8_t **MCCH_MESSAGE_COUNTING; // MAX_MBSFN_AREA + uint8_t sizeof_MCCH_MESSAGE_COUNTING[8];// MAX_MBSFN_AREA + LTE_MCCH_Message_t mcch_counting; + LTE_MBMSCountingRequest_r10_t *mcch_message_counting; + SRB_INFO MCCH_MESS_COUNTING[8];// MAX_MBSFN_AREA + //TTN - SIB 18,19,21 for D2D LTE_SystemInformationBlockType18_r12_t *sib18; LTE_SystemInformationBlockType19_r12_t *sib19; @@ -794,6 +818,7 @@ typedef struct UE_RRC_INST_s { Rrc_Sub_State_t RrcSubState; plmn_t plmnID; Byte_t rat; + uint8_t selected_plmn_identity; as_nas_info_t initialNasMsg; OAI_UECapability_t *UECap; uint8_t *UECapability; diff --git a/openair2/RRC/LTE/rrc_eNB.c b/openair2/RRC/LTE/rrc_eNB.c index 5965e51720..31a26d322d 100644 --- a/openair2/RRC/LTE/rrc_eNB.c +++ b/openair2/RRC/LTE/rrc_eNB.c @@ -96,6 +96,10 @@ #include "SIMULATION/TOOLS/sim.h" // for taus +#define ASN_MAX_ENCODE_SIZE 4096 +#define NUMBEROF_DRBS_TOBE_ADDED 1 +static int encode_CG_ConfigInfo(char *buffer,int buffer_size,rrc_eNB_ue_context_t *const ue_context_pP,int *enc_size); +static int is_en_dc_supported(LTE_UE_EUTRA_Capability_t *c); extern RAN_CONTEXT_t RC; @@ -113,8 +117,9 @@ extern uint32_t to_earfcn_DL(int eutra_bandP, uint32_t dl_CarrierFreq, uint32_t extern int rrc_eNB_process_security(const protocol_ctxt_t *const ctxt_pP, rrc_eNB_ue_context_t *const ue_context_pP, security_capabilities_t *security_capabilities_pP); extern void process_eNB_security_key (const protocol_ctxt_t *const ctxt_pP, rrc_eNB_ue_context_t *const ue_context_pP, uint8_t *security_key_pP); extern int derive_keNB_star(const uint8_t *kenb_32, const uint16_t pci, const uint32_t earfcn_dl, const bool is_rel8_only, uint8_t *kenb_star); -extern int rrc_eNB_generate_RRCConnectionReconfiguration_endc(protocol_ctxt_t *ctxt, rrc_eNB_ue_context_t *ue_context, unsigned char *buffer, int buffer_size, OCTET_STRING_t *scg_group_config, OCTET_STRING_t *scg_RB_config); -extern struct rrc_eNB_ue_context_s * get_first_ue_context(eNB_RRC_INST *rrc_instance_pP); +extern int rrc_eNB_generate_RRCConnectionReconfiguration_endc(protocol_ctxt_t *ctxt, rrc_eNB_ue_context_t *ue_context, unsigned char *buffer, int buffer_size, OCTET_STRING_t *scg_group_config, + OCTET_STRING_t *scg_RB_config); +extern struct rrc_eNB_ue_context_s *get_first_ue_context(eNB_RRC_INST *rrc_instance_pP); pthread_mutex_t rrc_release_freelist; RRC_release_list_t rrc_release_info; @@ -150,6 +155,7 @@ init_SI( LOG_D(RRC,"%s()\n\n\n\n",__FUNCTION__); if(configuration->radioresourceconfig[CC_id].mbms_dedicated_serving_cell == TRUE) { + LOG_I(RRC, "Configuring MIB FeMBMS (N_RB_DL %d)\n", (int)configuration->N_RB_DL[CC_id]); RC.rrc[ctxt_pP->module_id]->carrier[CC_id].MIB_FeMBMS = (uint8_t *) malloc16(4); @@ -162,7 +168,7 @@ init_SI( AssertFatal(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].SIB1_MBMS!=NULL,PROTOCOL_RRC_CTXT_FMT" init_SI: FATAL, no memory for SIB1_MBMS allocated\n", PROTOCOL_RRC_CTXT_ARGS(ctxt_pP)); RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_SIB1_MBMS = do_SIB1_MBMS(&RC.rrc[ctxt_pP->module_id]->carrier[CC_id],ctxt_pP->module_id,CC_id, - configuration + configuration ); LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" Contents of SIB1-MBMS\n", PROTOCOL_RRC_CTXT_ARGS(ctxt_pP) @@ -226,6 +232,7 @@ init_SI( RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib1_MBMS->nonMBSFN_SubframeConfig_r14->subframeAllocation_r14.buf); } + RC.rrc[ctxt_pP->module_id]->carrier[CC_id].FeMBMS_flag=1; //AssertFatal(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_SIB1 != 255,"FATAL, RC.rrc[enb_mod_idP].carrier[CC_id].sizeof_SIB1 == 255"); } @@ -491,12 +498,15 @@ init_SI( (LTE_PMCH_InfoList_r9_t *) NULL, sib1_v13ext, RC.rrc[ctxt_pP->module_id]->carrier[CC_id].FeMBMS_flag, - (LTE_BCCH_DL_SCH_Message_MBMS_t *) NULL, + (carrier->sib1_MBMS==NULL?(LTE_BCCH_DL_SCH_Message_MBMS_t *) NULL:(LTE_BCCH_DL_SCH_Message_MBMS_t *)carrier->sib1_MBMS),//(LTE_BCCH_DL_SCH_Message_MBMS_t *) NULL, (LTE_SchedulingInfo_MBMS_r14_t *) NULL, - (struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL, - (LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL, - (LTE_MBSFN_AreaInfoList_r9_t *) NULL - ); + (carrier->sib1_MBMS==NULL?(struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL:(struct LTE_NonMBSFN_SubframeConfig_r14 *)carrier->sib1_MBMS->nonMBSFN_SubframeConfig_r14),//(struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL, + (carrier->sib1_MBMS==NULL?(LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL:(LTE_SystemInformationBlockType1_MBMS_r14_t *)carrier->sib1_MBMS->systemInformationBlockType13_r14),//(LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL, + (carrier->sib1_MBMS==NULL?(LTE_MBSFN_AreaInfoList_r9_t *) NULL:(LTE_MBSFN_AreaInfoList_r9_t *)&carrier->sib1_MBMS->systemInformationBlockType13_r14->mbsfn_AreaInfoList_r9)//(LTE_MBSFN_AreaInfoList_r9_t *) NULL + + ,(LTE_MBSFNAreaConfiguration_r9_t*) NULL + + ); } /* set flag to indicate that cell information is configured. This is required @@ -579,7 +589,8 @@ init_MCCH( (LTE_SchedulingInfo_MBMS_r14_t *) NULL, (struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL, (LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL, - (LTE_MBSFN_AreaInfoList_r9_t *) NULL + (LTE_MBSFN_AreaInfoList_r9_t *) NULL, + (LTE_MBSFNAreaConfiguration_r9_t*) NULL ); } @@ -989,11 +1000,14 @@ void put_UE_in_freelist(module_id_t mod_id, rnti_t rnti, boolean_t removeFlag) { pthread_mutex_unlock(&lock_ue_freelist); } +extern int16_t find_dlsch(uint16_t rnti, PHY_VARS_eNB *eNB,find_type_t type); +extern int16_t find_ulsch(uint16_t rnti, PHY_VARS_eNB *eNB,find_type_t type); +extern void clean_eNb_ulsch(LTE_eNB_ULSCH_t *ulsch); +extern void clean_eNb_dlsch(LTE_eNB_DLSCH_t *dlsch); + void release_UE_in_freeList(module_id_t mod_id) { int i, j, CC_id, pdu_number; protocol_ctxt_t ctxt; - LTE_eNB_ULSCH_t *ulsch = NULL; - LTE_eNB_DLSCH_t *dlsch = NULL; nfapi_ul_config_request_body_t *ul_req_tmp = NULL; PHY_VARS_eNB *eNB_PHY = NULL; struct rrc_eNB_ue_context_s *ue_context_pP = NULL; @@ -1027,6 +1041,25 @@ void release_UE_in_freeList(module_id_t mod_id) { for (CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++) { eNB_PHY = RC.eNB[mod_id][CC_id]; + int id; + + // clean ULSCH entries for rnti + id = find_ulsch(rnti,eNB_PHY,SEARCH_EXIST); + if (id>=0) clean_eNb_ulsch(eNB_PHY->ulsch[id]); + + // clean DLSCH entries for rnti + id = find_dlsch(rnti,eNB_PHY,SEARCH_EXIST); + if (id>=0) clean_eNb_dlsch(eNB_PHY->dlsch[id][0]); + + // clean UCI entries for rnti + for (i=0; iuci_vars[i].rnti == rnti) { + LOG_I(MAC, "clean eNb uci_vars[%d] UE %x \n",i, rnti); + memset(&eNB_PHY->uci_vars[i],0,sizeof(LTE_eNB_UCI)); + } + } + + /* for (i=0; iulsch[i]; @@ -1059,6 +1092,7 @@ void release_UE_in_freeList(module_id_t mod_id) { memset(&eNB_PHY->uci_vars[i],0,sizeof(LTE_eNB_UCI)); } } + */ if (flexran_agent_get_rrc_xface(mod_id)) { flexran_agent_get_rrc_xface(mod_id)->flexran_agent_notify_ue_state_change( @@ -1453,7 +1487,8 @@ rrc_eNB_generate_RRCConnectionReestablishment( (LTE_SchedulingInfo_MBMS_r14_t *) NULL, (struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL, (LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL, - (LTE_MBSFN_AreaInfoList_r9_t *) NULL + (LTE_MBSFN_AreaInfoList_r9_t *) NULL, + (LTE_MBSFNAreaConfiguration_r9_t*) NULL ); break; } @@ -2119,7 +2154,27 @@ rrc_eNB_generate_RRCConnectionReestablishmentReject( PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP), ue_p->Srb0.Tx_buffer.payload_size); } - +#if 0 +void rrc_generate_SgNBReleaseRequest( + const protocol_ctxt_t *const ctxt_pP, + rrc_eNB_ue_context_t *const ue_context_pP +) +//----------------------------------------------------------------------------- +{ + MessageDef *msg; + msg = itti_alloc_new_message(TASK_RRC_ENB, X2AP_ENDC_SGNB_RELEASE_REQ); + memset(&(X2AP_ENDC_SGNB_RELEASE_REQ(msg)), 0, sizeof(x2ap_ENDC_sgnb_release_req_t)); + // X2AP_ENDC_SGNB_RELEASE_REQ(msg).MeNB_ue_x2_id = ; + // X2AP_ENDC_SGNB_RELEASE_REQ(msg).SgNB_ue_x2_id = ; + // X2AP_ENDC_SGNB_RELEASE_REQ(msg).cause = ; + // X2AP_ENDC_SGNB_RELEASE_REQ(msg).target_physCellId = ; + LOG_I(RRC, + "[eNB %d] frame %d UE rnti %x transmitting sgnb release request to sgnb \n", + ctxt_pP->module_id,ctxt_pP->frame,ctxt_pP->rnti); + itti_send_msg_to_task(TASK_X2AP, ENB_MODULE_ID_TO_INSTANCE(ctxt_pP->module_id), msg); + return; +} +#endif //----------------------------------------------------------------------------- /* * Generate the RRC Connection Release to UE. @@ -2139,6 +2194,15 @@ rrc_eNB_generate_RRCConnectionRelease( memset(buffer, 0, RRC_BUF_SIZE); T(T_ENB_RRC_CONNECTION_RELEASE, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame), T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti)); +#if 0 + + if(ue_context_pP != NULL) { + if(ue_context_pP->ue_context.Status == RRC_NR_NSA) { + //rrc_eNB_generate_SgNBReleaseRequest(ctxt_pP,ue_context_pP); + } + } + +#endif size = do_RRCConnectionRelease(ctxt_pP->module_id, buffer,rrc_eNB_get_next_transaction_identifier(ctxt_pP->module_id)); ue_context_pP->ue_context.ue_reestablishment_timer = 0; ue_context_pP->ue_context.ue_release_timer = 0; @@ -2837,7 +2901,6 @@ void rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t uint16_t size; int i; MessageDef *message_p = NULL; - /* Configure SRB1/SRB2, PhysicalConfigDedicated, LTE_MAC_MainConfig for UE */ eNB_RRC_INST *rrc_inst = RC.rrc[ctxt_pP->module_id]; struct LTE_PhysicalConfigDedicated **physicalConfigDedicated = &ue_context_pP->ue_context.physicalConfigDedicated; @@ -3029,7 +3092,7 @@ void rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t module_id_t module_id = ctxt_pP->module_id; LOG_D(RRC, "Processing the DRX configuration in RRC Connection Reconfiguration\n"); - /* Process the IE drx_Config */ + /* Process the IE drx_Config */ if (NODE_IS_MONOLITHIC(rrc_inst->node_type)) { mac_MainConfig->drx_Config = do_DrxConfig(cc_id, &rrc_inst->configuration, UEcap); // drx_Config IE @@ -3044,8 +3107,8 @@ void rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t LOG_D(RRC, "DRX configured in MAC Main Configuration for RRC Connection Reconfiguration\n"); } } - /* End of CDRX configuration */ + /* End of CDRX configuration */ sr_ProhibitTimer_r9 = CALLOC(1, sizeof(long)); *sr_ProhibitTimer_r9 = 0; // SR tx on PUCCH, Value in number of SR period(s). Value 0 = no timer for SR, Value 2 = 2*SR mac_MainConfig->ext1 = CALLOC(1, sizeof(struct LTE_MAC_MainConfig__ext1)); @@ -3153,7 +3216,9 @@ void rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t if (ue_context_pP->ue_context.does_nr) { MeasId6 = calloc(1, sizeof(LTE_MeasIdToAddMod_t)); + if (MeasId6 == NULL) exit(1); + MeasId6->measId = 7; MeasId6->measObjectId = 2; MeasId6->reportConfigId = 7; @@ -3211,22 +3276,27 @@ void rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t if (ue_context_pP->ue_context.does_nr) { MeasObj2 = calloc(1, sizeof(LTE_MeasObjectToAddMod_t)); + if (MeasObj2 == NULL) exit(1); + MeasObj2->measObjectId = 2; MeasObj2->measObject.present = LTE_MeasObjectToAddMod__measObject_PR_measObjectNR_r15; - MeasObj2->measObject.choice.measObjectNR_r15.carrierFreq_r15 = 642256; //634000; //(634000 = 3.51GHz) (640000 = 3.6GHz) (641272 = 3619.08MHz = 3600 + 30/1000*106*12/2) (642256 is for 3.6GHz and absoluteFrequencySSB = 642016) + MeasObj2->measObject.choice.measObjectNR_r15.carrierFreq_r15 =641272; //634000; //(634000 = 3.51GHz) (640000 = 3.6GHz) (641272 = 3619.08MHz = 3600 + 30/1000*106*12/2) (642256 is for 3.6GHz and absoluteFrequencySSB = 642016) MeasObj2->measObject.choice.measObjectNR_r15.rs_ConfigSSB_r15.measTimingConfig_r15.periodicityAndOffset_r15.present = LTE_MTC_SSB_NR_r15__periodicityAndOffset_r15_PR_sf20_r15; MeasObj2->measObject.choice.measObjectNR_r15.rs_ConfigSSB_r15.measTimingConfig_r15.periodicityAndOffset_r15.choice.sf20_r15 = 0; MeasObj2->measObject.choice.measObjectNR_r15.rs_ConfigSSB_r15.measTimingConfig_r15.ssb_Duration_r15 = LTE_MTC_SSB_NR_r15__ssb_Duration_r15_sf4; MeasObj2->measObject.choice.measObjectNR_r15.rs_ConfigSSB_r15.subcarrierSpacingSSB_r15 = LTE_RS_ConfigSSB_NR_r15__subcarrierSpacingSSB_r15_kHz30; MeasObj2->measObject.choice.measObjectNR_r15.quantityConfigSet_r15 = 1; MeasObj2->measObject.choice.measObjectNR_r15.ext1 = calloc(1, sizeof(struct LTE_MeasObjectNR_r15__ext1)); + if (MeasObj2->measObject.choice.measObjectNR_r15.ext1 == NULL) exit(1); + MeasObj2->measObject.choice.measObjectNR_r15.ext1->bandNR_r15 = calloc(1, sizeof(struct LTE_MeasObjectNR_r15__ext1__bandNR_r15)); + if (MeasObj2->measObject.choice.measObjectNR_r15.ext1->bandNR_r15 == NULL) exit(1); + MeasObj2->measObject.choice.measObjectNR_r15.ext1->bandNR_r15->present = LTE_MeasObjectNR_r15__ext1__bandNR_r15_PR_setup; MeasObj2->measObject.choice.measObjectNR_r15.ext1->bandNR_r15->choice.setup = 78; - ASN_SEQUENCE_ADD(&MeasObj_list->list, MeasObj2); } @@ -3242,9 +3312,11 @@ void rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t ReportConfig_A3 = CALLOC(1, sizeof(*ReportConfig_A3)); ReportConfig_A4 = CALLOC(1, sizeof(*ReportConfig_A4)); ReportConfig_A5 = CALLOC(1, sizeof(*ReportConfig_A5)); + if (ue_context_pP->ue_context.does_nr) { ReportConfig_NR = CALLOC(1, sizeof(*ReportConfig_NR)); } + ReportConfig_per->reportConfigId = 1; ReportConfig_per->reportConfig.present = LTE_ReportConfigToAddMod__reportConfig_PR_reportConfigEUTRA; ReportConfig_per->reportConfig.choice.reportConfigEUTRA.triggerType.present = @@ -3357,7 +3429,7 @@ void rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t ReportConfig_NR->reportConfig.choice.reportConfigInterRAT.triggerType.present = LTE_ReportConfigInterRAT__triggerType_PR_event; ReportConfig_NR->reportConfig.choice.reportConfigInterRAT.triggerType.choice.event.eventId.present = LTE_ReportConfigInterRAT__triggerType__event__eventId_PR_eventB1_NR_r15; ReportConfig_NR->reportConfig.choice.reportConfigInterRAT.triggerType.choice.event.eventId.choice.eventB1_NR_r15.b1_ThresholdNR_r15.present = LTE_ThresholdNR_r15_PR_nr_RSRP_r15; - ReportConfig_NR->reportConfig.choice.reportConfigInterRAT.triggerType.choice.event.eventId.choice.eventB1_NR_r15.b1_ThresholdNR_r15.choice.nr_RSRP_r15 = 46; + ReportConfig_NR->reportConfig.choice.reportConfigInterRAT.triggerType.choice.event.eventId.choice.eventB1_NR_r15.b1_ThresholdNR_r15.choice.nr_RSRP_r15 = 0; ReportConfig_NR->reportConfig.choice.reportConfigInterRAT.triggerType.choice.event.eventId.choice.eventB1_NR_r15.reportOnLeave_r15 = FALSE; ReportConfig_NR->reportConfig.choice.reportConfigInterRAT.triggerType.choice.event.hysteresis = 2; ReportConfig_NR->reportConfig.choice.reportConfigInterRAT.triggerType.choice.event.timeToTrigger = LTE_TimeToTrigger_ms80; @@ -3365,9 +3437,13 @@ void rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t ReportConfig_NR->reportConfig.choice.reportConfigInterRAT.reportInterval = LTE_ReportInterval_ms120; ReportConfig_NR->reportConfig.choice.reportConfigInterRAT.reportAmount = LTE_ReportConfigInterRAT__reportAmount_infinity; ReportConfig_NR->reportConfig.choice.reportConfigInterRAT.ext7 = calloc(1, sizeof(struct LTE_ReportConfigInterRAT__ext7)); + if (ReportConfig_NR->reportConfig.choice.reportConfigInterRAT.ext7 == NULL) exit(1); + ReportConfig_NR->reportConfig.choice.reportConfigInterRAT.ext7->reportQuantityCellNR_r15 = calloc(1, sizeof(struct LTE_ReportQuantityNR_r15)); + if (ReportConfig_NR->reportConfig.choice.reportConfigInterRAT.ext7->reportQuantityCellNR_r15 == NULL) exit(1); + ReportConfig_NR->reportConfig.choice.reportConfigInterRAT.ext7->reportQuantityCellNR_r15->ss_rsrp = TRUE; ReportConfig_NR->reportConfig.choice.reportConfigInterRAT.ext7->reportQuantityCellNR_r15->ss_rsrq = TRUE; ReportConfig_NR->reportConfig.choice.reportConfigInterRAT.ext7->reportQuantityCellNR_r15->ss_sinr = TRUE; @@ -3569,7 +3645,6 @@ flexran_rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt uint16_t size; int i; MessageDef *message_p = NULL; - /* Configure SRB1/SRB2, PhysicalConfigDedicated, LTE_MAC_MainConfig for UE */ eNB_RRC_INST *rrc_inst = RC.rrc[ctxt_pP->module_id]; struct LTE_PhysicalConfigDedicated **physicalConfigDedicated = &ue_context_pP->ue_context.physicalConfigDedicated; @@ -3615,7 +3690,6 @@ flexran_rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt LTE_C_RNTI_t *cba_RNTI = NULL; int measurements_enabled; uint8_t xid = rrc_eNB_get_next_transaction_identifier(ctxt_pP->module_id); //Transaction_id, - #ifdef CBA // Contention Based Access uint8_t *cba_RNTI_buf; cba_RNTI = CALLOC(1, sizeof(LTE_C_RNTI_t)); @@ -3641,8 +3715,8 @@ flexran_rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt frameP, ue_mod_idP); } -#endif +#endif T(T_ENB_RRC_CONNECTION_RECONFIGURATION, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame), @@ -3777,7 +3851,6 @@ flexran_rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt mac_MainConfig->phr_Config->choice.setup.prohibitPHR_Timer = LTE_MAC_MainConfig__phr_Config__setup__prohibitPHR_Timer_sf200; // sf20 = 20 subframes // LTE_MAC_MainConfig__phr_Config__setup__prohibitPHR_Timer_sf1000 mac_MainConfig->phr_Config->choice.setup.dl_PathlossChange = LTE_MAC_MainConfig__phr_Config__setup__dl_PathlossChange_dB3; // Value dB1 =1 dB, dB3 = 3 dB - /* CDRX Configuration */ mac_MainConfig->drx_Config = NULL; rnti_t rnti = ue_context_pP->ue_id_rnti; @@ -3785,11 +3858,11 @@ flexran_rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt uint8_t cc_id = ue_context_pP->ue_context.primaryCC_id; LTE_UE_EUTRA_Capability_t *UEcap = ue_context_pP->ue_context.UE_Capability; LOG_D(RRC, "Processing the DRX configuration in RRC Connection Reconfiguration\n"); - + /* Process the IE drx_Config */ if (NODE_IS_MONOLITHIC(rrc_inst->node_type)) { mac_MainConfig->drx_Config = do_DrxConfig(cc_id, &rrc_inst->configuration, UEcap); // drx_Config IE - + if (mac_MainConfig->drx_Config == NULL) { LOG_W(RRC, "drx_Configuration parameter is NULL, cannot configure local UE parameters or CDRX is deactivated\n"); } else { @@ -3801,8 +3874,8 @@ flexran_rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt LOG_D(RRC, "DRX configured in MAC Main Configuration for RRC Connection Reconfiguration\n"); } } - /* End of CDRX configuration */ + /* End of CDRX configuration */ sr_ProhibitTimer_r9 = CALLOC(1, sizeof(long)); *sr_ProhibitTimer_r9 = 0; // SR tx on PUCCH, Value in number of SR period(s). Value 0 = no timer for SR, Value 2 = 2*SR mac_MainConfig->ext1 = CALLOC(1, sizeof(struct LTE_MAC_MainConfig__ext1)); @@ -4319,6 +4392,182 @@ rrc_eNB_generate_RRCConnectionReconfiguration_SCell( } + +//----------------------------------------------------------------------------- +/** + * @fn :encode_CG_ConfigInfo + * @param :enc_buf to store the encoded bits + * @param :ue_context_pP ue context used to fill CG-ConfigInfo + * @param :enc_size to store thre size of encoded size + * this api is to fill and encode CG-ConfigInfo + */ +static int encode_CG_ConfigInfo( + char *buffer, + int buffer_size, + rrc_eNB_ue_context_t *const ue_context_pP, + int *enc_size +) { + struct NR_CG_ConfigInfo *cg_configinfo = NULL; + struct NR_RadioBearerConfig *rb_config = NULL; + asn_enc_rval_t enc_rval; + int RRC_OK = 1; + int index = 0; + char temp_buff[ASN_MAX_ENCODE_SIZE]; + LTE_UE_CapabilityRAT_ContainerList_t *ue_cap_rat_container_list = NULL; + LTE_UE_CapabilityRAT_Container_t ue_cap_rat_container_MRDC; + LTE_UE_CapabilityRAT_Container_t ue_cap_rat_container_nr; + int RAT_Container_count = 0; + rb_config = calloc(1,sizeof(struct NR_RadioBearerConfig)); + AssertFatal(rb_config != NULL,"failed to allocate memory for rb_config"); + + if(ue_context_pP->ue_context.DRB_configList->list.count != 0) { + rb_config->drb_ToAddModList = calloc(1,sizeof(struct NR_DRB_ToAddModList )); + AssertFatal(rb_config->drb_ToAddModList != NULL,"failed to allocated memory for drbtoaddmodlist"); + rb_config->drb_ToAddModList->list.count = NUMBEROF_DRBS_TOBE_ADDED; + rb_config->drb_ToAddModList->list.array + = calloc(NUMBEROF_DRBS_TOBE_ADDED, sizeof(struct NR_DRB_ToAddMod *)); + AssertFatal( rb_config->drb_ToAddModList->list.array != NULL, + "falied to allocate memory for list.array"); + + for(index = 0; index < NUMBEROF_DRBS_TOBE_ADDED; index++) { + rb_config->drb_ToAddModList->list.array[index] + = calloc(1,sizeof(struct NR_DRB_ToAddMod)); + AssertFatal(rb_config->drb_ToAddModList->list.array[index] != NULL, + "failed to allocate memory for drb_toaddmod"); + rb_config->drb_ToAddModList->list.array[index]->drb_Identity + = ue_context_pP->ue_context.DRB_configList->list.array[index]->drb_Identity; + + if(ue_context_pP->ue_context.DRB_configList->list.array[index]->eps_BearerIdentity) { + rb_config->drb_ToAddModList->list.array[index]->cnAssociation + = calloc(1,sizeof(struct NR_DRB_ToAddMod__cnAssociation)); + AssertFatal(rb_config->drb_ToAddModList->list.array[index]->cnAssociation != NULL, + "failed to allocate memory cnAssociation"); + rb_config->drb_ToAddModList->list.array[index]->cnAssociation->present + = NR_DRB_ToAddMod__cnAssociation_PR_eps_BearerIdentity; + rb_config->drb_ToAddModList->list.array[index]->cnAssociation->choice.eps_BearerIdentity + = *(ue_context_pP->ue_context.DRB_configList->list.array[index]->eps_BearerIdentity); + } + + rb_config->drb_ToAddModList->list.array[index]->pdcp_Config = calloc(1,sizeof(struct NR_PDCP_Config)); + rb_config->drb_ToAddModList->list.array[index]->pdcp_Config->drb = calloc(1,sizeof(struct NR_PDCP_Config__drb)); + rb_config->drb_ToAddModList->list.array[index]->pdcp_Config->drb->discardTimer = calloc(1,sizeof(long)); + *rb_config->drb_ToAddModList->list.array[index]->pdcp_Config->drb->discardTimer + = *(ue_context_pP->ue_context.DRB_configList->list.array[index]->pdcp_Config->discardTimer); + rb_config->drb_ToAddModList->list.array[index]->pdcp_Config->drb->pdcp_SN_SizeUL = calloc(1,sizeof(long)); + *rb_config->drb_ToAddModList->list.array[index]->pdcp_Config->drb->pdcp_SN_SizeUL + = NR_PDCP_Config__drb__pdcp_SN_SizeUL_len18bits; + rb_config->drb_ToAddModList->list.array[index]->pdcp_Config->drb->pdcp_SN_SizeDL = calloc(1,sizeof(long)); + *rb_config->drb_ToAddModList->list.array[index]->pdcp_Config->drb->pdcp_SN_SizeDL + = NR_PDCP_Config__drb__pdcp_SN_SizeDL_len18bits; + rb_config->drb_ToAddModList->list.array[index]->pdcp_Config->drb->headerCompression.present + = NR_PDCP_Config__drb__headerCompression_PR_notUsed; + rb_config->drb_ToAddModList->list.array[index]->pdcp_Config->drb->headerCompression.choice.notUsed = 0; + rb_config->drb_ToAddModList->list.array[index]->pdcp_Config->t_Reordering = calloc(1,sizeof(long)); + *rb_config->drb_ToAddModList->list.array[index]->pdcp_Config->t_Reordering + = NR_PDCP_Config__t_Reordering_ms0; + } + + rb_config->securityConfig = calloc(1,sizeof(struct NR_SecurityConfig )); + rb_config->securityConfig->securityAlgorithmConfig = calloc(1,sizeof(struct NR_SecurityAlgorithmConfig)); + rb_config->securityConfig->securityAlgorithmConfig->cipheringAlgorithm = NR_CipheringAlgorithm_nea0; + rb_config->securityConfig->securityAlgorithmConfig->integrityProtAlgorithm = NULL; + rb_config->securityConfig->keyToUse = calloc(1,sizeof(long)); + *rb_config->securityConfig->keyToUse = NR_SecurityConfig__keyToUse_master; + } + + cg_configinfo = calloc(1,sizeof(struct NR_CG_ConfigInfo)); + AssertFatal(cg_configinfo != NULL,"failed to allocate memory for cg_configinfo"); + cg_configinfo->criticalExtensions.present = NR_CG_ConfigInfo__criticalExtensions_PR_c1; + cg_configinfo->criticalExtensions.choice.c1 + = calloc(1, sizeof(struct NR_CG_ConfigInfo__criticalExtensions__c1)); + AssertFatal(cg_configinfo->criticalExtensions.choice.c1 != NULL, + "failed to allocate memory for cg_configinfo->criticalExtensions.choice.c1"); + cg_configinfo->criticalExtensions.choice.c1->present + = NR_CG_ConfigInfo__criticalExtensions__c1_PR_cg_ConfigInfo; + cg_configinfo->criticalExtensions.choice.c1->choice.cg_ConfigInfo + = calloc(1,sizeof(struct NR_CG_ConfigInfo_IEs)); + AssertFatal(cg_configinfo->criticalExtensions.choice.c1->choice.cg_ConfigInfo != NULL, + "failed to allocate memory for cg_configinfo_IEs"); + cg_configinfo->criticalExtensions.choice.c1->choice.cg_ConfigInfo->ue_CapabilityInfo + = calloc(1,sizeof( OCTET_STRING_t)); + AssertFatal(cg_configinfo->criticalExtensions.choice.c1->choice.cg_ConfigInfo-> + ue_CapabilityInfo != NULL, "failed to allocate memory for ue_capabilityinfo"); + + if(ue_context_pP->ue_context.UE_Capability_MRDC) { + RAT_Container_count++; + enc_rval = uper_encode_to_buffer(&asn_DEF_NR_UE_MRDC_Capability,NULL, + (void *)ue_context_pP->ue_context.UE_Capability_MRDC,temp_buff,ASN_MAX_ENCODE_SIZE); + AssertFatal(enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %jd)!\n", + enc_rval.failed_type->name, enc_rval.encoded); + ue_cap_rat_container_MRDC.rat_Type = LTE_RAT_Type_eutra_nr; + OCTET_STRING_fromBuf(&ue_cap_rat_container_MRDC.ueCapabilityRAT_Container, + (const char *)temp_buff,(enc_rval.encoded+7)>>3); + memset((void *)temp_buff,0,sizeof(temp_buff)); + } + + if(ue_context_pP->ue_context.UE_Capability_nr) { + RAT_Container_count++; + enc_rval = uper_encode_to_buffer(&asn_DEF_NR_UE_NR_Capability,NULL, + (void *)ue_context_pP->ue_context.UE_Capability_nr,temp_buff,ASN_MAX_ENCODE_SIZE); + AssertFatal(enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %jd)!\n", + enc_rval.failed_type->name, enc_rval.encoded); + ue_cap_rat_container_nr.rat_Type = LTE_RAT_Type_nr; + OCTET_STRING_fromBuf(&ue_cap_rat_container_nr.ueCapabilityRAT_Container, + (const char *)temp_buff,(enc_rval.encoded+7)>>3); + memset((void *)temp_buff,0,sizeof(temp_buff)); + } + + ue_cap_rat_container_list = calloc(1,sizeof(LTE_UE_CapabilityRAT_ContainerList_t)); + ue_cap_rat_container_list->list.count = RAT_Container_count; + ue_cap_rat_container_list->list.size = RAT_Container_count * sizeof(LTE_UE_CapabilityRAT_Container_t); + ue_cap_rat_container_list->list.array = calloc(RAT_Container_count,sizeof(LTE_UE_CapabilityRAT_Container_t *)); + + if(ue_context_pP->ue_context.UE_Capability_MRDC) { + ue_cap_rat_container_list->list.array[0] = calloc(1,sizeof(LTE_UE_CapabilityRAT_Container_t)); + memcpy(ue_cap_rat_container_list->list.array[0],&ue_cap_rat_container_MRDC,sizeof(LTE_UE_CapabilityRAT_Container_t)); + } + + if(ue_context_pP->ue_context.UE_Capability_nr) { + ue_cap_rat_container_list->list.array[1] = calloc(1,sizeof(LTE_UE_CapabilityRAT_Container_t)); + memcpy(ue_cap_rat_container_list->list.array[1],&ue_cap_rat_container_nr,sizeof(LTE_UE_CapabilityRAT_Container_t)); + } + + //this xer_fprint logs can be enabled for additional debugging logs + //xer_fprint(stdout,&asn_DEF_LTE_UE_CapabilityRAT_ContainerList,ue_cap_rat_container_list); + enc_rval = uper_encode_to_buffer(&asn_DEF_LTE_UE_CapabilityRAT_ContainerList,NULL, + (void *)ue_cap_rat_container_list,temp_buff,ASN_MAX_ENCODE_SIZE); + AssertFatal(enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %jd)!\n", + enc_rval.failed_type->name, enc_rval.encoded); + OCTET_STRING_fromBuf(cg_configinfo->criticalExtensions.choice.c1->choice.cg_ConfigInfo->ue_CapabilityInfo, + (const char *)temp_buff, (enc_rval.encoded+7)>>3); + cg_configinfo->criticalExtensions.choice.c1->choice.cg_ConfigInfo->mcg_RB_Config + = calloc(1,sizeof(OCTET_STRING_t)); + AssertFatal(cg_configinfo->criticalExtensions.choice.c1->choice.cg_ConfigInfo-> + mcg_RB_Config != NULL, "failed to allocate memory for mcg_rb_config"); + enc_rval = uper_encode_to_buffer(&asn_DEF_NR_RadioBearerConfig,NULL,(void *)rb_config,temp_buff,ASN_MAX_ENCODE_SIZE); + AssertFatal(enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %jd)!\n", + enc_rval.failed_type->name, enc_rval.encoded); + OCTET_STRING_fromBuf(cg_configinfo->criticalExtensions.choice.c1->choice.cg_ConfigInfo->mcg_RB_Config, + (const char *)temp_buff, (enc_rval.encoded+7)>>3); + // this xer_fprint can be enabled for additional debugging messages + // xer_fprint(stdout,&asn_DEF_NR_CG_ConfigInfo,(void *)cg_configinfo); + enc_rval = uper_encode_to_buffer(&asn_DEF_NR_CG_ConfigInfo,NULL,(void *)cg_configinfo, + buffer,buffer_size); + AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %lu)!\n", + enc_rval.failed_type->name, enc_rval.encoded); + *enc_size = (enc_rval.encoded+7)/8; + ASN_STRUCT_FREE(asn_DEF_NR_RadioBearerConfig,rb_config); + ASN_STRUCT_FREE(asn_DEF_NR_CG_ConfigInfo,cg_configinfo); + ASN_STRUCT_FREE(asn_DEF_LTE_UE_CapabilityRAT_ContainerList,ue_cap_rat_container_list); + return RRC_OK; +} +//----------------------------------------------------------------------------- + + + + + + //----------------------------------------------------------------------------- void rrc_eNB_process_MeasurementReport( @@ -4334,6 +4583,8 @@ rrc_eNB_process_MeasurementReport( long ncell_max = -150; uint32_t earfcn_dl; uint8_t KeNB_star[32] = { 0 }; + char enc_buf[ASN_MAX_ENCODE_SIZE] = {0}; + int enc_size = 0; T(T_ENB_RRC_MEASUREMENT_REPORT, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame), T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti)); @@ -4392,17 +4643,41 @@ rrc_eNB_process_MeasurementReport( /* TODO: improve NR triggering */ if (measResults2->measId == 7) { - if (ue_context_pP->ue_context.Status != RRC_NR_NSA) { + if ((ue_context_pP->ue_context.Status != RRC_NR_NSA) && (ue_context_pP->ue_context.Status != RRC_NR_NSA_RECONFIGURED)) { MessageDef *msg; ue_context_pP->ue_context.Status = RRC_NR_NSA; - msg = itti_alloc_new_message(TASK_RRC_ENB, X2AP_ENDC_SGNB_ADDITION_REQ); - X2AP_ENDC_SGNB_ADDITION_REQ(msg).rnti = ctxt_pP->rnti; - LOG_I(RRC, - "[eNB %d] frame %d subframe %d: UE rnti %x switching to NSA mode\n", - ctxt_pP->module_id, ctxt_pP->frame, ctxt_pP->subframe, ctxt_pP->rnti); - itti_send_msg_to_task(TASK_X2AP, ENB_MODULE_ID_TO_INSTANCE(ctxt_pP->module_id), msg); - return; + if(is_en_dc_supported(ue_context_pP->ue_context.UE_Capability)) { + /** to add gNB as Secondary node CG-ConfigInfo to be added as per 36.423 r15 **/ + if(encode_CG_ConfigInfo(enc_buf,sizeof(enc_buf),ue_context_pP,&enc_size) == RRC_OK) + LOG_I(RRC,"CG-ConfigInfo encoded successfully\n"); + + msg = itti_alloc_new_message(TASK_RRC_ENB, X2AP_ENDC_SGNB_ADDITION_REQ); + memset(&(X2AP_ENDC_SGNB_ADDITION_REQ(msg)), 0, sizeof(x2ap_ENDC_sgnb_addition_req_t)); + X2AP_ENDC_SGNB_ADDITION_REQ(msg).rnti = ctxt_pP->rnti; + memcpy(X2AP_ENDC_SGNB_ADDITION_REQ(msg).rrc_buffer,enc_buf,enc_size); + X2AP_ENDC_SGNB_ADDITION_REQ(msg).rrc_buffer_size = enc_size; + X2AP_ENDC_SGNB_ADDITION_REQ(msg).target_physCellId + = measResults2->measResultNeighCells->choice.measResultListEUTRA.list.array[0]->physCellId; + //For the moment we have a single E-RAB which will be the one to be added to the gNB + //Not sure how to select bearers to be added if there are multiple. + X2AP_ENDC_SGNB_ADDITION_REQ(msg).nb_e_rabs_tobeadded = 1; + + for (int e_rab=0; e_rab < X2AP_ENDC_SGNB_ADDITION_REQ(msg).nb_e_rabs_tobeadded; e_rab++) { + X2AP_ENDC_SGNB_ADDITION_REQ(msg).e_rabs_tobeadded[e_rab].e_rab_id = ue_context_pP->ue_context.e_rab[e_rab].param.e_rab_id; + X2AP_ENDC_SGNB_ADDITION_REQ(msg).e_rabs_tobeadded[e_rab].gtp_teid = ue_context_pP->ue_context.e_rab[e_rab].param.gtp_teid; + X2AP_ENDC_SGNB_ADDITION_REQ(msg).e_rabs_tobeadded[e_rab].drb_ID = ue_context_pP->ue_context.DRB_configList->list.array[e_rab]->drb_Identity; + memcpy(&X2AP_ENDC_SGNB_ADDITION_REQ(msg).e_rabs_tobeadded[e_rab].sgw_addr, + &ue_context_pP->ue_context.e_rab[e_rab].param.sgw_addr, + sizeof(transport_layer_addr_t)); + } + + LOG_I(RRC, + "[eNB %d] frame %d subframe %d: UE rnti %x switching to NSA mode\n", + ctxt_pP->module_id, ctxt_pP->frame, ctxt_pP->subframe, ctxt_pP->rnti); + itti_send_msg_to_task(TASK_X2AP, ENB_MODULE_ID_TO_INSTANCE(ctxt_pP->module_id), msg); + return; + } } } @@ -4520,6 +4795,7 @@ rrc_eNB_process_MeasurementReport( } } + //----------------------------------------------------------------------------- void rrc_eNB_generate_HandoverPreparationInformation( @@ -5512,7 +5788,8 @@ rrc_eNB_generate_HO_RRCConnectionReconfiguration(const protocol_ctxt_t *const ct (LTE_SchedulingInfo_MBMS_r14_t *) NULL, (struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL, (LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL, - (LTE_MBSFN_AreaInfoList_r9_t *) NULL + (LTE_MBSFN_AreaInfoList_r9_t *) NULL, + (LTE_MBSFNAreaConfiguration_r9_t*) NULL ); // Configure target eNB SRB2 /// SRB2 @@ -6047,6 +6324,7 @@ rrc_eNB_generate_HO_RRCConnectionReconfiguration(const protocol_ctxt_t *const ct ue_context_pP->ue_context.e_rab[i].param.nas_pdu.buffer = NULL; } } + LOG_I(RRC, "[eNB %d] Frame %d, Logical Channel DL-DCCH, Generate RRCConnectionReconfiguration handover (bytes %d, UE id %x)\n", ctxt_pP->module_id, ctxt_pP->frame, size, ue_context_pP->ue_context.rnti); @@ -6191,7 +6469,8 @@ rrc_eNB_configure_rbs_handover(struct rrc_eNB_ue_context_s *ue_context_p, protoc (LTE_SchedulingInfo_MBMS_r14_t *) NULL, (struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL, (LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL, - (LTE_MBSFN_AreaInfoList_r9_t *) NULL + (LTE_MBSFN_AreaInfoList_r9_t *) NULL, + (LTE_MBSFNAreaConfiguration_r9_t*) NULL ); } @@ -6217,10 +6496,8 @@ rrc_eNB_process_RRCConnectionReconfigurationComplete( LTE_SRB_ToAddModList_t *SRB_configList = ue_context_pP->ue_context.SRB_configList2[xid]; LTE_DRB_ToReleaseList_t *DRB_Release_configList2 = ue_context_pP->ue_context.DRB_Release_configList2[xid]; LTE_DRB_Identity_t *drb_id_p = NULL; - ue_context_pP->ue_context.ue_reestablishment_timer = 0; ue_context_pP->ue_context.ue_rrc_inactivity_timer = 1; // reset rrc inactivity timer - /* CDRX: activated when RRC Connection Reconfiguration Complete is received */ rnti_t rnti = ue_context_pP->ue_id_rnti; module_id_t module_id = ctxt_pP->module_id; @@ -6241,8 +6518,8 @@ rrc_eNB_process_RRCConnectionReconfigurationComplete( LOG_I(RRC, "CDRX configuration activated after RRC Connection Reconfiguration Complete reception\n"); } } - /* End of CDRX processing */ + /* End of CDRX processing */ T(T_ENB_RRC_CONNECTION_RECONFIGURATION_COMPLETE, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame), @@ -6409,7 +6686,8 @@ rrc_eNB_process_RRCConnectionReconfigurationComplete( (LTE_SchedulingInfo_MBMS_r14_t *) NULL, (struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL, (LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL, - (LTE_MBSFN_AreaInfoList_r9_t *) NULL + (LTE_MBSFN_AreaInfoList_r9_t *) NULL, + (LTE_MBSFNAreaConfiguration_r9_t*) NULL ); } } else { // remove LCHAN from MAC/PHY @@ -6468,7 +6746,8 @@ rrc_eNB_process_RRCConnectionReconfigurationComplete( (LTE_SchedulingInfo_MBMS_r14_t *) NULL, (struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL, (LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL, - (LTE_MBSFN_AreaInfoList_r9_t *) NULL + (LTE_MBSFN_AreaInfoList_r9_t *) NULL, + (LTE_MBSFNAreaConfiguration_r9_t*) NULL ); } } // end else of if (ue_context_pP->ue_context.DRB_active[drb_id] == 0) @@ -6503,7 +6782,6 @@ rrc_eNB_process_RRCConnectionReconfigurationComplete( ue_context_pP->ue_context.nr_capabilities_requested = 1; rrc_eNB_generate_NR_UECapabilityEnquiry(ctxt_pP, ue_context_pP); } - } //----------------------------------------------------------------------------- @@ -6631,7 +6909,8 @@ rrc_eNB_generate_RRCConnectionSetup( (LTE_SchedulingInfo_MBMS_r14_t *) NULL, (struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL, (LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL, - (LTE_MBSFN_AreaInfoList_r9_t *) NULL + (LTE_MBSFN_AreaInfoList_r9_t *) NULL, + (LTE_MBSFNAreaConfiguration_r9_t*) NULL ); break; } @@ -7326,33 +7605,34 @@ is_en_dc_supported( */ #define NCE nonCriticalExtension return c != NULL - && c->NCE != NULL - && c->NCE->NCE != NULL - && c->NCE->NCE->NCE != NULL - && c->NCE->NCE->NCE->NCE != NULL - && c->NCE->NCE->NCE->NCE->NCE != NULL - && c->NCE->NCE->NCE->NCE->NCE->NCE != NULL - && c->NCE->NCE->NCE->NCE->NCE->NCE->NCE != NULL - && c->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE != NULL - && c->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE != NULL - && c->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE != NULL - && c->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE != NULL - && c->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE != NULL - && c->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE != NULL - && c->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE != NULL - && c->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE != NULL - && c->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE != NULL - && c->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE != NULL - && c->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE != NULL - && c->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE != NULL - && c->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE != NULL - && c->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE != NULL - && c->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE != NULL - && c->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE != NULL - && c->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE != NULL - && c->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->irat_ParametersNR_r15 != NULL - && c->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->irat_ParametersNR_r15->en_DC_r15 != NULL - && *c->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->irat_ParametersNR_r15->en_DC_r15 == LTE_IRAT_ParametersNR_r15__en_DC_r15_supported; + && c->NCE != NULL + && c->NCE->NCE != NULL + && c->NCE->NCE->NCE != NULL + && c->NCE->NCE->NCE->NCE != NULL + && c->NCE->NCE->NCE->NCE->NCE != NULL + && c->NCE->NCE->NCE->NCE->NCE->NCE != NULL + && c->NCE->NCE->NCE->NCE->NCE->NCE->NCE != NULL + && c->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE != NULL + && c->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE != NULL + && c->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE != NULL + && c->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE != NULL + && c->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE != NULL + && c->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE != NULL + && c->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE != NULL + && c->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE != NULL + && c->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE != NULL + && c->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE != NULL + && c->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE != NULL + && c->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE != NULL + && c->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE != NULL + && c->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE != NULL + && c->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE != NULL + && c->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE != NULL + && c->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE != NULL + && c->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->irat_ParametersNR_r15 != NULL + && c->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->irat_ParametersNR_r15->en_DC_r15 != NULL + && *c->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->NCE->irat_ParametersNR_r15->en_DC_r15 == + LTE_IRAT_ParametersNR_r15__en_DC_r15_supported; #undef NCE } @@ -7528,7 +7808,37 @@ rrc_eNB_decode_dcch( LOG_I(RRC, PROTOCOL_RRC_CTXT_UE_FMT" UE State = RRC_HO_EXECUTION (xid %ld)\n", PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.rrc_TransactionIdentifier); - } else { + } + else if(ue_context_p->ue_context.Status == RRC_NR_NSA){ + //Looking for a condition to trigger S1AP E-RAB-Modification-indication, based on the reception of RRCConnectionReconfigurationComplete + //including NR specific elements. + if(ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.criticalExtensions.choice.rrcConnectionReconfigurationComplete_r8. + nonCriticalExtension!=NULL) { + if(ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.criticalExtensions.choice.rrcConnectionReconfigurationComplete_r8. + nonCriticalExtension->nonCriticalExtension!=NULL) { + if(ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.criticalExtensions.choice.rrcConnectionReconfigurationComplete_r8. + nonCriticalExtension->nonCriticalExtension->nonCriticalExtension!=NULL) { + if(ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.criticalExtensions.choice.rrcConnectionReconfigurationComplete_r8. + nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension!=NULL) { + if(ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.criticalExtensions.choice.rrcConnectionReconfigurationComplete_r8. + nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension!=NULL) { + if (ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.criticalExtensions.choice.rrcConnectionReconfigurationComplete_r8. + nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension!=NULL) { + if(ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.criticalExtensions.choice.rrcConnectionReconfigurationComplete_r8. + nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension + ->scg_ConfigResponseNR_r15!=NULL) { + ue_context_p->ue_context.Status = RRC_NR_NSA_RECONFIGURED; + /*Trigger E-RAB Modification Indication */ + rrc_eNB_send_E_RAB_Modification_Indication(ctxt_pP, ue_context_p); + } + } + } + } + } + } + } + } + else { dedicated_DRB = 0; ue_context_p->ue_context.Status = RRC_RECONFIGURED; LOG_I(RRC, @@ -7537,6 +7847,7 @@ rrc_eNB_decode_dcch( } ue_context_p->ue_context.reestablishment_xid = -1; + } else { dedicated_DRB = 1; ue_context_p->ue_context.Status = RRC_RECONFIGURED; @@ -7884,15 +8195,74 @@ rrc_eNB_decode_dcch( } LOG_I(RRC, "got UE capabilities for UE %x\n", ctxt_pP->rnti); - int eutra_index = -1; for (i = 0; i < ul_dcch_msg->message.choice.c1.choice.ueCapabilityInformation.criticalExtensions.choice.c1.choice.ueCapabilityInformation_r8.ue_CapabilityRAT_ContainerList.list.count; i++) { - if (ul_dcch_msg->message.choice.c1.choice.ueCapabilityInformation.criticalExtensions.choice.c1.choice.ueCapabilityInformation_r8.ue_CapabilityRAT_ContainerList.list.array[i]->rat_Type == LTE_RAT_Type_eutra) { + if (ul_dcch_msg->message.choice.c1.choice.ueCapabilityInformation.criticalExtensions.choice.c1.choice.ueCapabilityInformation_r8.ue_CapabilityRAT_ContainerList.list.array[i]->rat_Type == + LTE_RAT_Type_nr) { + if(ue_context_p->ue_context.UE_Capability_nr) { + ASN_STRUCT_FREE(asn_DEF_NR_UE_NR_Capability,ue_context_p->ue_context.UE_Capability_nr); + ue_context_p->ue_context.UE_Capability_nr = 0; + } + + dec_rval = uper_decode(NULL, + &asn_DEF_NR_UE_NR_Capability, + (void **)&ue_context_p->ue_context.UE_Capability_nr, + ul_dcch_msg->message.choice.c1.choice.ueCapabilityInformation.criticalExtensions.choice.c1.choice.ueCapabilityInformation_r8.ue_CapabilityRAT_ContainerList.list.array[i]->ueCapabilityRAT_Container.buf, + ul_dcch_msg->message.choice.c1.choice.ueCapabilityInformation.criticalExtensions.choice.c1.choice.ueCapabilityInformation_r8.ue_CapabilityRAT_ContainerList.list.array[i]->ueCapabilityRAT_Container.size, + 0, 0); + + if (LOG_DEBUGFLAG(DEBUG_ASN1)) { + xer_fprint(stdout, &asn_DEF_NR_UE_NR_Capability, ue_context_p->ue_context.UE_Capability_nr); + } + + if ((dec_rval.code != RC_OK) && (dec_rval.consumed == 0)) { + LOG_E(RRC, PROTOCOL_RRC_CTXT_UE_FMT" Failed to decode nr UE capabilities (%zu bytes)\n", + PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),dec_rval.consumed); + ASN_STRUCT_FREE(asn_DEF_NR_UE_NR_Capability,ue_context_p->ue_context.UE_Capability_nr); + ue_context_p->ue_context.UE_Capability_nr = 0; + } + + ue_context_p->ue_context.UE_NR_Capability_size = + ul_dcch_msg->message.choice.c1.choice.ueCapabilityInformation.criticalExtensions.choice.c1.choice.ueCapabilityInformation_r8.ue_CapabilityRAT_ContainerList.list.array[i]->ueCapabilityRAT_Container.size; + } + + if (ul_dcch_msg->message.choice.c1.choice.ueCapabilityInformation.criticalExtensions.choice.c1.choice.ueCapabilityInformation_r8.ue_CapabilityRAT_ContainerList.list.array[i]->rat_Type == + LTE_RAT_Type_eutra_nr) { + if(ue_context_p->ue_context.UE_Capability_MRDC) { + ASN_STRUCT_FREE(asn_DEF_NR_UE_MRDC_Capability,ue_context_p->ue_context.UE_Capability_MRDC); + ue_context_p->ue_context.UE_Capability_MRDC = 0; + } + + dec_rval = uper_decode(NULL, + &asn_DEF_NR_UE_MRDC_Capability, + (void **)&ue_context_p->ue_context.UE_Capability_MRDC, + ul_dcch_msg->message.choice.c1.choice.ueCapabilityInformation.criticalExtensions.choice.c1.choice.ueCapabilityInformation_r8.ue_CapabilityRAT_ContainerList.list.array[i]->ueCapabilityRAT_Container.buf, + ul_dcch_msg->message.choice.c1.choice.ueCapabilityInformation.criticalExtensions.choice.c1.choice.ueCapabilityInformation_r8.ue_CapabilityRAT_ContainerList.list.array[i]->ueCapabilityRAT_Container.size, + 0, 0); + + if (LOG_DEBUGFLAG(DEBUG_ASN1)) { + xer_fprint(stdout, &asn_DEF_NR_UE_MRDC_Capability, ue_context_p->ue_context.UE_Capability_MRDC); + } + + if ((dec_rval.code != RC_OK) && (dec_rval.consumed == 0)) { + LOG_E(RRC, PROTOCOL_RRC_CTXT_UE_FMT" Failed to decode MRDC UE capabilities (%zu bytes)\n", + PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),dec_rval.consumed); + ASN_STRUCT_FREE(asn_DEF_NR_UE_MRDC_Capability,ue_context_p->ue_context.UE_Capability_MRDC); + ue_context_p->ue_context.UE_Capability_MRDC = 0; + } + + ue_context_p->ue_context.UE_MRDC_Capability_size = + ul_dcch_msg->message.choice.c1.choice.ueCapabilityInformation.criticalExtensions.choice.c1.choice.ueCapabilityInformation_r8.ue_CapabilityRAT_ContainerList.list.array[i]->ueCapabilityRAT_Container.size; + } + + if (ul_dcch_msg->message.choice.c1.choice.ueCapabilityInformation.criticalExtensions.choice.c1.choice.ueCapabilityInformation_r8.ue_CapabilityRAT_ContainerList.list.array[i]->rat_Type == + LTE_RAT_Type_eutra) { if (eutra_index != -1) { LOG_E(RRC, "fatal: more than 1 eutra capability\n"); exit(1); } + eutra_index = i; } } @@ -7914,7 +8284,8 @@ rrc_eNB_decode_dcch( ul_dcch_msg->message.choice.c1.choice.ueCapabilityInformation.criticalExtensions.choice.c1.choice.ueCapabilityInformation_r8.ue_CapabilityRAT_ContainerList.list.array[eutra_index]->ueCapabilityRAT_Container.buf, ul_dcch_msg->message.choice.c1.choice.ueCapabilityInformation.criticalExtensions.choice.c1.choice.ueCapabilityInformation_r8.ue_CapabilityRAT_ContainerList.list.array[eutra_index]->ueCapabilityRAT_Container.size, 0, 0); - ue_context_p->ue_context.UE_Capability_size = ul_dcch_msg->message.choice.c1.choice.ueCapabilityInformation.criticalExtensions.choice.c1.choice.ueCapabilityInformation_r8.ue_CapabilityRAT_ContainerList.list.array[eutra_index]->ueCapabilityRAT_Container.size; + ue_context_p->ue_context.UE_Capability_size = + ul_dcch_msg->message.choice.c1.choice.ueCapabilityInformation.criticalExtensions.choice.c1.choice.ueCapabilityInformation_r8.ue_CapabilityRAT_ContainerList.list.array[eutra_index]->ueCapabilityRAT_Container.size; if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) { xer_fprint(stdout, &asn_DEF_LTE_UE_EUTRA_Capability, ue_context_p->ue_context.UE_Capability); @@ -8012,6 +8383,8 @@ rrc_eNB_decode_dcch( case LTE_UL_DCCH_MessageType__c1_PR_mbmsCountingResponse_r10: T(T_ENB_RRC_MBMS_COUNTING_RESPONSE_R10, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame), T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti)); + LOG_E(RRC, "THINH [LTE_UL_DCCH_MessageType__c1_PR_mbmsCountingResponse_r10]\n"); + break; case LTE_UL_DCCH_MessageType__c1_PR_interFreqRSTDMeasurementIndication_r10: @@ -8031,36 +8404,54 @@ rrc_eNB_decode_dcch( return 0; //TTN for D2D } else if (ul_dcch_msg->message.present == LTE_UL_DCCH_MessageType_PR_messageClassExtension) { - LOG_I(RRC, "THINH [LTE_UL_DCCH_MessageType_PR_messageClassExtension]\n"); + LOG_I(RRC, "[LTE_UL_DCCH_MessageType_PR_messageClassExtension]\n"); switch (ul_dcch_msg->message.choice.messageClassExtension.present) { case LTE_UL_DCCH_MessageType__messageClassExtension_PR_NOTHING: /* No components present */ break; case LTE_UL_DCCH_MessageType__messageClassExtension_PR_c2: //SidelinkUEInformation - //case UL_DCCH_MessageType__messageClassExtension__c2_PR_sidelinkUEInformation_r12: //SidelinkUEInformation - LOG_I(RRC,"THINH [LTE_UL_DCCH_MessageType__messageClassExtension_PR_c2]\n"); - LOG_DUMPMSG(RRC,DEBUG_RRC,(char *)Rx_sdu,sdu_sizeP, + if(ul_dcch_msg->message.choice.messageClassExtension.choice.c2.present == + LTE_UL_DCCH_MessageType__messageClassExtension__c2_PR_scgFailureInformationNR_r15){ + if (ul_dcch_msg->message.choice.messageClassExtension.choice.c2.choice.scgFailureInformationNR_r15. + criticalExtensions.present == LTE_SCGFailureInformationNR_r15__criticalExtensions_PR_c1){ + if (ul_dcch_msg->message.choice.messageClassExtension.choice.c2.choice.scgFailureInformationNR_r15.criticalExtensions. + choice.c1.present == LTE_SCGFailureInformationNR_r15__criticalExtensions__c1_PR_scgFailureInformationNR_r15){ + if (ul_dcch_msg->message.choice.messageClassExtension.choice.c2.choice.scgFailureInformationNR_r15.criticalExtensions. + choice.c1.choice.scgFailureInformationNR_r15.failureReportSCG_NR_r15!=NULL) { + LOG_E(RRC, "Received NR scgFailureInformation from UE, failure type: %ld \n", + ul_dcch_msg->message.choice.messageClassExtension.choice.c2.choice.scgFailureInformationNR_r15.criticalExtensions. + choice.c1.choice.scgFailureInformationNR_r15.failureReportSCG_NR_r15->failureType_r15); + xer_fprint(stdout, &asn_DEF_LTE_UL_DCCH_Message, (void *)ul_dcch_msg); + } + } + } + } + else if(ul_dcch_msg->message.choice.messageClassExtension.choice.c2.present == LTE_UL_DCCH_MessageType__messageClassExtension__c2_PR_sidelinkUEInformation_r12){ + //case UL_DCCH_MessageType__messageClassExtension__c2_PR_sidelinkUEInformation_r12: //SidelinkUEInformation + LOG_I(RRC,"THINH [LTE_UL_DCCH_MessageType__messageClassExtension_PR_c2]\n"); + LOG_DUMPMSG(RRC,DEBUG_RRC,(char *)Rx_sdu,sdu_sizeP, "[MSG] RRC SidelinkUEInformation \n"); - MSC_LOG_RX_MESSAGE( - MSC_RRC_ENB, - MSC_RRC_UE, - Rx_sdu, - sdu_sizeP, - MSC_AS_TIME_FMT" SidelinkUEInformation UE %x size %u", - MSC_AS_TIME_ARGS(ctxt_pP), - ue_context_p->ue_context.rnti, - sdu_sizeP); - LOG_I(RRC, - PROTOCOL_RRC_CTXT_UE_FMT" RLC RB %02d --- RLC_DATA_IND %d bytes " - "(SidelinkUEInformation) ---> RRC_eNB\n", - PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP), - DCCH, + MSC_LOG_RX_MESSAGE( + MSC_RRC_ENB, + MSC_RRC_UE, + Rx_sdu, + sdu_sizeP, + MSC_AS_TIME_FMT" SidelinkUEInformation UE %x size %u", + MSC_AS_TIME_ARGS(ctxt_pP), + ue_context_p->ue_context.rnti, sdu_sizeP); - rrc_eNB_process_SidelinkUEInformation( - ctxt_pP, - ue_context_p, - &ul_dcch_msg->message.choice.messageClassExtension.choice.c2.choice.sidelinkUEInformation_r12); + LOG_I(RRC, + PROTOCOL_RRC_CTXT_UE_FMT" RLC RB %02d --- RLC_DATA_IND %d bytes " + "(SidelinkUEInformation) ---> RRC_eNB\n", + PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP), + DCCH, + sdu_sizeP); + rrc_eNB_process_SidelinkUEInformation( + ctxt_pP, + ue_context_p, + &ul_dcch_msg->message.choice.messageClassExtension.choice.c2.choice.sidelinkUEInformation_r12); + } break; default: @@ -8633,73 +9024,70 @@ void rrc_subframe_process(protocol_ctxt_t *const ctxt_pP, const int CC_id) { } void rrc_eNB_process_AdditionResponseInformation(const module_id_t enb_mod_idP, x2ap_ENDC_sgnb_addition_req_ACK_t *m) { + NR_CG_Config_t *CG_Config = NULL; + { + int i; + printf("%d: ", m->rrc_buffer_size); + for (i=0; irrc_buffer_size; i++) printf("%2.2x", (unsigned char)m->rrc_buffer[i]); - NR_CG_Config_t *CG_Config = NULL; + printf("\n"); + } + asn_dec_rval_t dec_rval = uper_decode_complete( NULL, + &asn_DEF_NR_CG_Config, + (void **)&CG_Config, + (uint8_t *)m->rrc_buffer, + (int) m->rrc_buffer_size);//m->rrc_buffer_size); - { - int i; - printf("%d: ", m->rrc_buffer_size); - for (i=0; irrc_buffer_size; i++) printf("%2.2x", (unsigned char)m->rrc_buffer[i]); - printf("\n"); + if ((dec_rval.code != RC_OK) && (dec_rval.consumed == 0)) { + AssertFatal(1==0,"NR_UL_DCCH_MESSAGE decode error\n"); + // free the memory + SEQUENCE_free( &asn_DEF_NR_CG_Config, CG_Config, 1 ); + return; + } - } - asn_dec_rval_t dec_rval = uper_decode_complete( NULL, - &asn_DEF_NR_CG_Config, - (void **)&CG_Config, - (uint8_t *)m->rrc_buffer, - (int) m->rrc_buffer_size);//m->rrc_buffer_size); + xer_fprint(stdout,&asn_DEF_NR_CG_Config, CG_Config); + // recreate enough of X2 EN-DC Container + AssertFatal(CG_Config->criticalExtensions.choice.c1->present == NR_CG_Config__criticalExtensions__c1_PR_cg_Config, + "CG_Config not present\n"); + OCTET_STRING_t *scg_CellGroupConfig = NULL; + OCTET_STRING_t *nr1_conf = NULL; - if ((dec_rval.code != RC_OK) && (dec_rval.consumed == 0)) { - AssertFatal(1==0,"NR_UL_DCCH_MESSAGE decode error\n"); - // free the memory - SEQUENCE_free( &asn_DEF_NR_CG_Config, CG_Config, 1 ); - return; - } - xer_fprint(stdout,&asn_DEF_NR_CG_Config, CG_Config); - // recreate enough of X2 EN-DC Container - - AssertFatal(CG_Config->criticalExtensions.choice.c1->present == NR_CG_Config__criticalExtensions__c1_PR_cg_Config, - "CG_Config not present\n"); - - OCTET_STRING_t *scg_CellGroupConfig = NULL; - OCTET_STRING_t *nr1_conf = NULL; - - if(CG_Config->criticalExtensions.choice.c1->choice.cg_Config->scg_CellGroupConfig){ - scg_CellGroupConfig = CG_Config->criticalExtensions.choice.c1->choice.cg_Config->scg_CellGroupConfig; + if(CG_Config->criticalExtensions.choice.c1->choice.cg_Config->scg_CellGroupConfig) { + scg_CellGroupConfig = CG_Config->criticalExtensions.choice.c1->choice.cg_Config->scg_CellGroupConfig; #ifdef DEBUG_SCG_CONFIG - { - int size_s = CG_Config->criticalExtensions.choice.c1->choice.cg_Config->scg_CellGroupConfig->size; - int i; - LOG_I(RRC, "Dumping scg_CellGroupConfig: %d", size_s); - for (i=0; icriticalExtensions.choice.c1->choice.cg_Config->scg_CellGroupConfig->buf[i]); - printf("\n"); + { + int size_s = CG_Config->criticalExtensions.choice.c1->choice.cg_Config->scg_CellGroupConfig->size; + int i; + LOG_I(RRC, "Dumping scg_CellGroupConfig: %d", size_s); - } + for (i=0; icriticalExtensions.choice.c1->choice.cg_Config->scg_CellGroupConfig->buf[i]); + + printf("\n"); + } #endif + } else { + LOG_W(RRC, "SCG Cell group configuration is not present in the Addition Response message \n"); + return; + } - } - else{ - LOG_W(RRC, "SCG Cell group configuration is not present in the Addition Response message \n"); - return; - } - if(CG_Config->criticalExtensions.choice.c1->choice.cg_Config->scg_RB_Config){ - nr1_conf = CG_Config->criticalExtensions.choice.c1->choice.cg_Config->scg_RB_Config; + if(CG_Config->criticalExtensions.choice.c1->choice.cg_Config->scg_RB_Config) { + nr1_conf = CG_Config->criticalExtensions.choice.c1->choice.cg_Config->scg_RB_Config; #ifdef DEBUG_SCG_CONFIG - { - int size_s = CG_Config->criticalExtensions.choice.c1->choice.cg_Config->scg_RB_Config->size; - int i; - LOG_I(RRC, "Dumping scg_RB_Config: %d", size_s); - for (i=0; icriticalExtensions.choice.c1->choice.cg_Config->scg_RB_Config->buf[i]); - printf("\n"); + { + int size_s = CG_Config->criticalExtensions.choice.c1->choice.cg_Config->scg_RB_Config->size; + int i; + LOG_I(RRC, "Dumping scg_RB_Config: %d", size_s); - } + for (i=0; icriticalExtensions.choice.c1->choice.cg_Config->scg_RB_Config->buf[i]); + + printf("\n"); + } #endif - } - else{ - LOG_W(RRC, "SCG RB configuration is not present in the Addition Response message \n"); - return; - } + } else { + LOG_W(RRC, "SCG RB configuration is not present in the Addition Response message \n"); + return; + } protocol_ctxt_t ctxt; rrc_eNB_ue_context_t *ue_context; @@ -8707,24 +9095,46 @@ void rrc_eNB_process_AdditionResponseInformation(const module_id_t enb_mod_idP, int size; ue_context = rrc_eNB_get_ue_context(RC.rrc[enb_mod_idP], m->rnti); + if (ue_context) { + ue_context->ue_context.nb_of_modify_endc_e_rabs = m->nb_e_rabs_admitted_tobeadded; - PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt, + int j=0; + while(j < m->nb_e_rabs_admitted_tobeadded){ + for (int e_rab_idx=0; e_rab_idxue_context.setup_e_rabs; e_rab_idx++){ + //Update ue_context information with gNB's address and new GTP tunnel ID + if( ue_context->ue_context.e_rab[e_rab_idx].param.e_rab_id == m->e_rabs_admitted_tobeadded[j].e_rab_id){ + memcpy(ue_context->ue_context.gnb_gtp_endc_addrs[e_rab_idx].buffer, + m->e_rabs_admitted_tobeadded[j].gnb_addr.buffer, + m->e_rabs_admitted_tobeadded[j].gnb_addr.length); + ue_context->ue_context.gnb_gtp_endc_addrs[e_rab_idx].length = m->e_rabs_admitted_tobeadded[j].gnb_addr.length; + ue_context->ue_context.gnb_gtp_endc_teid[e_rab_idx] = m->e_rabs_admitted_tobeadded[j].gtp_teid; + ue_context->ue_context.e_rab[e_rab_idx].status = E_RAB_STATUS_TOMODIFY; + break; + } + } + j++; + } + + PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt, 0, ENB_FLAG_YES, m->rnti, 0, 0); - size = rrc_eNB_generate_RRCConnectionReconfiguration_endc(&ctxt, ue_context, buffer, 8192, scg_CellGroupConfig, nr1_conf); + size = rrc_eNB_generate_RRCConnectionReconfiguration_endc(&ctxt, ue_context, buffer, 8192, scg_CellGroupConfig, nr1_conf); - rrc_data_req(&ctxt, + rrc_data_req(&ctxt, DCCH, rrc_eNB_mui++, SDU_CONFIRM_NO, size, buffer, PDCP_TRANSMISSION_MODE_CONTROL); -} + } else { + LOG_E(F1AP, "no ue_context for RNTI %x, acknowledging release\n", m->rnti); + } +} //----------------------------------------------------------------------------- void *rrc_enb_process_itti_msg(void *notUsed) { @@ -9005,11 +9415,10 @@ void *rrc_enb_process_itti_msg(void *notUsed) { } case X2AP_ENDC_SGNB_ADDITION_REQ_ACK: { - rrc_eNB_process_AdditionResponseInformation(ENB_INSTANCE_TO_MODULE_ID(instance), &X2AP_ENDC_SGNB_ADDITION_REQ_ACK(msg_p)); - break; + rrc_eNB_process_AdditionResponseInformation(ENB_INSTANCE_TO_MODULE_ID(instance), &X2AP_ENDC_SGNB_ADDITION_REQ_ACK(msg_p)); + break; } - /* Messages from eNB app */ case RRC_CONFIGURATION_REQ: LOG_I(RRC, "[eNB %d] Received %s : %p\n", instance, msg_name_p, &RRC_CONFIGURATION_REQ(msg_p)); @@ -9029,36 +9438,36 @@ void *rrc_enb_process_itti_msg(void *notUsed) { break; case M2AP_SETUP_RESP: - rrc_eNB_process_M2AP_SETUP_RESP(&ctxt,0/*CC_id*/,ENB_INSTANCE_TO_MODULE_ID(instance),&M2AP_SETUP_RESP(msg_p)); + rrc_eNB_process_M2AP_SETUP_RESP(&ctxt,0/*CC_id*/,ENB_INSTANCE_TO_MODULE_ID(instance),&M2AP_SETUP_RESP(msg_p)); break; case M2AP_MBMS_SCHEDULING_INFORMATION: - rrc_eNB_process_M2AP_MBMS_SCHEDULING_INFORMATION(&ctxt,0/*CC_id*/,ENB_INSTANCE_TO_MODULE_ID(instance),&M2AP_MBMS_SCHEDULING_INFORMATION(msg_p)); - break; + rrc_eNB_process_M2AP_MBMS_SCHEDULING_INFORMATION(&ctxt,0/*CC_id*/,ENB_INSTANCE_TO_MODULE_ID(instance),&M2AP_MBMS_SCHEDULING_INFORMATION(msg_p)); + break; case M2AP_MBMS_SESSION_START_REQ: - rrc_eNB_process_M2AP_MBMS_SESSION_START_REQ(&ctxt,0/*CC_id*/,ENB_INSTANCE_TO_MODULE_ID(instance),&M2AP_MBMS_SESSION_START_REQ(msg_p)); - break; + rrc_eNB_process_M2AP_MBMS_SESSION_START_REQ(&ctxt,0/*CC_id*/,ENB_INSTANCE_TO_MODULE_ID(instance),&M2AP_MBMS_SESSION_START_REQ(msg_p)); + break; case M2AP_MBMS_SESSION_STOP_REQ: - rrc_eNB_process_M2AP_MBMS_SESSION_STOP_REQ(&ctxt,&M2AP_MBMS_SESSION_STOP_REQ(msg_p)); - break; + rrc_eNB_process_M2AP_MBMS_SESSION_STOP_REQ(&ctxt,&M2AP_MBMS_SESSION_STOP_REQ(msg_p)); + break; case M2AP_RESET: - rrc_eNB_process_M2AP_RESET(&ctxt,&M2AP_RESET(msg_p)); - break; + rrc_eNB_process_M2AP_RESET(&ctxt,&M2AP_RESET(msg_p)); + break; case M2AP_ENB_CONFIGURATION_UPDATE_ACK: - rrc_eNB_process_M2AP_ENB_CONFIGURATION_UPDATE_ACK(&ctxt,&M2AP_ENB_CONFIGURATION_UPDATE_ACK(msg_p)); - break; + rrc_eNB_process_M2AP_ENB_CONFIGURATION_UPDATE_ACK(&ctxt,&M2AP_ENB_CONFIGURATION_UPDATE_ACK(msg_p)); + break; case M2AP_ERROR_INDICATION: - rrc_eNB_process_M2AP_ERROR_INDICATION(&ctxt,&M2AP_ERROR_INDICATION(msg_p)); - break; + rrc_eNB_process_M2AP_ERROR_INDICATION(&ctxt,&M2AP_ERROR_INDICATION(msg_p)); + break; case M2AP_MBMS_SERVICE_COUNTING_REQ: - rrc_eNB_process_M2AP_MBMS_SERVICE_COUNTING_REQ(&ctxt,&M2AP_MBMS_SERVICE_COUNTING_REQ(msg_p)); - break; + rrc_eNB_process_M2AP_MBMS_SERVICE_COUNTING_REQ(&ctxt,&M2AP_MBMS_SERVICE_COUNTING_REQ(msg_p)); + break; case M2AP_MCE_CONFIGURATION_UPDATE: rrc_eNB_process_M2AP_MCE_CONFIGURATION_UPDATE(&ctxt,&M2AP_MCE_CONFIGURATION_UPDATE(msg_p)); @@ -9095,17 +9504,16 @@ rrc_enb_task( //----------------------------------------------------------------------------- { rrc_enb_init(); - itti_mark_task_ready(TASK_RRC_ENB); LOG_I(RRC,"Entering main loop of RRC message task\n"); while (1) { (void) rrc_enb_process_itti_msg(NULL); -{ - //extern volatile int go_nr; - void rrc_go_nr(void); - //if (go_nr) rrc_go_nr(); -} + { + //extern volatile int go_nr; + void rrc_go_nr(void); + //if (go_nr) rrc_go_nr(); + } } } diff --git a/openair2/RRC/LTE/rrc_eNB_GTPV1U.c b/openair2/RRC/LTE/rrc_eNB_GTPV1U.c index 6bbdef181b..1025d46f62 100644 --- a/openair2/RRC/LTE/rrc_eNB_GTPV1U.c +++ b/openair2/RRC/LTE/rrc_eNB_GTPV1U.c @@ -92,6 +92,7 @@ rrc_eNB_process_GTPV1U_CREATE_TUNNEL_RESP( } } + //------------------------------------------------------------------------------ boolean_t gtpv_data_req( diff --git a/openair2/RRC/LTE/rrc_eNB_GTPV1U.h b/openair2/RRC/LTE/rrc_eNB_GTPV1U.h index 00c7490359..6318ed4927 100644 --- a/openair2/RRC/LTE/rrc_eNB_GTPV1U.h +++ b/openair2/RRC/LTE/rrc_eNB_GTPV1U.h @@ -43,6 +43,13 @@ rrc_eNB_process_GTPV1U_CREATE_TUNNEL_RESP( uint8_t *inde_list ); +int +rrc_gNB_process_GTPV1U_CREATE_TUNNEL_RESP( + const protocol_ctxt_t *const ctxt_pP, + const gtpv1u_enb_create_tunnel_resp_t *const create_tunnel_resp_pP, + uint8_t *inde_list +); + /*! \fn rrc_eNB_send_GTPV1U_ENB_DELETE_TUNNEL_REQ(module_id_t enb_mod_idP, const rrc_eNB_ue_context_t* const ue_context_pP) *\brief Send GTPV1U_ENB_DELETE_TUNNEL_REQ message to GTPV1U to destroy all UE-related tunnels. *\param module_id Instance ID of eNB. diff --git a/openair2/RRC/LTE/rrc_eNB_M2AP.c b/openair2/RRC/LTE/rrc_eNB_M2AP.c index bd586dfc71..98a72895a0 100644 --- a/openair2/RRC/LTE/rrc_eNB_M2AP.c +++ b/openair2/RRC/LTE/rrc_eNB_M2AP.c @@ -63,6 +63,71 @@ rrc_M2AP_openair_rrc_top_init_MBMS(int eMBMS_active){ } +static uint8_t rrc_M2AP_do_MBSFNCountingRequest( + uint8_t Mod_id, + uint8_t sync_area, + uint8_t *buffer, + LTE_MCCH_Message_t *mcch_message, + LTE_MBMSCountingRequest_r10_t **mbsfnCoutingRequest, + const m2ap_mbms_service_counting_req_t *const m2ap_mbms_service_counting_req +) { + //int i,j,k; + + asn_enc_rval_t enc_rval; + //LTE_MBSFN_SubframeConfig_t *mbsfn_SubframeConfig1; + //LTE_PMCH_Info_r9_t *pmch_Info_1; + //LTE_MBMS_SessionInfo_r9_t *mbms_Session_1; + // MBMS_SessionInfo_r9_t *mbms_Session_2; + //eNB_RRC_INST *rrc = RC.rrc[Mod_id]; + //rrc_eNB_carrier_data_t *carrier = &rrc->carrier[0]; + memset(mcch_message,0,sizeof(LTE_MCCH_Message_t)); + //mcch_message->message.present = LTE_MCCH_MessageType_PR_c1; + mcch_message->message.present = LTE_MCCH_MessageType_PR_later; + //mcch_message->message.choice.c1.present = LTE_MCCH_MessageType__c1_PR_mbsfnAreaConfiguration_r9; + mcch_message->message.choice.later.present = LTE_MCCH_MessageType__later_PR_c2; + mcch_message->message.choice.later.choice.c2.present = LTE_MCCH_MessageType__later__c2_PR_mbmsCountingRequest_r10; + *mbsfnCoutingRequest = &mcch_message->message.choice.later.choice.c2.choice.mbmsCountingRequest_r10; + + + //LTE_CountingRequestList_r10_t countingRequestList_r10; // A_SEQUENCE_OF(struct LTE_CountingRequestInfo_r10) list; + struct LTE_CountingRequestInfo_r10 *lte_counting_request_info; //LTE_TMGI_r9_t tmgi_r10; + lte_counting_request_info = CALLOC(1,sizeof(struct LTE_CountingRequestInfo_r10)); + uint8_t TMGI[5] = {4,3,2,1,0}; + lte_counting_request_info->tmgi_r10.plmn_Id_r9.present = LTE_TMGI_r9__plmn_Id_r9_PR_plmn_Index_r9; + lte_counting_request_info->tmgi_r10.plmn_Id_r9.choice.plmn_Index_r9= 1; + memset(<e_counting_request_info->tmgi_r10.serviceId_r9,0,sizeof(OCTET_STRING_t)); + OCTET_STRING_fromBuf(<e_counting_request_info->tmgi_r10.serviceId_r9,(const char*)&TMGI[2],3); + ASN_SEQUENCE_ADD(&(*mbsfnCoutingRequest)->countingRequestList_r10.list,lte_counting_request_info); + + if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) { + xer_fprint(stdout,&asn_DEF_LTE_MCCH_Message,(void *)mcch_message); + } + + xer_fprint(stdout,&asn_DEF_LTE_MCCH_Message,(void *)mcch_message); + + enc_rval = uper_encode_to_buffer(&asn_DEF_LTE_MCCH_Message, + NULL, + (void *)mcch_message, + buffer, + 100); + + if(enc_rval.encoded == -1) { + LOG_I(RRC, "[eNB AssertFatal]ASN1 message encoding failed (%s, %lu)!\n", + enc_rval.failed_type->name, enc_rval.encoded); + return -1; + } + + LOG_I(RRC,"[eNB] MCCH Message Encoded %zd bits (%zd bytes)\n",enc_rval.encoded,(enc_rval.encoded+7)/8); + + if (enc_rval.encoded==-1) { + msg("[RRC] ASN1 : MCCH encoding failed for MBSFNAreaConfiguration\n"); + return(-1); + } + + return((enc_rval.encoded+7)/8); + +} + static uint8_t rrc_M2AP_do_MBSFNAreaConfig( uint8_t Mod_id, @@ -96,6 +161,7 @@ static uint8_t rrc_M2AP_do_MBSFNAreaConfig( mbsfn_SubframeConfig1->radioframeAllocationPeriod= m2ap_mbms_scheduling_information->mbms_area_config_list[i].mbms_sf_config_list[j].radioframe_allocation_period;//LTE_MBSFN_SubframeConfig__radioframeAllocationPeriod_n4; mbsfn_SubframeConfig1->radioframeAllocationOffset= m2ap_mbms_scheduling_information->mbms_area_config_list[i].mbms_sf_config_list[j].radioframe_allocation_offset; if(m2ap_mbms_scheduling_information->mbms_area_config_list[i].mbms_sf_config_list[j].is_four_sf){ + LOG_I(RRC,"is_four_sf\n"); mbsfn_SubframeConfig1->subframeAllocation.present= LTE_MBSFN_SubframeConfig__subframeAllocation_PR_fourFrames; mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf= MALLOC(3); mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf[2] = ((m2ap_mbms_scheduling_information->mbms_area_config_list[i].mbms_sf_config_list[j].subframe_allocation) & 0xFF); @@ -106,6 +172,7 @@ static uint8_t rrc_M2AP_do_MBSFNAreaConfig( }else { + LOG_I(RRC,"is_one_sf\n"); mbsfn_SubframeConfig1->subframeAllocation.present= LTE_MBSFN_SubframeConfig__subframeAllocation_PR_oneFrame; mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf= MALLOC(1); mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.size= 1; @@ -128,7 +195,8 @@ static uint8_t rrc_M2AP_do_MBSFNAreaConfig( */ pmch_Info_1->pmch_Config_r9.sf_AllocEnd_r9= m2ap_mbms_scheduling_information->mbms_area_config_list[i].pmch_config_list[j].allocated_sf_end; pmch_Info_1->pmch_Config_r9.dataMCS_r9= m2ap_mbms_scheduling_information->mbms_area_config_list[i].pmch_config_list[j].data_mcs; - pmch_Info_1->pmch_Config_r9.mch_SchedulingPeriod_r9= LTE_PMCH_Config_r9__mch_SchedulingPeriod_r9_rf16; + //pmch_Info_1->pmch_Config_r9.mch_SchedulingPeriod_r9= LTE_PMCH_Config_r9__mch_SchedulingPeriod_r9_rf16; + pmch_Info_1->pmch_Config_r9.mch_SchedulingPeriod_r9 = m2ap_mbms_scheduling_information->mbms_area_config_list[i].pmch_config_list[j].mch_scheduling_period; // MBMSs-SessionInfoList-r9 for(k=0; k < m2ap_mbms_scheduling_information->mbms_area_config_list[i].pmch_config_list[j].num_mbms_session_list; k++){ // pmch_Info_1->mbms_SessionInfoList_r9 = CALLOC(1,sizeof(struct MBMS_SessionInfoList_r9)); @@ -240,6 +308,9 @@ static void rrc_M2AP_init_MCCH( RC.rrc[enb_mod_idP]->carrier[CC_id].MCCH_MESSAGE = malloc(RC.rrc[enb_mod_idP]->carrier[CC_id].num_mbsfn_sync_area * sizeof(uint8_t *)); + + RC.rrc[enb_mod_idP]->carrier[CC_id].MCCH_MESSAGE_COUNTING = + malloc(RC.rrc[enb_mod_idP]->carrier[CC_id].num_mbsfn_sync_area * sizeof(uint8_t *)); for (sync_area = 0; sync_area < RC.rrc[enb_mod_idP]->carrier[CC_id].num_mbsfn_sync_area; sync_area++) { RC.rrc[enb_mod_idP]->carrier[CC_id].sizeof_MCCH_MESSAGE[sync_area] = 0; @@ -253,6 +324,20 @@ static void rrc_M2AP_init_MCCH( &RC.rrc[enb_mod_idP]->carrier[CC_id].mcch_message, m2ap_mbms_scheduling_information ); + + RC.rrc[enb_mod_idP]->carrier[CC_id].sizeof_MCCH_MESSAGE_COUNTING[sync_area] = 0; + RC.rrc[enb_mod_idP]->carrier[CC_id].MCCH_MESSAGE_COUNTING[sync_area] = (uint8_t *) malloc16(32); + AssertFatal(RC.rrc[enb_mod_idP]->carrier[CC_id].MCCH_MESSAGE_COUNTING[sync_area] != NULL, + "[eNB %d]init_MCCH: FATAL, no memory for MCCH MESSAGE allocated \n", enb_mod_idP); + + RC.rrc[enb_mod_idP]->carrier[CC_id].sizeof_MCCH_MESSAGE_COUNTING[sync_area] = rrc_M2AP_do_MBSFNCountingRequest(enb_mod_idP, + sync_area, + (uint8_t *)RC.rrc[enb_mod_idP]->carrier[CC_id].MCCH_MESSAGE_COUNTING[sync_area], + &RC.rrc[enb_mod_idP]->carrier[CC_id].mcch_counting, + &RC.rrc[enb_mod_idP]->carrier[CC_id].mcch_message_counting, + NULL//m2ap_mbms_scheduling_information + ); + LOG_I(RRC, "mcch message pointer %p for sync area %d \n", RC.rrc[enb_mod_idP]->carrier[CC_id].MCCH_MESSAGE[sync_area], sync_area); @@ -269,6 +354,8 @@ static void rrc_M2AP_init_MCCH( AssertFatal(RC.rrc[enb_mod_idP]->carrier[CC_id].sizeof_MCCH_MESSAGE[sync_area] != 255, "RC.rrc[enb_mod_idP]->carrier[CC_id].sizeof_MCCH_MESSAGE[sync_area] == 255"); RC.rrc[enb_mod_idP]->carrier[CC_id].MCCH_MESS[sync_area].Active = 1; + + RC.rrc[enb_mod_idP]->carrier[CC_id].MCCH_MESS_COUNTING[sync_area].Active = 1; } @@ -297,17 +384,348 @@ static void rrc_M2AP_init_MCCH( (LTE_MBSFN_AreaInfoList_r9_t *) NULL, (LTE_PMCH_InfoList_r9_t *) & (RC.rrc[enb_mod_idP]->carrier[CC_id].mcch_message->pmch_InfoList_r9), (LTE_SystemInformationBlockType1_v1310_IEs_t *)NULL, - 0, - (LTE_BCCH_DL_SCH_Message_MBMS_t *) NULL, - (LTE_SchedulingInfo_MBMS_r14_t *) NULL, - (struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL, - (LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL, - (LTE_MBSFN_AreaInfoList_r9_t *) NULL + 0, + (LTE_BCCH_DL_SCH_Message_MBMS_t *) NULL, + (LTE_SchedulingInfo_MBMS_r14_t *) NULL, + (struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL, + (LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL, + (LTE_MBSFN_AreaInfoList_r9_t *) NULL, + (LTE_MBSFNAreaConfiguration_r9_t*)(RC.rrc[enb_mod_idP]->carrier[CC_id].mcch_message) ); } return; } + + +static uint8_t rrc_M2AP_do_SIB1_MBMS_SIB13( + const protocol_ctxt_t *const ctxt_pP, + uint8_t Mod_id, + int CC_id, + const m2ap_setup_resp_t *const m2ap_setup_resp, + const m2ap_mbms_scheduling_information_t *const m2ap_mbms_scheduling_information +){ + + int i,j,l; + + eNB_RRC_INST *rrc = RC.rrc[ctxt_pP->module_id]; + rrc_eNB_carrier_data_t *carrier=&rrc->carrier[CC_id]; + + + struct LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member *sib13_part=NULL; + LTE_MBSFN_SubframeConfigList_t *MBSFNSubframeConfigList/*,*MBSFNSubframeConfigList_copy*/; + + asn_enc_rval_t enc_rval; + + LTE_BCCH_DL_SCH_Message_t *bcch_message = &RC.rrc[Mod_id]->carrier[CC_id].systemInformation; + LTE_BCCH_DL_SCH_Message_MBMS_t *bcch_message_fembms = &RC.rrc[Mod_id]->carrier[CC_id].siblock1_MBMS; + uint8_t *buffer; + uint8_t *buffer_fembms; + LTE_SystemInformationBlockType2_t **sib2; + + + LTE_MBSFN_AreaInfoList_r9_t *MBSFNArea_list/*,*MBSFNArea_list_copy*/; + LTE_SystemInformationBlockType13_r9_t **sib13 = &RC.rrc[Mod_id]->carrier[CC_id].sib13; + struct LTE_MBSFN_AreaInfo_r9 *MBSFN_Area1; + + LTE_SystemInformationBlockType1_MBMS_r14_t **sib1_MBMS = &RC.rrc[Mod_id]->carrier[CC_id].sib1_MBMS; + + + + if(ctxt_pP->brOption){ + buffer = RC.rrc[Mod_id]->carrier[CC_id].SIB23_BR; + sib2 = &RC.rrc[Mod_id]->carrier[CC_id].sib2_BR; + LOG_I(RRC,"Running SIB2/3 Encoding for eMTC\n"); + + + }else + { + buffer = RC.rrc[Mod_id]->carrier[CC_id].SIB23; + sib2 = &RC.rrc[Mod_id]->carrier[CC_id].sib2; + } + + buffer_fembms = RC.rrc[Mod_id]->carrier[CC_id].SIB1_MBMS; + + + if (bcch_message) { + //memset(bcch_message,0,sizeof(LTE_BCCH_DL_SCH_Message_t)); + } else { + LOG_E(RRC,"[eNB %d] BCCH_MESSAGE is null, exiting\n", Mod_id); + exit(-1); + } + + if (!sib2) { + LOG_E(RRC,"[eNB %d] sib2 is null, exiting\n", Mod_id); + exit(-1); + } + + if(!sib13){ + LOG_I(RRC,"[eNB %d] sib13 is null, it should get created\n",Mod_id); + } + + + if(!sib1_MBMS){ + LOG_I(RRC,"[eNB %d] sib1_MBMS is null, it should get created\n",Mod_id); + } + + //if (!sib3) { + // LOG_E(RRC,"[eNB %d] sib3 is null, exiting\n", Mod_id); + // exit(-1); + //} + + for (i=0; i < bcch_message->message.choice.c1.choice.systemInformation.criticalExtensions.choice.systemInformation_r8.sib_TypeAndInfo.list.count; i++) { + struct LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member *typeandinfo; + typeandinfo = bcch_message->message.choice.c1.choice.systemInformation.criticalExtensions.choice.systemInformation_r8.sib_TypeAndInfo.list.array[i]; + switch(typeandinfo->present) { + case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_NOTHING: + break; + case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib3: + break; + case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib4: + break; + case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib5: + break; + case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib6: + break; + case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib7: + break; + case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib8: + break; + case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib9: + break; + case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib10: + break; + case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib11: + break; + case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib12_v920: + break; + case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib13_v920: + *sib13=&typeandinfo->choice.sib13_v920; + (*sib13)->notificationConfig_r9.notificationRepetitionCoeff_r9=LTE_MBMS_NotificationConfig_r9__notificationRepetitionCoeff_r9_n2; + (*sib13)->notificationConfig_r9.notificationOffset_r9=0; + (*sib13)->notificationConfig_r9.notificationSF_Index_r9=1; + // MBSFN-AreaInfoList + MBSFNArea_list= &(*sib13)->mbsfn_AreaInfoList_r9;//CALLOC(1,sizeof(*MBSFNArea_list)); + memset(MBSFNArea_list,0,sizeof(*MBSFNArea_list)); + + for( j=0; j < m2ap_setup_resp->num_mcch_config_per_mbsfn; j++){ + // MBSFN Area 1 + MBSFN_Area1= CALLOC(1, sizeof(*MBSFN_Area1)); + MBSFN_Area1->mbsfn_AreaId_r9= m2ap_setup_resp->mcch_config_per_mbsfn[j].mbsfn_area; + MBSFN_Area1->non_MBSFNregionLength= m2ap_setup_resp->mcch_config_per_mbsfn[j].pdcch_length; + MBSFN_Area1->notificationIndicator_r9= 0; + MBSFN_Area1->mcch_Config_r9.mcch_RepetitionPeriod_r9= m2ap_setup_resp->mcch_config_per_mbsfn[j].repetition_period;//LTE_MBSFN_AreaInfo_r9__mcch_Config_r9__mcch_RepetitionPeriod_r9_rf32; + MBSFN_Area1->mcch_Config_r9.mcch_Offset_r9= m2ap_setup_resp->mcch_config_per_mbsfn[j].offset; // in accordance with mbsfn subframe configuration in sib2 + MBSFN_Area1->mcch_Config_r9.mcch_ModificationPeriod_r9= m2ap_setup_resp->mcch_config_per_mbsfn[j].modification_period; + + // Subframe Allocation Info + MBSFN_Area1->mcch_Config_r9.sf_AllocInfo_r9.buf= MALLOC(1); + MBSFN_Area1->mcch_Config_r9.sf_AllocInfo_r9.size= 1; + MBSFN_Area1->mcch_Config_r9.sf_AllocInfo_r9.buf[0]=m2ap_setup_resp->mcch_config_per_mbsfn[j].subframe_allocation_info<<2; // FDD: SF1 + MBSFN_Area1->mcch_Config_r9.sf_AllocInfo_r9.bits_unused= 2; + MBSFN_Area1->mcch_Config_r9.signallingMCS_r9= m2ap_setup_resp->mcch_config_per_mbsfn[j].mcs; + ASN_SEQUENCE_ADD(&MBSFNArea_list->list,MBSFN_Area1); + } + break; + case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib14_v1130: + break; + case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib15_v1130: + break; + case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib16_v1130: + break; + case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib17_v1250: + break; + case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib18_v1250: + break; + case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib19_v1250: + break; + case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib20_v1310: + break; + case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib21_v1430: + break; + case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib24_v1530: + break; + case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib25_v1530: + break; + case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib26_v1530: + break; + case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib2: + + LOG_I(RRC,"Adding MBSFN subframe Configuration 1 to SIB2, %p %p\n",&typeandinfo->choice.sib2,*sib2); + + for(j=0; j < m2ap_mbms_scheduling_information->num_mbms_area_config_list ; j++) { + + (&typeandinfo->choice.sib2)->mbsfn_SubframeConfigList = CALLOC(1,sizeof(struct LTE_MBSFN_SubframeConfigList)); + MBSFNSubframeConfigList = (&typeandinfo->choice.sib2)->mbsfn_SubframeConfigList; + + for(l=0; l < m2ap_mbms_scheduling_information->mbms_area_config_list[j].num_mbms_sf_config_list; l++){ + LTE_MBSFN_SubframeConfig_t *sib2_mbsfn_SubframeConfig1; + sib2_mbsfn_SubframeConfig1= CALLOC(1,sizeof(*sib2_mbsfn_SubframeConfig1)); + memset((void *)sib2_mbsfn_SubframeConfig1,0,sizeof(*sib2_mbsfn_SubframeConfig1)); + + sib2_mbsfn_SubframeConfig1->radioframeAllocationPeriod = m2ap_mbms_scheduling_information->mbms_area_config_list[j].mbms_sf_config_list[l].radioframe_allocation_period; + sib2_mbsfn_SubframeConfig1->radioframeAllocationOffset = m2ap_mbms_scheduling_information->mbms_area_config_list[j].mbms_sf_config_list[l].radioframe_allocation_offset; + + + if(m2ap_mbms_scheduling_information->mbms_area_config_list[j].mbms_sf_config_list[l].is_four_sf){ + LOG_I(RRC,"is_four_sf\n"); + sib2_mbsfn_SubframeConfig1->subframeAllocation.present= LTE_MBSFN_SubframeConfig__subframeAllocation_PR_fourFrames; + + sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf= MALLOC(3); + sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.size= 3; + sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.bits_unused= 0; + sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf[2] = ((m2ap_mbms_scheduling_information->mbms_area_config_list[j].mbms_sf_config_list[l].subframe_allocation) & 0xFF); + sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf[1] = ((m2ap_mbms_scheduling_information->mbms_area_config_list[j].mbms_sf_config_list[l].subframe_allocation>>8) & 0xFF); + sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf[0] = ((m2ap_mbms_scheduling_information->mbms_area_config_list[j].mbms_sf_config_list[l].subframe_allocation>>16) & 0xFF); + + }else{ + LOG_I(RRC,"is_one_sf\n"); + sib2_mbsfn_SubframeConfig1->subframeAllocation.present= LTE_MBSFN_SubframeConfig__subframeAllocation_PR_oneFrame; + sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf= MALLOC(1); + sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.size= 1; + sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.bits_unused= 2; + sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf[0]=(m2ap_mbms_scheduling_information->mbms_area_config_list[j].mbms_sf_config_list[l].subframe_allocation<<2); + + + } + + ASN_SEQUENCE_ADD(&MBSFNSubframeConfigList->list,sib2_mbsfn_SubframeConfig1); + } + } + + break; + + } + } + + + if(*sib13==NULL){ + sib13_part = CALLOC(1,sizeof(struct LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member)); + memset(sib13_part,0,sizeof(struct LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member)); + sib13_part->present = LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib13_v920; + + *sib13 = &sib13_part->choice.sib13_v920; + + (*sib13)->notificationConfig_r9.notificationRepetitionCoeff_r9=LTE_MBMS_NotificationConfig_r9__notificationRepetitionCoeff_r9_n2; + (*sib13)->notificationConfig_r9.notificationOffset_r9=0; + (*sib13)->notificationConfig_r9.notificationSF_Index_r9=1; + + // MBSFN-AreaInfoList + MBSFNArea_list= &(*sib13)->mbsfn_AreaInfoList_r9;//CALLOC(1,sizeof(*MBSFNArea_list)); + memset(MBSFNArea_list,0,sizeof(*MBSFNArea_list)); + + for( i=0; i < m2ap_setup_resp->num_mcch_config_per_mbsfn; i++){ + // MBSFN Area 1 + MBSFN_Area1= CALLOC(1, sizeof(*MBSFN_Area1)); + MBSFN_Area1->mbsfn_AreaId_r9= m2ap_setup_resp->mcch_config_per_mbsfn[i].mbsfn_area; + MBSFN_Area1->non_MBSFNregionLength= m2ap_setup_resp->mcch_config_per_mbsfn[i].pdcch_length; + MBSFN_Area1->notificationIndicator_r9= 0; + MBSFN_Area1->mcch_Config_r9.mcch_RepetitionPeriod_r9= m2ap_setup_resp->mcch_config_per_mbsfn[i].repetition_period;//LTE_MBSFN_AreaInfo_r9__mcch_Config_r9__mcch_RepetitionPeriod_r9_rf32; + MBSFN_Area1->mcch_Config_r9.mcch_Offset_r9= m2ap_setup_resp->mcch_config_per_mbsfn[i].offset; // in accordance with mbsfn subframe configuration in sib2 + MBSFN_Area1->mcch_Config_r9.mcch_ModificationPeriod_r9= m2ap_setup_resp->mcch_config_per_mbsfn[i].modification_period; + + // Subframe Allocation Info + MBSFN_Area1->mcch_Config_r9.sf_AllocInfo_r9.buf= MALLOC(1); + MBSFN_Area1->mcch_Config_r9.sf_AllocInfo_r9.size= 1; + MBSFN_Area1->mcch_Config_r9.sf_AllocInfo_r9.buf[0]=m2ap_setup_resp->mcch_config_per_mbsfn[i].subframe_allocation_info<<2; // FDD: SF1 + MBSFN_Area1->mcch_Config_r9.sf_AllocInfo_r9.bits_unused= 2; + MBSFN_Area1->mcch_Config_r9.signallingMCS_r9= m2ap_setup_resp->mcch_config_per_mbsfn[i].mcs; + ASN_SEQUENCE_ADD(&MBSFNArea_list->list,MBSFN_Area1); + } + + ASN_SEQUENCE_ADD(&bcch_message->message.choice.c1.choice.systemInformation.criticalExtensions.choice.systemInformation_r8.sib_TypeAndInfo.list, sib13_part); + + } + + *sib1_MBMS = &bcch_message_fembms->message.choice.c1.choice.systemInformationBlockType1_MBMS_r14; + + + if((*sib1_MBMS)->systemInformationBlockType13_r14==NULL){ + (*sib1_MBMS)->systemInformationBlockType13_r14 = CALLOC(1,sizeof(struct LTE_SystemInformationBlockType13_r9)); + memset((*sib1_MBMS)->systemInformationBlockType13_r14,0,sizeof(struct LTE_SystemInformationBlockType13_r9)); + } + + + memcpy((*sib1_MBMS)->systemInformationBlockType13_r14,*sib13,sizeof(struct LTE_SystemInformationBlockType13_r9)); + + enc_rval = uper_encode_to_buffer(&asn_DEF_LTE_BCCH_DL_SCH_Message_MBMS, + NULL, + (void *)bcch_message_fembms, + buffer_fembms, + 100); + AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %lu)!\n", + enc_rval.failed_type->name, enc_rval.encoded); + + LOG_I(RRC,"[eNB] MBMS SIB1_MBMS SystemInformation Encoded %zd bits (%zd bytes)\n",enc_rval.encoded,(enc_rval.encoded+7)/8); + + if (enc_rval.encoded==-1) { + msg("[RRC] ASN1 : SI encoding failed for SIB23\n"); + return(-1); + } + + + + //xer_fprint(stdout, &asn_DEF_LTE_BCCH_DL_SCH_Message, (void *)bcch_message); + + enc_rval = uper_encode_to_buffer(&asn_DEF_LTE_BCCH_DL_SCH_Message, + NULL, + (void *)bcch_message, + buffer, + 900); + AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %lu)!\n", + enc_rval.failed_type->name, enc_rval.encoded); + + LOG_I(RRC,"[eNB] MBMS SIB2 SystemInformation Encoded %zd bits (%zd bytes)\n",enc_rval.encoded,(enc_rval.encoded+7)/8); + + if (enc_rval.encoded==-1) { + msg("[RRC] ASN1 : SI encoding failed for SIB23\n"); + return(-1); + } + + carrier->MBMS_flag =1; + + if (NODE_IS_MONOLITHIC(rrc->node_type)) { + rrc_mac_config_req_eNB(ctxt_pP->module_id, CC_id, + 0,0,0,0,0, + 0, + 0xfffd,//rnti + (LTE_BCCH_BCH_Message_t *)NULL, + (LTE_RadioResourceConfigCommonSIB_t *) NULL, + (LTE_RadioResourceConfigCommonSIB_t *) NULL, + (struct LTE_PhysicalConfigDedicated *)NULL, + (LTE_SCellToAddMod_r10_t *)NULL, + //(struct LTE_PhysicalConfigDedicatedSCell_r10 *)NULL, + (LTE_MeasObjectToAddMod_t **) NULL, + (LTE_MAC_MainConfig_t *) NULL, + 0, + (struct LTE_LogicalChannelConfig *)NULL, + (LTE_MeasGapConfig_t *) NULL, + (LTE_TDD_Config_t *) NULL, + (LTE_MobilityControlInfo_t *)NULL, + (LTE_SchedulingInfoList_t *) NULL, + 0, NULL, + (LTE_AdditionalSpectrumEmission_t *)NULL, + (LTE_MBSFN_SubframeConfigList_t *) carrier->sib2->mbsfn_SubframeConfigList, + carrier->MBMS_flag, + (LTE_MBSFN_AreaInfoList_r9_t *) & carrier->sib13->mbsfn_AreaInfoList_r9, + (LTE_PMCH_InfoList_r9_t *) NULL + , + (LTE_SystemInformationBlockType1_v1310_IEs_t *)NULL + , + carrier->FeMBMS_flag, + (LTE_BCCH_DL_SCH_Message_MBMS_t *) NULL, + (LTE_SchedulingInfo_MBMS_r14_t *) NULL, + (struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL, + (LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL, + (LTE_MBSFN_AreaInfoList_r9_t *) NULL, + (LTE_MBSFNAreaConfiguration_r9_t*) NULL + ); + } + + RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_SIB23 = ((enc_rval.encoded+7)/8); + + return 0; +} //static uint8_t rrc_M2AP_do_SIB1( // const protocol_ctxt_t *const ctxt_pP, // uint8_t Mod_id, @@ -501,21 +919,23 @@ static uint8_t rrc_M2AP_do_SIB23_SIB2( if(m2ap_mbms_scheduling_information->mbms_area_config_list[j].mbms_sf_config_list[l].is_four_sf){ + LOG_I(RRC,"is_four_sf\n"); sib2_mbsfn_SubframeConfig1->subframeAllocation.present= LTE_MBSFN_SubframeConfig__subframeAllocation_PR_fourFrames; sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf= MALLOC(3); sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.size= 3; sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.bits_unused= 0; - sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf[2] = ((m2ap_mbms_scheduling_information->mbms_area_config_list[j].mbms_sf_config_list[j].subframe_allocation) & 0xFF); - sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf[1] = ((m2ap_mbms_scheduling_information->mbms_area_config_list[j].mbms_sf_config_list[j].subframe_allocation>>8) & 0xFF); + sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf[2] = ((m2ap_mbms_scheduling_information->mbms_area_config_list[j].mbms_sf_config_list[l].subframe_allocation) & 0xFF); + sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf[1] = ((m2ap_mbms_scheduling_information->mbms_area_config_list[j].mbms_sf_config_list[l].subframe_allocation>>8) & 0xFF); sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf[0] = ((m2ap_mbms_scheduling_information->mbms_area_config_list[j].mbms_sf_config_list[l].subframe_allocation>>16) & 0xFF); }else{ + LOG_I(RRC,"is_one_sf\n"); sib2_mbsfn_SubframeConfig1->subframeAllocation.present= LTE_MBSFN_SubframeConfig__subframeAllocation_PR_oneFrame; sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf= MALLOC(1); sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.size= 1; sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.bits_unused= 2; - sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf[0]=(m2ap_mbms_scheduling_information->mbms_area_config_list[j].mbms_sf_config_list[j].subframe_allocation<<2); + sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf[0]=(m2ap_mbms_scheduling_information->mbms_area_config_list[j].mbms_sf_config_list[l].subframe_allocation<<2); } @@ -580,7 +1000,8 @@ static uint8_t rrc_M2AP_do_SIB23_SIB2( (LTE_SchedulingInfo_MBMS_r14_t *) NULL, (struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL, (LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL, - (LTE_MBSFN_AreaInfoList_r9_t *) NULL + (LTE_MBSFN_AreaInfoList_r9_t *) NULL, + (LTE_MBSFNAreaConfiguration_r9_t*) NULL ); } @@ -752,7 +1173,8 @@ for( i=0; i < m2ap_setup_resp->num_mcch_config_per_mbsfn; i++){ (LTE_SchedulingInfo_MBMS_r14_t *) NULL, (struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL, (LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL, - (LTE_MBSFN_AreaInfoList_r9_t *) NULL + (LTE_MBSFN_AreaInfoList_r9_t *) NULL, + (LTE_MBSFNAreaConfiguration_r9_t*) NULL ); } @@ -917,20 +1339,22 @@ static uint8_t rrc_M2AP_do_SIB23_SIB2_SIB13( if(m2ap_mbms_scheduling_information->mbms_area_config_list[j].mbms_sf_config_list[l].is_four_sf){ sib2_mbsfn_SubframeConfig1->subframeAllocation.present= LTE_MBSFN_SubframeConfig__subframeAllocation_PR_fourFrames; + LOG_I(RRC,"rrc_M2AP_do_SIB23_SIB2_SIB13 is_four_sf\n"); sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf= MALLOC(3); sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.size= 3; sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.bits_unused= 0; - sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf[2] = ((m2ap_mbms_scheduling_information->mbms_area_config_list[j].mbms_sf_config_list[j].subframe_allocation) & 0xFF); - sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf[1] = ((m2ap_mbms_scheduling_information->mbms_area_config_list[j].mbms_sf_config_list[j].subframe_allocation>>8) & 0xFF); + sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf[2] = ((m2ap_mbms_scheduling_information->mbms_area_config_list[j].mbms_sf_config_list[l].subframe_allocation) & 0xFF); + sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf[1] = ((m2ap_mbms_scheduling_information->mbms_area_config_list[j].mbms_sf_config_list[l].subframe_allocation>>8) & 0xFF); sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf[0] = ((m2ap_mbms_scheduling_information->mbms_area_config_list[j].mbms_sf_config_list[l].subframe_allocation>>16) & 0xFF); }else{ + LOG_I(RRC,"rrc_M2AP_do_SIB23_SIB2_SIB13 rs_one_sf\n"); sib2_mbsfn_SubframeConfig1->subframeAllocation.present= LTE_MBSFN_SubframeConfig__subframeAllocation_PR_oneFrame; sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf= MALLOC(1); sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.size= 1; sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.bits_unused= 2; - sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf[0]=(m2ap_mbms_scheduling_information->mbms_area_config_list[j].mbms_sf_config_list[j].subframe_allocation<<2); + sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf[0]=(m2ap_mbms_scheduling_information->mbms_area_config_list[j].mbms_sf_config_list[l].subframe_allocation<<2); } @@ -1030,7 +1454,8 @@ static uint8_t rrc_M2AP_do_SIB23_SIB2_SIB13( (LTE_SchedulingInfo_MBMS_r14_t *) NULL, (struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL, (LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL, - (LTE_MBSFN_AreaInfoList_r9_t *) NULL + (LTE_MBSFN_AreaInfoList_r9_t *) NULL, + (LTE_MBSFNAreaConfiguration_r9_t*) NULL ); } @@ -1122,7 +1547,11 @@ rrc_eNB_process_M2AP_MBMS_SESSION_START_REQ( rrc_M2AP_do_SIB23_SIB2(ctxt_pP,ctxt_pP->module_id,CC_id,m2ap_mbms_scheduling_information_g); rrc_M2AP_do_SIB23_SIB13(ctxt_pP,ctxt_pP->module_id,CC_id,m2ap_setup_resp_g); }else{ - rrc_M2AP_do_SIB23_SIB2_SIB13(ctxt_pP,ctxt_pP->module_id,CC_id,m2ap_setup_resp_g,m2ap_mbms_scheduling_information_g); + if(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].FeMBMS_flag){ + rrc_M2AP_do_SIB1_MBMS_SIB13(ctxt_pP,ctxt_pP->module_id,CC_id,m2ap_setup_resp_g,m2ap_mbms_scheduling_information_g); + }else{ + rrc_M2AP_do_SIB23_SIB2_SIB13(ctxt_pP,ctxt_pP->module_id,CC_id,m2ap_setup_resp_g,m2ap_mbms_scheduling_information_g); + } } rrc_M2AP_init_MCCH(ctxt_pP,ctxt_pP->module_id,CC_id,m2ap_mbms_scheduling_information_g); rrc_M2AP_init_MBMS(ctxt_pP->module_id, CC_id, 0); diff --git a/openair2/RRC/LTE/rrc_eNB_S1AP.c b/openair2/RRC/LTE/rrc_eNB_S1AP.c index 59998cebcc..9f92be366b 100644 --- a/openair2/RRC/LTE/rrc_eNB_S1AP.c +++ b/openair2/RRC/LTE/rrc_eNB_S1AP.c @@ -96,36 +96,34 @@ void extract_imsi(uint8_t *pdu_buf, uint32_t pdu_len, rrc_eNB_ue_context_t *ue_c && pdu_len > NAS_MESSAGE_SECURITY_HEADER_SIZE)) return; + /* Decode plain NAS message */ + EMM_msg *e_msg = &nas_msg.plain.emm; + emm_msg_header_t *emm_header = &e_msg->header; + if (header->security_header_type != SECURITY_HEADER_TYPE_NOT_PROTECTED) { /* Decode the message authentication code */ DECODE_U32((char *) pdu_buf+size, header->message_authentication_code, size); /* Decode the sequence number */ DECODE_U8((char *) pdu_buf+size, header->sequence_number, size); - } + /* Decode the security header type and the protocol discriminator */ + DECODE_U8(pdu_buf + size, *(uint8_t *)(emm_header), size); - /* Note: the value of the pointer (i.e. the address) is given by value, so we - * can modify it as we want. The callee retains the original address! */ + /* Check that this is the right message */ + if (emm_header->protocol_discriminator != EPS_MOBILITY_MANAGEMENT_MESSAGE) + return; + } pdu_buf += size; pdu_len -= size; - /* Decode plain NAS message */ - EMM_msg *e_msg = &nas_msg.plain.emm; - emm_msg_header_t *emm_header = &e_msg->header; - /* First decode the EMM message header */ - int e_head_size = 0; /* Check that buffer contains more than only the header */ if (pdu_len <= sizeof(emm_msg_header_t)) return; - /* Decode the security header type and the protocol discriminator */ - DECODE_U8(pdu_buf + e_head_size, *(uint8_t *)(emm_header), e_head_size); + /* First decode the EMM message header */ + int e_head_size = 0; /* Decode the message type */ DECODE_U8(pdu_buf + e_head_size, emm_header->message_type, e_head_size); - /* Check that this is the right message */ - if (emm_header->protocol_discriminator != EPS_MOBILITY_MANAGEMENT_MESSAGE) - return; - pdu_buf += e_head_size; pdu_len -= e_head_size; @@ -2284,3 +2282,75 @@ int s1ap_ue_context_release(instance_t instance, const uint32_t eNB_ue_s1ap_id) }*/ return 0; } + + +int rrc_eNB_send_E_RAB_Modification_Indication(const protocol_ctxt_t *const ctxt_pP, + rrc_eNB_ue_context_t *const ue_context_pP) { + MessageDef *msg_p = NULL; + int e_rab = 0; + int e_rab_modify_index = 0; + int e_rab_notmodify_index = 0; + + uint8_t inde_list[ue_context_pP->ue_context.nb_of_e_rabs]; + memset(inde_list, 0, ue_context_pP->ue_context.nb_of_e_rabs*sizeof(uint8_t)); + + msg_p = itti_alloc_new_message (TASK_RRC_ENB, S1AP_E_RAB_MODIFICATION_IND); + + + S1AP_E_RAB_MODIFICATION_IND (msg_p).eNB_ue_s1ap_id = ue_context_pP->ue_context.eNB_ue_s1ap_id; + S1AP_E_RAB_MODIFICATION_IND (msg_p).mme_ue_s1ap_id = ue_context_pP->ue_context.mme_ue_s1ap_id; + + LOG_I (RRC,"E-RAB modification indication: nb nb_of_e_rabs %u status %u\n", + ue_context_pP->ue_context.nb_of_e_rabs, + ue_context_pP->ue_context.e_rab[e_rab].status); + + if (ue_context_pP->ue_context.nb_of_modify_endc_e_rabs > 0){ + S1AP_E_RAB_MODIFICATION_IND (msg_p).nb_of_e_rabs_tobemodified = ue_context_pP->ue_context.nb_of_modify_endc_e_rabs; + for (e_rab = 0; e_rab < ue_context_pP->ue_context.setup_e_rabs ; e_rab++) { + //Add E-RAB in the list of E-RABs to be modified + if (ue_context_pP->ue_context.e_rab[e_rab].status == E_RAB_STATUS_TOMODIFY) { + S1AP_E_RAB_MODIFICATION_IND (msg_p).e_rabs_tobemodified[e_rab_modify_index].e_rab_id = ue_context_pP->ue_context.e_rab[e_rab].param.e_rab_id; + memcpy(S1AP_E_RAB_MODIFICATION_IND (msg_p).e_rabs_tobemodified[e_rab_modify_index].eNB_addr.buffer, + ue_context_pP->ue_context.gnb_gtp_endc_addrs[e_rab].buffer, + ue_context_pP->ue_context.gnb_gtp_endc_addrs[e_rab].length); + S1AP_E_RAB_MODIFICATION_IND (msg_p).e_rabs_tobemodified[e_rab_modify_index].eNB_addr.length = ue_context_pP->ue_context.gnb_gtp_endc_addrs[e_rab].length; + S1AP_E_RAB_MODIFICATION_IND (msg_p).e_rabs_tobemodified[e_rab_modify_index].gtp_teid = ue_context_pP->ue_context.gnb_gtp_endc_teid[e_rab]; + e_rab_modify_index++; + } + //Add E-RAB in the list of E-RABs NOT to be modified + else{ + S1AP_E_RAB_MODIFICATION_IND (msg_p).e_rabs_nottobemodified[e_rab_notmodify_index].e_rab_id = ue_context_pP->ue_context.e_rab[e_rab].param.e_rab_id; + memcpy(S1AP_E_RAB_MODIFICATION_IND (msg_p).e_rabs_nottobemodified[e_rab_notmodify_index].eNB_addr.buffer, + ue_context_pP->ue_context.gnb_gtp_endc_addrs[e_rab].buffer, + ue_context_pP->ue_context.gnb_gtp_endc_addrs[e_rab].length); + S1AP_E_RAB_MODIFICATION_IND (msg_p).e_rabs_nottobemodified[e_rab_notmodify_index].eNB_addr.length = ue_context_pP->ue_context.gnb_gtp_endc_addrs[e_rab].length; + S1AP_E_RAB_MODIFICATION_IND (msg_p).e_rabs_nottobemodified[e_rab_notmodify_index].gtp_teid = ue_context_pP->ue_context.gnb_gtp_endc_teid[e_rab]; + e_rab_notmodify_index++; + } + } + S1AP_E_RAB_MODIFICATION_IND (msg_p).nb_of_e_rabs_nottobemodified = e_rab_notmodify_index; + } + + if (e_rab_modify_index > 0) { + LOG_I(RRC,"S1AP_E_RAB_MODIFICATION_IND: sending the message: nb_of_erabstobemodified %d, total e_rabs %d, index %d\n", + S1AP_E_RAB_MODIFICATION_IND (msg_p).nb_of_e_rabs_tobemodified, ue_context_pP->ue_context.setup_e_rabs, e_rab); + MSC_LOG_TX_MESSAGE( + MSC_RRC_ENB, + MSC_S1AP_ENB, + (const char *)&S1AP_E_RAB_MODIFICATION_IND (msg_p), + sizeof(s1ap_e_rab_modification_ind_t), + MSC_AS_TIME_FMT" E RAB MODIFICATION IND UE %X eNB_ue_s1ap_id %u e_rabs:%u succ", + MSC_AS_TIME_ARGS(ctxt_pP), + ue_context_pP->ue_id_rnti, + S1AP_E_RAB_MODIFICATION_IND (msg_p).eNB_ue_s1ap_id, + e_rab_modify_index); + itti_send_msg_to_task (TASK_S1AP, ctxt_pP->instance, msg_p); + } else { + itti_free(ITTI_MSG_ORIGIN_ID(msg_p), msg_p); + } + + return 0; +} + + + diff --git a/openair2/RRC/LTE/rrc_eNB_S1AP.h b/openair2/RRC/LTE/rrc_eNB_S1AP.h index e5ff9c27d6..a55d17bfd1 100644 --- a/openair2/RRC/LTE/rrc_eNB_S1AP.h +++ b/openair2/RRC/LTE/rrc_eNB_S1AP.h @@ -285,4 +285,6 @@ int rrc_eNB_send_X2AP_UE_CONTEXT_RELEASE(const protocol_ctxt_t* const ctxt_pP, r int s1ap_ue_context_release(instance_t instance, const uint32_t eNB_ue_s1ap_id); +int rrc_eNB_send_E_RAB_Modification_Indication(const protocol_ctxt_t *const ctxt_pP, rrc_eNB_ue_context_t *const ue_context_pP); + #endif /* RRC_ENB_S1AP_H_ */ diff --git a/openair2/RRC/NR/L2_nr_interface.c b/openair2/RRC/NR/L2_nr_interface.c index 1e8e45ef4d..0905f6d7de 100644 --- a/openair2/RRC/NR/L2_nr_interface.c +++ b/openair2/RRC/NR/L2_nr_interface.c @@ -51,9 +51,8 @@ int8_t mac_rrc_nr_data_req(const module_id_t Mod_idP, uint8_t *const buffer_pP ){ asn_enc_rval_t enc_rval; - //SRB_INFO *Srb_info; - //uint8_t Sdu_size = 0; - uint8_t sfn_msb = (uint8_t)((frameP>>4)&0x3f); + uint8_t Sdu_size = 0; + uint8_t sfn_msb = (uint8_t)((frameP>>4)&0x3f); #ifdef DEBUG_RRC LOG_D(RRC,"[eNB %d] mac_rrc_data_req to SRB ID=%ld\n",Mod_idP,Srb_id); @@ -62,11 +61,15 @@ int8_t mac_rrc_nr_data_req(const module_id_t Mod_idP, gNB_RRC_INST *rrc; rrc_gNB_carrier_data_t *carrier; NR_BCCH_BCH_Message_t *mib; + NR_SRB_INFO * srb_info; + char payload_size, *payload_pP; rrc = RC.nrrrc[Mod_idP]; carrier = &rrc->carrier; mib = &carrier->mib; + srb_info = &carrier->Srb0; + /* MIBCH */ if( (Srb_id & RAB_OFFSET ) == MIBCH) { mib->message.choice.mib->systemFrameNumber.buf[0] = sfn_msb << 2; enc_rval = uper_encode_to_buffer(&asn_DEF_NR_BCCH_BCH_Message, @@ -84,10 +87,31 @@ int8_t mac_rrc_nr_data_req(const module_id_t Mod_idP, return(3); } -//BCCH SIB1 SIBs + /* TODO BCCH SIB1 SIBs */ -//CCCH + /* CCCH */ + if( (Srb_id & RAB_OFFSET ) == CCCH) { + //struct rrc_eNB_ue_context_s *ue_context_p = rrc_eNB_get_ue_context(RC.rrc[Mod_idP],rnti); + //if (ue_context_p == NULL) return(0); + //eNB_RRC_UE_t *ue_p = &ue_context_p->ue_context; + LOG_D(RRC,"[gNB %d] Frame %d CCCH request (Srb_id %ld)\n", Mod_idP, frameP, Srb_id); + + // srb_info=&ue_p->Srb0; + + payload_size = srb_info->Tx_buffer.payload_size; + + // check if data is there for MAC + if (payload_size > 0) { + payload_pP = srb_info->Tx_buffer.Payload; + LOG_D(RRC,"[gNB %d] CCCH (%p) has %d bytes (dest: %p, src %p)\n", Mod_idP, srb_info, payload_size, buffer_pP, payload_pP); + // Fill buffer + memcpy((void *)buffer_pP, (void*)payload_pP, payload_size); + Sdu_size = payload_size; + srb_info->Tx_buffer.payload_size = 0; + } + return Sdu_size; + } return(0); -} +} \ No newline at end of file diff --git a/openair2/RRC/NR/nr_rrc_defs.h b/openair2/RRC/NR/nr_rrc_defs.h index 02b4154c41..9a53a5bbe0 100644 --- a/openair2/RRC/NR/nr_rrc_defs.h +++ b/openair2/RRC/NR/nr_rrc_defs.h @@ -319,9 +319,10 @@ typedef struct gNB_RRC_UE_s { uint8_t nb_release_of_e_rabs; e_rab_failed_t e_rabs_release_failed[S1AP_MAX_E_RAB]; // LG: For GTPV1 TUNNELS - uint32_t enb_gtp_teid[S1AP_MAX_E_RAB]; - transport_layer_addr_t enb_gtp_addrs[S1AP_MAX_E_RAB]; - rb_id_t enb_gtp_ebi[S1AP_MAX_E_RAB]; + uint32_t gnb_gtp_teid[S1AP_MAX_E_RAB]; + transport_layer_addr_t gnb_gtp_addrs[S1AP_MAX_E_RAB]; + rb_id_t gnb_gtp_ebi[S1AP_MAX_E_RAB]; + uint32_t ul_failure_timer; uint32_t ue_release_timer; uint32_t ue_release_timer_thres; @@ -378,6 +379,8 @@ typedef struct { NR_BCCH_BCH_Message_t mib; int ssb_SubcarrierOffset; int pdsch_AntennaPorts; + int pusch_TargetSNRx10; + int pucch_TargetSNRx10; NR_BCCH_DL_SCH_Message_t *siblock1; NR_ServingCellConfigCommon_t *servingcellconfigcommon; NR_CellGroupConfig_t *secondaryCellGroup[MAX_NR_RRC_UE_CONTEXTS]; diff --git a/openair2/RRC/NR/nr_rrc_proto.h b/openair2/RRC/NR/nr_rrc_proto.h index 5770b80595..317282c814 100644 --- a/openair2/RRC/NR/nr_rrc_proto.h +++ b/openair2/RRC/NR/nr_rrc_proto.h @@ -65,9 +65,9 @@ void rrc_gNB_generate_SgNBAdditionRequestAcknowledge( struct rrc_gNB_ue_context_s *rrc_gNB_allocate_new_UE_context(gNB_RRC_INST *rrc_instance_pP); -void rrc_parse_ue_capabilities(gNB_RRC_INST *rrc,LTE_UE_CapabilityRAT_ContainerList_t *UE_CapabilityRAT_ContainerList); +void rrc_parse_ue_capabilities(gNB_RRC_INST *rrc,LTE_UE_CapabilityRAT_ContainerList_t *UE_CapabilityRAT_ContainerList, x2ap_ENDC_sgnb_addition_req_t *m, NR_CG_ConfigInfo_IEs_t * cg_config_info); -void rrc_add_nsa_user(gNB_RRC_INST *rrc,struct rrc_gNB_ue_context_s *ue_context_p); +void rrc_add_nsa_user(gNB_RRC_INST *rrc,struct rrc_gNB_ue_context_s *ue_context_p, x2ap_ENDC_sgnb_addition_req_t *m); void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellconfigcommon, NR_CellGroupConfig_t *secondaryCellGroup, @@ -89,7 +89,7 @@ int generate_CG_Config(gNB_RRC_INST *rrc, NR_RRCReconfiguration_t *reconfig, NR_RadioBearerConfig_t *rbconfig); -int parse_CG_ConfigInfo(gNB_RRC_INST *rrc, NR_CG_ConfigInfo_t *CG_ConfigInfo); +int parse_CG_ConfigInfo(gNB_RRC_INST *rrc, NR_CG_ConfigInfo_t *CG_ConfigInfo, x2ap_ENDC_sgnb_addition_req_t *m); diff --git a/openair2/RRC/NR/rrc_gNB.c b/openair2/RRC/NR/rrc_gNB.c index 5ece5f9169..5721d05aee 100644 --- a/openair2/RRC/NR/rrc_gNB.c +++ b/openair2/RRC/NR/rrc_gNB.c @@ -95,12 +95,10 @@ mui_t rrc_gNB_mui = 0; void openair_nr_rrc_on(const protocol_ctxt_t *const ctxt_pP) { LOG_I(NR_RRC, PROTOCOL_NR_RRC_CTXT_FMT" gNB:OPENAIR NR RRC IN....\n",PROTOCOL_NR_RRC_CTXT_ARGS(ctxt_pP)); - rrc_config_nr_buffer (&RC.nrrrc[ctxt_pP->module_id]->carrier.SI, BCCH, 1); RC.nrrrc[ctxt_pP->module_id]->carrier.SI.Active = 1; rrc_config_nr_buffer (&RC.nrrrc[ctxt_pP->module_id]->carrier.Srb0, CCCH, 1); RC.nrrrc[ctxt_pP->module_id]->carrier.Srb0.Active = 1; - } ///---------------------------------------------------------------------------------------------------------------/// @@ -173,7 +171,6 @@ void rrc_gNB_generate_SgNBAdditionRequestAcknowledge( ue_context_pP->ue_context.primaryCC_id, physicalCellGroupConfig, physicalcellgroup_config); - do_SpCellConfig(RC.nrrrc[ctxt_pP->module_id], spCellConfig); } @@ -182,57 +179,49 @@ void rrc_gNB_generate_SgNBAdditionRequestAcknowledge( ///---------------------------------------------------------------------------------------------------------------/// static void init_NR_SI(gNB_RRC_INST *rrc) { - - LOG_D(RRC,"%s()\n\n\n\n",__FUNCTION__); - - - - rrc->carrier.MIB = (uint8_t*) malloc16(4); + rrc->carrier.MIB = (uint8_t *) malloc16(4); rrc->carrier.sizeof_MIB = do_MIB_NR(rrc,0); - - LOG_I(NR_RRC,"Done init_NR_SI\n"); - - rrc_mac_config_req_gNB(rrc->module_id, - rrc->carrier.ssb_SubcarrierOffset, + rrc->carrier.ssb_SubcarrierOffset, rrc->carrier.pdsch_AntennaPorts, + rrc->carrier.pusch_TargetSNRx10, + rrc->carrier.pucch_TargetSNRx10, (NR_ServingCellConfigCommon_t *)rrc->carrier.servingcellconfigcommon, - 0, - 0, - (NR_CellGroupConfig_t *)NULL - ); + 0, + 0, // WIP hardcoded rnti + (NR_CellGroupConfig_t *)NULL + ); - - if (get_softmodem_params()->phy_test > 0) { + if (get_softmodem_params()->phy_test > 0 || get_softmodem_params()->do_ra > 0) { // This is for phytest only, emulate first X2 message if uecap.raw file is present FILE *fd; - fd = fopen("uecap.raw","r"); + if (fd != NULL) { char buffer[4096]; int msg_len=fread(buffer,1,4096,fd); LOG_I(RRC,"Read in %d bytes for uecap\n",msg_len); LTE_UL_DCCH_Message_t *LTE_UL_DCCH_Message; - asn_dec_rval_t dec_rval = uper_decode_complete( NULL, - &asn_DEF_LTE_UL_DCCH_Message, - (void **)<E_UL_DCCH_Message, - (uint8_t *)buffer, - msg_len); - + &asn_DEF_LTE_UL_DCCH_Message, + (void **)<E_UL_DCCH_Message, + (uint8_t *)buffer, + msg_len); + if ((dec_rval.code != RC_OK) && (dec_rval.consumed == 0)) { AssertFatal(1==0,"NR_UL_DCCH_MESSAGE decode error\n"); - // free the memory - SEQUENCE_free( &asn_DEF_LTE_UL_DCCH_Message, LTE_UL_DCCH_Message, 1 ); - return; - } + // free the memory + SEQUENCE_free( &asn_DEF_LTE_UL_DCCH_Message, LTE_UL_DCCH_Message, 1 ); + return; + } + fclose(fd); xer_fprint(stdout,&asn_DEF_LTE_UL_DCCH_Message, LTE_UL_DCCH_Message); // recreate enough of X2 EN-DC Container AssertFatal(LTE_UL_DCCH_Message->message.choice.c1.present == LTE_UL_DCCH_MessageType__c1_PR_ueCapabilityInformation, - "ueCapabilityInformation not present\n"); + "ueCapabilityInformation not present\n"); NR_CG_ConfigInfo_t *CG_ConfigInfo = calloc(1,sizeof(*CG_ConfigInfo)); CG_ConfigInfo->criticalExtensions.present = NR_CG_ConfigInfo__criticalExtensions_PR_c1; CG_ConfigInfo->criticalExtensions.choice.c1 = calloc(1,sizeof(*CG_ConfigInfo->criticalExtensions.choice.c1)); @@ -240,42 +229,37 @@ static void init_NR_SI(gNB_RRC_INST *rrc) { CG_ConfigInfo->criticalExtensions.choice.c1->choice.cg_ConfigInfo = calloc(1,sizeof(*CG_ConfigInfo->criticalExtensions.choice.c1->choice.cg_ConfigInfo)); NR_CG_ConfigInfo_IEs_t *cg_ConfigInfo = CG_ConfigInfo->criticalExtensions.choice.c1->choice.cg_ConfigInfo; cg_ConfigInfo->ue_CapabilityInfo = calloc(1,sizeof(*cg_ConfigInfo->ue_CapabilityInfo)); - asn_enc_rval_t enc_rval = uper_encode_to_buffer(&asn_DEF_LTE_UE_CapabilityRAT_ContainerList,NULL,(void*)<E_UL_DCCH_Message->message.choice.c1.choice.ueCapabilityInformation.criticalExtensions.choice.c1.choice.ueCapabilityInformation_r8.ue_CapabilityRAT_ContainerList,buffer,4096); + asn_enc_rval_t enc_rval = uper_encode_to_buffer(&asn_DEF_LTE_UE_CapabilityRAT_ContainerList,NULL, + (void *)<E_UL_DCCH_Message->message.choice.c1.choice.ueCapabilityInformation.criticalExtensions.choice.c1.choice.ueCapabilityInformation_r8.ue_CapabilityRAT_ContainerList,buffer,4096); AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %jd)!\n", - enc_rval.failed_type->name, enc_rval.encoded); + enc_rval.failed_type->name, enc_rval.encoded); OCTET_STRING_fromBuf(cg_ConfigInfo->ue_CapabilityInfo, - (const char *)buffer, - (enc_rval.encoded+7)>>3); - parse_CG_ConfigInfo(rrc,CG_ConfigInfo); - } - else { + (const char *)buffer, + (enc_rval.encoded+7)>>3); + parse_CG_ConfigInfo(rrc,CG_ConfigInfo,NULL); + } else { struct rrc_gNB_ue_context_s *ue_context_p = rrc_gNB_allocate_new_UE_context(rrc); - - LOG_I(NR_RRC,"Adding new user (%p)\n",ue_context_p); - rrc_add_nsa_user(rrc,ue_context_p); - } + LOG_I(NR_RRC,"Adding new user (%p)\n",ue_context_p); + rrc_add_nsa_user(rrc,ue_context_p,NULL); + } } } char openair_rrc_gNB_configuration(const module_id_t gnb_mod_idP, gNB_RrcConfigurationReq *configuration) { protocol_ctxt_t ctxt; - gNB_RRC_INST *rrc=RC.nrrrc[gnb_mod_idP]; - PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, gnb_mod_idP, GNB_FLAG_YES, NOT_A_RNTI, 0, 0,gnb_mod_idP); - LOG_I(NR_RRC, PROTOCOL_NR_RRC_CTXT_FMT" Init...\n", PROTOCOL_NR_RRC_CTXT_ARGS(&ctxt)); + AssertFatal(rrc != NULL, "RC.nrrrc not initialized!"); AssertFatal(NUMBER_OF_UE_MAX < (module_id_t)0xFFFFFFFFFFFFFFFF, " variable overflow"); AssertFatal(configuration!=NULL,"configuration input is null\n"); rrc->module_id = gnb_mod_idP; rrc->Nb_ue = 0; - rrc->carrier.Srb0.Active = 0; - nr_uid_linear_allocator_init(&rrc->uid_allocator); RB_INIT(&rrc->rrc_ue_head); rrc->initial_id2_s1ap_ids = hashtable_create (NUMBER_OF_UE_MAX * 2, NULL, NULL); @@ -283,9 +267,10 @@ char openair_rrc_gNB_configuration(const module_id_t gnb_mod_idP, gNB_RrcConfigu rrc->carrier.servingcellconfigcommon = configuration->scc; rrc->carrier.ssb_SubcarrierOffset = configuration->ssb_SubcarrierOffset; rrc->carrier.pdsch_AntennaPorts = configuration->pdsch_AntennaPorts; + rrc->carrier.pusch_TargetSNRx10 = configuration->pusch_TargetSNRx10; + rrc->carrier.pucch_TargetSNRx10 = configuration->pucch_TargetSNRx10; /// System Information INIT LOG_I(NR_RRC, PROTOCOL_NR_RRC_CTXT_FMT" Checking release \n",PROTOCOL_NR_RRC_CTXT_ARGS(&ctxt)); - init_NR_SI(rrc); rrc_init_nr_global_param(); openair_nr_rrc_on(&ctxt); @@ -294,49 +279,26 @@ char openair_rrc_gNB_configuration(const module_id_t gnb_mod_idP, gNB_RrcConfigu void rrc_gNB_process_AdditionRequestInformation(const module_id_t gnb_mod_idP, x2ap_ENDC_sgnb_addition_req_t *m) { + struct NR_CG_ConfigInfo *cg_configinfo = NULL; + asn_dec_rval_t dec_rval = uper_decode_complete(NULL, + &asn_DEF_NR_CG_ConfigInfo, + (void **)&cg_configinfo, + (uint8_t *)m->rrc_buffer, + (int) m->rrc_buffer_size);//m->rrc_buffer_size); + gNB_RRC_INST *rrc=RC.nrrrc[gnb_mod_idP]; + if ((dec_rval.code != RC_OK) && (dec_rval.consumed == 0)) { + AssertFatal(1==0,"NR_UL_DCCH_MESSAGE decode error\n"); + // free the memory + SEQUENCE_free(&asn_DEF_NR_CG_ConfigInfo, cg_configinfo, 1); + return; + } - LTE_UL_DCCH_Message_t *LTE_UL_DCCH_Message = NULL; - - asn_dec_rval_t dec_rval = uper_decode_complete( NULL, - &asn_DEF_LTE_UL_DCCH_Message, - (void **)<E_UL_DCCH_Message, - (uint8_t *)m->rrc_buffer, - (int) m->rrc_buffer_size);//m->rrc_buffer_size); - -/* asn_dec_rval_t dec_rval = uper_decode( NULL, - &asn_DEF_LTE_UL_DCCH_Message, - (void **)<E_UL_DCCH_Message, - (uint8_t *)m->rrc_buffer, - (int) m->rrc_buffer_size, 0, 0);//m->rrc_buffer_size); -*/ - gNB_RRC_INST *rrc=RC.nrrrc[gnb_mod_idP]; - - if ((dec_rval.code != RC_OK) && (dec_rval.consumed == 0)) { - AssertFatal(1==0,"NR_UL_DCCH_MESSAGE decode error\n"); - // free the memory - SEQUENCE_free( &asn_DEF_LTE_UL_DCCH_Message, LTE_UL_DCCH_Message, 1 ); - return; - } - xer_fprint(stdout,&asn_DEF_LTE_UL_DCCH_Message, LTE_UL_DCCH_Message); - // recreate enough of X2 EN-DC Container - AssertFatal(LTE_UL_DCCH_Message->message.choice.c1.present == LTE_UL_DCCH_MessageType__c1_PR_ueCapabilityInformation, - "ueCapabilityInformation not present\n"); - NR_CG_ConfigInfo_t *CG_ConfigInfo = calloc(1,sizeof(*CG_ConfigInfo)); - CG_ConfigInfo->criticalExtensions.present = NR_CG_ConfigInfo__criticalExtensions_PR_c1; - CG_ConfigInfo->criticalExtensions.choice.c1 = calloc(1,sizeof(*CG_ConfigInfo->criticalExtensions.choice.c1)); - CG_ConfigInfo->criticalExtensions.choice.c1->present = NR_CG_ConfigInfo__criticalExtensions__c1_PR_cg_ConfigInfo; - CG_ConfigInfo->criticalExtensions.choice.c1->choice.cg_ConfigInfo = calloc(1,sizeof(*CG_ConfigInfo->criticalExtensions.choice.c1->choice.cg_ConfigInfo)); - NR_CG_ConfigInfo_IEs_t *cg_ConfigInfo = CG_ConfigInfo->criticalExtensions.choice.c1->choice.cg_ConfigInfo; - cg_ConfigInfo->ue_CapabilityInfo = calloc(1,sizeof(*cg_ConfigInfo->ue_CapabilityInfo)); - asn_enc_rval_t enc_rval = uper_encode_to_buffer(&asn_DEF_LTE_UE_CapabilityRAT_ContainerList,NULL,(void*)<E_UL_DCCH_Message->message.choice.c1.choice.ueCapabilityInformation.criticalExtensions.choice.c1.choice.ueCapabilityInformation_r8.ue_CapabilityRAT_ContainerList,m->rrc_buffer,m->rrc_buffer_size); - AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %jd)!\n", - enc_rval.failed_type->name, enc_rval.encoded); - OCTET_STRING_fromBuf(cg_ConfigInfo->ue_CapabilityInfo, - (const char *)m->rrc_buffer, - (enc_rval.encoded+7)>>3); - parse_CG_ConfigInfo(rrc,CG_ConfigInfo); - + xer_fprint(stdout,&asn_DEF_NR_CG_ConfigInfo, cg_configinfo); + // recreate enough of X2 EN-DC Container + AssertFatal(cg_configinfo->criticalExtensions.choice.c1->present == NR_CG_ConfigInfo__criticalExtensions__c1_PR_cg_ConfigInfo, + "ueCapabilityInformation not present\n"); + parse_CG_ConfigInfo(rrc,cg_configinfo,m); } ///---------------------------------------------------------------------------------------------------------------/// @@ -434,16 +396,15 @@ void *rrc_gnb_task(void *args_p) { openair_rrc_gNB_configuration(GNB_INSTANCE_TO_MODULE_ID(instance), &NRRRC_CONFIGURATION_REQ(msg_p)); break; - /* Messages from X2AP */ + /* Messages from X2AP */ case X2AP_ENDC_SGNB_ADDITION_REQ: - LOG_I(NR_RRC, "Received ENDC sgNB addition request from X2AP \n"); - rrc_gNB_process_AdditionRequestInformation(GNB_INSTANCE_TO_MODULE_ID(instance), &X2AP_ENDC_SGNB_ADDITION_REQ(msg_p)); - break; + LOG_I(NR_RRC, "Received ENDC sgNB addition request from X2AP \n"); + rrc_gNB_process_AdditionRequestInformation(GNB_INSTANCE_TO_MODULE_ID(instance), &X2AP_ENDC_SGNB_ADDITION_REQ(msg_p)); + break; case X2AP_ENDC_SGNB_RECONF_COMPLETE: - LOG_I(NR_RRC, "Handling of reconfiguration complete message at RRC gNB is pending \n"); - break; - + LOG_I(NR_RRC, "Handling of reconfiguration complete message at RRC gNB is pending \n"); + break; default: LOG_E(NR_RRC, "[gNB %d] Received unexpected message %s\n", instance, msg_name_p); diff --git a/openair2/RRC/NR/rrc_gNB_GTPV1U.c b/openair2/RRC/NR/rrc_gNB_GTPV1U.c new file mode 100644 index 0000000000..9ab1bbf43a --- /dev/null +++ b/openair2/RRC/NR/rrc_gNB_GTPV1U.c @@ -0,0 +1,94 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file rrc_gNB_GTPV1U.c + * \brief rrc GTPV1U procedures for gNB + * \author Lionel GAUTHIER, Panos MATZAKOS + * \version 1.0 + * \company Eurecom + * \email: lionel.gauthier@eurecom.fr, panagiotis.matzakos@eurecom.fr + */ + +# include "rrc_defs.h" +# include "rrc_extern.h" +# include "RRC/LTE/MESSAGES/asn1_msg.h" +# include "rrc_eNB_GTPV1U.h" +# include "rrc_eNB_UE_context.h" +# include "msc.h" +# include "openair2/RRC/NR/rrc_gNB_UE_context.h" + +//# if defined(ENABLE_ITTI) +# include "asn1_conversions.h" +# include "intertask_interface.h" +//#endif + +# include "common/ran_context.h" + +extern RAN_CONTEXT_t RC; + +int +rrc_gNB_process_GTPV1U_CREATE_TUNNEL_RESP( + const protocol_ctxt_t *const ctxt_pP, + const gtpv1u_enb_create_tunnel_resp_t *const create_tunnel_resp_pP, + uint8_t *inde_list +) { + rnti_t rnti; + int i; + struct rrc_gNB_ue_context_s *ue_context_p = NULL; + + if (create_tunnel_resp_pP) { + LOG_D(RRC, PROTOCOL_RRC_CTXT_UE_FMT" RX CREATE_TUNNEL_RESP num tunnels %u \n", + PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP), + create_tunnel_resp_pP->num_tunnels); + rnti = create_tunnel_resp_pP->rnti; + ue_context_p = rrc_gNB_get_ue_context( + RC.nrrrc[ctxt_pP->module_id], + ctxt_pP->rnti); + + for (i = 0; i < create_tunnel_resp_pP->num_tunnels; i++) { + ue_context_p->ue_context.gnb_gtp_teid[inde_list[i]] = create_tunnel_resp_pP->enb_S1u_teid[i]; + ue_context_p->ue_context.gnb_gtp_addrs[inde_list[i]] = create_tunnel_resp_pP->enb_addr; + ue_context_p->ue_context.gnb_gtp_ebi[inde_list[i]] = create_tunnel_resp_pP->eps_bearer_id[i]; + LOG_I(RRC, PROTOCOL_RRC_CTXT_UE_FMT" rrc_eNB_process_GTPV1U_CREATE_TUNNEL_RESP tunnel (%u, %u) bearer UE context index %u, msg index %u, id %u, gtp addr len %d \n", + PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP), + create_tunnel_resp_pP->enb_S1u_teid[i], + ue_context_p->ue_context.gnb_gtp_teid[inde_list[i]], + inde_list[i], + i, + create_tunnel_resp_pP->eps_bearer_id[i], + create_tunnel_resp_pP->enb_addr.length); + } + + MSC_LOG_RX_MESSAGE( + MSC_RRC_ENB, + MSC_GTPU_ENB, + NULL,0, + MSC_AS_TIME_FMT" CREATE_TUNNEL_RESP RNTI %"PRIx16" ntuns %u ebid %u enb-s1u teid %u", + 0,0,rnti, + create_tunnel_resp_pP->num_tunnels, + ue_context_p->ue_context.gnb_gtp_ebi[0], + ue_context_p->ue_context.gnb_gtp_teid[0]); + (void)rnti; /* avoid gcc warning "set but not used" */ + return 0; + } else { + return -1; + } +} diff --git a/openair2/RRC/NR/rrc_gNB_GTPV1U.h b/openair2/RRC/NR/rrc_gNB_GTPV1U.h new file mode 100644 index 0000000000..caff825a7a --- /dev/null +++ b/openair2/RRC/NR/rrc_gNB_GTPV1U.h @@ -0,0 +1,39 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file rrc_gNB_GTPV1U.h + * \brief rrc GTPV1U procedures for gNB + * \author Lionel GAUTHIER, Panos MATZAKOS + * \version 1.0 + * \company Eurecom + * \email: lionel.gauthier@eurecom.fr, panagiotis.matzakos@eurecom.fr + */ + +#ifndef RRC_GNB_GTPV1U_H_ +#define RRC_GNB_GTPV1U_H_ + + +int +rrc_gNB_process_GTPV1U_CREATE_TUNNEL_RESP( + const protocol_ctxt_t *const ctxt_pP, + const gtpv1u_enb_create_tunnel_resp_t *const create_tunnel_resp_pP, + uint8_t *inde_list +); diff --git a/openair2/RRC/NR/rrc_gNB_internode.c b/openair2/RRC/NR/rrc_gNB_internode.c index 581015db56..cacff5cf5c 100644 --- a/openair2/RRC/NR/rrc_gNB_internode.c +++ b/openair2/RRC/NR/rrc_gNB_internode.c @@ -38,48 +38,49 @@ #include "LTE_UE-CapabilityRAT-ContainerList.h" #include "NR_CG-Config.h" -int parse_CG_ConfigInfo(gNB_RRC_INST *rrc, NR_CG_ConfigInfo_t *CG_ConfigInfo) { - +int parse_CG_ConfigInfo(gNB_RRC_INST *rrc, NR_CG_ConfigInfo_t *CG_ConfigInfo, x2ap_ENDC_sgnb_addition_req_t *m) { if (CG_ConfigInfo->criticalExtensions.present == NR_CG_ConfigInfo__criticalExtensions_PR_c1) { if (CG_ConfigInfo->criticalExtensions.choice.c1) { if (CG_ConfigInfo->criticalExtensions.choice.c1->present == NR_CG_ConfigInfo__criticalExtensions__c1_PR_cg_ConfigInfo) { - NR_CG_ConfigInfo_IEs_t *cg_ConfigInfo = CG_ConfigInfo->criticalExtensions.choice.c1->choice.cg_ConfigInfo; - if (cg_ConfigInfo->ue_CapabilityInfo) { - // Decode UE-CapabilityRAT-ContainerList + NR_CG_ConfigInfo_IEs_t *cg_ConfigInfo = CG_ConfigInfo->criticalExtensions.choice.c1->choice.cg_ConfigInfo; + + if (cg_ConfigInfo->ue_CapabilityInfo) { + // Decode UE-CapabilityRAT-ContainerList LTE_UE_CapabilityRAT_ContainerList_t *UE_CapabilityRAT_ContainerList=NULL; - asn_dec_rval_t dec_rval = uper_decode(NULL, - &asn_DEF_LTE_UE_CapabilityRAT_ContainerList, - (void**)&UE_CapabilityRAT_ContainerList, - cg_ConfigInfo->ue_CapabilityInfo->buf, - cg_ConfigInfo->ue_CapabilityInfo->size, 0, 0); + UE_CapabilityRAT_ContainerList = calloc(1,sizeof(LTE_UE_CapabilityRAT_ContainerList_t)); + asn_dec_rval_t dec_rval = uper_decode(NULL, + &asn_DEF_LTE_UE_CapabilityRAT_ContainerList, + (void **)&UE_CapabilityRAT_ContainerList, + cg_ConfigInfo->ue_CapabilityInfo->buf, + cg_ConfigInfo->ue_CapabilityInfo->size, 0, 0); + if ((dec_rval.code != RC_OK) && (dec_rval.consumed == 0)) { - AssertFatal(1==0,"[InterNode] Failed to decode NR_UE_CapabilityRAT_ContainerList (%zu bits), size of OCTET_STRING %lu\n", - dec_rval.consumed, cg_ConfigInfo->ue_CapabilityInfo->size); - } - rrc_parse_ue_capabilities(rrc,UE_CapabilityRAT_ContainerList); - } - if (cg_ConfigInfo->candidateCellInfoListMN) AssertFatal(1==0,"Can't handle candidateCellInfoListMN yet\n"); - } - else AssertFatal(1==0,"c1 extension is not cg_ConfigInfo, returning\n"); - } - else { + AssertFatal(1==0,"[InterNode] Failed to decode NR_UE_CapabilityRAT_ContainerList (%zu bits), size of OCTET_STRING %lu\n", + dec_rval.consumed, cg_ConfigInfo->ue_CapabilityInfo->size); + } + + rrc_parse_ue_capabilities(rrc,UE_CapabilityRAT_ContainerList, m,cg_ConfigInfo); + } + + if (cg_ConfigInfo->candidateCellInfoListMN) AssertFatal(1==0,"Can't handle candidateCellInfoListMN yet\n"); + } else AssertFatal(1==0,"c1 extension is not cg_ConfigInfo, returning\n"); + } else { LOG_E(RRC,"c1 extension not found, returning\n"); - return(-1); + return(-1); } } else { LOG_E(RRC,"Ignoring unknown CG_ConfigInfo extensions\n"); return(-1); } - return(0); + + return(0); } -int generate_CG_Config(gNB_RRC_INST *rrc, - NR_CG_Config_t *cg_Config, - NR_RRCReconfiguration_t *reconfig, - NR_RadioBearerConfig_t *rbconfig) { - - +int generate_CG_Config(gNB_RRC_INST *rrc, + NR_CG_Config_t *cg_Config, + NR_RRCReconfiguration_t *reconfig, + NR_RadioBearerConfig_t *rbconfig) { cg_Config->criticalExtensions.present = NR_CG_Config__criticalExtensions_PR_c1; cg_Config->criticalExtensions.choice.c1 = calloc(1,sizeof(*cg_Config->criticalExtensions.choice.c1)); cg_Config->criticalExtensions.choice.c1->present = NR_CG_Config__criticalExtensions__c1_PR_cg_Config; @@ -91,36 +92,37 @@ int generate_CG_Config(gNB_RRC_INST *rrc, enc_rval.failed_type->name, enc_rval.encoded); cg_Config->criticalExtensions.choice.c1->choice.cg_Config->scg_CellGroupConfig = calloc(1,sizeof(OCTET_STRING_t)); OCTET_STRING_fromBuf(cg_Config->criticalExtensions.choice.c1->choice.cg_Config->scg_CellGroupConfig, - (const char *)buffer, - (enc_rval.encoded+7)>>3); + (const char *)buffer, + (enc_rval.encoded+7)>>3); total_size = (enc_rval.encoded+7)>>3; - LOG_I(RRC,"Dumping NR_RRCReconfiguration message (%jd bytes)\n",(enc_rval.encoded+7)>>3); - for (int i=0;i<(enc_rval.encoded+7)>>3;i++) { + + for (int i=0; i<(enc_rval.encoded+7)>>3; i++) { printf("%02x",((uint8_t *)buffer)[i]); } + printf("\n"); FILE *fd = fopen("reconfig.raw","w"); - fwrite((void*)buffer,1,(size_t)((enc_rval.encoded+7)>>3),fd); + fwrite((void *)buffer,1,(size_t)((enc_rval.encoded+7)>>3),fd); fclose(fd); - enc_rval = uper_encode_to_buffer(&asn_DEF_NR_RadioBearerConfig, NULL, (void *)rbconfig, buffer, 1024); AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %jd)!\n", enc_rval.failed_type->name, enc_rval.encoded); cg_Config->criticalExtensions.choice.c1->choice.cg_Config->scg_RB_Config = calloc(1,sizeof(OCTET_STRING_t)); OCTET_STRING_fromBuf(cg_Config->criticalExtensions.choice.c1->choice.cg_Config->scg_RB_Config, - (const char *)buffer, - (enc_rval.encoded+7)>>3); + (const char *)buffer, + (enc_rval.encoded+7)>>3); LOG_I(RRC,"Dumping scg_RB_Config message (%jd bytes)\n",(enc_rval.encoded+7)>>3); - for (int i=0;i<(enc_rval.encoded+7)>>3;i++) { - printf("%02x",((uint8_t*)buffer)[i]); + + for (int i=0; i<(enc_rval.encoded+7)>>3; i++) { + printf("%02x",((uint8_t *)buffer)[i]); } + printf("\n"); fd = fopen("rbconfig.raw","w"); - fwrite((void*)buffer,1,(size_t)((enc_rval.encoded+7)>>3),fd); + fwrite((void *)buffer,1,(size_t)((enc_rval.encoded+7)>>3),fd); fclose(fd); total_size = total_size + ((enc_rval.encoded+7)>>3); - return(total_size); } diff --git a/openair2/RRC/NR/rrc_gNB_nsa.c b/openair2/RRC/NR/rrc_gNB_nsa.c index 763c208dfe..78f39c16d7 100644 --- a/openair2/RRC/NR/rrc_gNB_nsa.c +++ b/openair2/RRC/NR/rrc_gNB_nsa.c @@ -36,123 +36,258 @@ //#include "NR_UE-CapabilityRAT-ContainerList.h" #include "LTE_UE-CapabilityRAT-ContainerList.h" #include "NR_CG-Config.h" +//#include "NR_SRB-ToAddModList.h" #include "openair2/LAYER2/NR_MAC_gNB/mac_proto.h" +#include "openair2/RRC/LTE/rrc_eNB_GTPV1U.h" +#include "executables/softmodem-common.h" +#include -void rrc_parse_ue_capabilities(gNB_RRC_INST *rrc,LTE_UE_CapabilityRAT_ContainerList_t *UE_CapabilityRAT_ContainerList) { +extern boolean_t nr_rrc_pdcp_config_asn1_req( + const protocol_ctxt_t *const ctxt_pP, + NR_SRB_ToAddModList_t *const srb2add_list, + NR_DRB_ToAddModList_t *const drb2add_list, + NR_DRB_ToReleaseList_t *const drb2release_list, + const uint8_t security_modeP, + uint8_t *const kRRCenc, + uint8_t *const kRRCint, + uint8_t *const kUPenc + #if (LTE_RRC_VERSION >= MAKE_VERSION(9, 0, 0)) + ,LTE_PMCH_InfoList_r9_t *pmch_InfoList_r9 + #endif + ,rb_id_t *const defaultDRB, + struct NR_CellGroupConfig__rlc_BearerToAddModList *rlc_bearer2add_list); +extern rlc_op_status_t nr_rrc_rlc_config_asn1_req (const protocol_ctxt_t * const ctxt_pP, + const NR_SRB_ToAddModList_t * const srb2add_listP, + const NR_DRB_ToAddModList_t * const drb2add_listP, + const NR_DRB_ToReleaseList_t * const drb2release_listP, + const LTE_PMCH_InfoList_r9_t * const pmch_InfoList_r9_pP, + struct NR_CellGroupConfig__rlc_BearerToAddModList *rlc_bearer2add_list); + +void rrc_parse_ue_capabilities(gNB_RRC_INST *rrc, LTE_UE_CapabilityRAT_ContainerList_t *UE_CapabilityRAT_ContainerList, x2ap_ENDC_sgnb_addition_req_t *m, NR_CG_ConfigInfo_IEs_t *cg_config_info) { struct rrc_gNB_ue_context_s *ue_context_p = NULL; + OCTET_STRING_t *ueCapabilityRAT_Container_nr=NULL; OCTET_STRING_t *ueCapabilityRAT_Container_MRDC=NULL; + asn_dec_rval_t dec_rval; int list_size=0; + AssertFatal(UE_CapabilityRAT_ContainerList!=NULL,"UE_CapabilityRAT_ContainerList is null\n"); AssertFatal((list_size=UE_CapabilityRAT_ContainerList->list.count) >= 2, "UE_CapabilityRAT_ContainerList->list.size %d < 2\n",UE_CapabilityRAT_ContainerList->list.count); - for (int i=0;ilist.array[i]->rat_Type == LTE_RAT_Type_nr) ueCapabilityRAT_Container_nr = &UE_CapabilityRAT_ContainerList->list.array[i]->ueCapabilityRAT_Container; else if (UE_CapabilityRAT_ContainerList->list.array[i]->rat_Type == LTE_RAT_Type_eutra_nr) ueCapabilityRAT_Container_MRDC = &UE_CapabilityRAT_ContainerList->list.array[i]->ueCapabilityRAT_Container; - } + } - AssertFatal(ueCapabilityRAT_Container_nr!=NULL,"ueCapabilityRAT_Container_nr is NULL\n"); - AssertFatal(ueCapabilityRAT_Container_MRDC!=NULL,"ueCapabilityRAT_Container_MRDC is NULL\n"); // decode and store capabilities ue_context_p = rrc_gNB_allocate_new_UE_context(rrc); - - asn_dec_rval_t dec_rval = uper_decode(NULL, - &asn_DEF_NR_UE_NR_Capability, - (void **)&ue_context_p->ue_context.UE_Capability_nr, - ueCapabilityRAT_Container_nr->buf, - ueCapabilityRAT_Container_nr->size, 0, 0); - if ((dec_rval.code != RC_OK) && (dec_rval.consumed == 0)) { - LOG_E(RRC, "Failed to decode UE NR capabilities (%zu bytes) container size %lu\n", dec_rval.consumed,ueCapabilityRAT_Container_nr->size); + if (ueCapabilityRAT_Container_nr != NULL) { + dec_rval = uper_decode(NULL, + &asn_DEF_NR_UE_NR_Capability, + (void **)&ue_context_p->ue_context.UE_Capability_nr, + ueCapabilityRAT_Container_nr->buf, + ueCapabilityRAT_Container_nr->size, 0, 0); + + if ((dec_rval.code != RC_OK) && (dec_rval.consumed == 0)) { + LOG_E(RRC, "Failed to decode UE NR capabilities (%zu bytes) container size %lu\n", dec_rval.consumed,ueCapabilityRAT_Container_nr->size); ASN_STRUCT_FREE(asn_DEF_NR_UE_NR_Capability, ue_context_p->ue_context.UE_Capability_nr); ue_context_p->ue_context.UE_Capability_nr = 0; AssertFatal(1==0,"exiting\n"); + } } - dec_rval = uper_decode(NULL, - &asn_DEF_NR_UE_MRDC_Capability, - (void **)&ue_context_p->ue_context.UE_Capability_MRDC, - ueCapabilityRAT_Container_MRDC->buf, - ueCapabilityRAT_Container_MRDC->size, 0, 0); + if (ueCapabilityRAT_Container_MRDC != NULL) { + dec_rval = uper_decode(NULL, + &asn_DEF_NR_UE_MRDC_Capability, + (void **)&ue_context_p->ue_context.UE_Capability_MRDC, + ueCapabilityRAT_Container_MRDC->buf, + ueCapabilityRAT_Container_MRDC->size, 0, 0); - if ((dec_rval.code != RC_OK) && (dec_rval.consumed == 0)) { + if ((dec_rval.code != RC_OK) && (dec_rval.consumed == 0)) { LOG_E(RRC, "Failed to decode UE MRDC capabilities (%zu bytes)\n", dec_rval.consumed); ASN_STRUCT_FREE(asn_DEF_NR_UE_MRDC_Capability, ue_context_p->ue_context.UE_Capability_MRDC); ue_context_p->ue_context.UE_Capability_MRDC = 0; AssertFatal(1==0,"exiting\n"); + } } // dump ue_capabilities - if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) { - xer_fprint(stdout, &asn_DEF_NR_UE_NR_Capability, ue_context_p->ue_context.UE_Capability_nr); - } + if ( LOG_DEBUGFLAG(DEBUG_ASN1 && ueCapabilityRAT_Container_nr != NULL) ) { + xer_fprint(stdout, &asn_DEF_NR_UE_NR_Capability, ue_context_p->ue_context.UE_Capability_nr); + } - if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) { - xer_fprint(stdout, &asn_DEF_NR_UE_MRDC_Capability, ue_context_p->ue_context.UE_Capability_MRDC); - } + if ( LOG_DEBUGFLAG(DEBUG_ASN1 && ueCapabilityRAT_Container_MRDC != NULL) ) { + xer_fprint(stdout, &asn_DEF_NR_UE_MRDC_Capability, ue_context_p->ue_context.UE_Capability_MRDC); + } - rrc_add_nsa_user(rrc,ue_context_p); + if(cg_config_info && cg_config_info->mcg_RB_Config) { + asn_dec_rval_t dec_rval = uper_decode(NULL, + &asn_DEF_NR_RadioBearerConfig, + (void **)&ue_context_p->ue_context.rb_config, + cg_config_info->mcg_RB_Config->buf, + cg_config_info->mcg_RB_Config->size, 0, 0); + + if((dec_rval.code != RC_OK) && (dec_rval.consumed == 0)) { + AssertFatal(1==0,"[InterNode] Failed to decode mcg_rb_config (%zu bits), size of OCTET_STRING %lu\n", + dec_rval.consumed, cg_config_info->mcg_RB_Config->size); + } + } + + xer_fprint(stdout, &asn_DEF_NR_RadioBearerConfig, (const void *)ue_context_p->ue_context.rb_config); + rrc_add_nsa_user(rrc,ue_context_p, m); } -void rrc_add_nsa_user(gNB_RRC_INST *rrc,struct rrc_gNB_ue_context_s *ue_context_p) { - -// generate nr-Config-r15 containers for LTE RRC : inside message for X2 EN-DC (CG-Config Message from 38.331) +/* generate prototypes for the tree management functions (RB_INSERT used in rrc_add_nsa_user) */ +RB_PROTOTYPE(rrc_nr_ue_tree_s, rrc_gNB_ue_context_s, entries, + rrc_gNB_compare_ue_rnti_id); +void rrc_add_nsa_user(gNB_RRC_INST *rrc,struct rrc_gNB_ue_context_s *ue_context_p, x2ap_ENDC_sgnb_addition_req_t *m) { + // generate nr-Config-r15 containers for LTE RRC : inside message for X2 EN-DC (CG-Config Message from 38.331) rrc_gNB_carrier_data_t *carrier=&rrc->carrier; - MessageDef *msg; msg = itti_alloc_new_message(TASK_RRC_ENB, X2AP_ENDC_SGNB_ADDITION_REQ_ACK); - -// NR RRCReconfiguration - + gtpv1u_enb_create_tunnel_req_t create_tunnel_req; + gtpv1u_enb_create_tunnel_resp_t create_tunnel_resp; + protocol_ctxt_t ctxt; + // NR RRCReconfiguration AssertFatal(rrc->Nb_ue < MAX_NR_RRC_UE_CONTEXTS,"cannot add another UE\n"); - ue_context_p->ue_context.reconfig = calloc(1,sizeof(NR_RRCReconfiguration_t)); ue_context_p->ue_context.secondaryCellGroup = calloc(1,sizeof(NR_CellGroupConfig_t)); - memset((void*)ue_context_p->ue_context.reconfig,0,sizeof(NR_RRCReconfiguration_t)); + memset((void *)ue_context_p->ue_context.reconfig,0,sizeof(NR_RRCReconfiguration_t)); ue_context_p->ue_context.reconfig->rrc_TransactionIdentifier=0; ue_context_p->ue_context.reconfig->criticalExtensions.present = NR_RRCReconfiguration__criticalExtensions_PR_rrcReconfiguration; NR_RRCReconfiguration_IEs_t *reconfig_ies=calloc(1,sizeof(NR_RRCReconfiguration_IEs_t)); ue_context_p->ue_context.reconfig->criticalExtensions.choice.rrcReconfiguration = reconfig_ies; carrier->initial_csi_index[rrc->Nb_ue] = 0; + if (get_softmodem_params()->phy_test == 1 || get_softmodem_params()->do_ra == 1){ + ue_context_p->ue_context.rb_config = calloc(1,sizeof(NR_RRCReconfiguration_t)); + fill_default_rbconfig(ue_context_p->ue_context.rb_config); + } fill_default_reconfig(carrier->servingcellconfigcommon, - reconfig_ies, - ue_context_p->ue_context.secondaryCellGroup, - carrier->pdsch_AntennaPorts, - carrier->initial_csi_index[rrc->Nb_ue]); - - ue_context_p->ue_context.rb_config = calloc(1,sizeof(NR_RRCReconfiguration_t)); - - fill_default_rbconfig(ue_context_p->ue_context.rb_config); + reconfig_ies, + ue_context_p->ue_context.secondaryCellGroup, + carrier->pdsch_AntennaPorts, + carrier->initial_csi_index[rrc->Nb_ue]); ue_context_p->ue_id_rnti = ue_context_p->ue_context.secondaryCellGroup->spCellConfig->reconfigurationWithSync->newUE_Identity; NR_CG_Config_t *CG_Config = calloc(1,sizeof(*CG_Config)); - memset((void*)CG_Config,0,sizeof(*CG_Config)); - int CG_Config_size = generate_CG_Config(rrc,CG_Config,ue_context_p->ue_context.reconfig,ue_context_p->ue_context.rb_config); + memset((void *)CG_Config,0,sizeof(*CG_Config)); + //int CG_Config_size = generate_CG_Config(rrc,CG_Config,ue_context_p->ue_context.reconfig,ue_context_p->ue_context.rb_config); + generate_CG_Config(rrc,CG_Config,ue_context_p->ue_context.reconfig,ue_context_p->ue_context.rb_config); + + if(m!=NULL) { + uint8_t inde_list[m->nb_e_rabs_tobeadded]; + memset(inde_list, 0, m->nb_e_rabs_tobeadded*sizeof(uint8_t)); + + if (m->nb_e_rabs_tobeadded>0) { + for (int i=0; inb_e_rabs_tobeadded; i++) { + // Add the new E-RABs at the corresponding rrc ue context of the gNB + ue_context_p->ue_context.e_rab[i].param.e_rab_id = m->e_rabs_tobeadded[i].e_rab_id; + ue_context_p->ue_context.e_rab[i].param.gtp_teid = m->e_rabs_tobeadded[i].gtp_teid; + memcpy(&ue_context_p->ue_context.e_rab[i].param.sgw_addr, &m->e_rabs_tobeadded[i].sgw_addr, sizeof(transport_layer_addr_t)); + ue_context_p->ue_context.nb_of_e_rabs++; + //Fill the required E-RAB specific information for the creation of the S1-U tunnel between the gNB and the SGW + create_tunnel_req.eps_bearer_id[i] = ue_context_p->ue_context.e_rab[i].param.e_rab_id; + create_tunnel_req.sgw_S1u_teid[i] = ue_context_p->ue_context.e_rab[i].param.gtp_teid; + memcpy(&create_tunnel_req.sgw_addr[i], &ue_context_p->ue_context.e_rab[i].param.sgw_addr, sizeof(transport_layer_addr_t)); + inde_list[i] = i; + LOG_I(RRC,"S1-U tunnel: index %d target sgw ip %d.%d.%d.%d length %d gtp teid %u\n", + i, + create_tunnel_req.sgw_addr[i].buffer[0], + create_tunnel_req.sgw_addr[i].buffer[1], + create_tunnel_req.sgw_addr[i].buffer[2], + create_tunnel_req.sgw_addr[i].buffer[3], + create_tunnel_req.sgw_addr[i].length, + create_tunnel_req.sgw_S1u_teid[i]); + } + + create_tunnel_req.rnti = ue_context_p->ue_id_rnti; + create_tunnel_req.num_tunnels = m->nb_e_rabs_tobeadded; + RB_INSERT(rrc_nr_ue_tree_s, &RC.nrrrc[rrc->module_id]->rrc_ue_head, ue_context_p); + PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, rrc->module_id, GNB_FLAG_YES, ue_context_p->ue_id_rnti, 0, 0,rrc->module_id); + gtpv1u_create_s1u_tunnel( + ctxt.instance, + &create_tunnel_req, + &create_tunnel_resp); + rrc_gNB_process_GTPV1U_CREATE_TUNNEL_RESP( + &ctxt, + &create_tunnel_resp, + &inde_list[0]); + X2AP_ENDC_SGNB_ADDITION_REQ_ACK(msg).nb_e_rabs_admitted_tobeadded = m->nb_e_rabs_tobeadded; + X2AP_ENDC_SGNB_ADDITION_REQ_ACK(msg).target_assoc_id = m->target_assoc_id; + + for(int i=0; iue_context.nb_of_e_rabs; i++) { + X2AP_ENDC_SGNB_ADDITION_REQ_ACK(msg).e_rabs_admitted_tobeadded[i].e_rab_id = ue_context_p->ue_context.e_rab[i].param.e_rab_id; + X2AP_ENDC_SGNB_ADDITION_REQ_ACK(msg).e_rabs_admitted_tobeadded[i].gtp_teid = create_tunnel_resp.enb_S1u_teid[i]; + memcpy(&X2AP_ENDC_SGNB_ADDITION_REQ_ACK(msg).e_rabs_admitted_tobeadded[i].gnb_addr, &create_tunnel_resp.enb_addr, sizeof(transport_layer_addr_t)); + //The length field in the X2AP targetting structure is expected in bits but the create_tunnel_resp returns the address length in bytes + X2AP_ENDC_SGNB_ADDITION_REQ_ACK(msg).e_rabs_admitted_tobeadded[i].gnb_addr.length = create_tunnel_resp.enb_addr.length*8; + LOG_I(RRC,"S1-U create_tunnel_resp tunnel: index %d target gNB ip %d.%d.%d.%d length %d gtp teid %u\n", + i, + create_tunnel_resp.enb_addr.buffer[0], + create_tunnel_resp.enb_addr.buffer[1], + create_tunnel_resp.enb_addr.buffer[2], + create_tunnel_resp.enb_addr.buffer[3], + create_tunnel_resp.enb_addr.length, + create_tunnel_resp.enb_S1u_teid[i]); + LOG_I(RRC,"X2AP sGNB Addition Request: index %d target gNB ip %d.%d.%d.%d length %d gtp teid %u\n", + i, + X2AP_ENDC_SGNB_ADDITION_REQ_ACK(msg).e_rabs_admitted_tobeadded[i].gnb_addr.buffer[0], + X2AP_ENDC_SGNB_ADDITION_REQ_ACK(msg).e_rabs_admitted_tobeadded[i].gnb_addr.buffer[1], + X2AP_ENDC_SGNB_ADDITION_REQ_ACK(msg).e_rabs_admitted_tobeadded[i].gnb_addr.buffer[2], + X2AP_ENDC_SGNB_ADDITION_REQ_ACK(msg).e_rabs_admitted_tobeadded[i].gnb_addr.buffer[3], + X2AP_ENDC_SGNB_ADDITION_REQ_ACK(msg).e_rabs_admitted_tobeadded[i].gnb_addr.length, + X2AP_ENDC_SGNB_ADDITION_REQ_ACK(msg).e_rabs_admitted_tobeadded[i].gtp_teid); + } + } else + LOG_W(RRC, "No E-RAB to be added received from SgNB Addition Request message \n"); + } //X2AP_ENDC_SGNB_ADDITION_REQ_ACK(msg).rrc_buffer_size = CG_Config_size; //Need to verify correct value for the buffer_size // Send to X2 entity to transport to MeNB asn_enc_rval_t enc_rval = uper_encode_to_buffer(&asn_DEF_NR_CG_Config, - NULL, - (void *)CG_Config, - X2AP_ENDC_SGNB_ADDITION_REQ_ACK(msg).rrc_buffer, - 1024); - + NULL, + (void *)CG_Config, + X2AP_ENDC_SGNB_ADDITION_REQ_ACK(msg).rrc_buffer, + 1024); X2AP_ENDC_SGNB_ADDITION_REQ_ACK(msg).rrc_buffer_size = (enc_rval.encoded+7)>>3; - itti_send_msg_to_task(TASK_X2AP, ENB_MODULE_ID_TO_INSTANCE(0), msg); //Check right id instead of hardcoding - rrc->Nb_ue++; // configure MAC and RLC rrc_mac_config_req_gNB(rrc->module_id, - rrc->carrier.ssb_SubcarrierOffset, + rrc->carrier.ssb_SubcarrierOffset, rrc->carrier.pdsch_AntennaPorts, - NULL, - 1, // add_ue flag - ue_context_p->ue_id_rnti, - ue_context_p->ue_context.secondaryCellGroup); + rrc->carrier.pusch_TargetSNRx10, + rrc->carrier.pucch_TargetSNRx10, + NULL, + 1, // add_ue flag + ue_context_p->ue_id_rnti, + ue_context_p->ue_context.secondaryCellGroup); + + nr_rrc_pdcp_config_asn1_req( + &ctxt, + (NR_SRB_ToAddModList_t *) NULL, + ue_context_p->ue_context.rb_config->drb_ToAddModList , + ue_context_p->ue_context.rb_config->drb_ToReleaseList, + 0xff, + NULL, + NULL, + NULL, + NULL, + NULL, + ue_context_p->ue_context.secondaryCellGroup->rlc_BearerToAddModList); + + nr_rrc_rlc_config_asn1_req (&ctxt, + (NR_SRB_ToAddModList_t *) NULL, + ue_context_p->ue_context.rb_config->drb_ToAddModList, + ue_context_p->ue_context.rb_config->drb_ToReleaseList, + (LTE_PMCH_InfoList_r9_t *) NULL, + ue_context_p->ue_context.secondaryCellGroup->rlc_BearerToAddModList); + } diff --git a/openair2/RRC/NR/rrc_gNB_reconfig.c b/openair2/RRC/NR/rrc_gNB_reconfig.c index 1df17a19aa..b8962051d8 100644 --- a/openair2/RRC/NR/rrc_gNB_reconfig.c +++ b/openair2/RRC/NR/rrc_gNB_reconfig.c @@ -49,41 +49,54 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellconfigcommon, - NR_CellGroupConfig_t *secondaryCellGroup, - int scg_id, - int servCellIndex, - int n_physical_antenna_ports, - int initial_csi_index) { + NR_CellGroupConfig_t *secondaryCellGroup, + int scg_id, + int servCellIndex, + int n_physical_antenna_ports, + int initial_csi_index) { AssertFatal(servingcellconfigcommon!=NULL,"servingcellconfigcommon is null\n"); AssertFatal(secondaryCellGroup!=NULL,"secondaryCellGroup is null\n"); - memset(secondaryCellGroup,0,sizeof(NR_CellGroupConfig_t)); secondaryCellGroup->cellGroupId = scg_id; - NR_RLC_BearerConfig_t *RLC_BearerConfig = calloc(1,sizeof(*RLC_BearerConfig)); - RLC_BearerConfig->logicalChannelIdentity = 4; RLC_BearerConfig->servedRadioBearer = calloc(1,sizeof(*RLC_BearerConfig->servedRadioBearer)); - RLC_BearerConfig->servedRadioBearer->present = NR_RLC_BearerConfig__servedRadioBearer_PR_drb_Identity; - + RLC_BearerConfig->servedRadioBearer->present = NR_RLC_BearerConfig__servedRadioBearer_PR_drb_Identity; RLC_BearerConfig->servedRadioBearer->choice.drb_Identity=1; RLC_BearerConfig->reestablishRLC=calloc(1,sizeof(*RLC_BearerConfig->reestablishRLC)); *RLC_BearerConfig->reestablishRLC=NR_RLC_BearerConfig__reestablishRLC_true; RLC_BearerConfig->rlc_Config=calloc(1,sizeof(*RLC_BearerConfig->rlc_Config)); + +#if 0 + + // RLC UM Bi-directional Bearer configuration + RLC_BearerConfig->rlc_Config->present = NR_RLC_Config_PR_um_Bi_Directional; + RLC_BearerConfig->rlc_Config->choice.um_Bi_Directional = calloc(1,sizeof(*RLC_BearerConfig->rlc_Config->choice.um_Bi_Directional)); + RLC_BearerConfig->rlc_Config->choice.um_Bi_Directional->ul_UM_RLC.sn_FieldLength = calloc(1,sizeof(*RLC_BearerConfig->rlc_Config->choice.um_Bi_Directional->ul_UM_RLC.sn_FieldLength)); + *RLC_BearerConfig->rlc_Config->choice.um_Bi_Directional->ul_UM_RLC.sn_FieldLength = NR_SN_FieldLengthUM_size12; + + RLC_BearerConfig->rlc_Config->choice.um_Bi_Directional->dl_UM_RLC.sn_FieldLength = calloc(1,sizeof(*RLC_BearerConfig->rlc_Config->choice.um_Bi_Directional->dl_UM_RLC.sn_FieldLength)); + *RLC_BearerConfig->rlc_Config->choice.um_Bi_Directional->dl_UM_RLC.sn_FieldLength = NR_SN_FieldLengthUM_size12; + RLC_BearerConfig->rlc_Config->choice.um_Bi_Directional->dl_UM_RLC.t_Reassembly = NR_T_Reassembly_ms15; + +#else + + // RLC AM Bearer configuration RLC_BearerConfig->rlc_Config->present = NR_RLC_Config_PR_am; RLC_BearerConfig->rlc_Config->choice.am = calloc(1,sizeof(*RLC_BearerConfig->rlc_Config->choice.am)); RLC_BearerConfig->rlc_Config->choice.am->ul_AM_RLC.sn_FieldLength = calloc(1,sizeof(*RLC_BearerConfig->rlc_Config->choice.am->ul_AM_RLC.sn_FieldLength)); - *RLC_BearerConfig->rlc_Config->choice.am->ul_AM_RLC.sn_FieldLength = NR_SN_FieldLengthAM_size18; + *RLC_BearerConfig->rlc_Config->choice.am->ul_AM_RLC.sn_FieldLength = NR_SN_FieldLengthAM_size18; RLC_BearerConfig->rlc_Config->choice.am->ul_AM_RLC.t_PollRetransmit = NR_T_PollRetransmit_ms45; RLC_BearerConfig->rlc_Config->choice.am->ul_AM_RLC.pollPDU = NR_PollPDU_p64; RLC_BearerConfig->rlc_Config->choice.am->ul_AM_RLC.pollByte = NR_PollByte_kB500; RLC_BearerConfig->rlc_Config->choice.am->ul_AM_RLC.maxRetxThreshold = NR_UL_AM_RLC__maxRetxThreshold_t32; - RLC_BearerConfig->rlc_Config->choice.am->dl_AM_RLC.sn_FieldLength = calloc(1,sizeof(*RLC_BearerConfig->rlc_Config->choice.am->dl_AM_RLC.sn_FieldLength)); *RLC_BearerConfig->rlc_Config->choice.am->dl_AM_RLC.sn_FieldLength = NR_SN_FieldLengthAM_size18; RLC_BearerConfig->rlc_Config->choice.am->dl_AM_RLC.t_Reassembly = NR_T_Reassembly_ms15; RLC_BearerConfig->rlc_Config->choice.am->dl_AM_RLC.t_StatusProhibit = NR_T_StatusProhibit_ms15; +#endif + RLC_BearerConfig->mac_LogicalChannelConfig = calloc(1,sizeof(*RLC_BearerConfig->mac_LogicalChannelConfig)); RLC_BearerConfig->mac_LogicalChannelConfig->ul_SpecificParameters = calloc(1,sizeof(*RLC_BearerConfig->mac_LogicalChannelConfig->ul_SpecificParameters)); RLC_BearerConfig->mac_LogicalChannelConfig->ul_SpecificParameters->priority = 1; @@ -99,10 +112,8 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco RLC_BearerConfig->mac_LogicalChannelConfig->ul_SpecificParameters->logicalChannelSR_Mask = false; RLC_BearerConfig->mac_LogicalChannelConfig->ul_SpecificParameters->logicalChannelSR_DelayTimerApplied = false; RLC_BearerConfig->mac_LogicalChannelConfig->ul_SpecificParameters->bitRateQueryProhibitTimer = NULL; - secondaryCellGroup->rlc_BearerToAddModList = calloc(1,sizeof(*secondaryCellGroup->rlc_BearerToAddModList)); ASN_SEQUENCE_ADD(&secondaryCellGroup->rlc_BearerToAddModList->list, RLC_BearerConfig); - secondaryCellGroup->mac_CellGroupConfig=calloc(1,sizeof(*secondaryCellGroup->mac_CellGroupConfig)); secondaryCellGroup->mac_CellGroupConfig->drx_Config = NULL; secondaryCellGroup->mac_CellGroupConfig->schedulingRequestConfig = NULL; @@ -126,25 +137,20 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco secondaryCellGroup->mac_CellGroupConfig->phr_Config->choice.setup->dummy=false; secondaryCellGroup->mac_CellGroupConfig->phr_Config->choice.setup->phr_Type2OtherCell = false; secondaryCellGroup->mac_CellGroupConfig->phr_Config->choice.setup->phr_ModeOtherCG = NR_PHR_Config__phr_ModeOtherCG_real; - secondaryCellGroup->mac_CellGroupConfig->skipUplinkTxDynamic=false; secondaryCellGroup->mac_CellGroupConfig->ext1 = NULL; - - secondaryCellGroup->physicalCellGroupConfig = calloc(1,sizeof(*secondaryCellGroup->physicalCellGroupConfig)); - secondaryCellGroup->physicalCellGroupConfig->harq_ACK_SpatialBundlingPUCCH=NULL; secondaryCellGroup->physicalCellGroupConfig->harq_ACK_SpatialBundlingPUSCH=NULL; secondaryCellGroup->physicalCellGroupConfig->p_NR_FR1=calloc(1,sizeof(*secondaryCellGroup->physicalCellGroupConfig->p_NR_FR1)); *secondaryCellGroup->physicalCellGroupConfig->p_NR_FR1=20; - secondaryCellGroup->physicalCellGroupConfig->pdsch_HARQ_ACK_Codebook=NR_PhysicalCellGroupConfig__pdsch_HARQ_ACK_Codebook_dynamic; + secondaryCellGroup->physicalCellGroupConfig->pdsch_HARQ_ACK_Codebook=NR_PhysicalCellGroupConfig__pdsch_HARQ_ACK_Codebook_dynamic; secondaryCellGroup->physicalCellGroupConfig->tpc_SRS_RNTI=NULL; secondaryCellGroup->physicalCellGroupConfig->tpc_PUCCH_RNTI=NULL; secondaryCellGroup->physicalCellGroupConfig->tpc_PUSCH_RNTI=NULL; secondaryCellGroup->physicalCellGroupConfig->sp_CSI_RNTI=NULL; secondaryCellGroup->physicalCellGroupConfig->cs_RNTI=NULL; secondaryCellGroup->physicalCellGroupConfig->ext1=NULL; - secondaryCellGroup->spCellConfig = calloc(1,sizeof(*secondaryCellGroup->spCellConfig)); secondaryCellGroup->spCellConfig->servCellIndex = calloc(1,sizeof(*secondaryCellGroup->spCellConfig->servCellIndex)); *secondaryCellGroup->spCellConfig->servCellIndex = servCellIndex; @@ -154,7 +160,25 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco secondaryCellGroup->spCellConfig->reconfigurationWithSync->t304=NR_ReconfigurationWithSync__t304_ms2000; secondaryCellGroup->spCellConfig->reconfigurationWithSync->rach_ConfigDedicated = NULL; secondaryCellGroup->spCellConfig->reconfigurationWithSync->ext1 = NULL; - + /* contention free ra */ + secondaryCellGroup->spCellConfig->reconfigurationWithSync->rach_ConfigDedicated = calloc(1,sizeof(struct NR_ReconfigurationWithSync__rach_ConfigDedicated)); + secondaryCellGroup->spCellConfig->reconfigurationWithSync->rach_ConfigDedicated->present= NR_ReconfigurationWithSync__rach_ConfigDedicated_PR_uplink; + secondaryCellGroup->spCellConfig->reconfigurationWithSync->rach_ConfigDedicated->choice.uplink= calloc(1,sizeof(struct NR_RACH_ConfigDedicated)); + secondaryCellGroup->spCellConfig->reconfigurationWithSync->rach_ConfigDedicated->choice.uplink->cfra= calloc(1,sizeof(struct NR_CFRA)); + secondaryCellGroup->spCellConfig->reconfigurationWithSync->rach_ConfigDedicated->choice.uplink->ra_Prioritization= NULL; + secondaryCellGroup->spCellConfig->reconfigurationWithSync->rach_ConfigDedicated->choice.uplink->cfra->occasions= calloc(1,sizeof(struct NR_CFRA__occasions)); + memcpy(&secondaryCellGroup->spCellConfig->reconfigurationWithSync->rach_ConfigDedicated->choice.uplink->cfra->occasions->rach_ConfigGeneric, + &servingcellconfigcommon->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->rach_ConfigGeneric, sizeof(NR_RACH_ConfigGeneric_t)); + secondaryCellGroup->spCellConfig->reconfigurationWithSync->rach_ConfigDedicated->choice.uplink->cfra->occasions->ssb_perRACH_Occasion= calloc(1,sizeof(long)); + *secondaryCellGroup->spCellConfig->reconfigurationWithSync->rach_ConfigDedicated->choice.uplink->cfra->occasions->ssb_perRACH_Occasion = NR_CFRA__occasions__ssb_perRACH_Occasion_one; + secondaryCellGroup->spCellConfig->reconfigurationWithSync->rach_ConfigDedicated->choice.uplink->cfra->resources.present = NR_CFRA__resources_PR_ssb; + secondaryCellGroup->spCellConfig->reconfigurationWithSync->rach_ConfigDedicated->choice.uplink->cfra->resources.choice.ssb = calloc(1,sizeof(struct NR_CFRA__resources__ssb)); + secondaryCellGroup->spCellConfig->reconfigurationWithSync->rach_ConfigDedicated->choice.uplink->cfra->resources.choice.ssb->ra_ssb_OccasionMaskIndex = 0; + struct NR_CFRA_SSB_Resource *ssbElem = calloc(1,sizeof(struct NR_CFRA_SSB_Resource)); + ssbElem->ssb = 0; + ssbElem->ra_PreambleIndex= 63; + ASN_SEQUENCE_ADD(&secondaryCellGroup->spCellConfig->reconfigurationWithSync->rach_ConfigDedicated->choice.uplink->cfra->resources.choice.ssb->ssb_ResourceList.list,ssbElem); + secondaryCellGroup->spCellConfig->reconfigurationWithSync->rach_ConfigDedicated->choice.uplink->cfra->ext1 = NULL; secondaryCellGroup->spCellConfig->rlf_TimersAndConstants = calloc(1,sizeof(*secondaryCellGroup->spCellConfig->rlf_TimersAndConstants)); secondaryCellGroup->spCellConfig->rlf_TimersAndConstants->present = NR_SetupRelease_RLF_TimersAndConstants_PR_setup; secondaryCellGroup->spCellConfig->rlf_TimersAndConstants->choice.setup=calloc(1,sizeof(*secondaryCellGroup->spCellConfig->rlf_TimersAndConstants->choice.setup)); @@ -163,21 +187,18 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco secondaryCellGroup->spCellConfig->rlf_TimersAndConstants->choice.setup->n311 = NR_RLF_TimersAndConstants__n311_n1; secondaryCellGroup->spCellConfig->rlf_TimersAndConstants->choice.setup->ext1 = calloc(1,sizeof(*secondaryCellGroup->spCellConfig->rlf_TimersAndConstants->choice.setup->ext1)); secondaryCellGroup->spCellConfig->rlf_TimersAndConstants->choice.setup->ext1->t311_v1530 = NR_RLF_TimersAndConstants__ext1__t311_v1530_ms30000; - secondaryCellGroup->spCellConfig->rlmInSyncOutOfSyncThreshold = NULL; - - - secondaryCellGroup->spCellConfig->spCellConfigDedicated = calloc(1,sizeof(*secondaryCellGroup->spCellConfig->spCellConfigDedicated)); secondaryCellGroup->spCellConfig->spCellConfigDedicated->tdd_UL_DL_ConfigurationDedicated = NULL; secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP = calloc(1,sizeof(*secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP)); - secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->pdcch_Config=NULL; secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->pdsch_Config=calloc(1,sizeof(*secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->pdsch_Config)); secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->pdsch_Config->present = NR_SetupRelease_PDSCH_Config_PR_setup; - secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->pdsch_Config->choice.setup = calloc(1,sizeof(*secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->pdsch_Config->choice.setup)); + secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->pdsch_Config->choice.setup = calloc(1, + sizeof(*secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->pdsch_Config->choice.setup)); secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->pdsch_Config->choice.setup->dataScramblingIdentityPDSCH = NULL; - secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA = calloc(1,sizeof(*secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA)); + secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA = calloc(1, + sizeof(*secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA)); secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->present= NR_SetupRelease_DMRS_DownlinkConfig_PR_setup; secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup = calloc(1,sizeof(*secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup)); @@ -190,6 +211,7 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->dmrs_AdditionalPosition = calloc(1,sizeof(*secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->dmrs_AdditionalPosition)); *secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->dmrs_AdditionalPosition = NR_DMRS_DownlinkConfig__dmrs_AdditionalPosition_pos0; +#if 0 secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->pdsch_Config->choice.setup->tci_StatesToAddModList=calloc(1,sizeof(*secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->pdsch_Config->choice.setup->tci_StatesToAddModList)); NR_TCI_State_t*tci0=calloc(1,sizeof(*tci0)); @@ -351,10 +373,11 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco tci15->qcl_Type1.referenceSignal.choice.ssb = 7; tci15->qcl_Type1.qcl_Type=NR_QCL_Info__qcl_Type_typeC; ASN_SEQUENCE_ADD(&secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->pdsch_Config->choice.setup->tci_StatesToAddModList->list,tci15); +#endif secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->pdsch_Config->choice.setup->tci_StatesToReleaseList=NULL; secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->pdsch_Config->choice.setup->vrb_ToPRB_Interleaver=NULL; - secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->pdsch_Config->choice.setup->resourceAllocation=NR_PDSCH_Config__resourceAllocation_resourceAllocationType0; + secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->pdsch_Config->choice.setup->resourceAllocation=NR_PDSCH_Config__resourceAllocation_resourceAllocationType1; secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->pdsch_Config->choice.setup->pdsch_TimeDomainAllocationList=NULL; secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->pdsch_Config->choice.setup->pdsch_AggregationFactor=NULL; secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->pdsch_Config->choice.setup->rateMatchPatternToAddModList=NULL; @@ -379,6 +402,8 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->pdsch_Config->choice.setup->p_ZP_CSI_RS_ResourceSet=NULL; secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->sps_Config = NULL; //calloc(1,sizeof(struct NR_SetupRelease_SPS_Config)); + secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->radioLinkMonitoringConfig = NULL; +#if 0 secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->radioLinkMonitoringConfig = calloc(1,sizeof(*secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->radioLinkMonitoringConfig)); secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->radioLinkMonitoringConfig->present = NR_SetupRelease_RadioLinkMonitoringConfig_PR_setup; @@ -389,6 +414,7 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco *secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->radioLinkMonitoringConfig->choice.setup->beamFailureInstanceMaxCount = NR_RadioLinkMonitoringConfig__beamFailureInstanceMaxCount_n3; secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->radioLinkMonitoringConfig->choice.setup->beamFailureDetectionTimer = calloc(1,sizeof(*secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->radioLinkMonitoringConfig->choice.setup->beamFailureDetectionTimer)); *secondaryCellGroup->spCellConfig->spCellConfigDedicated->initialDownlinkBWP->radioLinkMonitoringConfig->choice.setup->beamFailureDetectionTimer = NR_RadioLinkMonitoringConfig__beamFailureDetectionTimer_pbfd2; +#endif secondaryCellGroup->spCellConfig->spCellConfigDedicated->downlinkBWP_ToReleaseList= NULL; secondaryCellGroup->spCellConfig->spCellConfigDedicated->downlinkBWP_ToAddModList = calloc(1,sizeof(*secondaryCellGroup->spCellConfig->spCellConfigDedicated->downlinkBWP_ToAddModList)); @@ -407,17 +433,45 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco bwp->bwp_Common->pdcch_ConfigCommon->present = NR_SetupRelease_PDCCH_ConfigCommon_PR_setup; bwp->bwp_Common->pdcch_ConfigCommon->choice.setup = calloc(1,sizeof(*bwp->bwp_Common->pdcch_ConfigCommon->choice.setup)); bwp->bwp_Common->pdcch_ConfigCommon->choice.setup->controlResourceSetZero=NULL; - bwp->bwp_Common->pdcch_ConfigCommon->choice.setup->commonControlResourceSet=NULL; - bwp->bwp_Common->pdcch_ConfigCommon->choice.setup->searchSpaceZero=NULL; + bwp->bwp_Common->pdcch_ConfigCommon->choice.setup->commonControlResourceSet=calloc(1,sizeof(*bwp->bwp_Common->pdcch_ConfigCommon->choice.setup->commonControlResourceSet)); + NR_ControlResourceSet_t *coreset = calloc(1,sizeof(*coreset)); + coreset->controlResourceSetId=1; + // frequencyDomainResources '11111111 11111111 00000000 00000000 00000000 00000'B, + coreset->frequencyDomainResources.buf = calloc(1,6); + coreset->frequencyDomainResources.buf[0] = 0xff; + coreset->frequencyDomainResources.buf[1] = 0xff; + coreset->frequencyDomainResources.buf[2] = 0; + coreset->frequencyDomainResources.buf[3] = 0; + coreset->frequencyDomainResources.buf[4] = 0; + coreset->frequencyDomainResources.buf[5] = 0; + coreset->frequencyDomainResources.size = 6; + coreset->frequencyDomainResources.bits_unused = 3; + coreset->duration=1; + coreset->cce_REG_MappingType.present = NR_ControlResourceSet__cce_REG_MappingType_PR_nonInterleaved; + coreset->precoderGranularity = NR_ControlResourceSet__precoderGranularity_sameAsREG_bundle; + + coreset->tci_StatesPDCCH_ToAddList=calloc(1,sizeof(*coreset->tci_StatesPDCCH_ToAddList)); + NR_TCI_StateId_t *tci[8]; + for (int i=0;i<8;i++) { + tci[i]=calloc(1,sizeof(*tci[i])); + *tci[i] = i; + ASN_SEQUENCE_ADD(&coreset->tci_StatesPDCCH_ToAddList->list,tci[i]); + } + coreset->tci_StatesPDCCH_ToReleaseList = NULL; + coreset->tci_PresentInDCI = NULL; + coreset->pdcch_DMRS_ScramblingID = NULL; + + bwp->bwp_Common->pdcch_ConfigCommon->choice.setup->commonControlResourceSet = coreset; + + bwp->bwp_Common->pdcch_ConfigCommon->choice.setup->searchSpaceZero=NULL; bwp->bwp_Common->pdcch_ConfigCommon->choice.setup->commonSearchSpaceList=NULL; - bwp->bwp_Common->pdcch_ConfigCommon->choice.setup->commonSearchSpaceList=calloc(1,sizeof(*bwp->bwp_Common->pdcch_ConfigCommon->choice.setup->commonSearchSpaceList)); NR_SearchSpace_t *ss=calloc(1,sizeof(*ss)); ss->searchSpaceId = 1; ss->controlResourceSetId=calloc(1,sizeof(*ss->controlResourceSetId)); - *ss->controlResourceSetId=0; + *ss->controlResourceSetId=1; ss->monitoringSlotPeriodicityAndOffset = calloc(1,sizeof(*ss->monitoringSlotPeriodicityAndOffset)); ss->monitoringSlotPeriodicityAndOffset->present = NR_SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl1; ss->duration=NULL; @@ -474,64 +528,13 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco bwp->bwp_Dedicated->pdcch_Config->present = NR_SetupRelease_PDCCH_Config_PR_setup; bwp->bwp_Dedicated->pdcch_Config->choice.setup = calloc(1,sizeof(*bwp->bwp_Dedicated->pdcch_Config->choice.setup)); bwp->bwp_Dedicated->pdcch_Config->choice.setup->controlResourceSetToAddModList = calloc(1,sizeof(*bwp->bwp_Dedicated->pdcch_Config->choice.setup->controlResourceSetToAddModList)); - NR_ControlResourceSet_t *coreset0 = calloc(1,sizeof(*coreset0)); - coreset0->controlResourceSetId=1; - // frequencyDomainResources '11111111 11111111 00000000 00000000 00000000 00000'B, - coreset0->frequencyDomainResources.buf = calloc(1,6); - coreset0->frequencyDomainResources.buf[0] = 0xff; - coreset0->frequencyDomainResources.buf[1] = 0xff; - coreset0->frequencyDomainResources.buf[2] = 0; - coreset0->frequencyDomainResources.buf[3] = 0; - coreset0->frequencyDomainResources.buf[4] = 0; - coreset0->frequencyDomainResources.buf[5] = 0; - coreset0->frequencyDomainResources.size = 6; - coreset0->frequencyDomainResources.bits_unused = 3; - coreset0->duration=1; - coreset0->cce_REG_MappingType.present = NR_ControlResourceSet__cce_REG_MappingType_PR_nonInterleaved; - coreset0->precoderGranularity = NR_ControlResourceSet__precoderGranularity_sameAsREG_bundle; - coreset0->tci_StatesPDCCH_ToAddList=calloc(1,sizeof(*coreset0->tci_StatesPDCCH_ToAddList)); - NR_TCI_StateId_t *tci[8]; - for (int i=0;i<8;i++) { - tci[i]=calloc(1,sizeof(*tci[i])); - *tci[i] = i; - ASN_SEQUENCE_ADD(&coreset0->tci_StatesPDCCH_ToAddList->list,tci[i]); - } - coreset0->tci_StatesPDCCH_ToReleaseList = NULL; - coreset0->tci_PresentInDCI = NULL; - coreset0->pdcch_DMRS_ScramblingID = NULL; ASN_SEQUENCE_ADD(&bwp->bwp_Dedicated->pdcch_Config->choice.setup->controlResourceSetToAddModList->list, - coreset0); + coreset); bwp->bwp_Dedicated->pdcch_Config->choice.setup->searchSpacesToAddModList = calloc(1,sizeof(*bwp->bwp_Dedicated->pdcch_Config->choice.setup->searchSpacesToAddModList)); - NR_SearchSpace_t *ss3 = calloc(1,sizeof(*ss3)); + NR_SearchSpace_t *ss2 = calloc(1,sizeof(*ss2)); - ss3->searchSpaceId=3; - ss3->controlResourceSetId=calloc(1,sizeof(*ss3->controlResourceSetId)); - *ss3->controlResourceSetId=1; - ss3->monitoringSlotPeriodicityAndOffset=calloc(1,sizeof(*ss3->monitoringSlotPeriodicityAndOffset)); - ss3->monitoringSlotPeriodicityAndOffset->present = NR_SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl1; - ss3->monitoringSlotPeriodicityAndOffset->choice.sl1=(NULL_t)0; - ss3->duration=NULL; - ss3->monitoringSymbolsWithinSlot = calloc(1,sizeof(*ss3->monitoringSymbolsWithinSlot)); - ss3->monitoringSymbolsWithinSlot->buf = calloc(1,2); - ss3->monitoringSymbolsWithinSlot->size = 2; - ss3->monitoringSymbolsWithinSlot->bits_unused = 2; - ss3->monitoringSymbolsWithinSlot->buf[0]=0xc0; - ss3->monitoringSymbolsWithinSlot->buf[1]=0x0; - ss3->nrofCandidates=calloc(1,sizeof(*ss3->nrofCandidates)); - ss3->nrofCandidates->aggregationLevel1 = NR_SearchSpace__nrofCandidates__aggregationLevel1_n0; - ss3->nrofCandidates->aggregationLevel2 = NR_SearchSpace__nrofCandidates__aggregationLevel2_n0; - ss3->nrofCandidates->aggregationLevel4 = NR_SearchSpace__nrofCandidates__aggregationLevel4_n1; - ss3->nrofCandidates->aggregationLevel8 = NR_SearchSpace__nrofCandidates__aggregationLevel8_n0; - ss3->nrofCandidates->aggregationLevel16 = NR_SearchSpace__nrofCandidates__aggregationLevel16_n0; - ss3->searchSpaceType=calloc(1,sizeof(*ss3->searchSpaceType)); - ss3->searchSpaceType->present = NR_SearchSpace__searchSpaceType_PR_common; - ss3->searchSpaceType->choice.common = calloc(1,sizeof(*ss3->searchSpaceType->choice.common)); - ss3->searchSpaceType->choice.common->dci_Format0_0_AndFormat1_0=calloc(1,sizeof(*ss3->searchSpaceType->choice.common->dci_Format0_0_AndFormat1_0)); - ss3->searchSpaceType->choice.common->dci_Format2_0=NULL; - ss3->searchSpaceType->choice.common->dci_Format2_2=NULL; - ss3->searchSpaceType->choice.common->dci_Format2_3=NULL; ss2->searchSpaceId=2; ss2->controlResourceSetId=calloc(1,sizeof(*ss2->controlResourceSetId)); @@ -555,10 +558,8 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco ss2->searchSpaceType=calloc(1,sizeof(*ss2->searchSpaceType)); ss2->searchSpaceType->present = NR_SearchSpace__searchSpaceType_PR_ue_Specific; ss2->searchSpaceType->choice.ue_Specific = calloc(1,sizeof(*ss2->searchSpaceType->choice.ue_Specific)); - ss2->searchSpaceType->choice.ue_Specific->dci_Formats=NR_SearchSpace__searchSpaceType__ue_Specific__dci_Formats_formats0_0_And_1_0; + ss2->searchSpaceType->choice.ue_Specific->dci_Formats=NR_SearchSpace__searchSpaceType__ue_Specific__dci_Formats_formats0_1_And_1_1; - ASN_SEQUENCE_ADD(&bwp->bwp_Dedicated->pdcch_Config->choice.setup->searchSpacesToAddModList->list, - ss3); ASN_SEQUENCE_ADD(&bwp->bwp_Dedicated->pdcch_Config->choice.setup->searchSpacesToAddModList->list, ss2); @@ -572,6 +573,7 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco bwp->bwp_Dedicated->pdsch_Config->choice.setup->dataScramblingIdentityPDSCH = NULL; bwp->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA = calloc(1,sizeof(*bwp->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA)); bwp->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->present= NR_SetupRelease_DMRS_DownlinkConfig_PR_setup; + bwp->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup = calloc(1,sizeof(*bwp->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup)); bwp->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->dmrs_Type=NULL; @@ -583,6 +585,8 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco bwp->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->dmrs_AdditionalPosition = calloc(1,sizeof(*bwp->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->dmrs_AdditionalPosition)); *bwp->bwp_Dedicated->pdsch_Config->choice.setup->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->dmrs_AdditionalPosition = NR_DMRS_DownlinkConfig__dmrs_AdditionalPosition_pos0; + bwp->bwp_Dedicated->pdsch_Config->choice.setup->tci_StatesToAddModList=NULL; +#if 0 bwp->bwp_Dedicated->pdsch_Config->choice.setup->tci_StatesToAddModList=calloc(1,sizeof(*bwp->bwp_Dedicated->pdsch_Config->choice.setup->tci_StatesToAddModList)); NR_TCI_State_t*tcid0=calloc(1,sizeof(*tcid0)); @@ -744,10 +748,11 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco tcid15->qcl_Type1.referenceSignal.choice.ssb = 7; tcid15->qcl_Type1.qcl_Type=NR_QCL_Info__qcl_Type_typeC; ASN_SEQUENCE_ADD(&bwp->bwp_Dedicated->pdsch_Config->choice.setup->tci_StatesToAddModList->list,tcid15); +#endif bwp->bwp_Dedicated->pdsch_Config->choice.setup->tci_StatesToReleaseList=NULL; bwp->bwp_Dedicated->pdsch_Config->choice.setup->vrb_ToPRB_Interleaver=NULL; - bwp->bwp_Dedicated->pdsch_Config->choice.setup->resourceAllocation=NR_PDSCH_Config__resourceAllocation_resourceAllocationType0; + bwp->bwp_Dedicated->pdsch_Config->choice.setup->resourceAllocation=NR_PDSCH_Config__resourceAllocation_resourceAllocationType1; bwp->bwp_Dedicated->pdsch_Config->choice.setup->pdsch_TimeDomainAllocationList=NULL; bwp->bwp_Dedicated->pdsch_Config->choice.setup->pdsch_AggregationFactor=NULL; bwp->bwp_Dedicated->pdsch_Config->choice.setup->rateMatchPatternToAddModList=NULL; @@ -773,7 +778,7 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco bwp->bwp_Dedicated->pdsch_Config->choice.setup->tci_StatesToReleaseList=NULL; bwp->bwp_Dedicated->pdsch_Config->choice.setup->vrb_ToPRB_Interleaver=NULL; - bwp->bwp_Dedicated->pdsch_Config->choice.setup->resourceAllocation=NR_PDSCH_Config__resourceAllocation_resourceAllocationType0; + bwp->bwp_Dedicated->pdsch_Config->choice.setup->resourceAllocation=NR_PDSCH_Config__resourceAllocation_resourceAllocationType1; bwp->bwp_Dedicated->pdsch_Config->choice.setup->pdsch_TimeDomainAllocationList=NULL; bwp->bwp_Dedicated->pdsch_Config->choice.setup->pdsch_AggregationFactor=NULL; bwp->bwp_Dedicated->pdsch_Config->choice.setup->rateMatchPatternToAddModList=NULL; @@ -798,6 +803,8 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco bwp->bwp_Dedicated->pdsch_Config->choice.setup->p_ZP_CSI_RS_ResourceSet=NULL; bwp->bwp_Dedicated->sps_Config = NULL; //calloc(1,sizeof(struct NR_SetupRelease_SPS_Config)); + bwp->bwp_Dedicated->radioLinkMonitoringConfig = NULL; +#if 0 bwp->bwp_Dedicated->radioLinkMonitoringConfig = calloc(1,sizeof(*bwp->bwp_Dedicated->radioLinkMonitoringConfig)); bwp->bwp_Dedicated->radioLinkMonitoringConfig->present = NR_SetupRelease_RadioLinkMonitoringConfig_PR_setup; @@ -808,6 +815,7 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco *bwp->bwp_Dedicated->radioLinkMonitoringConfig->choice.setup->beamFailureInstanceMaxCount = NR_RadioLinkMonitoringConfig__beamFailureInstanceMaxCount_n3; bwp->bwp_Dedicated->radioLinkMonitoringConfig->choice.setup->beamFailureDetectionTimer = calloc(1,sizeof(*bwp->bwp_Dedicated->radioLinkMonitoringConfig->choice.setup->beamFailureDetectionTimer)); *bwp->bwp_Dedicated->radioLinkMonitoringConfig->choice.setup->beamFailureDetectionTimer = NR_RadioLinkMonitoringConfig__beamFailureDetectionTimer_pbfd2; +#endif ASN_SEQUENCE_ADD(&secondaryCellGroup->spCellConfig->spCellConfigDedicated->downlinkBWP_ToAddModList->list,bwp); @@ -816,6 +824,8 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco *secondaryCellGroup->spCellConfig->spCellConfigDedicated->firstActiveDownlinkBWP_Id=1; secondaryCellGroup->spCellConfig->spCellConfigDedicated->bwp_InactivityTimer = NULL; secondaryCellGroup->spCellConfig->spCellConfigDedicated->defaultDownlinkBWP_Id = NULL; + secondaryCellGroup->spCellConfig->spCellConfigDedicated->defaultDownlinkBWP_Id = calloc(1, sizeof(*secondaryCellGroup->spCellConfig->spCellConfigDedicated->defaultDownlinkBWP_Id)); + *secondaryCellGroup->spCellConfig->spCellConfigDedicated->defaultDownlinkBWP_Id = 1; secondaryCellGroup->spCellConfig->spCellConfigDedicated->uplinkConfig=calloc(1,sizeof(*secondaryCellGroup->spCellConfig->spCellConfigDedicated->uplinkConfig)); NR_BWP_UplinkDedicated_t *initialUplinkBWP = calloc(1,sizeof(*initialUplinkBWP)); @@ -833,7 +843,8 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco pusch_Config->dmrs_UplinkForPUSCH_MappingTypeB->choice.setup = calloc(1,sizeof(*pusch_Config->dmrs_UplinkForPUSCH_MappingTypeB->choice.setup)); NR_DMRS_UplinkConfig_t *NR_DMRS_UplinkConfig = pusch_Config->dmrs_UplinkForPUSCH_MappingTypeB->choice.setup; NR_DMRS_UplinkConfig->dmrs_Type = NULL; - NR_DMRS_UplinkConfig->dmrs_AdditionalPosition =NR_DMRS_UplinkConfig__dmrs_AdditionalPosition_pos0; + NR_DMRS_UplinkConfig->dmrs_AdditionalPosition = calloc(1,sizeof(*NR_DMRS_UplinkConfig->dmrs_AdditionalPosition)); + *NR_DMRS_UplinkConfig->dmrs_AdditionalPosition = NR_DMRS_UplinkConfig__dmrs_AdditionalPosition_pos0; NR_DMRS_UplinkConfig->phaseTrackingRS=NULL; NR_DMRS_UplinkConfig->maxLength=NULL; NR_DMRS_UplinkConfig->transformPrecodingDisabled = calloc(1,sizeof(*NR_DMRS_UplinkConfig->transformPrecodingDisabled)); @@ -924,7 +935,7 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco srs_res0->resourceMapping.repetitionFactor=NR_SRS_Resource__resourceMapping__repetitionFactor_n1; srs_res0->freqDomainPosition=0; srs_res0->freqDomainShift=0; - srs_res0->freqHopping.c_SRS = 61; + srs_res0->freqHopping.c_SRS = 0; srs_res0->freqHopping.b_SRS=0; srs_res0->freqHopping.b_hop=0; srs_res0->groupOrSequenceHopping=NR_SRS_Resource__groupOrSequenceHopping_neither; @@ -1103,7 +1114,19 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco secondaryCellGroup->spCellConfig->spCellConfigDedicated->uplinkConfig->firstActiveUplinkBWP_Id = calloc(1,sizeof(*secondaryCellGroup->spCellConfig->spCellConfigDedicated->uplinkConfig->firstActiveUplinkBWP_Id)); *secondaryCellGroup->spCellConfig->spCellConfigDedicated->uplinkConfig->firstActiveUplinkBWP_Id = 1; - secondaryCellGroup->spCellConfig->spCellConfigDedicated->uplinkConfig->pusch_ServingCellConfig = NULL; + + secondaryCellGroup->spCellConfig->spCellConfigDedicated->uplinkConfig->pusch_ServingCellConfig = calloc(1,sizeof(*secondaryCellGroup->spCellConfig->spCellConfigDedicated->uplinkConfig->pusch_ServingCellConfig)); + NR_PUSCH_ServingCellConfig_t *pusch_scc = calloc(1,sizeof(*pusch_scc)); + secondaryCellGroup->spCellConfig->spCellConfigDedicated->uplinkConfig->pusch_ServingCellConfig->present = NR_SetupRelease_PUSCH_ServingCellConfig_PR_setup; + secondaryCellGroup->spCellConfig->spCellConfigDedicated->uplinkConfig->pusch_ServingCellConfig->choice.setup = pusch_scc; + pusch_scc->codeBlockGroupTransmission = NULL; + pusch_scc->rateMatching = NULL; + pusch_scc->xOverhead = NULL; + pusch_scc->ext1=calloc(1,sizeof(*pusch_scc->ext1)); + pusch_scc->ext1->maxMIMO_Layers = calloc(1,sizeof(*pusch_scc->ext1->maxMIMO_Layers)); + *pusch_scc->ext1->maxMIMO_Layers = 1; + pusch_scc->ext1->processingType2Enabled = NULL; + secondaryCellGroup->spCellConfig->spCellConfigDedicated->uplinkConfig->carrierSwitching = NULL; secondaryCellGroup->spCellConfig->spCellConfigDedicated->supplementaryUplink=NULL; @@ -1123,12 +1146,13 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco *pdsch_servingcellconfig->ext1->maxMIMO_Layers = 2; pdsch_servingcellconfig->ext1->processingType2Enabled = NULL; - secondaryCellGroup->spCellConfig->spCellConfigDedicated->csi_MeasConfig=calloc(1,sizeof(*secondaryCellGroup->spCellConfig->spCellConfigDedicated->csi_MeasConfig)); - secondaryCellGroup->spCellConfig->spCellConfigDedicated->csi_MeasConfig->present = NR_SetupRelease_CSI_MeasConfig_PR_setup; + secondaryCellGroup->spCellConfig->spCellConfigDedicated->csi_MeasConfig=NULL; + //secondaryCellGroup->spCellConfig->spCellConfigDedicated->csi_MeasConfig=calloc(1,sizeof(*secondaryCellGroup->spCellConfig->spCellConfigDedicated->csi_MeasConfig)); + //secondaryCellGroup->spCellConfig->spCellConfigDedicated->csi_MeasConfig->present = NR_SetupRelease_CSI_MeasConfig_PR_setup; NR_CSI_MeasConfig_t *csi_MeasConfig = calloc(1,sizeof(*csi_MeasConfig)); - secondaryCellGroup->spCellConfig->spCellConfigDedicated->csi_MeasConfig->choice.setup = csi_MeasConfig; +// secondaryCellGroup->spCellConfig->spCellConfigDedicated->csi_MeasConfig->choice.setup = csi_MeasConfig; csi_MeasConfig->nzp_CSI_RS_ResourceToAddModList = calloc(1,sizeof(*csi_MeasConfig->nzp_CSI_RS_ResourceToAddModList)); NR_NZP_CSI_RS_Resource_t *nzpres0 = calloc(1,sizeof(*nzpres0)); @@ -1668,7 +1692,7 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco imres0->csi_IM_ResourceElementPattern->choice.pattern1->symbolLocation_p1=7; imres0->freqBand=calloc(1,sizeof(*imres0->freqBand)); imres0->freqBand->startingRB=0; - imres0->freqBand->nrofRBs=276; + imres0->freqBand->nrofRBs=106; imres0->periodicityAndOffset=calloc(1,sizeof(*imres0->periodicityAndOffset)); imres0->periodicityAndOffset->present = NR_CSI_ResourcePeriodicityAndOffset_PR_slots320; imres0->periodicityAndOffset->choice.slots320 = 2; @@ -1742,7 +1766,7 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco ASN_SEQUENCE_ADD(&csires11->csi_RS_ResourceSetList.choice.csi_IM_ResourceSetList->list,csires110); csires11->bwp_Id = 1; csires11->resourceType = NR_CSI_ResourceConfig__resourceType_periodic; - ASN_SEQUENCE_ADD(&csi_MeasConfig->csi_ResourceConfigToAddModList->list,csires11); + //ASN_SEQUENCE_ADD(&csi_MeasConfig->csi_ResourceConfigToAddModList->list,csires11); NR_CSI_ResourceConfig_t *csires10 = calloc(1,sizeof(*csires10)); csires10->csi_ResourceConfigId=10; @@ -1755,7 +1779,7 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco ASN_SEQUENCE_ADD(&csires10->csi_RS_ResourceSetList.choice.nzp_CSI_RS_SSB->nzp_CSI_RS_ResourceSetList->list,csires100); csires10->bwp_Id = 1; csires10->resourceType = NR_CSI_ResourceConfig__resourceType_periodic; - ASN_SEQUENCE_ADD(&csi_MeasConfig->csi_ResourceConfigToAddModList->list,csires10); + //ASN_SEQUENCE_ADD(&csi_MeasConfig->csi_ResourceConfigToAddModList->list,csires10); NR_CSI_ResourceConfig_t *csires2 = calloc(1,sizeof(*csires2)); csires2->csi_ResourceConfigId=2; @@ -1768,7 +1792,7 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco ASN_SEQUENCE_ADD(&csires2->csi_RS_ResourceSetList.choice.nzp_CSI_RS_SSB->nzp_CSI_RS_ResourceSetList->list,csires20); csires2->bwp_Id = 1; csires2->resourceType = NR_CSI_ResourceConfig__resourceType_periodic; - ASN_SEQUENCE_ADD(&csi_MeasConfig->csi_ResourceConfigToAddModList->list,csires2); + //ASN_SEQUENCE_ADD(&csi_MeasConfig->csi_ResourceConfigToAddModList->list,csires2); NR_CSI_ResourceConfig_t *csires3 = calloc(1,sizeof(*csires3)); csires3->csi_ResourceConfigId=3; @@ -1781,7 +1805,7 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco ASN_SEQUENCE_ADD(&csires3->csi_RS_ResourceSetList.choice.nzp_CSI_RS_SSB->nzp_CSI_RS_ResourceSetList->list,csires30); csires3->bwp_Id = 1; csires3->resourceType = NR_CSI_ResourceConfig__resourceType_periodic; - ASN_SEQUENCE_ADD(&csi_MeasConfig->csi_ResourceConfigToAddModList->list,csires3); + //ASN_SEQUENCE_ADD(&csi_MeasConfig->csi_ResourceConfigToAddModList->list,csires3); NR_CSI_ResourceConfig_t *csires4 = calloc(1,sizeof(*csires4)); csires4->csi_ResourceConfigId=4; @@ -1794,7 +1818,7 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco ASN_SEQUENCE_ADD(&csires4->csi_RS_ResourceSetList.choice.nzp_CSI_RS_SSB->nzp_CSI_RS_ResourceSetList->list,csires40); csires4->bwp_Id = 1; csires4->resourceType = NR_CSI_ResourceConfig__resourceType_periodic; - ASN_SEQUENCE_ADD(&csi_MeasConfig->csi_ResourceConfigToAddModList->list,csires4); + //ASN_SEQUENCE_ADD(&csi_MeasConfig->csi_ResourceConfigToAddModList->list,csires4); NR_CSI_ResourceConfig_t *csires5 = calloc(1,sizeof(*csires5)); csires5->csi_ResourceConfigId=5; @@ -1807,7 +1831,7 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco ASN_SEQUENCE_ADD(&csires5->csi_RS_ResourceSetList.choice.nzp_CSI_RS_SSB->nzp_CSI_RS_ResourceSetList->list,csires50); csires5->bwp_Id = 1; csires5->resourceType = NR_CSI_ResourceConfig__resourceType_periodic; - ASN_SEQUENCE_ADD(&csi_MeasConfig->csi_ResourceConfigToAddModList->list,csires5); + //ASN_SEQUENCE_ADD(&csi_MeasConfig->csi_ResourceConfigToAddModList->list,csires5); NR_CSI_ResourceConfig_t *csires6 = calloc(1,sizeof(*csires6)); csires6->csi_ResourceConfigId=6; @@ -1820,7 +1844,7 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco ASN_SEQUENCE_ADD(&csires6->csi_RS_ResourceSetList.choice.nzp_CSI_RS_SSB->nzp_CSI_RS_ResourceSetList->list,csires60); csires6->bwp_Id = 1; csires6->resourceType = NR_CSI_ResourceConfig__resourceType_periodic; - ASN_SEQUENCE_ADD(&csi_MeasConfig->csi_ResourceConfigToAddModList->list,csires6); + //ASN_SEQUENCE_ADD(&csi_MeasConfig->csi_ResourceConfigToAddModList->list,csires6); NR_CSI_ResourceConfig_t *csires7 = calloc(1,sizeof(*csires7)); csires7->csi_ResourceConfigId=7; @@ -1833,7 +1857,7 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco ASN_SEQUENCE_ADD(&csires7->csi_RS_ResourceSetList.choice.nzp_CSI_RS_SSB->nzp_CSI_RS_ResourceSetList->list,csires70); csires7->bwp_Id = 1; csires7->resourceType = NR_CSI_ResourceConfig__resourceType_periodic; - ASN_SEQUENCE_ADD(&csi_MeasConfig->csi_ResourceConfigToAddModList->list,csires7); + //ASN_SEQUENCE_ADD(&csi_MeasConfig->csi_ResourceConfigToAddModList->list,csires7); NR_CSI_ResourceConfig_t *csires8 = calloc(1,sizeof(*csires8)); csires8->csi_ResourceConfigId=8; @@ -1846,7 +1870,7 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco ASN_SEQUENCE_ADD(&csires8->csi_RS_ResourceSetList.choice.nzp_CSI_RS_SSB->nzp_CSI_RS_ResourceSetList->list,csires80); csires8->bwp_Id = 1; csires8->resourceType = NR_CSI_ResourceConfig__resourceType_periodic; - ASN_SEQUENCE_ADD(&csi_MeasConfig->csi_ResourceConfigToAddModList->list,csires8); + //ASN_SEQUENCE_ADD(&csi_MeasConfig->csi_ResourceConfigToAddModList->list,csires8); NR_CSI_ResourceConfig_t *csires9 = calloc(1,sizeof(*csires9)); csires9->csi_ResourceConfigId=9; @@ -1859,7 +1883,7 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco ASN_SEQUENCE_ADD(&csires9->csi_RS_ResourceSetList.choice.nzp_CSI_RS_SSB->nzp_CSI_RS_ResourceSetList->list,csires90); csires9->bwp_Id = 1; csires9->resourceType = NR_CSI_ResourceConfig__resourceType_periodic; - ASN_SEQUENCE_ADD(&csi_MeasConfig->csi_ResourceConfigToAddModList->list,csires9); + //ASN_SEQUENCE_ADD(&csi_MeasConfig->csi_ResourceConfigToAddModList->list,csires9); csi_MeasConfig->csi_ReportConfigToAddModList = calloc(1,sizeof(*csi_MeasConfig->csi_ReportConfigToAddModList)); csi_MeasConfig->csi_ReportConfigToReleaseList = NULL; @@ -2005,30 +2029,26 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco } void fill_default_reconfig(NR_ServingCellConfigCommon_t *servingcellconfigcommon, - NR_RRCReconfiguration_IEs_t *reconfig, - NR_CellGroupConfig_t *secondaryCellGroup, - int n_physical_antenna_ports, - int initial_csi_index) { - + NR_RRCReconfiguration_IEs_t *reconfig, + NR_CellGroupConfig_t *secondaryCellGroup, + int n_physical_antenna_ports, + int initial_csi_index) { AssertFatal(servingcellconfigcommon!=NULL,"servingcellconfigcommon is null\n"); AssertFatal(reconfig!=NULL,"reconfig is null\n"); AssertFatal(secondaryCellGroup!=NULL,"secondaryCellGroup is null\n"); - // radioBearerConfig reconfig->radioBearerConfig=NULL; // secondaryCellGroup - fill_default_secondaryCellGroup(servingcellconfigcommon,secondaryCellGroup,0,0,n_physical_antenna_ports,initial_csi_index); + fill_default_secondaryCellGroup(servingcellconfigcommon,secondaryCellGroup,1,1,n_physical_antenna_ports,initial_csi_index); xer_fprint(stdout, &asn_DEF_NR_CellGroupConfig, (const void*)secondaryCellGroup); char scg_buffer[1024]; asn_enc_rval_t enc_rval = uper_encode_to_buffer(&asn_DEF_NR_CellGroupConfig, NULL, (void *)secondaryCellGroup, scg_buffer, 1024); AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %jd)!\n", enc_rval.failed_type->name, enc_rval.encoded); - - reconfig->secondaryCellGroup = calloc(1,sizeof(*reconfig->secondaryCellGroup)); OCTET_STRING_fromBuf(reconfig->secondaryCellGroup, - (const char*)scg_buffer, - (enc_rval.encoded+7)>>3); + (const char *)scg_buffer, + (enc_rval.encoded+7)>>3); // measConfig reconfig->measConfig=NULL; // lateNonCriticalExtension @@ -2045,7 +2065,7 @@ void fill_default_rbconfig(NR_RadioBearerConfig_t *rbconfig) { NR_DRB_ToAddMod_t *drb_ToAddMod = calloc(1,sizeof(*drb_ToAddMod)); drb_ToAddMod->cnAssociation = calloc(1,sizeof(*drb_ToAddMod->cnAssociation)); drb_ToAddMod->cnAssociation->present = NR_DRB_ToAddMod__cnAssociation_PR_eps_BearerIdentity; - drb_ToAddMod->cnAssociation->choice.eps_BearerIdentity=5; + drb_ToAddMod->cnAssociation->choice.eps_BearerIdentity= 5; drb_ToAddMod->drb_Identity = 1; drb_ToAddMod->reestablishPDCP = NULL; drb_ToAddMod->recoverPDCP = NULL; @@ -2060,15 +2080,15 @@ void fill_default_rbconfig(NR_RadioBearerConfig_t *rbconfig) { drb_ToAddMod->pdcp_Config->drb->headerCompression.present = NR_PDCP_Config__drb__headerCompression_PR_notUsed; drb_ToAddMod->pdcp_Config->drb->headerCompression.choice.notUsed = 0; - drb_ToAddMod->pdcp_Config->drb->integrityProtection=NULL; - drb_ToAddMod->pdcp_Config->drb->statusReportRequired=NULL; + drb_ToAddMod->pdcp_Config->drb->integrityProtection=NULL; + drb_ToAddMod->pdcp_Config->drb->statusReportRequired=NULL; drb_ToAddMod->pdcp_Config->drb->outOfOrderDelivery=NULL; drb_ToAddMod->pdcp_Config->moreThanOneRLC = NULL; drb_ToAddMod->pdcp_Config->t_Reordering = calloc(1,sizeof(*drb_ToAddMod->pdcp_Config->t_Reordering)); *drb_ToAddMod->pdcp_Config->t_Reordering = NR_PDCP_Config__t_Reordering_ms0; drb_ToAddMod->pdcp_Config->ext1 = NULL; - + ASN_SEQUENCE_ADD(&rbconfig->drb_ToAddModList->list,drb_ToAddMod); rbconfig->drb_ToReleaseList = NULL; @@ -2082,4 +2102,5 @@ void fill_default_rbconfig(NR_RadioBearerConfig_t *rbconfig) { xer_fprint(stdout, &asn_DEF_NR_RadioBearerConfig, (const void*)rbconfig); } + #endif diff --git a/openair2/RRC/NR_UE/L2_interface_ue.c b/openair2/RRC/NR_UE/L2_interface_ue.c index cb8ded1971..08976522b0 100644 --- a/openair2/RRC/NR_UE/L2_interface_ue.c +++ b/openair2/RRC/NR_UE/L2_interface_ue.c @@ -56,4 +56,15 @@ nr_mac_rrc_data_ind_ue( return(0); +} + +int8_t mac_rrc_nr_data_req_ue(const module_id_t Mod_idP, + const int CC_id, + const frame_t frameP, + const rb_id_t Srb_id, + uint8_t *const buffer_pP ){ + + // todo + + return 0; } \ No newline at end of file diff --git a/openair2/RRC/NR_UE/rrc_UE.c b/openair2/RRC/NR_UE/rrc_UE.c index 87e899845e..44215df218 100755 --- a/openair2/RRC/NR_UE/rrc_UE.c +++ b/openair2/RRC/NR_UE/rrc_UE.c @@ -42,7 +42,7 @@ #include "rrc_defs.h" #include "rrc_proto.h" #include "rrc_vars.h" -#include "mac_proto.h" +#include "LAYER2/NR_MAC_UE/mac_proto.h" #include "executables/softmodem-common.h" @@ -319,7 +319,7 @@ NR_UE_RRC_INST_t* openair_rrc_top_init_ue_nr(char* rrc_config_path){ RRC_LIST_INIT(NR_UE_rrc_inst->CSI_ResourceConfig_list, NR_maxNrofCSI_ResourceConfigurations); RRC_LIST_INIT(NR_UE_rrc_inst->CSI_ReportConfig_list, NR_maxNrofCSI_ReportConfigurations); - if (get_softmodem_params()->phy_test==1) { + if (get_softmodem_params()->phy_test==1 || get_softmodem_params()->do_ra==1) { // read in files for RRCReconfiguration and RBconfig FILE *fd; char filename[1024]; diff --git a/openair2/RRC/NR_UE/rrc_defs.h b/openair2/RRC/NR_UE/rrc_defs.h index cb1207757d..6481fb0cea 100644 --- a/openair2/RRC/NR_UE/rrc_defs.h +++ b/openair2/RRC/NR_UE/rrc_defs.h @@ -39,8 +39,8 @@ #include "platform_types.h" -#include "LAYER2/NR_MAC_UE/mac.h" -#include "LAYER2/NR_MAC_COMMON/nr_mac.h" +#include "NR_MAC_UE/mac.h" +#include "NR_MAC_COMMON/nr_mac.h" #include "rrc_list.h" #include "NR_asn_constant.h" #include "NR_MeasConfig.h" diff --git a/openair2/RRC/NR_UE/rrc_proto.h b/openair2/RRC/NR_UE/rrc_proto.h index 6e0d0a10de..7bc7e4b90c 100644 --- a/openair2/RRC/NR_UE/rrc_proto.h +++ b/openair2/RRC/NR_UE/rrc_proto.h @@ -102,6 +102,18 @@ int8_t nr_rrc_ue_decode_NR_DL_DCCH_Message(const module_id_t module_id, const ui \param pdu_len data length of pdu*/ int8_t nr_mac_rrc_data_ind_ue(const module_id_t module_id, const int CC_id, const uint8_t gNB_index, const channel_t channel, const uint8_t* pduP, const sdu_size_t pdu_len); +/**\brief + \param module_id module id + \param CC_id component carrier id + \param frame_t frameP + \param rb_id_t SRB id + \param buffer_pP pointer to buffer*/ +int8_t mac_rrc_nr_data_req_ue(const module_id_t Mod_idP, + const int CC_id, + const frame_t frameP, + const rb_id_t Srb_id, + uint8_t *const buffer_pP); + /** @}*/ #endif diff --git a/openair2/X2AP/x2ap_eNB.c b/openair2/X2AP/x2ap_eNB.c index b297c96e56..bd77272747 100644 --- a/openair2/X2AP/x2ap_eNB.c +++ b/openair2/X2AP/x2ap_eNB.c @@ -116,7 +116,9 @@ void x2ap_eNB_handle_sctp_association_resp(instance_t instance, sctp_new_associa /* some sanity check - to be refined at some point */ if (sctp_new_association_resp->sctp_state != SCTP_STATE_ESTABLISHED) { X2AP_ERROR("x2ap_enb_data_p not NULL and sctp state not SCTP_STATE_ESTABLISHED, what to do?\n"); - abort(); + // Allow for a gracious exit when we kill first the gNB, then the eNB + //abort(); + return; } x2ap_enb_data_p->in_streams = sctp_new_association_resp->in_streams; @@ -454,10 +456,12 @@ void x2ap_eNB_handle_sgNB_add_req(instance_t instance, x2ap_eNB_instance_t *instance_p; x2ap_eNB_data_t *x2ap_eNB_data; int ue_id; - - /* TODO: remove hardcoded value */ - x2ap_eNB_data = x2ap_is_eNB_id_in_list(3584); + LTE_PhysCellId_t target_pci; + target_pci = x2ap_ENDC_sgnb_addition_req->target_physCellId; + x2ap_eNB_data = x2ap_is_eNB_pci_in_list(target_pci); DevAssert(x2ap_eNB_data != NULL); + DevAssert(x2ap_ENDC_sgnb_addition_req != NULL); + instance_p = x2ap_eNB_get_instance(instance); DevAssert(instance_p != NULL); @@ -474,7 +478,8 @@ void x2ap_eNB_handle_sgNB_add_req(instance_t instance, x2ap_set_ids(id_manager, ue_id, x2ap_ENDC_sgnb_addition_req->rnti, ue_id, -1); x2ap_id_set_state(id_manager, ue_id, X2ID_STATE_NSA_PREPARE); - x2ap_eNB_generate_ENDC_x2_SgNB_addition_request(instance_p, x2ap_eNB_data, ue_id); + x2ap_eNB_generate_ENDC_x2_SgNB_addition_request(instance_p, x2ap_ENDC_sgnb_addition_req, + x2ap_eNB_data, ue_id); } static @@ -489,16 +494,31 @@ void x2ap_gNB_trigger_sgNB_add_req_ack(instance_t instance, * as far as I understand.. CROUX */ - + x2ap_id_manager *id_manager; x2ap_eNB_instance_t *instance_p; x2ap_eNB_data_t *target; - /*int source_assoc_id = x2ap_ENDC_sgnb_addition_req_ACK->source_assoc_id; int ue_id; + /*int source_assoc_id = x2ap_ENDC_sgnb_addition_req_ACK->source_assoc_id; int id_source; int id_target;*/ instance_p = x2ap_eNB_get_instance(instance); DevAssert(instance_p != NULL); + target = x2ap_get_eNB(NULL,x2ap_ENDC_sgnb_addition_req_ACK->target_assoc_id, 0); + DevAssert(target != NULL); + + /* allocate x2ap ID */ + id_manager = &instance_p->id_manager; + ue_id = x2ap_allocate_new_id(id_manager); + if (ue_id == -1) { + X2AP_ERROR("could not allocate a new X2AP UE ID\n"); + exit(1); + } + /* id_source is ue_id, id_target is unknown yet */ + x2ap_set_ids(id_manager, ue_id, x2ap_ENDC_sgnb_addition_req_ACK->rnti, ue_id, + x2ap_ENDC_sgnb_addition_req_ACK->MeNB_ue_x2_id); + x2ap_id_set_state(id_manager, ue_id, X2ID_STATE_SOURCE_OVERALL); + /*target = x2ap_get_eNB(NULL, source_assoc_id, 0); DevAssert(target != NULL);*/ @@ -511,10 +531,36 @@ void x2ap_gNB_trigger_sgNB_add_req_ack(instance_t instance, x2ap_set_ids(&instance_p->id_manager, ue_id, x2ap_handover_req_ack->rnti, id_source, id_target);*/ - //target = x2ap_get_eNB(NULL, 17, 0); - target = x2ap_is_eNB_id_in_list (3585); //Currently hardcoded. Need to extract it differently + x2ap_gNB_generate_ENDC_x2_SgNB_addition_request_ACK(instance_p, target, + x2ap_ENDC_sgnb_addition_req_ACK, ue_id); +} + +/** + * @fn : Function triggers sgnb reconfiguration complete + * @param : IN instance, IN x2ap_reconf_complete +**/ +static +void x2ap_eNB_trigger_sgnb_reconfiguration_complete(instance_t instance, + x2ap_ENDC_reconf_complete_t *x2ap_reconf_complete) +{ + x2ap_eNB_instance_t *instance_p = NULL; + x2ap_eNB_data_t *target = NULL; + int id_source = -1; + int id_target = -1; + LTE_PhysCellId_t target_pci; + + instance_p = x2ap_eNB_get_instance(instance); + DevAssert(instance_p != NULL); + DevAssert(x2ap_reconf_complete != NULL); + + target_pci = x2ap_reconf_complete->target_physCellId; + target = x2ap_is_eNB_pci_in_list(target_pci); DevAssert(target != NULL); - x2ap_gNB_generate_ENDC_x2_SgNB_addition_request_ACK(instance_p, target, x2ap_ENDC_sgnb_addition_req_ACK, 0); + + id_source = x2ap_reconf_complete->MeNB_ue_x2_id; + id_target = x2ap_reconf_complete->SgNB_ue_x2_id; + x2ap_eNB_generate_ENDC_x2_SgNB_reconfiguration_complete(instance_p, target, id_source, id_target); + } @@ -594,6 +640,10 @@ void *x2ap_task(void *arg) { LOG_I(X2AP, "Received elements for X2AP_ENDC_SGNB_ADDITION_REQ_ACK \n"); break; + case X2AP_ENDC_SGNB_RECONF_COMPLETE: + x2ap_eNB_trigger_sgnb_reconfiguration_complete(ITTI_MESSAGE_GET_INSTANCE(received_msg), + &X2AP_ENDC_SGNB_RECONF_COMPLETE(received_msg)); + break; case SCTP_INIT_MSG_MULTI_CNF: x2ap_eNB_handle_sctp_init_msg_multi_cnf(ITTI_MESSAGE_GET_INSTANCE(received_msg), &received_msg->ittiMsg.sctp_init_msg_multi_cnf); diff --git a/openair2/X2AP/x2ap_eNB_decoder.c b/openair2/X2AP/x2ap_eNB_decoder.c index 93b82c2765..3762bc06dc 100644 --- a/openair2/X2AP/x2ap_eNB_decoder.c +++ b/openair2/X2AP/x2ap_eNB_decoder.c @@ -144,9 +144,9 @@ int x2ap_eNB_decode_pdu(X2AP_X2AP_PDU_t *pdu, const uint8_t *const buffer, uint3 length, 0, 0); - //if (asn1_xer_print) { + if (asn1_xer_print) { xer_fprint(stdout, &asn_DEF_X2AP_X2AP_PDU, pdu); - //} + } if (dec_ret.code != RC_OK) { X2AP_ERROR("Failed to decode pdu\n"); diff --git a/openair2/X2AP/x2ap_eNB_generate_messages.c b/openair2/X2AP/x2ap_eNB_generate_messages.c index 0aeabce0d2..a96fa14f48 100644 --- a/openair2/X2AP/x2ap_eNB_generate_messages.c +++ b/openair2/X2AP/x2ap_eNB_generate_messages.c @@ -1496,7 +1496,8 @@ int x2ap_eNB_generate_ENDC_x2_setup_response( } int x2ap_eNB_generate_ENDC_x2_SgNB_addition_request( - x2ap_eNB_instance_t *instance_p, x2ap_eNB_data_t *x2ap_eNB_data_p, int ue_id) + x2ap_eNB_instance_t *instance_p, x2ap_ENDC_sgnb_addition_req_t *x2ap_ENDC_sgnb_addition_req, + x2ap_eNB_data_t *x2ap_eNB_data_p, int ue_id) { X2AP_X2AP_PDU_t pdu; X2AP_SgNBAdditionRequest_t *out; @@ -1507,44 +1508,21 @@ int x2ap_eNB_generate_ENDC_x2_SgNB_addition_request( uint8_t *buffer; uint32_t len; int ret = 0; - - // Currently hardcoded (dummy) values filling the fields of SgNB_addition_request message. To be substituted - // with values coming from RRC. - uint16_t nRencryptionAlgorithms = 0; - uint16_t nRintegrityProtectionAlgorithms = 0; + uint16_t nRencryptionAlgorithms = x2ap_ENDC_sgnb_addition_req->security_capabilities.encryption_algorithms; + uint16_t nRintegrityProtectionAlgorithms = x2ap_ENDC_sgnb_addition_req->security_capabilities + .integrity_algorithms; uint8_t SgNBSecurityKey[32] = { 0 }; - int uEaggregateMaximumBitRateDownlink = 100000000; - int uEaggregateMaximumBitRateUplink = 100000000; - int e_rabs_tobeadded = 1; - int e_RAB_ID = 1; - int drb_ID = 2; + int uEaggregateMaximumBitRateDownlink = x2ap_ENDC_sgnb_addition_req->ue_ambr.br_dl; + int uEaggregateMaximumBitRateUplink = x2ap_ENDC_sgnb_addition_req->ue_ambr.br_ul; + int e_rabs_tobeadded = x2ap_ENDC_sgnb_addition_req->nb_e_rabs_tobeadded; long int pDCPatSgNB = X2AP_EN_DC_ResourceConfiguration__pDCPatSgNB_present; long int mCGresources = X2AP_EN_DC_ResourceConfiguration__mCGresources_not_present; long int sCGresources = X2AP_EN_DC_ResourceConfiguration__sCGresources_not_present; - long qCI = 1; - X2AP_Pre_emptionCapability_t pre_emptionCapability = X2AP_Pre_emptionCapability_shall_not_trigger_pre_emption; - X2AP_Pre_emptionVulnerability_t pre_emptionVulnerability = X2AP_Pre_emptionVulnerability_not_pre_emptable; - priority_level_t priority_level = PRIORITY_LEVEL_NO_PRIORITY; - e_rab_tobe_added_t e_MCG_rabs_tobeadded; - e_MCG_rabs_tobeadded.gtp_teid = 0; - e_MCG_rabs_tobeadded.eNB_addr.length = 24; - uint8_t buf[20] = { 0 }; - memcpy(e_MCG_rabs_tobeadded.eNB_addr.buffer, buf, 20*sizeof(uint8_t)); - - FILE *fd; - fd = fopen("../../../executables/uecap.raw","r"); - if (fd != NULL) { - OCTET_STRING_t CG_Config_Info; - CG_Config_Info.size = 4096; - CG_Config_Info.buf = (uint8_t *)calloc(4096, sizeof(uint8_t)); - int msg_len=fread(CG_Config_Info.buf,1,CG_Config_Info.size,fd); - CG_Config_Info.size = msg_len; - - /*char buffer[4096]; - int msg_len=fread(buffer,1,4096,fd);*/ - LOG_I(RRC,"Read in %d bytes for uecap\n",msg_len); - - + long qCI = 0; + X2AP_Pre_emptionCapability_t pre_emptionCapability; + X2AP_Pre_emptionVulnerability_t pre_emptionVulnerability; + priority_level_t priority_level; + memcpy(SgNBSecurityKey, x2ap_ENDC_sgnb_addition_req->kgnb, sizeof(x2ap_ENDC_sgnb_addition_req->kgnb)); /*OCTET_STRING_t CG_Config_Info; CG_Config_Info.size = 4096; CG_Config_Info.buf = (uint8_t *)calloc(4096, sizeof(uint8_t));*/ @@ -1614,13 +1592,17 @@ int x2ap_eNB_generate_ENDC_x2_SgNB_addition_request( e_RABS_ToBeAdded_SgNBAddReq_ItemIEs->value.present = X2AP_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs__value_PR_E_RABs_ToBeAdded_SgNBAddReq_Item; e_RABS_ToBeAdded_SgNBAddReq_Item = &e_RABS_ToBeAdded_SgNBAddReq_ItemIEs->value.choice.E_RABs_ToBeAdded_SgNBAddReq_Item; { - e_RABS_ToBeAdded_SgNBAddReq_Item->drb_ID = drb_ID; - e_RABS_ToBeAdded_SgNBAddReq_Item->e_RAB_ID = e_RAB_ID; + e_RABS_ToBeAdded_SgNBAddReq_Item->drb_ID = x2ap_ENDC_sgnb_addition_req->e_rabs_tobeadded[i].drb_ID; + e_RABS_ToBeAdded_SgNBAddReq_Item->e_RAB_ID = x2ap_ENDC_sgnb_addition_req->e_rabs_tobeadded[i].e_rab_id; e_RABS_ToBeAdded_SgNBAddReq_Item->en_DC_ResourceConfiguration.pDCPatSgNB = pDCPatSgNB; e_RABS_ToBeAdded_SgNBAddReq_Item->en_DC_ResourceConfiguration.mCGresources = mCGresources; e_RABS_ToBeAdded_SgNBAddReq_Item->en_DC_ResourceConfiguration.sCGresources = sCGresources; if (pDCPatSgNB == X2AP_EN_DC_ResourceConfiguration__pDCPatSgNB_present){ - e_RABS_ToBeAdded_SgNBAddReq_Item->resource_configuration.present = X2AP_E_RABs_ToBeAdded_SgNBAddReq_Item__resource_configuration_PR_sgNBPDCPpresent; + e_RABS_ToBeAdded_SgNBAddReq_Item->resource_configuration.present = X2AP_E_RABs_ToBeAdded_SgNBAddReq_Item__resource_configuration_PR_sgNBPDCPpresent; + qCI = x2ap_ENDC_sgnb_addition_req->e_rab_param[i].qos.qci; + priority_level = x2ap_ENDC_sgnb_addition_req->e_rab_param[i].qos.allocation_retention_priority.priority_level; + pre_emptionCapability = x2ap_ENDC_sgnb_addition_req->e_rab_param[i].qos.allocation_retention_priority.pre_emp_capability; + pre_emptionVulnerability = x2ap_ENDC_sgnb_addition_req->e_rab_param[i].qos.allocation_retention_priority.pre_emp_vulnerability; e_RABS_ToBeAdded_SgNBAddReq_Item->resource_configuration.choice.sgNBPDCPpresent.full_E_RAB_Level_QoS_Parameters.qCI = qCI; e_RABS_ToBeAdded_SgNBAddReq_Item->resource_configuration.choice.sgNBPDCPpresent.full_E_RAB_Level_QoS_Parameters.allocationAndRetentionPriority.pre_emptionCapability = pre_emptionCapability; @@ -1628,14 +1610,14 @@ int x2ap_eNB_generate_ENDC_x2_SgNB_addition_request( e_RABS_ToBeAdded_SgNBAddReq_Item->resource_configuration.choice.sgNBPDCPpresent.full_E_RAB_Level_QoS_Parameters.allocationAndRetentionPriority.priorityLevel = priority_level; //Continue from filling the UL_GTPtunnelEndpointInformation inspired from how it is done for the HO case - INT32_TO_OCTET_STRING(e_MCG_rabs_tobeadded.gtp_teid, &e_RABS_ToBeAdded_SgNBAddReq_Item->resource_configuration.choice.sgNBPDCPpresent.s1_UL_GTPtunnelEndpoint.gTP_TEID); - e_RABS_ToBeAdded_SgNBAddReq_Item->resource_configuration.choice.sgNBPDCPpresent.s1_UL_GTPtunnelEndpoint.transportLayerAddress.size = e_MCG_rabs_tobeadded.eNB_addr.length/8; - e_RABS_ToBeAdded_SgNBAddReq_Item->resource_configuration.choice.sgNBPDCPpresent.s1_UL_GTPtunnelEndpoint.transportLayerAddress.bits_unused = e_MCG_rabs_tobeadded.eNB_addr.length%8; + INT32_TO_OCTET_STRING(x2ap_ENDC_sgnb_addition_req->e_rabs_tobeadded[i].gtp_teid, &e_RABS_ToBeAdded_SgNBAddReq_Item->resource_configuration.choice.sgNBPDCPpresent.s1_UL_GTPtunnelEndpoint.gTP_TEID); + e_RABS_ToBeAdded_SgNBAddReq_Item->resource_configuration.choice.sgNBPDCPpresent.s1_UL_GTPtunnelEndpoint.transportLayerAddress.size = x2ap_ENDC_sgnb_addition_req->e_rabs_tobeadded[i].sgw_addr.length/8; + e_RABS_ToBeAdded_SgNBAddReq_Item->resource_configuration.choice.sgNBPDCPpresent.s1_UL_GTPtunnelEndpoint.transportLayerAddress.bits_unused = x2ap_ENDC_sgnb_addition_req->e_rabs_tobeadded[i].sgw_addr.length%8; e_RABS_ToBeAdded_SgNBAddReq_Item->resource_configuration.choice.sgNBPDCPpresent.s1_UL_GTPtunnelEndpoint.transportLayerAddress.buf = calloc(1, e_RABS_ToBeAdded_SgNBAddReq_Item->resource_configuration.choice.sgNBPDCPpresent.s1_UL_GTPtunnelEndpoint.transportLayerAddress.size); memcpy (e_RABS_ToBeAdded_SgNBAddReq_Item->resource_configuration.choice.sgNBPDCPpresent.s1_UL_GTPtunnelEndpoint.transportLayerAddress.buf, - e_MCG_rabs_tobeadded.eNB_addr.buffer, + x2ap_ENDC_sgnb_addition_req->e_rabs_tobeadded[i].sgw_addr.buffer, e_RABS_ToBeAdded_SgNBAddReq_Item->resource_configuration.choice.sgNBPDCPpresent.s1_UL_GTPtunnelEndpoint.transportLayerAddress.size); } @@ -1648,25 +1630,24 @@ int x2ap_eNB_generate_ENDC_x2_SgNB_addition_request( ie->id = X2AP_ProtocolIE_ID_id_MeNBtoSgNBContainer; ie->criticality = X2AP_Criticality_reject; ie->value.present = X2AP_SgNBAdditionRequest_IEs__value_PR_MeNBtoSgNBContainer; - ie->value.choice.MeNBtoSgNBContainer.buf = (uint8_t *)calloc(CG_Config_Info.size, sizeof(uint8_t)); - memcpy(ie->value.choice.MeNBtoSgNBContainer.buf, CG_Config_Info.buf, CG_Config_Info.size); - ie->value.choice.MeNBtoSgNBContainer.size = CG_Config_Info.size; //4096; + if(NULL == (ie->value.choice.MeNBtoSgNBContainer.buf = (uint8_t *) + calloc(x2ap_ENDC_sgnb_addition_req->rrc_buffer_size, sizeof(uint8_t)))) { + X2AP_ERROR("Memory ALLocation failed\n"); + exit(1); + } + memcpy(ie->value.choice.MeNBtoSgNBContainer.buf, x2ap_ENDC_sgnb_addition_req->rrc_buffer, + x2ap_ENDC_sgnb_addition_req->rrc_buffer_size); + ie->value.choice.MeNBtoSgNBContainer.size = x2ap_ENDC_sgnb_addition_req->rrc_buffer_size; ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie); if (x2ap_eNB_encode_pdu(&pdu, &buffer, &len) < 0) { X2AP_ERROR("Failed to encode ENDC X2 SgNB_addition request message\n"); return -1; } - + free(ie->value.choice.MeNBtoSgNBContainer.buf); MSC_LOG_TX_MESSAGE (MSC_X2AP_SRC_ENB, MSC_X2AP_TARGET_ENB, NULL, 0, "0 X2Setup/initiatingMessage assoc_id %u", x2ap_eNB_data_p->assoc_id); x2ap_eNB_itti_send_sctp_data_req(instance_p->instance, x2ap_eNB_data_p->assoc_id, buffer, len, 0); - fclose(fd); - } - else { - LOG_I(RRC, "uecap.raw file could not be opened... \n"); - return -1; - } return ret; @@ -1686,26 +1667,14 @@ int x2ap_gNB_generate_ENDC_x2_SgNB_addition_request_ACK( x2ap_eNB_instance_t *in uint8_t *buffer; uint32_t len; int ret = 0; - int MeNB_UE_X2AP_id = ue_id; - int SgNB_UE_X2AP_id = 0; - // Currently hardcoded (dummy) values filling the fields of SgNB_addition_request message. To be substituted - // with values coming from RRC. - //uint16_t nRencryptionAlgorithms = 0; - //uint16_t nRintegrityProtectionAlgorithms = 0; - //uint8_t SgNBSecurityKey[32] = { 0 }; - //int uEaggregateMaximumBitRateDownlink = 100000000; - //int uEaggregateMaximumBitRateUplink = 100000000; - int e_rabs_admitted_tobeadded = 1; - int e_RAB_ID = 1; + int MeNB_UE_X2AP_id = x2ap_sgnb_addition_req_ACK->MeNB_ue_x2_id; + int SgNB_UE_X2AP_id = ue_id; + int e_rabs_admitted_tobeadded = x2ap_sgnb_addition_req_ACK->nb_e_rabs_admitted_tobeadded; long int pDCPatSgNB = X2AP_EN_DC_ResourceConfiguration__pDCPatSgNB_present; long int mCGresources = X2AP_EN_DC_ResourceConfiguration__mCGresources_not_present; long int sCGresources = X2AP_EN_DC_ResourceConfiguration__sCGresources_not_present; - e_rab_setup_t e_SCG_rabs_tobeadded; - e_SCG_rabs_tobeadded.gtp_teid = 0; - e_SCG_rabs_tobeadded.eNB_addr.length = 24; - uint8_t buf[20] = { 0 }; - memcpy(e_SCG_rabs_tobeadded.eNB_addr.buffer, buf, 20*sizeof(uint8_t)); + DevAssert(instance_p != NULL); DevAssert(x2ap_eNB_data_p != NULL); @@ -1748,21 +1717,21 @@ int x2ap_gNB_generate_ENDC_x2_SgNB_addition_request_ACK( x2ap_eNB_instance_t *in e_RABS_AdmittedToBeAdded_SgNBAddReq_ItemIEs->value.present = X2AP_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs__value_PR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item; e_RABS_AdmittedToBeAdded_SgNBAddReq_Item = &e_RABS_AdmittedToBeAdded_SgNBAddReq_ItemIEs->value.choice.E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item; { - e_RABS_AdmittedToBeAdded_SgNBAddReq_Item->e_RAB_ID = e_RAB_ID; + e_RABS_AdmittedToBeAdded_SgNBAddReq_Item->e_RAB_ID = x2ap_sgnb_addition_req_ACK->e_rabs_admitted_tobeadded[i].e_rab_id; e_RABS_AdmittedToBeAdded_SgNBAddReq_Item->en_DC_ResourceConfiguration.pDCPatSgNB = pDCPatSgNB; e_RABS_AdmittedToBeAdded_SgNBAddReq_Item->en_DC_ResourceConfiguration.mCGresources = mCGresources; e_RABS_AdmittedToBeAdded_SgNBAddReq_Item->en_DC_ResourceConfiguration.sCGresources = sCGresources; if (pDCPatSgNB == X2AP_EN_DC_ResourceConfiguration__pDCPatSgNB_present){ e_RABS_AdmittedToBeAdded_SgNBAddReq_Item->resource_configuration.present = X2AP_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item__resource_configuration_PR_sgNBPDCPpresent; - INT32_TO_OCTET_STRING(e_SCG_rabs_tobeadded.gtp_teid, &e_RABS_AdmittedToBeAdded_SgNBAddReq_Item->resource_configuration.choice.sgNBPDCPpresent.s1_DL_GTPtunnelEndpoint.gTP_TEID); - e_RABS_AdmittedToBeAdded_SgNBAddReq_Item->resource_configuration.choice.sgNBPDCPpresent.s1_DL_GTPtunnelEndpoint.transportLayerAddress.size = e_SCG_rabs_tobeadded.eNB_addr.length/8; - e_RABS_AdmittedToBeAdded_SgNBAddReq_Item->resource_configuration.choice.sgNBPDCPpresent.s1_DL_GTPtunnelEndpoint.transportLayerAddress.bits_unused = e_SCG_rabs_tobeadded.eNB_addr.length%8; + INT32_TO_OCTET_STRING(x2ap_sgnb_addition_req_ACK->e_rabs_admitted_tobeadded[i].gtp_teid, &e_RABS_AdmittedToBeAdded_SgNBAddReq_Item->resource_configuration.choice.sgNBPDCPpresent.s1_DL_GTPtunnelEndpoint.gTP_TEID); + e_RABS_AdmittedToBeAdded_SgNBAddReq_Item->resource_configuration.choice.sgNBPDCPpresent.s1_DL_GTPtunnelEndpoint.transportLayerAddress.size = x2ap_sgnb_addition_req_ACK->e_rabs_admitted_tobeadded[i].gnb_addr.length/8; + e_RABS_AdmittedToBeAdded_SgNBAddReq_Item->resource_configuration.choice.sgNBPDCPpresent.s1_DL_GTPtunnelEndpoint.transportLayerAddress.bits_unused = x2ap_sgnb_addition_req_ACK->e_rabs_admitted_tobeadded[i].gnb_addr.length%8; e_RABS_AdmittedToBeAdded_SgNBAddReq_Item->resource_configuration.choice.sgNBPDCPpresent.s1_DL_GTPtunnelEndpoint.transportLayerAddress.buf = calloc(1, e_RABS_AdmittedToBeAdded_SgNBAddReq_Item->resource_configuration.choice.sgNBPDCPpresent.s1_DL_GTPtunnelEndpoint.transportLayerAddress.size); memcpy (e_RABS_AdmittedToBeAdded_SgNBAddReq_Item->resource_configuration.choice.sgNBPDCPpresent.s1_DL_GTPtunnelEndpoint.transportLayerAddress.buf, - e_SCG_rabs_tobeadded.eNB_addr.buffer, + x2ap_sgnb_addition_req_ACK->e_rabs_admitted_tobeadded[i].gnb_addr.buffer, e_RABS_AdmittedToBeAdded_SgNBAddReq_Item->resource_configuration.choice.sgNBPDCPpresent.s1_DL_GTPtunnelEndpoint.transportLayerAddress.size); } diff --git a/openair2/X2AP/x2ap_eNB_generate_messages.h b/openair2/X2AP/x2ap_eNB_generate_messages.h index 114ed84a68..3dfccc0e52 100644 --- a/openair2/X2AP/x2ap_eNB_generate_messages.h +++ b/openair2/X2AP/x2ap_eNB_generate_messages.h @@ -70,7 +70,7 @@ int x2ap_gNB_generate_ENDC_x2_setup_request(x2ap_eNB_instance_t *instance_p, x2a int x2ap_eNB_generate_ENDC_x2_setup_response( x2ap_eNB_instance_t *instance_p, x2ap_eNB_data_t *x2ap_eNB_data_p); -int x2ap_eNB_generate_ENDC_x2_SgNB_addition_request( x2ap_eNB_instance_t *instance_p, x2ap_eNB_data_t *x2ap_eNB_data_p, int ue_id); +int x2ap_eNB_generate_ENDC_x2_SgNB_addition_request( x2ap_eNB_instance_t *instance_p, x2ap_ENDC_sgnb_addition_req_t *x2ap_ENDC_sgnb_addition_req, x2ap_eNB_data_t *x2ap_eNB_data_p, int ue_id); int x2ap_gNB_generate_ENDC_x2_SgNB_addition_request_ACK( x2ap_eNB_instance_t *instance_p, x2ap_eNB_data_t *x2ap_eNB_data_p, x2ap_ENDC_sgnb_addition_req_ACK_t *x2ap_sgnb_addition_req_ACK, int ue_id); diff --git a/openair2/X2AP/x2ap_eNB_handler.c b/openair2/X2AP/x2ap_eNB_handler.c index afaae1756d..1c6c98cd81 100644 --- a/openair2/X2AP/x2ap_eNB_handler.c +++ b/openair2/X2AP/x2ap_eNB_handler.c @@ -1652,7 +1652,6 @@ int x2ap_gNB_handle_ENDC_sGNB_addition_request (instance_t instance, x2ap_eNB_instance_t *instance_p; x2ap_eNB_data_t *x2ap_eNB_data; MessageDef *msg; - int ue_id; DevAssert (pdu != NULL); x2SgNBAdditionRequest = &pdu->choice.initiatingMessage.value.choice.SgNBAdditionRequest; @@ -1683,20 +1682,9 @@ int x2ap_gNB_handle_ENDC_sGNB_addition_request (instance_t instance, X2AP_ERROR("%s %d: ie is a NULL pointer \n",__FILE__,__LINE__); return -1; } - - - // allocate a new X2AP UE ID - ue_id = x2ap_allocate_new_id(&instance_p->id_manager); - if (ue_id == -1) { - X2AP_ERROR("could not allocate a new X2AP UE ID\n"); - // TODO: cancel handover: send HO preparation failure to source eNB - exit(1); - } - // rnti is unknown yet, must not be set to -1, 0 is fine - x2ap_set_ids(&instance_p->id_manager, ue_id, 0, ie->value.choice.UE_X2AP_ID, ue_id); - x2ap_id_set_state(&instance_p->id_manager, ue_id, X2ID_STATE_TARGET); - - X2AP_ENDC_SGNB_ADDITION_REQ(msg).ue_x2_id = ue_id; + /* ue_x2_id = MeNB X2AP Id */ + X2AP_ENDC_SGNB_ADDITION_REQ(msg).ue_x2_id = ie->value.choice.UE_X2AP_ID; + X2AP_ENDC_SGNB_ADDITION_REQ(msg).target_assoc_id = assoc_id; /* X2AP_ProtocolIE_ID_id_NRUESecurityCapabilities */ @@ -1749,13 +1737,22 @@ int x2ap_gNB_handle_ENDC_sGNB_addition_request (instance_t instance, X2AP_ENDC_SGNB_ADDITION_REQ(msg).e_rab_param[i].qos.allocation_retention_priority.pre_emp_capability = e_RABS_ToBeAdded_SgNBAddReq_Item->resource_configuration.choice.sgNBPDCPpresent.full_E_RAB_Level_QoS_Parameters.allocationAndRetentionPriority.pre_emptionCapability; X2AP_ENDC_SGNB_ADDITION_REQ(msg).e_rab_param[i].qos.allocation_retention_priority.priority_level = e_RABS_ToBeAdded_SgNBAddReq_Item->resource_configuration.choice.sgNBPDCPpresent.full_E_RAB_Level_QoS_Parameters.allocationAndRetentionPriority.priorityLevel; - memcpy(X2AP_ENDC_SGNB_ADDITION_REQ(msg).e_rabs_tobeadded[i].eNB_addr.buffer, + memcpy(X2AP_ENDC_SGNB_ADDITION_REQ(msg).e_rabs_tobeadded[i].sgw_addr.buffer, e_RABS_ToBeAdded_SgNBAddReq_Item->resource_configuration.choice.sgNBPDCPpresent.s1_UL_GTPtunnelEndpoint.transportLayerAddress.buf, e_RABS_ToBeAdded_SgNBAddReq_Item->resource_configuration.choice.sgNBPDCPpresent.s1_UL_GTPtunnelEndpoint.transportLayerAddress.size); - X2AP_ENDC_SGNB_ADDITION_REQ(msg).e_rabs_tobeadded[i].eNB_addr.length = + X2AP_ENDC_SGNB_ADDITION_REQ(msg).e_rabs_tobeadded[i].sgw_addr.length = e_RABS_ToBeAdded_SgNBAddReq_Item->resource_configuration.choice.sgNBPDCPpresent.s1_UL_GTPtunnelEndpoint.transportLayerAddress.size * 8 - e_RABS_ToBeAdded_SgNBAddReq_Item->resource_configuration.choice.sgNBPDCPpresent.s1_UL_GTPtunnelEndpoint.transportLayerAddress.bits_unused; +LOG_I(RRC,"x2u tunnel: index %d target sgw ip %d.%d.%d.%d length %d gtp teid %u\n", + i, + X2AP_ENDC_SGNB_ADDITION_REQ(msg).e_rabs_tobeadded[i].sgw_addr.buffer[0], + X2AP_ENDC_SGNB_ADDITION_REQ(msg).e_rabs_tobeadded[i].sgw_addr.buffer[1], + X2AP_ENDC_SGNB_ADDITION_REQ(msg).e_rabs_tobeadded[i].sgw_addr.buffer[2], + X2AP_ENDC_SGNB_ADDITION_REQ(msg).e_rabs_tobeadded[i].sgw_addr.buffer[3], + X2AP_ENDC_SGNB_ADDITION_REQ(msg).e_rabs_tobeadded[i].sgw_addr.length, + X2AP_ENDC_SGNB_ADDITION_REQ(msg).e_rabs_tobeadded[i].gtp_teid); + OCTET_STRING_TO_INT32(&e_RABS_ToBeAdded_SgNBAddReq_Item->resource_configuration.choice.sgNBPDCPpresent.s1_UL_GTPtunnelEndpoint.gTP_TEID, X2AP_ENDC_SGNB_ADDITION_REQ(msg).e_rabs_tobeadded[i].gtp_teid); } @@ -1771,13 +1768,11 @@ int x2ap_gNB_handle_ENDC_sGNB_addition_request (instance_t instance, X2AP_FIND_PROTOCOLIE_BY_ID(X2AP_SgNBAdditionRequest_IEs_t, ie, x2SgNBAdditionRequest, X2AP_ProtocolIE_ID_id_MeNBtoSgNBContainer, true); - X2AP_MeNBtoSgNBContainer_t *container = &ie->value.choice.MeNBtoSgNBContainer; - //X2AP_MeNBtoSgNBContainer_t *container = &ie->value.choice.MeNBtoSgNBContainer; - if (container->size > 8192 ) // TODO: this is the size of rrc_buffer in struct x2ap_handover_req_s - { printf("%s:%d: fatal: buffer too big\n", __FILE__, __LINE__); abort(); } + if (ie->value.choice.MeNBtoSgNBContainer.size > 8192 ) // TODO: this is the size of rrc_buffer in struct x2ap_handover_req_s + { printf("%s:%d: fatal: buffer too big\n", __FILE__, __LINE__); abort(); } - memcpy(X2AP_ENDC_SGNB_ADDITION_REQ(msg).rrc_buffer, ie->value.choice.MeNBtoSgNBContainer.buf, ie->value.choice.MeNBtoSgNBContainer.size); - X2AP_ENDC_SGNB_ADDITION_REQ(msg).rrc_buffer_size = ie->value.choice.MeNBtoSgNBContainer.size; + memcpy(X2AP_ENDC_SGNB_ADDITION_REQ(msg).rrc_buffer, ie->value.choice.MeNBtoSgNBContainer.buf, ie->value.choice.MeNBtoSgNBContainer.size); + X2AP_ENDC_SGNB_ADDITION_REQ(msg).rrc_buffer_size = ie->value.choice.MeNBtoSgNBContainer.size; itti_send_msg_to_task(TASK_RRC_GNB, instance_p->instance, msg); @@ -1891,10 +1886,10 @@ int x2ap_eNB_handle_ENDC_sGNB_addition_response (instance_t instance, X2AP_ENDC_SGNB_ADDITION_REQ_ACK(msg).e_rabs_admitted_tobeadded[i].e_rab_id = e_RABS_Admitted_ToBeAdded_SgNBAddReqAck_Item->e_RAB_ID ; if(e_RABS_Admitted_ToBeAdded_SgNBAddReqAck_Item->en_DC_ResourceConfiguration.pDCPatSgNB == X2AP_EN_DC_ResourceConfiguration__pDCPatSgNB_present){ - memcpy(X2AP_ENDC_SGNB_ADDITION_REQ_ACK(msg).e_rabs_admitted_tobeadded[i].eNB_addr.buffer, + memcpy(X2AP_ENDC_SGNB_ADDITION_REQ_ACK(msg).e_rabs_admitted_tobeadded[i].gnb_addr.buffer, e_RABS_Admitted_ToBeAdded_SgNBAddReqAck_Item->resource_configuration.choice.sgNBPDCPpresent.s1_DL_GTPtunnelEndpoint.transportLayerAddress.buf, e_RABS_Admitted_ToBeAdded_SgNBAddReqAck_Item->resource_configuration.choice.sgNBPDCPpresent.s1_DL_GTPtunnelEndpoint.transportLayerAddress.size); - X2AP_ENDC_SGNB_ADDITION_REQ_ACK(msg).e_rabs_admitted_tobeadded[i].eNB_addr.length = + X2AP_ENDC_SGNB_ADDITION_REQ_ACK(msg).e_rabs_admitted_tobeadded[i].gnb_addr.length = e_RABS_Admitted_ToBeAdded_SgNBAddReqAck_Item->resource_configuration.choice.sgNBPDCPpresent.s1_DL_GTPtunnelEndpoint.transportLayerAddress.size * 8 - e_RABS_Admitted_ToBeAdded_SgNBAddReqAck_Item->resource_configuration.choice.sgNBPDCPpresent.s1_DL_GTPtunnelEndpoint.transportLayerAddress.bits_unused; OCTET_STRING_TO_INT32(&e_RABS_Admitted_ToBeAdded_SgNBAddReqAck_Item->resource_configuration.choice.sgNBPDCPpresent.s1_DL_GTPtunnelEndpoint.gTP_TEID, @@ -1963,7 +1958,7 @@ int x2ap_gNB_handle_ENDC_sGNB_reconfiguration_complete (instance_t instance, instance_p = x2ap_eNB_get_instance(instance); DevAssert(instance_p != NULL); - //Allocate an ITTI X2AP_SGNB_ADDITION_REQ message instead + //Allocate an ITTI X2AP_sGNB_reconfiguration_complete message msg = itti_alloc_new_message(TASK_X2AP, X2AP_ENDC_SGNB_RECONF_COMPLETE); /* X2AP_ProtocolIE_ID_id_MeNB_UE_X2AP_ID */ diff --git a/openair3/GTPV1-U/gtpv1u_eNB.c b/openair3/GTPV1-U/gtpv1u_eNB.c index f15f295548..f095cce67d 100644 --- a/openair3/GTPV1-U/gtpv1u_eNB.c +++ b/openair3/GTPV1-U/gtpv1u_eNB.c @@ -943,6 +943,8 @@ gtpv1u_create_s1u_tunnel( memcpy(&create_tunnel_resp_pP->enb_addr.buffer, &RC.gtpv1u_data_g->enb_ip_address_for_S1u_S12_S4_up, sizeof (in_addr_t)); + + LOG_I(GTPU,"Configured GTPu address : %x\n",RC.gtpv1u_data_g->enb_ip_address_for_S1u_S12_S4_up); create_tunnel_resp_pP->enb_addr.length = sizeof (in_addr_t); addrs_length_in_bytes = create_tunnel_req_pP->sgw_addr[i].length / 8; AssertFatal((addrs_length_in_bytes == 4) || @@ -971,6 +973,15 @@ gtpv1u_create_s1u_tunnel( gtpv1u_ue_data_p->bearers[eps_bearer_id - GTPV1U_BEARER_OFFSET].teid_sgw = create_tunnel_req_pP->sgw_S1u_teid[i]; gtpv1u_ue_data_p->num_bearers++; create_tunnel_resp_pP->enb_S1u_teid[i] = s1u_teid; + + LOG_I(GTPU,"Copied to create_tunnel_resp tunnel: index %d target gNB ip %d.%d.%d.%d length %d gtp teid %u\n", + i, + create_tunnel_resp_pP->enb_addr.buffer[0], + create_tunnel_resp_pP->enb_addr.buffer[1], + create_tunnel_resp_pP->enb_addr.buffer[2], + create_tunnel_resp_pP->enb_addr.buffer[3], + create_tunnel_resp_pP->enb_addr.length, + create_tunnel_resp_pP->enb_S1u_teid[i]); } else { create_tunnel_resp_pP->enb_S1u_teid[i] = 0; create_tunnel_resp_pP->status = 0xFF; diff --git a/openair3/GTPV1-U/gtpv1u_gNB.c b/openair3/GTPV1-U/gtpv1u_gNB.c new file mode 100644 index 0000000000..f13bf13794 --- /dev/null +++ b/openair3/GTPV1-U/gtpv1u_gNB.c @@ -0,0 +1,311 @@ +/* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file gtpv1u_gNB.c + * \brief + * \author Sebastien ROUX, Lionel GAUTHIER, Navid Nikaein, Panos MATZAKOS + * \version 1.0 + * \company Eurecom + * \email: lionel.gauthier@eurecom.fr + */ +#include +#include + +#include "mme_config.h" +#include "intertask_interface.h" +#include "msc.h" + +#include "gtpv1u.h" +#include "NwGtpv1u.h" +#include "NwGtpv1uMsg.h" +#include "NwGtpv1uPrivate.h" +#include "NwLog.h" +#include "gtpv1u_eNB_defs.h" +#include "gtpv1_u_messages_types.h" +#include "udp_eNB_task.h" +#include "common/utils/LOG/log.h" +#include "COMMON/platform_types.h" +#include "COMMON/platform_constants.h" +#include "common/utils/LOG/vcd_signal_dumper.h" +#include "common/ran_context.h" +#include "gtpv1u_eNB_defs.h" +#include "gtpv1u_eNB_task.h" +#include "gtpv1u_gNB_task.h" +#include "rrc_eNB_GTPV1U.h" + +#undef GTP_DUMP_SOCKET + +extern unsigned char NB_eNB_INST; + +extern RAN_CONTEXT_t RC; + +extern NwGtpv1uRcT gtpv1u_eNB_send_udp_msg( + NwGtpv1uUdpHandleT udpHandle, + uint8_t *buffer, + uint32_t buffer_len, + uint32_t buffer_offset, + uint32_t peerIpAddr, + uint16_t peerPort); + +extern NwGtpv1uRcT gtpv1u_eNB_log_request(NwGtpv1uLogMgrHandleT hLogMgr, + uint32_t logLevel, + NwCharT *file, + uint32_t line, + NwCharT *logStr); + +static NwGtpv1uRcT gtpv1u_start_timer_wrapper( + NwGtpv1uTimerMgrHandleT tmrMgrHandle, + uint32_t timeoutSec, + uint32_t timeoutUsec, + uint32_t tmrType, + void *timeoutArg, + NwGtpv1uTimerHandleT *hTmr) { + NwGtpv1uRcT rc = NW_GTPV1U_OK; + long timer_id; + + if (tmrType == NW_GTPV1U_TMR_TYPE_ONE_SHOT) { + timer_setup(timeoutSec, + timeoutUsec, + TASK_GTPV1_U, + INSTANCE_DEFAULT, + TIMER_ONE_SHOT, + timeoutArg, + &timer_id); + } else { + timer_setup(timeoutSec, + timeoutUsec, + TASK_GTPV1_U, + INSTANCE_DEFAULT, + TIMER_PERIODIC, + timeoutArg, + &timer_id); + } + + return rc; +} + + +static NwGtpv1uRcT +gtpv1u_stop_timer_wrapper( + NwGtpv1uTimerMgrHandleT tmrMgrHandle, + NwGtpv1uTimerHandleT hTmr) { + NwGtpv1uRcT rc = NW_GTPV1U_OK; + return rc; +} + +/* Callback called when a gtpv1u message arrived on UDP interface */ +NwGtpv1uRcT gtpv1u_gNB_process_stack_req( + NwGtpv1uUlpHandleT hUlp, + NwGtpv1uUlpApiT *pUlpApi) { + boolean_t result = FALSE; + teid_t teid = 0; + hashtable_rc_t hash_rc = HASH_TABLE_KEY_NOT_EXISTS; + gtpv1u_teid_data_t *gtpv1u_teid_data_p = NULL; + protocol_ctxt_t ctxt; + NwGtpv1uRcT rc; + + switch(pUlpApi->apiType) { + /* Here there are two type of messages handled: + * - T-PDU + * - END-MARKER + */ + case NW_GTPV1U_ULP_API_RECV_TPDU: { + uint8_t buffer[4096]; + uint32_t buffer_len; + //uint16_t msgType = NW_GTP_GPDU; + //NwGtpv1uMsgT *pMsg = NULL; + /* Nw-gptv1u stack has processed a PDU. we can schedule it to PDCP + * for transmission. + */ + teid = pUlpApi->apiInfo.recvMsgInfo.teid; + //pMsg = (NwGtpv1uMsgT *) pUlpApi->apiInfo.recvMsgInfo.hMsg; + //msgType = pMsg->msgType; + + if (NW_GTPV1U_OK != nwGtpv1uMsgGetTpdu(pUlpApi->apiInfo.recvMsgInfo.hMsg, + buffer, &buffer_len)) { + LOG_E(GTPU, "Error while retrieving T-PDU"); + } + + itti_free(TASK_UDP, ((NwGtpv1uMsgT *)pUlpApi->apiInfo.recvMsgInfo.hMsg)->msgBuf); +#if defined(GTP_DUMP_SOCKET) && GTP_DUMP_SOCKET > 0 + gtpv1u_eNB_write_dump_socket(buffer,buffer_len); +#endif + rc = nwGtpv1uMsgDelete(RC.gtpv1u_data_g->gtpv1u_stack, + pUlpApi->apiInfo.recvMsgInfo.hMsg); + + if (rc != NW_GTPV1U_OK) { + LOG_E(GTPU, "nwGtpv1uMsgDelete failed: 0x%x\n", rc); + } + + hash_rc = hashtable_get(RC.gtpv1u_data_g->teid_mapping, teid, (void **)>pv1u_teid_data_p); + + if (hash_rc == HASH_TABLE_OK) { +#if defined(LOG_GTPU) && LOG_GTPU > 0 + LOG_D(GTPU, "Received T-PDU from gtpv1u stack teid %u size %d -> enb module id %u ue module id %u rab id %u\n", + teid, + buffer_len, + gtpv1u_teid_data_p->enb_id, + gtpv1u_teid_data_p->ue_id, + gtpv1u_teid_data_p->eps_bearer_id); +#endif + //warning "LG eps bearer mapping to DRB id to do (offset -4)" + PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, gtpv1u_teid_data_p->enb_id, ENB_FLAG_YES, gtpv1u_teid_data_p->ue_id, 0, 0,gtpv1u_teid_data_p->enb_id); + MSC_LOG_TX_MESSAGE( + MSC_GTPU_ENB, + MSC_PDCP_ENB, + NULL,0, + MSC_AS_TIME_FMT" DATA-REQ rb %u size %u", + 0,0, + (gtpv1u_teid_data_p->eps_bearer_id) ? gtpv1u_teid_data_p->eps_bearer_id - 4: 5-4, + buffer_len); + + result = pdcp_data_req( + &ctxt, + SRB_FLAG_NO, + (gtpv1u_teid_data_p->eps_bearer_id) ? gtpv1u_teid_data_p->eps_bearer_id - 4: 5-4, + 0, // mui + SDU_CONFIRM_NO, // confirm + buffer_len, + buffer, + PDCP_TRANSMISSION_MODE_DATA,NULL, NULL + ); + + if ( result == FALSE ) { + if (ctxt.configured == FALSE ) + LOG_W(GTPU, "gNB node PDCP data request failed, cause: [UE:%x]RB is not configured!\n", ctxt.rnti) ; + else + LOG_W(GTPU, "PDCP data request failed\n"); + + return NW_GTPV1U_FAILURE; + } + } else { + LOG_W(GTPU, "Received T-PDU from gtpv1u stack teid %u unknown size %u", teid, buffer_len); + } + } + break; + + default: { + LOG_E(GTPU, "Received undefined UlpApi (%02x) from gtpv1u stack!\n", + pUlpApi->apiType); + } + } // end of switch + + return NW_GTPV1U_OK; +} + +int gtpv1u_gNB_init(void) { + NwGtpv1uRcT rc = NW_GTPV1U_FAILURE; + NwGtpv1uUlpEntityT ulp; + NwGtpv1uUdpEntityT udp; + NwGtpv1uLogMgrEntityT log; + NwGtpv1uTimerMgrEntityT tmr; + // enb_properties_p = enb_config_get()->properties[0]; + RC.gtpv1u_data_g = (gtpv1u_data_t *)calloc(sizeof(gtpv1u_data_t),1); + LOG_I(GTPU, "Initializing GTPU stack %p\n",&RC.gtpv1u_data_g); + //gtpv1u_data_g.gtpv1u_stack; + /* Initialize UE hashtable */ + RC.gtpv1u_data_g->ue_mapping = hashtable_create (32, NULL, NULL); + AssertFatal(RC.gtpv1u_data_g->ue_mapping != NULL, " ERROR Initializing TASK_GTPV1_U task interface: in hashtable_create returned %p\n", RC.gtpv1u_data_g->ue_mapping); + RC.gtpv1u_data_g->teid_mapping = hashtable_create (256, NULL, NULL); + AssertFatal(RC.gtpv1u_data_g->teid_mapping != NULL, " ERROR Initializing TASK_GTPV1_U task interface: in hashtable_create\n"); + // RC.gtpv1u_data_g.enb_ip_address_for_S1u_S12_S4_up = enb_properties_p->enb_ipv4_address_for_S1U; + //gtpv1u_data_g.udp_data; + RC.gtpv1u_data_g->seq_num = 0; + RC.gtpv1u_data_g->restart_counter = 0; + + /* Initializing GTPv1-U stack */ + if ((rc = nwGtpv1uInitialize(&RC.gtpv1u_data_g->gtpv1u_stack, GTPU_STACK_ENB)) != NW_GTPV1U_OK) { + LOG_E(GTPU, "Failed to setup nwGtpv1u stack %x\n", rc); + return -1; + } + + if ((rc = nwGtpv1uSetLogLevel(RC.gtpv1u_data_g->gtpv1u_stack, + NW_LOG_LEVEL_DEBG)) != NW_GTPV1U_OK) { + LOG_E(GTPU, "Failed to setup loglevel for stack %x\n", rc); + return -1; + } + + /* Set the ULP API callback. Called once message have been processed by the + * nw-gtpv1u stack. + */ + ulp.ulpReqCallback = gtpv1u_gNB_process_stack_req; + memset((void *)&(ulp.hUlp), 0, sizeof(NwGtpv1uUlpHandleT)); + + if ((rc = nwGtpv1uSetUlpEntity(RC.gtpv1u_data_g->gtpv1u_stack, &ulp)) != NW_GTPV1U_OK) { + LOG_E(GTPU, "nwGtpv1uSetUlpEntity: %x", rc); + return -1; + } + + /* nw-gtpv1u stack requires an udp callback to send data over UDP. + * We provide a wrapper to UDP task. + */ + udp.udpDataReqCallback = gtpv1u_eNB_send_udp_msg; + memset((void *)&(udp.hUdp), 0, sizeof(NwGtpv1uUdpHandleT)); + + if ((rc = nwGtpv1uSetUdpEntity(RC.gtpv1u_data_g->gtpv1u_stack, &udp)) != NW_GTPV1U_OK) { + LOG_E(GTPU, "nwGtpv1uSetUdpEntity: %x", rc); + return -1; + } + + log.logReqCallback = gtpv1u_eNB_log_request; + memset((void *)&(log.logMgrHandle), 0, sizeof(NwGtpv1uLogMgrHandleT)); + + if ((rc = nwGtpv1uSetLogMgrEntity(RC.gtpv1u_data_g->gtpv1u_stack, &log)) != NW_GTPV1U_OK) { + LOG_E(GTPU, "nwGtpv1uSetLogMgrEntity: %x", rc); + return -1; + } + + /* Timer interface is more complicated as both wrappers doesn't send a message + * to the timer task but call the timer API functions start/stop timer. + */ + tmr.tmrMgrHandle = 0; + tmr.tmrStartCallback = gtpv1u_start_timer_wrapper; + tmr.tmrStopCallback = gtpv1u_stop_timer_wrapper; + + if ((rc = nwGtpv1uSetTimerMgrEntity(RC.gtpv1u_data_g->gtpv1u_stack, &tmr)) != NW_GTPV1U_OK) { + LOG_E(GTPU, "nwGtpv1uSetTimerMgrEntity: %x", rc); + return -1; + } + +#if defined(GTP_DUMP_SOCKET) && GTP_DUMP_SOCKET > 0 + + if ((ret = gtpv1u_eNB_create_dump_socket()) < 0) { + return -1; + } + +#endif + LOG_D(GTPU, "Initializing GTPV1U interface for eNB: DONE\n"); + return 0; +} + +void *gtpv1u_gNB_task(void *args) { + int rc = 0; + rc = gtpv1u_gNB_init(); + AssertFatal(rc == 0, "gtpv1u_eNB_init Failed"); + itti_mark_task_ready(TASK_GTPV1_U); + MSC_START_USE(); + + while(1) { + (void) gtpv1u_eNB_process_itti_msg (NULL); + } + + return NULL; +} + diff --git a/openair3/GTPV1-U/gtpv1u_gNB_task.h b/openair3/GTPV1-U/gtpv1u_gNB_task.h new file mode 100644 index 0000000000..42fae7a714 --- /dev/null +++ b/openair3/GTPV1-U/gtpv1u_gNB_task.h @@ -0,0 +1,37 @@ +/* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file gtpv1u_gNB_task.h +* \brief +* \author Lionel Gauthier Panos Matzakos +* \company Eurecom +* \email: lionel.gauthier@eurecom.fr +*/ + +#ifndef GTPV1U_GNB_TASK_H_ +#define GTPV1U_GNB_TASK_H_ + +int gtpv1u_gNB_init(void); + +void *gtpv1u_gNB_task(void *args); + + +#endif /* GTPV1U_GNB_TASK_H_ */ + diff --git a/openair3/M3AP/m3ap_MCE.c b/openair3/M3AP/m3ap_MCE.c index 232b0c0ece..dec9b96897 100644 --- a/openair3/M3AP/m3ap_MCE.c +++ b/openair3/M3AP/m3ap_MCE.c @@ -142,6 +142,20 @@ void m3ap_MCE_handle_sctp_association_resp(instance_t instance, sctp_new_associa sctp_new_association_resp->ulp_cnx_id); //m3ap_handle_m3_setup_message(instance_p, m3ap_enb_data_p, //sctp_new_association_resp->sctp_state == SCTP_STATE_SHUTDOWN); + sleep(4); + int index; + /* Trying to connect to the provided list of eNB ip address */ + for (index = 0; index < instance_p->nb_m3; index++) { + //M2AP_INFO("eNB[%d] eNB id %u acting as an initiator (client)\n", + // instance_id, instance->eNB_id); + m3ap_MCE_register_MCE(instance_p, + &instance_p->target_mme_m3_ip_address[index], + &instance_p->mme_m3_ip_address, + instance_p->sctp_in_streams, + instance_p->sctp_out_streams, + instance_p->mce_port_for_M3C, + instance_p->multi_sd); + } return; } diff --git a/openair3/S1AP/s1ap_eNB.c b/openair3/S1AP/s1ap_eNB.c index 3592cf80a1..c703501847 100644 --- a/openair3/S1AP/s1ap_eNB.c +++ b/openair3/S1AP/s1ap_eNB.c @@ -69,7 +69,6 @@ s1ap_eNB_config_t s1ap_config; static int s1ap_eNB_generate_s1_setup_request( s1ap_eNB_instance_t *instance_p, s1ap_eNB_mme_data_t *s1ap_mme_data_p); - void s1ap_eNB_handle_register_eNB(instance_t instance, s1ap_register_enb_req_t *s1ap_register_eNB); void s1ap_eNB_handle_sctp_association_resp(instance_t instance, sctp_new_association_resp_t *sctp_new_association_resp); @@ -221,8 +220,21 @@ void s1ap_eNB_handle_register_eNB(instance_t instance, s1ap_register_enb_req_t * /* Trying to connect to provided list of MME ip address */ for (index = 0; index < s1ap_register_eNB->nb_mme; index++) { + net_ip_address_t *mme_ip = &s1ap_register_eNB->mme_ip_address[index]; + struct s1ap_eNB_mme_data_s *mme = NULL; + RB_FOREACH(mme, s1ap_mme_map, &new_instance->s1ap_mme_head) { + /* Compare whether IPv4 and IPv6 information is already present, in which + * wase we do not register again */ + if (mme->mme_s1_ip.ipv4 == mme_ip->ipv4 && (!mme_ip->ipv4 + || strncmp(mme->mme_s1_ip.ipv4_address, mme_ip->ipv4_address, 16) == 0) + && mme->mme_s1_ip.ipv6 == mme_ip->ipv6 && (!mme_ip->ipv6 + || strncmp(mme->mme_s1_ip.ipv6_address, mme_ip->ipv6_address, 46) == 0)) + break; + } + if (mme) + continue; s1ap_eNB_register_mme(new_instance, - &s1ap_register_eNB->mme_ip_address[index], + mme_ip, &s1ap_register_eNB->enb_ip_address, s1ap_register_eNB->sctp_in_streams, s1ap_register_eNB->sctp_out_streams, @@ -361,6 +373,12 @@ void *s1ap_eNB_process_itti_msg(void *notUsed) { } break; + case S1AP_E_RAB_MODIFICATION_IND: { + s1ap_eNB_generate_E_RAB_Modification_Indication(ITTI_MESSAGE_GET_INSTANCE(received_msg), + &S1AP_E_RAB_MODIFICATION_IND(received_msg)); + } + break; + case S1AP_UE_CONTEXT_RELEASE_COMPLETE: { s1ap_ue_context_release_complete(ITTI_MESSAGE_GET_INSTANCE(received_msg), &S1AP_UE_CONTEXT_RELEASE_COMPLETE(received_msg)); @@ -508,3 +526,7 @@ static int s1ap_eNB_generate_s1_setup_request( s1ap_eNB_itti_send_sctp_data_req(instance_p->instance, s1ap_mme_data_p->assoc_id, buffer, len, 0); return ret; } + + + + diff --git a/openair3/S1AP/s1ap_eNB_decoder.c b/openair3/S1AP/s1ap_eNB_decoder.c index 3eb182b159..4635946a05 100644 --- a/openair3/S1AP/s1ap_eNB_decoder.c +++ b/openair3/S1AP/s1ap_eNB_decoder.c @@ -112,6 +112,12 @@ static int s1ap_eNB_decode_successful_outcome(S1AP_S1AP_PDU_t *pdu) { free(res.buffer); break; + case S1AP_ProcedureCode_id_E_RABModificationIndication: + res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_S1AP_S1AP_PDU, pdu); + free(res.buffer); + break; + + default: S1AP_ERROR("Unknown procedure ID (%d) for successfull outcome message\n", (int)pdu->choice.successfulOutcome.procedureCode); diff --git a/openair3/S1AP/s1ap_eNB_encoder.c b/openair3/S1AP/s1ap_eNB_encoder.c index 0cd46214fc..227a3cb6a9 100644 --- a/openair3/S1AP/s1ap_eNB_encoder.c +++ b/openair3/S1AP/s1ap_eNB_encoder.c @@ -118,6 +118,11 @@ int s1ap_eNB_encode_initiating(S1AP_S1AP_PDU_t *pdu, free(res.buffer); break; + case S1AP_ProcedureCode_id_E_RABModificationIndication: + res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_S1AP_S1AP_PDU, pdu); + free(res.buffer); + break; + default: S1AP_DEBUG("Unknown procedure ID (%d) for initiating message\n", (int)pdu->choice.initiatingMessage.procedureCode); diff --git a/openair3/S1AP/s1ap_eNB_handlers.c b/openair3/S1AP/s1ap_eNB_handlers.c index 87abc1ede9..28ee11187e 100644 --- a/openair3/S1AP/s1ap_eNB_handlers.c +++ b/openair3/S1AP/s1ap_eNB_handlers.c @@ -104,6 +104,11 @@ int s1ap_eNB_handle_s1_path_switch_request_failure(uint32_t assoc_ uint32_t stream, S1AP_S1AP_PDU_t *pdu); +static +int s1ap_eNB_handle_s1_ENDC_e_rab_modification_confirm(uint32_t assoc_id, + uint32_t stream, + S1AP_S1AP_PDU_t *pdu); + /* Handlers matrix. Only eNB related procedure present here */ s1ap_message_decoded_callback messages_callback[][3] = { { 0, 0, 0 }, /* HandoverPreparation */ @@ -154,6 +159,9 @@ s1ap_message_decoded_callback messages_callback[][3] = { { 0, 0, 0 }, /* UplinkUEAssociatedLPPaTransport */ { 0, 0, 0 }, /* DownlinkNonUEAssociatedLPPaTransport */ { 0, 0, 0 }, /* UplinkNonUEAssociatedLPPaTransport */ + { 0, 0, 0 }, /* UERadioCapabilityMatch */ + { 0, 0, 0 }, /* PWSRestartIndication */ + { 0, s1ap_eNB_handle_s1_ENDC_e_rab_modification_confirm, 0 }, /* E_RABModificationIndication */ }; char *s1ap_direction2String(int s1ap_dir) { static char *s1ap_direction_String[] = { @@ -1722,3 +1730,13 @@ int s1ap_eNB_handle_s1_path_switch_request_failure(uint32_t assoc_ // TODO continue return 0; } + +static +int s1ap_eNB_handle_s1_ENDC_e_rab_modification_confirm(uint32_t assoc_id, + uint32_t stream, + S1AP_S1AP_PDU_t *pdu){ + + LOG_W(S1AP, "Implementation of S1AP E-RAB Modification confirm handler is pending...\n"); + return 0; +} + diff --git a/openair3/S1AP/s1ap_eNB_nas_procedures.c b/openair3/S1AP/s1ap_eNB_nas_procedures.c index d271ddf6ba..c668e32d1b 100644 --- a/openair3/S1AP/s1ap_eNB_nas_procedures.c +++ b/openair3/S1AP/s1ap_eNB_nas_procedures.c @@ -1620,3 +1620,319 @@ int s1ap_eNB_path_switch_req(instance_t instance, return ret; } + + +//----------------------------------------------------------------------------- +/* +* eNB generate a S1 E_RAB Modification Indication towards MME +*/ +/*int s1ap_eNB_generate_E_RAB_Modification_Indication( + instance_t instance, + s1ap_e_rab_modification_ind_t *e_rab_modification_ind) +//----------------------------------------------------------------------------- +{ + struct s1ap_eNB_ue_context_s *ue_context_p = NULL; + S1AP_S1AP_PDU_t pdu; + S1AP_E_RABModificationIndication_t *out = NULL; + S1AP_E_RABModificationIndicationIEs_t *ie = NULL; + S1AP_E_RABToBeModifiedItemBearerModInd_t *E_RAB_ToBeModifiedItem_BearerModInd = NULL; + S1AP_E_RABToBeModifiedItemBearerModIndIEs_t *E_RAB_ToBeModifiedItem_BearerModInd_IEs = NULL; + + S1AP_E_RABNotToBeModifiedItemBearerModInd_t *E_RAB_NotToBeModifiedItem_BearerModInd = NULL; + S1AP_E_RABNotToBeModifiedItemBearerModIndIEs_t *E_RAB_NotToBeModifiedItem_BearerModInd_IEs = NULL; + + + s1ap_eNB_instance_t *s1ap_eNB_instance_p = NULL; + s1ap_eNB_instance_p = s1ap_eNB_get_instance(instance); + uint8_t *buffer = NULL; + uint32_t len = 0; + int ret = 0; + DevAssert(s1ap_eNB_instance_p != NULL); + DevAssert(e_rab_modification_ind != NULL); + + int num_e_rabs_tobemodified = e_rab_modification_ind->nb_of_e_rabs_tobemodified; + int num_e_rabs_nottobemodified = e_rab_modification_ind->nb_of_e_rabs_nottobemodified; + + uint32_t CSG_id = 0; + + if ((ue_context_p = s1ap_eNB_get_ue_context(s1ap_eNB_instance_p, + e_rab_modification_ind->eNB_ue_s1ap_id)) == NULL) { + // The context for this eNB ue s1ap id doesn't exist in the map of eNB UEs + S1AP_WARN("Failed to find ue context associated with eNB ue s1ap id: 0x%06x\n", + e_rab_modification_ind->eNB_ue_s1ap_id); + return -1; + } + + // Prepare the S1AP message to encode + memset(&pdu, 0, sizeof(pdu)); + pdu.present = S1AP_S1AP_PDU_PR_initiatingMessage; + pdu.choice.initiatingMessage.procedureCode = S1AP_ProcedureCode_id_E_RABModificationIndication; + pdu.choice.initiatingMessage.criticality = S1AP_Criticality_reject; + pdu.choice.initiatingMessage.value.present = S1AP_InitiatingMessage__value_PR_E_RABModificationIndication; + out = &pdu.choice.initiatingMessage.value.choice.E_RABModificationIndication; + // mandatory + ie = (S1AP_E_RABModificationIndicationIEs_t *)calloc(1, sizeof(S1AP_E_RABModificationIndicationIEs_t)); + ie->id = S1AP_ProtocolIE_ID_id_MME_UE_S1AP_ID; + ie->criticality = S1AP_Criticality_reject; + ie->value.present = S1AP_E_RABModificationIndicationIEs__value_PR_MME_UE_S1AP_ID; + ie->value.choice.MME_UE_S1AP_ID = e_rab_modification_ind->mme_ue_s1ap_id; + ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie); + + ie = (S1AP_E_RABModificationIndicationIEs_t *)calloc(1, sizeof(S1AP_E_RABModificationIndicationIEs_t)); + ie->id = S1AP_ProtocolIE_ID_id_eNB_UE_S1AP_ID; + ie->criticality = S1AP_Criticality_reject; + ie->value.present = S1AP_E_RABModificationIndicationIEs__value_PR_ENB_UE_S1AP_ID; + ie->value.choice.ENB_UE_S1AP_ID = e_rab_modification_ind->eNB_ue_s1ap_id; + ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie); + + //E-RABs to be modified list + ie = (S1AP_E_RABModificationIndicationIEs_t *)calloc(1, sizeof(S1AP_E_RABModificationIndicationIEs_t)); + ie->id = S1AP_ProtocolIE_ID_id_E_RABToBeModifiedListBearerModInd; + ie->criticality = S1AP_Criticality_reject; + ie->value.present = S1AP_E_RABModificationIndicationIEs__value_PR_E_RABToBeModifiedListBearerModInd; + + //The following two for-loops here will probably need to change. We should do a different type of search + for(int i=0; iid = S1AP_ProtocolIE_ID_id_E_RABToBeModifiedItemBearerModInd; + E_RAB_ToBeModifiedItem_BearerModInd_IEs->criticality = S1AP_Criticality_reject; + E_RAB_ToBeModifiedItem_BearerModInd_IEs->value.present = S1AP_E_RABToBeModifiedItemBearerModIndIEs__value_PR_E_RABToBeModifiedItemBearerModInd; + E_RAB_ToBeModifiedItem_BearerModInd = &E_RAB_ToBeModifiedItem_BearerModInd_IEs->value.choice.E_RABToBeModifiedItemBearerModInd; + + { + E_RAB_ToBeModifiedItem_BearerModInd->e_RAB_ID = e_rab_modification_ind->e_rabs_tobemodified[i].e_rab_id; + + E_RAB_ToBeModifiedItem_BearerModInd->transportLayerAddress.size = e_rab_modification_ind->e_rabs_tobemodified[i].eNB_addr.length/8; + E_RAB_ToBeModifiedItem_BearerModInd->transportLayerAddress.bits_unused = e_rab_modification_ind->e_rabs_tobemodified[i].eNB_addr.length%8; + E_RAB_ToBeModifiedItem_BearerModInd->transportLayerAddress.buf = calloc(1, E_RAB_ToBeModifiedItem_BearerModInd->transportLayerAddress.size); + memcpy (E_RAB_ToBeModifiedItem_BearerModInd->transportLayerAddress.buf, e_rab_modification_ind->e_rabs_tobemodified[i].eNB_addr.buffer, + E_RAB_ToBeModifiedItem_BearerModInd->transportLayerAddress.size); + + INT32_TO_OCTET_STRING(e_rab_modification_ind->e_rabs_tobemodified[i].gtp_teid, &E_RAB_ToBeModifiedItem_BearerModInd->dL_GTP_TEID); + + } + ASN_SEQUENCE_ADD(&ie->value.choice.E_RABToBeModifiedListBearerModInd.list, E_RAB_ToBeModifiedItem_BearerModInd_IEs); + } + + ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie); + + //E-RABs NOT to be modified list + ie = (S1AP_E_RABModificationIndicationIEs_t *)calloc(1, sizeof(S1AP_E_RABModificationIndicationIEs_t)); + ie->id = S1AP_ProtocolIE_ID_id_E_RABNotToBeModifiedListBearerModInd; + ie->criticality = S1AP_Criticality_reject; + if(num_e_rabs_nottobemodified > 0) { + ie->value.present = S1AP_E_RABModificationIndicationIEs__value_PR_E_RABNotToBeModifiedListBearerModInd; + + for(int i=0; iid = S1AP_ProtocolIE_ID_id_E_RABNotToBeModifiedItemBearerModInd; + E_RAB_NotToBeModifiedItem_BearerModInd_IEs->criticality = S1AP_Criticality_reject; + E_RAB_NotToBeModifiedItem_BearerModInd_IEs->value.present = S1AP_E_RABNotToBeModifiedItemBearerModIndIEs__value_PR_E_RABNotToBeModifiedItemBearerModInd; + E_RAB_NotToBeModifiedItem_BearerModInd = &E_RAB_NotToBeModifiedItem_BearerModInd_IEs->value.choice.E_RABNotToBeModifiedItemBearerModInd; + + { + E_RAB_NotToBeModifiedItem_BearerModInd->e_RAB_ID = e_rab_modification_ind->e_rabs_nottobemodified[i].e_rab_id; + + E_RAB_NotToBeModifiedItem_BearerModInd->transportLayerAddress.size = e_rab_modification_ind->e_rabs_nottobemodified[i].eNB_addr.length/8; + E_RAB_NotToBeModifiedItem_BearerModInd->transportLayerAddress.bits_unused = e_rab_modification_ind->e_rabs_nottobemodified[i].eNB_addr.length%8; + E_RAB_NotToBeModifiedItem_BearerModInd->transportLayerAddress.buf = + calloc(1, E_RAB_NotToBeModifiedItem_BearerModInd->transportLayerAddress.size); + memcpy (E_RAB_NotToBeModifiedItem_BearerModInd->transportLayerAddress.buf, e_rab_modification_ind->e_rabs_nottobemodified[i].eNB_addr.buffer, + E_RAB_NotToBeModifiedItem_BearerModInd->transportLayerAddress.size); + + INT32_TO_OCTET_STRING(e_rab_modification_ind->e_rabs_nottobemodified[i].gtp_teid, &E_RAB_NotToBeModifiedItem_BearerModInd->dL_GTP_TEID); + + } + ASN_SEQUENCE_ADD(&ie->value.choice.E_RABNotToBeModifiedListBearerModInd.list, E_RAB_NotToBeModifiedItem_BearerModInd_IEs); + } + } + else{ + ie->value.present = S1AP_E_RABModificationIndicationIEs__value_PR_E_RABNotToBeModifiedListBearerModInd; + ie->value.choice.E_RABNotToBeModifiedListBearerModInd.list.size = 0; + } + + + + ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie); + + ie = (S1AP_E_RABModificationIndicationIEs_t *)calloc(1, sizeof(S1AP_E_RABModificationIndicationIEs_t)); + ie->id = S1AP_ProtocolIE_ID_id_CSGMembershipInfo; + ie->criticality = S1AP_Criticality_reject; + ie->value.present = S1AP_E_RABModificationIndicationIEs__value_PR_CSGMembershipInfo; + ie->value.choice.CSGMembershipInfo.cSGMembershipStatus = S1AP_CSGMembershipStatus_member; + INT32_TO_BIT_STRING(CSG_id, &ie->value.choice.CSGMembershipInfo.cSG_Id); + ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie); + + + if (s1ap_eNB_encode_pdu(&pdu, &buffer, &len) < 0) { + S1AP_ERROR("Failed to encode S1 E-RAB modification indication \n"); + return -1; + } + + // Non UE-Associated signalling -> stream = 0 + S1AP_INFO("Size of encoded message: %d \n", len); + s1ap_eNB_itti_send_sctp_data_req(s1ap_eNB_instance_p->instance, + ue_context_p->mme_ref->assoc_id, buffer, + len, ue_context_p->tx_stream); + +//s1ap_eNB_itti_send_sctp_data_req(s1ap_eNB_instance_p->instance, ue_context_p->mme_ref->assoc_id, buffer, len, 0); + return ret; +}*/ + +int s1ap_eNB_generate_E_RAB_Modification_Indication( + instance_t instance, + s1ap_e_rab_modification_ind_t *e_rab_modification_ind) +//----------------------------------------------------------------------------- +{ + struct s1ap_eNB_ue_context_s *ue_context_p = NULL; + S1AP_S1AP_PDU_t pdu; + S1AP_E_RABModificationIndication_t *out = NULL; + S1AP_E_RABModificationIndicationIEs_t *ie = NULL; + S1AP_E_RABToBeModifiedItemBearerModInd_t *E_RAB_ToBeModifiedItem_BearerModInd = NULL; + S1AP_E_RABToBeModifiedItemBearerModIndIEs_t *E_RAB_ToBeModifiedItem_BearerModInd_IEs = NULL; + + //S1AP_E_RABNotToBeModifiedItemBearerModInd_t *E_RAB_NotToBeModifiedItem_BearerModInd = NULL; + //S1AP_E_RABNotToBeModifiedItemBearerModIndIEs_t *E_RAB_NotToBeModifiedItem_BearerModInd_IEs = NULL; + + + s1ap_eNB_instance_t *s1ap_eNB_instance_p = NULL; + s1ap_eNB_instance_p = s1ap_eNB_get_instance(instance); + uint8_t *buffer = NULL; + uint32_t len = 0; + int ret = 0; + DevAssert(s1ap_eNB_instance_p != NULL); + DevAssert(e_rab_modification_ind != NULL); + + int num_e_rabs_tobemodified = e_rab_modification_ind->nb_of_e_rabs_tobemodified; + //int num_e_rabs_nottobemodified = e_rab_modification_ind->nb_of_e_rabs_nottobemodified; + + //uint32_t CSG_id = 0; + //uint32_t pseudo_gtp_teid = 10; + + if ((ue_context_p = s1ap_eNB_get_ue_context(s1ap_eNB_instance_p, + e_rab_modification_ind->eNB_ue_s1ap_id)) == NULL) { + // The context for this eNB ue s1ap id doesn't exist in the map of eNB UEs + S1AP_WARN("Failed to find ue context associated with eNB ue s1ap id: 0x%06x\n", + e_rab_modification_ind->eNB_ue_s1ap_id); + return -1; + } + + // Prepare the S1AP message to encode + memset(&pdu, 0, sizeof(pdu)); + pdu.present = S1AP_S1AP_PDU_PR_initiatingMessage; + pdu.choice.initiatingMessage.procedureCode = S1AP_ProcedureCode_id_E_RABModificationIndication; + pdu.choice.initiatingMessage.criticality = S1AP_Criticality_reject; + pdu.choice.initiatingMessage.value.present = S1AP_InitiatingMessage__value_PR_E_RABModificationIndication; + out = &pdu.choice.initiatingMessage.value.choice.E_RABModificationIndication; + /* mandatory */ + ie = (S1AP_E_RABModificationIndicationIEs_t *)calloc(1, sizeof(S1AP_E_RABModificationIndicationIEs_t)); + ie->id = S1AP_ProtocolIE_ID_id_MME_UE_S1AP_ID; + ie->criticality = S1AP_Criticality_reject; + ie->value.present = S1AP_E_RABModificationIndicationIEs__value_PR_MME_UE_S1AP_ID; + ie->value.choice.MME_UE_S1AP_ID = e_rab_modification_ind->mme_ue_s1ap_id; + ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie); + + ie = (S1AP_E_RABModificationIndicationIEs_t *)calloc(1, sizeof(S1AP_E_RABModificationIndicationIEs_t)); + ie->id = S1AP_ProtocolIE_ID_id_eNB_UE_S1AP_ID; + ie->criticality = S1AP_Criticality_reject; + ie->value.present = S1AP_E_RABModificationIndicationIEs__value_PR_ENB_UE_S1AP_ID; + ie->value.choice.ENB_UE_S1AP_ID = e_rab_modification_ind->eNB_ue_s1ap_id; + ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie); + + //E-RABs to be modified list + ie = (S1AP_E_RABModificationIndicationIEs_t *)calloc(1, sizeof(S1AP_E_RABModificationIndicationIEs_t)); + ie->id = S1AP_ProtocolIE_ID_id_E_RABToBeModifiedListBearerModInd; + ie->criticality = S1AP_Criticality_reject; + ie->value.present = S1AP_E_RABModificationIndicationIEs__value_PR_E_RABToBeModifiedListBearerModInd; + + //The following two for-loops here will probably need to change. We should do a different type of search + for(int i=0; iid = S1AP_ProtocolIE_ID_id_E_RABToBeModifiedItemBearerModInd; + E_RAB_ToBeModifiedItem_BearerModInd_IEs->criticality = S1AP_Criticality_reject; + E_RAB_ToBeModifiedItem_BearerModInd_IEs->value.present = S1AP_E_RABToBeModifiedItemBearerModIndIEs__value_PR_E_RABToBeModifiedItemBearerModInd; + E_RAB_ToBeModifiedItem_BearerModInd = &E_RAB_ToBeModifiedItem_BearerModInd_IEs->value.choice.E_RABToBeModifiedItemBearerModInd; + + { + E_RAB_ToBeModifiedItem_BearerModInd->e_RAB_ID = e_rab_modification_ind->e_rabs_tobemodified[i].e_rab_id; + + E_RAB_ToBeModifiedItem_BearerModInd->transportLayerAddress.size = e_rab_modification_ind->e_rabs_tobemodified[i].eNB_addr.length/8; + E_RAB_ToBeModifiedItem_BearerModInd->transportLayerAddress.bits_unused = e_rab_modification_ind->e_rabs_tobemodified[i].eNB_addr.length%8; + E_RAB_ToBeModifiedItem_BearerModInd->transportLayerAddress.buf = calloc(1, E_RAB_ToBeModifiedItem_BearerModInd->transportLayerAddress.size); + memcpy (E_RAB_ToBeModifiedItem_BearerModInd->transportLayerAddress.buf, e_rab_modification_ind->e_rabs_tobemodified[i].eNB_addr.buffer, + E_RAB_ToBeModifiedItem_BearerModInd->transportLayerAddress.size); + + INT32_TO_OCTET_STRING(e_rab_modification_ind->e_rabs_tobemodified[i].gtp_teid, &E_RAB_ToBeModifiedItem_BearerModInd->dL_GTP_TEID); + + } + ASN_SEQUENCE_ADD(&ie->value.choice.E_RABToBeModifiedListBearerModInd.list, E_RAB_ToBeModifiedItem_BearerModInd_IEs); + } + + ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie); + + //E-RABs NOT to be modified list + /*ie = (S1AP_E_RABModificationIndicationIEs_t *)calloc(1, sizeof(S1AP_E_RABModificationIndicationIEs_t)); + ie->id = S1AP_ProtocolIE_ID_id_E_RABNotToBeModifiedListBearerModInd; + ie->criticality = S1AP_Criticality_reject; + //if(num_e_rabs_nottobemodified > 0) { + ie->value.present = S1AP_E_RABModificationIndicationIEs__value_PR_E_RABNotToBeModifiedListBearerModInd; + + for(int i=0; iid = S1AP_ProtocolIE_ID_id_E_RABNotToBeModifiedItemBearerModInd; + E_RAB_NotToBeModifiedItem_BearerModInd_IEs->criticality = S1AP_Criticality_reject; + E_RAB_NotToBeModifiedItem_BearerModInd_IEs->value.present = S1AP_E_RABNotToBeModifiedItemBearerModIndIEs__value_PR_E_RABNotToBeModifiedItemBearerModInd; + E_RAB_NotToBeModifiedItem_BearerModInd = &E_RAB_NotToBeModifiedItem_BearerModInd_IEs->value.choice.E_RABNotToBeModifiedItemBearerModInd; + + { + E_RAB_NotToBeModifiedItem_BearerModInd->e_RAB_ID = 10; //e_rab_modification_ind->e_rabs_tobemodified[i].e_rab_id; + + E_RAB_NotToBeModifiedItem_BearerModInd->transportLayerAddress.size = e_rab_modification_ind->e_rabs_tobemodified[i].eNB_addr.length/8; + E_RAB_NotToBeModifiedItem_BearerModInd->transportLayerAddress.bits_unused = e_rab_modification_ind->e_rabs_tobemodified[i].eNB_addr.length%8; + E_RAB_NotToBeModifiedItem_BearerModInd->transportLayerAddress.buf = + calloc(1, E_RAB_NotToBeModifiedItem_BearerModInd->transportLayerAddress.size); + memcpy (E_RAB_NotToBeModifiedItem_BearerModInd->transportLayerAddress.buf, e_rab_modification_ind->e_rabs_tobemodified[i].eNB_addr.buffer, + E_RAB_NotToBeModifiedItem_BearerModInd->transportLayerAddress.size); + + //INT32_TO_OCTET_STRING(e_rab_modification_ind->e_rabs_tobemodified[i].gtp_teid, &E_RAB_NotToBeModifiedItem_BearerModInd->dL_GTP_TEID); + INT32_TO_OCTET_STRING(pseudo_gtp_teid, &E_RAB_NotToBeModifiedItem_BearerModInd->dL_GTP_TEID); + + } + ASN_SEQUENCE_ADD(&ie->value.choice.E_RABNotToBeModifiedListBearerModInd.list, E_RAB_NotToBeModifiedItem_BearerModInd_IEs); + } + // } + //else{ +// ie->value.present = S1AP_E_RABModificationIndicationIEs__value_PR_E_RABNotToBeModifiedListBearerModInd; +// ie->value.choice.E_RABNotToBeModifiedListBearerModInd.list.size = 0; +// } / + + + + ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);*/ + + /*ie = (S1AP_E_RABModificationIndicationIEs_t *)calloc(1, sizeof(S1AP_E_RABModificationIndicationIEs_t)); + ie->id = S1AP_ProtocolIE_ID_id_CSGMembershipInfo; + ie->criticality = S1AP_Criticality_reject; + ie->value.present = S1AP_E_RABModificationIndicationIEs__value_PR_CSGMembershipInfo; + ie->value.choice.CSGMembershipInfo.cSGMembershipStatus = S1AP_CSGMembershipStatus_member; + INT32_TO_BIT_STRING(CSG_id, &ie->value.choice.CSGMembershipInfo.cSG_Id); + ie->value.choice.CSGMembershipInfo.cSG_Id.bits_unused=5; + ie->value.choice.CSGMembershipInfo.cellAccessMode = S1AP_CellAccessMode_hybrid; + ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);*/ + + if (s1ap_eNB_encode_pdu(&pdu, &buffer, &len) < 0) { + S1AP_ERROR("Failed to encode S1 E-RAB modification indication \n"); + return -1; + } + + // Non UE-Associated signalling -> stream = 0 + S1AP_INFO("Size of encoded message: %d \n", len); + s1ap_eNB_itti_send_sctp_data_req(s1ap_eNB_instance_p->instance, + ue_context_p->mme_ref->assoc_id, buffer, + len, ue_context_p->tx_stream); + +//s1ap_eNB_itti_send_sctp_data_req(s1ap_eNB_instance_p->instance, ue_context_p->mme_ref->assoc_id, buffer, len, 0); + return ret; +} + + diff --git a/openair3/S1AP/s1ap_eNB_nas_procedures.h b/openair3/S1AP/s1ap_eNB_nas_procedures.h index c425719872..47f71cc795 100644 --- a/openair3/S1AP/s1ap_eNB_nas_procedures.h +++ b/openair3/S1AP/s1ap_eNB_nas_procedures.h @@ -52,4 +52,8 @@ int s1ap_eNB_e_rab_release_resp(instance_t instance, int s1ap_eNB_path_switch_req(instance_t instance, s1ap_path_switch_req_t *path_switch_req_p); + +int s1ap_eNB_generate_E_RAB_Modification_Indication( + instance_t instance, s1ap_e_rab_modification_ind_t *e_rab_modification_ind); + #endif /* S1AP_ENB_NAS_PROCEDURES_H_ */ diff --git a/targets/ARCH/BLADERF/USERSPACE/LIB/bladerf_lib.c b/targets/ARCH/BLADERF/USERSPACE/LIB/bladerf_lib.c index c4e593ca92..af5ab5ad6d 100644 --- a/targets/ARCH/BLADERF/USERSPACE/LIB/bladerf_lib.c +++ b/targets/ARCH/BLADERF/USERSPACE/LIB/bladerf_lib.c @@ -330,7 +330,10 @@ int trx_brf_set_gains(openair0_device* device, { return(0); } - +int trx_brf_write_init(openair0_device *device) +{ + return 0; +} #define RXDCLENGTH 16384 int16_t cos_fsover8[8] = {2047, 1447, 0, -1448, -2047, -1448, 0, 1447}; @@ -1145,6 +1148,7 @@ int device_init(openair0_device *device, device->trx_stop_func = trx_brf_stop; device->trx_set_freq_func = trx_brf_set_freq; device->trx_set_gains_func = trx_brf_set_gains; + device->trx_write_init = trx_brf_write_init; device->openair0_cfg = openair0_cfg; device->priv = (void *)brf; diff --git a/targets/ARCH/COMMON/common_lib.h b/targets/ARCH/COMMON/common_lib.h index d086c0e13a..778c8165eb 100644 --- a/targets/ARCH/COMMON/common_lib.h +++ b/targets/ARCH/COMMON/common_lib.h @@ -90,6 +90,8 @@ typedef enum { USRP_B200_DEV, /*!\brief device is USRP X300/X310*/ USRP_X300_DEV, + /*!\brief device is USRP N300/N310*/ + USRP_N300_DEV, /*!\brief device is BLADE RF*/ BLADERF_DEV, /*!\brief device is LMSSDR (SoDeRa)*/ @@ -104,7 +106,7 @@ typedef enum { UEDv2_DEV, MAX_RF_DEV_TYPE } dev_type_t; -#define DEVTYPE_NAMES {"","EXMIMO","USRP B200","USRP X300","BLADERF","LMSSDR","IRIS","No HW","ADRV9371_ZC706","UEDv2"} +#define DEVTYPE_NAMES {"","EXMIMO","USRP B200","USRP X300","USRP N300","BLADERF","LMSSDR","IRIS","No HW","ADRV9371_ZC706","UEDv2"} /*!\brief transport protocol types */ typedef enum { @@ -434,6 +436,11 @@ struct openair0_device_t { * \param arg pointer to capabilities or configuration */ int (*trx_write_init)(openair0_device *device); + /* \brief Get internal parameter + * \param id parameter to get + * \return a pointer to the parameter + */ + void *(*get_internal_parameter)(char *id); }; /* type of device init function, implemented in shared lib */ diff --git a/targets/ARCH/ETHERNET/USERSPACE/LIB/ethernet_lib.c b/targets/ARCH/ETHERNET/USERSPACE/LIB/ethernet_lib.c index c5822a3650..1d3c280f0e 100644 --- a/targets/ARCH/ETHERNET/USERSPACE/LIB/ethernet_lib.c +++ b/targets/ARCH/ETHERNET/USERSPACE/LIB/ethernet_lib.c @@ -197,6 +197,10 @@ int trx_eth_reset_stats(openair0_device* device) return(0); } +int trx_eth_write_init(openair0_device *device) +{ + return 0; +} int ethernet_tune(openair0_device *device, unsigned int option, @@ -284,7 +288,7 @@ int ethernet_tune(openair0_device *device, /******************* interface level options *************************/ case MTU_SIZE: /* change MTU of the eth interface */ ifr.ifr_addr.sa_family = AF_INET; - strncpy(ifr.ifr_name,eth->if_name, sizeof(ifr.ifr_name)); + strncpy(ifr.ifr_name,eth->if_name, sizeof(ifr.ifr_name)-1); ifr.ifr_mtu =value; if (ioctl(eth->sockfdd,SIOCSIFMTU,(caddr_t)&ifr) < 0 ) perror ("[ETHERNET] Can't set the MTU"); @@ -294,7 +298,7 @@ int ethernet_tune(openair0_device *device, case TX_Q_LEN: /* change TX queue length of eth interface */ ifr.ifr_addr.sa_family = AF_INET; - strncpy(ifr.ifr_name,eth->if_name, sizeof(ifr.ifr_name)); + strncpy(ifr.ifr_name,eth->if_name, sizeof(ifr.ifr_name)-1); ifr.ifr_qlen =value; if (ioctl(eth->sockfdd,SIOCSIFTXQLEN,(caddr_t)&ifr) < 0 ) perror ("[ETHERNET] Can't set the txqueuelen"); @@ -415,8 +419,9 @@ int transport_init(openair0_device *device, device->trx_reset_stats_func = trx_eth_reset_stats; device->trx_end_func = trx_eth_end; device->trx_stop_func = trx_eth_stop; - device->trx_set_freq_func = trx_eth_set_freq; - device->trx_set_gains_func = trx_eth_set_gains; + device->trx_set_freq_func = trx_eth_set_freq; + device->trx_set_gains_func = trx_eth_set_gains; + device->trx_write_init = trx_eth_write_init; if (eth->flags == ETH_RAW_MODE) { device->trx_write_func = trx_eth_write_raw; diff --git a/targets/ARCH/ETHERNET/benetel/4g/benetel.c b/targets/ARCH/ETHERNET/benetel/4g/benetel.c new file mode 100644 index 0000000000..37f55c689f --- /dev/null +++ b/targets/ARCH/ETHERNET/benetel/4g/benetel.c @@ -0,0 +1,386 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +#include + +#include "common_lib.h" +#include "ethernet_lib.h" +#include "shared_buffers.h" +#include "low.h" +#include "common/utils/LOG/log.h" +#include "common/utils/LOG/vcd_signal_dumper.h" + +typedef struct { + eth_state_t e; + shared_buffers buffers; + rru_config_msg_type_t last_msg; + int capabilities_sent; + void *benetel_priv; + char *dpdk_main_command_line; +} benetel_eth_state_t; + +int trx_benetel_start(openair0_device *device) +{ + printf("BENETEL: %s\n", __FUNCTION__); + return 0; +} + + +void trx_benetel_end(openair0_device *device) +{ + printf("BENETEL: %s\n", __FUNCTION__); +} + + +int trx_benetel_stop(openair0_device *device) +{ + printf("BENETEL: %s\n", __FUNCTION__); + return(0); +} + + +int trx_benetel_set_freq(openair0_device* device, + openair0_config_t *openair0_cfg, + int exmimo_dump_config) +{ + printf("BENETEL: %s\n", __FUNCTION__); + return(0); +} + + +int trx_benetel_set_gains(openair0_device* device, + openair0_config_t *openair0_cfg) +{ + printf("BENETEL: %s\n", __FUNCTION__); + return(0); +} + + +int trx_benetel_get_stats(openair0_device* device) +{ + printf("BENETEL: %s\n", __FUNCTION__); + return(0); +} + + +int trx_benetel_reset_stats(openair0_device* device) +{ + printf("BENETEL: %s\n", __FUNCTION__); + return(0); +} + + +int ethernet_tune(openair0_device *device, + unsigned int option, + int value) +{ + printf("BENETEL: %s\n", __FUNCTION__); + return 0; +} + +int trx_benetel_write_raw(openair0_device *device, + openair0_timestamp timestamp, + void **buff, int nsamps, int cc, int flags) +{ + printf("BENETEL: %s\n", __FUNCTION__); + return nsamps*4; +} + +int trx_benetel_read_raw(openair0_device *device, + openair0_timestamp *timestamp, + void **buff, int nsamps, int cc) +{ + printf("BENETEL: %s\n", __FUNCTION__); + return nsamps*4; +} + +char *msg_type(int t) +{ + static char *s[12] = { + "RAU_tick", + "RRU_capabilities", + "RRU_config", + "RRU_config_ok", + "RRU_start", + "RRU_stop", + "RRU_sync_ok", + "RRU_frame_resynch", + "RRU_MSG_max_num", + "RRU_check_sync", + "RRU_config_update", + "RRU_config_update_ok", + }; + + if (t < 0 || t > 11) return "UNKNOWN"; + return s[t]; +} + +int trx_benetel_ctlsend(openair0_device *device, void *msg, ssize_t msg_len) +{ + RRU_CONFIG_msg_t *rru_config_msg = msg; + benetel_eth_state_t *s = device->priv; + + printf("BENETEL: %s\n", __FUNCTION__); + + printf(" rru_config_msg->type %d [%s]\n", rru_config_msg->type, + msg_type(rru_config_msg->type)); + + s->last_msg = rru_config_msg->type; + + return msg_len; +} + +int trx_benetel_ctlrecv(openair0_device *device, void *msg, ssize_t msg_len) +{ + RRU_CONFIG_msg_t *rru_config_msg = msg; + benetel_eth_state_t *s = device->priv; + + printf("BENETEL: %s\n", __FUNCTION__); + + if (s->last_msg == RAU_tick && s->capabilities_sent == 0) { + RRU_capabilities_t *cap; + rru_config_msg->type = RRU_capabilities; + rru_config_msg->len = sizeof(RRU_CONFIG_msg_t)-MAX_RRU_CONFIG_SIZE+sizeof(RRU_capabilities_t); + cap = (RRU_capabilities_t*)&rru_config_msg->msg[0]; + cap->FH_fmt = OAI_IF4p5_only; + cap->num_bands = 1; + cap->band_list[0] = 7; + cap->nb_rx[0] = 1; + cap->nb_tx[0] = 1; + cap->max_pdschReferenceSignalPower[0] = -27; + cap->max_rxgain[0] = 90; + + s->capabilities_sent = 1; + + return rru_config_msg->len; + } + if (s->last_msg == RRU_config) { + rru_config_msg->type = RRU_config_ok; + return 0; + } + if (s->last_msg == RRU_start) { + s->benetel_priv = benetel_start(s->e.if_name, &s->buffers, s->dpdk_main_command_line); + } + /* correct? */ + while (1) pause(); + + return 0; +} + +void benetel_fh_if4p5_south_in(RU_t *ru, + int *frame, + int *subframe) +{ + benetel_eth_state_t *s = ru->ifdevice.priv; + PHY_VARS_eNB **eNB_list = ru->eNB_list, *eNB; + LTE_DL_FRAME_PARMS *fp; + int symbol; + int32_t *rxdata; + int antenna = 0; + + lock_ul_buffer(&s->buffers, *subframe); +next: + while (!(s->buffers.ul_busy[*subframe] == 0x3fff || + s->buffers.prach_busy[*subframe] == 1)) + wait_ul_buffer(&s->buffers, *subframe); + if (s->buffers.prach_busy[*subframe] == 1) { + int i; + int antenna = 0; + uint16_t *in; + uint16_t *out; + in = (uint16_t *)s->buffers.prach[*subframe]; + out = (uint16_t *)ru->prach_rxsigF[antenna]; + for (i = 0; i < 840*2; i++) + out[i] = ntohs(in[i]); + s->buffers.prach_busy[*subframe] = 0; + ru->wakeup_prach_eNB(ru->eNB_list[0], ru, *frame, *subframe); + goto next; + } + + eNB = eNB_list[0]; + fp = &eNB->frame_parms; + for (symbol = 0; symbol < 14; symbol++) { + int i; + uint16_t *p = (uint16_t *)(&s->buffers.ul[*subframe][symbol*1200*4]); + for (i = 0; i < 1200*2; i++) { + p[i] = htons(p[i]); + } + rxdata = &ru->common.rxdataF[antenna][symbol * fp->ofdm_symbol_size]; +#if 1 + memcpy(rxdata + 2048 - 600, + &s->buffers.ul[*subframe][symbol*1200*4], + 600 * 4); + memcpy(rxdata, + &s->buffers.ul[*subframe][symbol*1200*4] + 600*4, + 600 * 4); +#endif + } + + s->buffers.ul_busy[*subframe] = 0; + signal_ul_buffer(&s->buffers, *subframe); + unlock_ul_buffer(&s->buffers, *subframe); + + //printf("BENETEL: %s (f.sf %d.%d)\n", __FUNCTION__, *frame, *subframe); + + RU_proc_t *proc = &ru->proc; + extern uint16_t sf_ahead; + int f = *frame; + int sf = *subframe; + + //calculate timestamp_rx, timestamp_tx based on frame and subframe + proc->tti_rx = sf; + proc->frame_rx = f; + proc->timestamp_rx = ((proc->frame_rx * 10) + proc->tti_rx ) * fp->samples_per_tti ; + + if (get_nprocs()<=4) { + proc->tti_tx = (sf+sf_ahead)%10; + proc->frame_tx = (sf>(9-sf_ahead)) ? (f+1)&1023 : f; + } + + VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_IF4P5_SOUTH_IN_RU+ru->idx,f); + VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_IF4P5_SOUTH_IN_RU+ru->idx,sf); + proc->symbol_mask[sf] = 0; + VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(VCD_SIGNAL_DUMPER_VARIABLES_TRX_TS, proc->timestamp_rx&0xffffffff); + +} + +void benetel_fh_if4p5_south_out(RU_t *ru, + int frame, + int subframe, + uint64_t timestamp) +{ + benetel_eth_state_t *s = ru->ifdevice.priv; + PHY_VARS_eNB **eNB_list = ru->eNB_list, *eNB; + LTE_DL_FRAME_PARMS *fp; + int symbol; + int32_t *txdata; + int aa = 0; + + //printf("BENETEL: %s (f.sf %d.%d ts %ld)\n", __FUNCTION__, frame, subframe, timestamp); + + VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_TRX_TST, ru->proc.timestamp_tx&0xffffffff ); + + lock_dl_buffer(&s->buffers, subframe); + if (s->buffers.dl_busy[subframe]) { + printf("%s: fatal: DL buffer busy for subframe %d\n", __FUNCTION__, subframe); + unlock_dl_buffer(&s->buffers, subframe); + return; + } + eNB = eNB_list[0]; + fp = &eNB->frame_parms; + if (ru->num_eNB != 1 || ru->nb_tx != 1 || fp->ofdm_symbol_size != 2048 || + fp->Ncp != NORMAL || fp->symbols_per_tti != 14) { + printf("%s:%d:%s: unsupported configuration\n", + __FILE__, __LINE__, __FUNCTION__); + exit(1); + } + + for (symbol = 0; symbol < 14; symbol++) { + txdata = &ru->common.txdataF_BF[aa][symbol * fp->ofdm_symbol_size]; +#if 1 + memcpy(&s->buffers.dl[subframe][symbol*1200*4], + txdata + 2048 - 600, + 600 * 4); + memcpy(&s->buffers.dl[subframe][symbol*1200*4] + 600*4, + txdata + 1, + 600 * 4); +#endif + int i; + uint16_t *p = (uint16_t *)(&s->buffers.dl[subframe][symbol*1200*4]); + for (i = 0; i < 1200*2; i++) { + p[i] = htons(p[i]); + } + } + + s->buffers.dl_busy[subframe] = 0x3fff; + unlock_dl_buffer(&s->buffers, subframe); + + VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_IF4P5_SOUTH_OUT_RU+ru->idx, ru->proc.frame_tx); + VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_IF4P5_SOUTH_OUT_RU+ru->idx, ru->proc.tti_tx); + +} + +void *get_internal_parameter(char *name) +{ + printf("BENETEL: %s\n", __FUNCTION__); + + if (!strcmp(name, "fh_if4p5_south_in")) + return benetel_fh_if4p5_south_in; + if (!strcmp(name, "fh_if4p5_south_out")) + return benetel_fh_if4p5_south_out; + + return NULL; +} + +__attribute__((__visibility__("default"))) +int transport_init(openair0_device *device, + openair0_config_t *openair0_cfg, + eth_params_t * eth_params ) +{ + benetel_eth_state_t *eth; + + printf("BENETEL: %s\n", __FUNCTION__); + + device->Mod_id = 0; + device->transp_type = ETHERNET_TP; + device->trx_start_func = trx_benetel_start; + device->trx_get_stats_func = trx_benetel_get_stats; + device->trx_reset_stats_func = trx_benetel_reset_stats; + device->trx_end_func = trx_benetel_end; + device->trx_stop_func = trx_benetel_stop; + device->trx_set_freq_func = trx_benetel_set_freq; + device->trx_set_gains_func = trx_benetel_set_gains; + + device->trx_write_func = trx_benetel_write_raw; + device->trx_read_func = trx_benetel_read_raw; + + device->trx_ctlsend_func = trx_benetel_ctlsend; + device->trx_ctlrecv_func = trx_benetel_ctlrecv; + + device->get_internal_parameter = get_internal_parameter; + + eth = calloc(1, sizeof(benetel_eth_state_t)); + if (eth == NULL) { + AssertFatal(0==1, "out of memory\n"); + } + + eth->e.flags = ETH_RAW_IF4p5_MODE; + eth->e.compression = NO_COMPRESS; + eth->e.if_name = eth_params->local_if_name; + device->priv = eth; + device->openair0_cfg=&openair0_cfg[0]; + + if (openair0_cfg->sdr_addrs == NULL) { + printf("benetel: fatal: sdr_addrs not set in configuration file\n"); + exit(1); + } + + eth->dpdk_main_command_line = strdup(openair0_cfg->sdr_addrs); + if (eth->dpdk_main_command_line == NULL) { + AssertFatal(0==1, "out of memory\n"); + } + + eth->last_msg = -1; + + init_buffers(ð->buffers); + + return 0; +} diff --git a/targets/ARCH/ETHERNET/benetel/4g/dpdk_driver.c b/targets/ARCH/ETHERNET/benetel/4g/dpdk_driver.c new file mode 100644 index 0000000000..9b64f01d44 --- /dev/null +++ b/targets/ARCH/ETHERNET/benetel/4g/dpdk_driver.c @@ -0,0 +1,787 @@ +/* license: to be defined */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "low.h" + +// HEADER DEFINITION +#define ANT_NUM buf[23] +#define PAYLOAD_1 buf[20] +#define PAYLOAD_2 buf[21] +#define ETH_TYPE buf[17] +#define SYMBOL buf[29] +#define SUBFRAME buf[28] +#define FRAME buf[27] + +static volatile bool force_quit; + +unsigned short iq[33600]; +unsigned char iq_swap[67200]; + +unsigned short *iq_ptr[14]; +unsigned int dl_start = 0; + +/* MAC updating enabled by default */ +static int mac_updating = 1; +#define RTE_LOGTYPE_L2FWD RTE_LOGTYPE_USER1 +#define MAX_PKT_BURST 32 +#define BURST_TX_DRAIN_US 5 /* TX drain every ~100us */ +#define MEMPOOL_CACHE_SIZE 256 +/* + * Configurable number of RX/TX ring descriptors + */ +#define RTE_TEST_RX_DESC_DEFAULT 1024 +#define RTE_TEST_TX_DESC_DEFAULT 1024 +static uint16_t nb_rxd = RTE_TEST_RX_DESC_DEFAULT; +static uint16_t nb_txd = RTE_TEST_TX_DESC_DEFAULT; +/* ethernet addresses of ports */ +static struct ether_addr l2fwd_ports_eth_addr[RTE_MAX_ETHPORTS]; +/* mask of enabled ports */ +static uint32_t l2fwd_enabled_port_mask = 0; +/* list of enabled ports */ +static uint32_t l2fwd_dst_ports[RTE_MAX_ETHPORTS]; +static unsigned int l2fwd_rx_queue_per_lcore = 1; +#define MAX_RX_QUEUE_PER_LCORE 16 +#define MAX_TX_QUEUE_PER_PORT 16 +struct lcore_queue_conf { + unsigned n_rx_port; + unsigned rx_port_list[MAX_RX_QUEUE_PER_LCORE]; +} __rte_cache_aligned; +struct lcore_queue_conf lcore_queue_conf[RTE_MAX_LCORE]; +static struct rte_eth_dev_tx_buffer *tx_buffer[RTE_MAX_ETHPORTS]; +static struct rte_eth_conf port_conf = { + .rxmode = { + .split_hdr_size = 0, + .offloads = DEV_RX_OFFLOAD_CRC_STRIP, + .offloads = DEV_RX_OFFLOAD_JUMBO_FRAME, + .split_hdr_size = 0, + .max_rx_pkt_len = 9500, + }, + .txmode = { + .mq_mode = ETH_MQ_TX_NONE, + }, +}; +struct rte_mempool * l2fwd_pktmbuf_pool = NULL; +/* Per-port statistics struct */ +struct l2fwd_port_statistics { + uint64_t tx; + uint64_t rx; + uint64_t dropped; +} __rte_cache_aligned; +struct l2fwd_port_statistics port_statistics[RTE_MAX_ETHPORTS]; +#define MAX_TIMER_PERIOD 86400 /* 1 day max */ +/* A tsc-based timer responsible for triggering statistics printout */ +static uint64_t timer_period = 10; /* default period is 10 seconds */ +/* Print out statistics on packets dropped */ +static void +print_stats(void) +{ + uint64_t total_packets_dropped, total_packets_tx, total_packets_rx; + unsigned portid; + total_packets_dropped = 0; + total_packets_tx = 0; + total_packets_rx = 0; + const char clr[] = { 27, '[', '2', 'J', '\0' }; + const char topLeft[] = { 27, '[', '1', ';', '1', 'H','\0' }; + /* Clear screen and move to top left */ + printf("%s%s", clr, topLeft); + printf("\nPort statistics ===================================="); + for (portid = 0; portid < RTE_MAX_ETHPORTS; portid++) { + /* skip disabled ports */ + if ((l2fwd_enabled_port_mask & (1 << portid)) == 0) + continue; + printf("\nStatistics for port %u ------------------------------" + "\nPackets sent: %24"PRIu64 + "\nPackets received: %20"PRIu64 + "\nPackets dropped: %21"PRIu64, + portid, + port_statistics[portid].tx, + port_statistics[portid].rx, + port_statistics[portid].dropped); + total_packets_dropped += port_statistics[portid].dropped; + total_packets_tx += port_statistics[portid].tx; + total_packets_rx += port_statistics[portid].rx; + } + printf("\nAggregate statistics ===============================" + "\nTotal packets sent: %18"PRIu64 + "\nTotal packets received: %14"PRIu64 + "\nTotal packets dropped: %15"PRIu64, + total_packets_tx, + total_packets_rx, + total_packets_dropped); + printf("\n====================================================\n"); +} +static void +l2fwd_simple_forward(struct rte_mbuf *m, unsigned portid, benetel_t *bs) +{ + unsigned char *buf, *buf_tx; + unsigned int len; + struct ether_hdr *eth; + + unsigned dst_port; + int sent, prach_ctrl = 0; + struct rte_eth_dev_tx_buffer *buffer; + + unsigned char * IQ_ptr; + + ul_packet_t p; + + buf = rte_pktmbuf_mtod(m, unsigned char *); + //rte_memdump(stdout, "Rx Packet",buf ,34); + eth = rte_pktmbuf_mtod(m, struct ether_hdr *); + len = rte_pktmbuf_data_len(m); + + IQ_ptr = &buf[34]; + + //destination mac address (RRU MAC) + eth->d_addr.addr_bytes[0] = 0x02; + eth->d_addr.addr_bytes[1] = 0x00; + eth->d_addr.addr_bytes[2] = 0x5e; + eth->d_addr.addr_bytes[3] = 0x01; + eth->d_addr.addr_bytes[4] = 0x01; + eth->d_addr.addr_bytes[5] = 0x01; + + //source mac address (DU MAC) + eth->s_addr.addr_bytes[0] = 0xdd; + eth->s_addr.addr_bytes[1] = 0xdd; + eth->s_addr.addr_bytes[2] = 0xdd; + eth->s_addr.addr_bytes[3] = 0xdd; + eth->s_addr.addr_bytes[4] = 0xdd; + eth->s_addr.addr_bytes[5] = 0xdd; + + dst_port = l2fwd_dst_ports[portid]; + #if 1 + + if (buf[18] == 0xAA) //msg1 check + { + printf("\nHandshake MSG 1 Received\n"); + printf("\n====================================================\n"); + + buf[18] = 0xBB;//change to msg2 after receive msg1 + + printf("Handshake MSG 2 Sent\n"); + printf("\n====================================================\n"); + } + + #else + // Handshake Condition + if (buf[18] == 0x01 || buf[18] == 0x03) // ORAN handshake msgs. + { + if (buf[18] == 0x01) //msg1 check + { + printf("\nHandshake MSG 1 Received\n"); + printf("\n====================================================\n"); + + buf[18] = 0x02;//change to msg2 after receive msg1 + + printf("Handshake MSG 2 Sent\n"); + printf("\n====================================================\n"); + } + + else if(buf[18] == 0x03) //msg3 check + { + printf("Handshake MSG 3 Sent\n"); + printf("\n====================================================\n"); + + buf[18] = 0x04; + + printf("Handshake MSG 4 Sent\n"); + printf("\n====================================================\n"); + } + } + #endif + // Trigger start send DL packets + if(PAYLOAD_1 == 0x12 && PAYLOAD_2 == 0xce && SYMBOL == 0x09 && ANT_NUM == 0x00 && dl_start == 0){ + + printf("\nU-Plane Started\n"); + printf("\n====================================================\n"); + + dl_start = 1; + } + + + if(PAYLOAD_1 == 0x12 && PAYLOAD_2 == 0xce && ANT_NUM == 0x00) { + p.frame = FRAME; + p.subframe = SUBFRAME >> 4; + p.slot = 0; /* unused */ + p.symbol = SYMBOL; + p.antenna = 0; + memcpy(p.iq, IQ_ptr, 4800); + store_ul(bs, &p); + } + + // U-PLANE UL ANT_0 PROCESSING + if(PAYLOAD_1 == 0x12 && PAYLOAD_2 == 0xce && ANT_NUM == 0x00 && dl_start == 1) + { + int tx_frame = FRAME; + int tx_subframe = SUBFRAME >> 4; + int tx_symbol = SYMBOL + 5; + if (tx_symbol > 13) { + tx_symbol -= 14; + tx_subframe++; + if (tx_subframe == 10) { + tx_subframe = 0; + tx_frame = (tx_frame + 1) & 255; + } + } + +// ANT_NUM = 0x00; +// SYMBOL = (SYMBOL + 5) % 14; + PAYLOAD_2 = 0xc8; + + FRAME = tx_frame; + SUBFRAME = tx_subframe << 4; + SYMBOL = tx_symbol; + + /* antenna 0 - send actual DL data (if available) */ + lock_dl_buffer(bs->buffers, tx_subframe); + if (!(bs->buffers->dl_busy[tx_subframe] & (1 << tx_symbol))) { + printf("%s: warning, DL underflow (sf.symbol %d.%d)\n", __FUNCTION__, + tx_subframe, tx_symbol); + memset(IQ_ptr, 0, 1200 * 4); + } else { + memcpy(IQ_ptr, bs->buffers->dl[tx_subframe] + tx_symbol * 1200*4, + 1200*4); + } + bs->buffers->dl_busy[tx_subframe] &= ~(1 << tx_symbol); + unlock_dl_buffer(bs->buffers, tx_subframe); + + // fill DL Data for ant 0 with 0 value +// memset(IQ_ptr, 0, 4800); + } + + // U-PLANE UL ANT_1 PROCESSING + else if(PAYLOAD_1 == 0x12 && PAYLOAD_2 == 0xce && ANT_NUM == 0x01 && dl_start == 1) + { + +// ANT_NUM = 0x01; + SYMBOL = (SYMBOL + 5) % 14; + PAYLOAD_2 = 0xc8; + + // fill DL Data for ant 1 with 0 value + memset(IQ_ptr, 0, 4800); + } + + // U-PLANE PRACH PROCESSING + else if(PAYLOAD_1 == 0x0d && PAYLOAD_2 == 0x28){ + if (ANT_NUM == 0) { + store_prach(bs, FRAME, SUBFRAME>>4, IQ_ptr); + } + + rte_pktmbuf_free(m); + return; + } + + // Send Packets + buffer = tx_buffer[dst_port]; + + sent = rte_eth_tx_buffer(dst_port, 0, buffer, m); + + if (sent) + port_statistics[dst_port].tx += sent; + +} +/* main processing loop */ +static void +l2fwd_main_loop(benetel_t *bs) +{ + struct rte_mbuf *pkts_burst[MAX_PKT_BURST]; + struct rte_mbuf *m; + int sent; + unsigned lcore_id; + uint64_t prev_tsc, diff_tsc, cur_tsc, timer_tsc; + unsigned i, j, portid, nb_rx; + struct lcore_queue_conf *qconf; + const uint64_t drain_tsc = (rte_get_tsc_hz() + US_PER_S - 1) / US_PER_S * + BURST_TX_DRAIN_US; + struct rte_eth_dev_tx_buffer *buffer; + prev_tsc = 0; + timer_tsc = 0; + lcore_id = rte_lcore_id(); + qconf = &lcore_queue_conf[lcore_id]; + if (qconf->n_rx_port == 0) { + RTE_LOG(INFO, L2FWD, "lcore %u has nothing to do\n", lcore_id); + return; + } + RTE_LOG(INFO, L2FWD, "entering main loop on lcore %u\n", lcore_id); + for (i = 0; i < qconf->n_rx_port; i++) { + portid = qconf->rx_port_list[i]; + RTE_LOG(INFO, L2FWD, " -- lcoreid=%u portid=%u\n", lcore_id, + portid); + } + while (!force_quit) { + cur_tsc = rte_rdtsc(); + /* + * TX burst queue drain + */ + diff_tsc = cur_tsc - prev_tsc; + if (unlikely(diff_tsc > drain_tsc)) { + for (i = 0; i < qconf->n_rx_port; i++) { + portid = l2fwd_dst_ports[qconf->rx_port_list[i]]; + buffer = tx_buffer[portid]; + sent = rte_eth_tx_buffer_flush(portid, 0, buffer); + if (sent) + port_statistics[portid].tx += sent; + } + /* if timer is enabled */ + if (timer_period > 0) { + /* advance the timer */ + timer_tsc += diff_tsc; + /* if timer has reached its timeout */ + if (unlikely(timer_tsc >= timer_period)) { + /* do this only on master core */ + if (lcore_id == rte_get_master_lcore()) { + //print_stats(); + /* reset the timer */ + timer_tsc = 0; + } + } + } + prev_tsc = cur_tsc; + } + /* + * Read packet from RX queues + */ + for (i = 0; i < qconf->n_rx_port; i++) { + portid = qconf->rx_port_list[i]; + nb_rx = rte_eth_rx_burst(portid, 0, + pkts_burst, MAX_PKT_BURST); + port_statistics[portid].rx += nb_rx; + for (j = 0; j < nb_rx; j++) { + m = pkts_burst[j]; + rte_prefetch0(rte_pktmbuf_mtod(m, void *)); + l2fwd_simple_forward(m, portid, bs); + } + } + } +} +static int +l2fwd_launch_one_lcore(void *bs) +{ + l2fwd_main_loop(bs); + return 0; +} +/* display usage */ +static void +l2fwd_usage(const char *prgname) +{ + printf("%s [EAL options] -- -p PORTMASK [-q NQ]\n" + " -p PORTMASK: hexadecimal bitmask of ports to configure\n" + " -q NQ: number of queue (=ports) per lcore (default is 1)\n" + " -T PERIOD: statistics will be refreshed each PERIOD seconds (0 to disable, 10 default, 86400 maximum)\n" + " --[no-]mac-updating: Enable or disable MAC addresses updating (enabled by default)\n" + " When enabled:\n" + " - The source MAC address is replaced by the TX port MAC address\n" + " - The destination MAC address is replaced by 02:00:00:00:00:TX_PORT_ID\n", + prgname); +} +static int +l2fwd_parse_portmask(const char *portmask) +{ + char *end = NULL; + unsigned long pm; + /* parse hexadecimal string */ + pm = strtoul(portmask, &end, 16); + if ((portmask[0] == '\0') || (end == NULL) || (*end != '\0')) + return -1; + if (pm == 0) + return -1; + return pm; +} +static unsigned int +l2fwd_parse_nqueue(const char *q_arg) +{ + char *end = NULL; + unsigned long n; + /* parse hexadecimal string */ + n = strtoul(q_arg, &end, 10); + if ((q_arg[0] == '\0') || (end == NULL) || (*end != '\0')) + return 0; + if (n == 0) + return 0; + if (n >= MAX_RX_QUEUE_PER_LCORE) + return 0; + return n; +} +static int +l2fwd_parse_timer_period(const char *q_arg) +{ + char *end = NULL; + int n; + /* parse number string */ + n = strtol(q_arg, &end, 10); + if ((q_arg[0] == '\0') || (end == NULL) || (*end != '\0')) + return -1; + if (n >= MAX_TIMER_PERIOD) + return -1; + return n; +} +static const char short_options[] = + "p:" /* portmask */ + "q:" /* number of queues */ + "T:" /* timer period */ + ; +#define CMD_LINE_OPT_MAC_UPDATING "mac-updating" +#define CMD_LINE_OPT_NO_MAC_UPDATING "no-mac-updating" +enum { + /* long options mapped to a short option */ + /* first long only option value must be >= 256, so that we won't + * conflict with short options */ + CMD_LINE_OPT_MIN_NUM = 256, +}; +static const struct option lgopts[] = { + { CMD_LINE_OPT_MAC_UPDATING, no_argument, &mac_updating, 1}, + { CMD_LINE_OPT_NO_MAC_UPDATING, no_argument, &mac_updating, 0}, + {NULL, 0, 0, 0} +}; +/* Parse the argument given in the command line of the application */ +static int +l2fwd_parse_args(int argc, char **argv) +{ + int opt, ret, timer_secs; + char **argvopt; + int option_index; + char *prgname = argv[0]; + argvopt = argv; + while ((opt = getopt_long(argc, argvopt, short_options, + lgopts, &option_index)) != EOF) { + switch (opt) { + /* portmask */ + case 'p': + l2fwd_enabled_port_mask = l2fwd_parse_portmask(optarg); + if (l2fwd_enabled_port_mask == 0) { + printf("invalid portmask\n"); + l2fwd_usage(prgname); + return -1; + } + break; + /* nqueue */ + case 'q': + l2fwd_rx_queue_per_lcore = l2fwd_parse_nqueue(optarg); + if (l2fwd_rx_queue_per_lcore == 0) { + printf("invalid queue number\n"); + l2fwd_usage(prgname); + return -1; + } + break; + /* timer period */ + case 'T': + timer_secs = l2fwd_parse_timer_period(optarg); + if (timer_secs < 0) { + printf("invalid timer period\n"); + l2fwd_usage(prgname); + return -1; + } + timer_period = timer_secs; + break; + /* long options */ + case 0: + break; + default: + l2fwd_usage(prgname); + return -1; + } + } + if (optind >= 0) + argv[optind-1] = prgname; + ret = optind-1; + optind = 1; /* reset getopt lib */ + return ret; +} +/* Check the link status of all ports in up to 9s, and print them finally */ +static void +check_all_ports_link_status(uint32_t port_mask) +{ +#define CHECK_INTERVAL 100 /* 100ms */ +#define MAX_CHECK_TIME 90 /* 9s (90 * 100ms) in total */ + uint16_t portid; + uint8_t count, all_ports_up, print_flag = 0; + struct rte_eth_link link; + printf("\nChecking link status"); + fflush(stdout); + for (count = 0; count <= MAX_CHECK_TIME; count++) { + if (force_quit) + return; + all_ports_up = 1; + RTE_ETH_FOREACH_DEV(portid) { + if (force_quit) + return; + if ((port_mask & (1 << portid)) == 0) + continue; + memset(&link, 0, sizeof(link)); + rte_eth_link_get_nowait(portid, &link); + /* print link status if flag set */ + if (print_flag == 1) { + if (link.link_status) + printf( + "Port%d Link Up. Speed %u Mbps - %s\n", + portid, link.link_speed, + (link.link_duplex == ETH_LINK_FULL_DUPLEX) ? + ("full-duplex") : ("half-duplex\n")); + else + printf("Port %d Link Down\n", portid); + continue; + } + /* clear all_ports_up flag if any link down */ + if (link.link_status == ETH_LINK_DOWN) { + all_ports_up = 0; + break; + } + } + /* after finally printing all link status, get out */ + if (print_flag == 1) + break; + if (all_ports_up == 0) { + printf("."); + fflush(stdout); + rte_delay_ms(CHECK_INTERVAL); + } + /* set the print_flag if all ports up or timeout */ + if (all_ports_up == 1 || count == (MAX_CHECK_TIME - 1)) { + print_flag = 1; + printf("done\n"); + } + } +} +static void +signal_handler(int signum) +{ + if (signum == SIGINT || signum == SIGTERM) { + printf("\n\nSignal %d received, preparing to exit...\n", + signum); + force_quit = true; + } +} +int +dpdk_main(int argc, char **argv, benetel_t *bs) +{ + struct lcore_queue_conf *qconf; + int ret; + uint16_t nb_ports; + uint16_t nb_ports_available = 0; + uint16_t portid, last_port; + unsigned lcore_id, rx_lcore_id; + unsigned nb_ports_in_mask = 0; + unsigned int nb_lcores = 0; + unsigned int nb_mbufs; + /* init EAL */ + ret = rte_eal_init(argc, argv); + if (ret < 0) + rte_exit(EXIT_FAILURE, "Invalid EAL arguments\n"); + argc -= ret; + argv += ret; + force_quit = false; + signal(SIGINT, signal_handler); + signal(SIGTERM, signal_handler); + /* parse application arguments (after the EAL ones) */ + ret = l2fwd_parse_args(argc, argv); + if (ret < 0) + rte_exit(EXIT_FAILURE, "Invalid L2FWD arguments\n"); + printf("MAC updating %s\n", mac_updating ? "enabled" : "disabled"); + /* convert to number of cycles */ + timer_period *= rte_get_timer_hz(); + nb_ports = rte_eth_dev_count_avail(); + if (nb_ports == 0) + rte_exit(EXIT_FAILURE, "No Ethernet ports - bye\n"); + /* check port mask to possible port mask */ + if (l2fwd_enabled_port_mask & ~((1 << nb_ports) - 1)) + rte_exit(EXIT_FAILURE, "Invalid portmask; possible (0x%x)\n", + (1 << nb_ports) - 1); + /* reset l2fwd_dst_ports */ + for (portid = 0; portid < RTE_MAX_ETHPORTS; portid++) + l2fwd_dst_ports[portid] = 0; + last_port = 0; + /* + * Each logical core is assigned a dedicated TX queue on each port. + */ + RTE_ETH_FOREACH_DEV(portid) { + /* skip ports that are not enabled */ + if ((l2fwd_enabled_port_mask & (1 << portid)) == 0) + continue; + if (nb_ports_in_mask % 2) { + l2fwd_dst_ports[portid] = last_port; + l2fwd_dst_ports[last_port] = portid; + } + else + last_port = portid; + nb_ports_in_mask++; + } + if (nb_ports_in_mask % 2) { + printf("Notice: odd number of ports in portmask.\n"); + l2fwd_dst_ports[last_port] = last_port; + } + rx_lcore_id = 0; + qconf = NULL; + /* Initialize the port/queue configuration of each logical core */ + RTE_ETH_FOREACH_DEV(portid) { + /* skip ports that are not enabled */ + if ((l2fwd_enabled_port_mask & (1 << portid)) == 0) + continue; + /* get the lcore_id for this port */ + while (rte_lcore_is_enabled(rx_lcore_id) == 0 || + lcore_queue_conf[rx_lcore_id].n_rx_port == + l2fwd_rx_queue_per_lcore) { + rx_lcore_id++; + if (rx_lcore_id >= RTE_MAX_LCORE) + rte_exit(EXIT_FAILURE, "Not enough cores\n"); + } + if (qconf != &lcore_queue_conf[rx_lcore_id]) { + /* Assigned a new logical core in the loop above. */ + qconf = &lcore_queue_conf[rx_lcore_id]; + nb_lcores++; + } + qconf->rx_port_list[qconf->n_rx_port] = portid; + qconf->n_rx_port++; + printf("Lcore %u: RX port %u\n", rx_lcore_id, portid); + } + nb_mbufs = RTE_MAX(nb_ports * (nb_rxd + nb_txd + MAX_PKT_BURST + + nb_lcores * MEMPOOL_CACHE_SIZE), 8192U); + /* create the mbuf pool */ + l2fwd_pktmbuf_pool = rte_pktmbuf_pool_create("mbuf_pool", nb_mbufs, + MEMPOOL_CACHE_SIZE, 0, 9680, + rte_socket_id()); + if (l2fwd_pktmbuf_pool == NULL) + rte_exit(EXIT_FAILURE, "Cannot init mbuf pool\n"); + /* Initialise each port */ + RTE_ETH_FOREACH_DEV(portid) { + struct rte_eth_rxconf rxq_conf; + struct rte_eth_txconf txq_conf; + struct rte_eth_conf local_port_conf = port_conf; + struct rte_eth_dev_info dev_info; + /* skip ports that are not enabled */ + if ((l2fwd_enabled_port_mask & (1 << portid)) == 0) { + printf("Skipping disabled port %u\n", portid); + continue; + } + nb_ports_available++; + /* init port */ + printf("Initializing port %u... ", portid); + fflush(stdout); + rte_eth_dev_info_get(portid, &dev_info); + if (dev_info.tx_offload_capa & DEV_TX_OFFLOAD_MBUF_FAST_FREE) + local_port_conf.txmode.offloads |= + DEV_TX_OFFLOAD_MBUF_FAST_FREE; + ret = rte_eth_dev_configure(portid, 1, 1, &local_port_conf); + if (ret < 0) + rte_exit(EXIT_FAILURE, "Cannot configure device: err=%d, port=%u\n", + ret, portid); + ret = rte_eth_dev_adjust_nb_rx_tx_desc(portid, &nb_rxd, + &nb_txd); + if (ret < 0) + rte_exit(EXIT_FAILURE, + "Cannot adjust number of descriptors: err=%d, port=%u\n", + ret, portid); + rte_eth_macaddr_get(portid,&l2fwd_ports_eth_addr[portid]); + /* init one RX queue */ + fflush(stdout); + rxq_conf = dev_info.default_rxconf; + rxq_conf.offloads = local_port_conf.rxmode.offloads; + ret = rte_eth_rx_queue_setup(portid, 0, nb_rxd, + rte_eth_dev_socket_id(portid), + &rxq_conf, + l2fwd_pktmbuf_pool); + if (ret < 0) + rte_exit(EXIT_FAILURE, "rte_eth_rx_queue_setup:err=%d, port=%u\n", + ret, portid); + /* init one TX queue on each port */ + fflush(stdout); + txq_conf = dev_info.default_txconf; + txq_conf.offloads = local_port_conf.txmode.offloads; + ret = rte_eth_tx_queue_setup(portid, 0, nb_txd, + rte_eth_dev_socket_id(portid), + &txq_conf); + if (ret < 0) + rte_exit(EXIT_FAILURE, "rte_eth_tx_queue_setup:err=%d, port=%u\n", + ret, portid); + /* Initialize TX buffers */ + tx_buffer[portid] = rte_zmalloc_socket("tx_buffer", + RTE_ETH_TX_BUFFER_SIZE(MAX_PKT_BURST), 0, + rte_eth_dev_socket_id(portid)); + if (tx_buffer[portid] == NULL) + rte_exit(EXIT_FAILURE, "Cannot allocate buffer for tx on port %u\n", + portid); + rte_eth_tx_buffer_init(tx_buffer[portid], MAX_PKT_BURST); + ret = rte_eth_tx_buffer_set_err_callback(tx_buffer[portid], + rte_eth_tx_buffer_count_callback, + &port_statistics[portid].dropped); + if (ret < 0) + rte_exit(EXIT_FAILURE, + "Cannot set error callback for tx buffer on port %u\n", + portid); + /* Start device */ + ret = rte_eth_dev_start(portid); + if (ret < 0) + rte_exit(EXIT_FAILURE, "rte_eth_dev_start:err=%d, port=%u\n", + ret, portid); + printf("done: \n"); + rte_eth_promiscuous_enable(portid); + printf("Port %u, MAC address: %02X:%02X:%02X:%02X:%02X:%02X\n\n", + portid, + l2fwd_ports_eth_addr[portid].addr_bytes[0], + l2fwd_ports_eth_addr[portid].addr_bytes[1], + l2fwd_ports_eth_addr[portid].addr_bytes[2], + l2fwd_ports_eth_addr[portid].addr_bytes[3], + l2fwd_ports_eth_addr[portid].addr_bytes[4], + l2fwd_ports_eth_addr[portid].addr_bytes[5]); + /* initialize port stats */ + memset(&port_statistics, 0, sizeof(port_statistics)); + } + if (!nb_ports_available) { + rte_exit(EXIT_FAILURE, + "All available ports are disabled. Please set portmask.\n"); + } + check_all_ports_link_status(l2fwd_enabled_port_mask); + ret = 0; + /* launch per-lcore init on every lcore */ + rte_eal_mp_remote_launch(l2fwd_launch_one_lcore, bs, CALL_MASTER); + RTE_LCORE_FOREACH_SLAVE(lcore_id) { + if (rte_eal_wait_lcore(lcore_id) < 0) { + ret = -1; + break; + } + } + RTE_ETH_FOREACH_DEV(portid) { + if ((l2fwd_enabled_port_mask & (1 << portid)) == 0) + continue; + printf("Closing port %d...", portid); + rte_eth_dev_stop(portid); + rte_eth_dev_close(portid); + printf(" Done\n"); + } + printf("Bye...\n"); + return ret; +} diff --git a/targets/ARCH/ETHERNET/benetel/4g/low.c b/targets/ARCH/ETHERNET/benetel/4g/low.c new file mode 100644 index 0000000000..038592d596 --- /dev/null +++ b/targets/ARCH/ETHERNET/benetel/4g/low.c @@ -0,0 +1,95 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +#include "low.h" + +#include +#include +#include + +void store_ul(benetel_t *bs, ul_packet_t *ul) +{ + /* only antenna 0 for the moment */ + if (ul->antenna != 0) + return; + + if (ul->subframe != bs->next_subframe || + ul->symbol != bs->next_symbol) { + printf("%s: fatal, expected frame.sf.symbol %d.%d.%d, got %d.%d.%d\n", + __FUNCTION__, + bs->expected_benetel_frame, bs->next_subframe, bs->next_symbol, + ul->frame, ul->subframe, ul->symbol); + exit(1); + } + + lock_ul_buffer(bs->buffers, bs->next_subframe); + if (bs->buffers->ul_busy[bs->next_subframe] & (1 << bs->next_symbol)) { + printf("%s: warning, UL overflow (sf.symbol %d.%d)\n", __FUNCTION__, + bs->next_subframe, bs->next_symbol); + } + memcpy(bs->buffers->ul[bs->next_subframe] + bs->next_symbol * 1200*4, + ul->iq, 1200*4); + bs->buffers->ul_busy[bs->next_subframe] |= (1 << bs->next_symbol); + signal_ul_buffer(bs->buffers, bs->next_subframe); + unlock_ul_buffer(bs->buffers, bs->next_subframe); + + bs->next_symbol++; + if (bs->next_symbol == 14) { + bs->next_symbol = 0; + bs->next_subframe = (bs->next_subframe + 1) % 10; + if (bs->next_subframe == 0) { + bs->expected_benetel_frame++; + bs->expected_benetel_frame &= 255; + } + } +} + +void store_prach(benetel_t *bs, int frame, int subframe, void *data) +{ + static int last_frame = -1; + static int last_subframe = -1; + /* hack: antenna number is always 0, discard second packet with same f/sf */ + if (frame == last_frame && subframe == last_subframe) return; + last_frame = frame; + last_subframe = subframe; + + lock_ul_buffer(bs->buffers, subframe); + if (bs->buffers->prach_busy[subframe]) { + printf("store_prach: fatal: previous prach buffer not processed\n"); + unlock_ul_buffer(bs->buffers, subframe); + return; + } + bs->buffers->prach_busy[subframe] = 1; + memcpy(bs->buffers->prach[subframe], data, 849*4); + signal_ul_buffer(bs->buffers, subframe); + unlock_ul_buffer(bs->buffers, subframe); + +} + +void *benetel_start_dpdk(char *ifname, shared_buffers *buffers, char *dpdk_main_command_line); + +void *benetel_start(char *ifname, shared_buffers *buffers, char *dpdk_main_command_line) +{ + if (!strcmp(ifname, "dpdk")) + return benetel_start_dpdk(ifname, buffers, dpdk_main_command_line); + printf("benetel: fatal: interface %s not supported, only dpdpk is supported\n", ifname); + exit(1); +} diff --git a/targets/ARCH/ETHERNET/benetel/4g/low.h b/targets/ARCH/ETHERNET/benetel/4g/low.h new file mode 100644 index 0000000000..5e75d9181e --- /dev/null +++ b/targets/ARCH/ETHERNET/benetel/4g/low.h @@ -0,0 +1,49 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +#ifndef _BENETEL_4G_LOW_H_ +#define _BENETEL_4G_LOW_H_ + +#include "shared_buffers.h" + +typedef struct { + shared_buffers *buffers; + int next_subframe; + int next_symbol; + int expected_benetel_frame; + char *dpdk_main_command_line; +} benetel_t; + +typedef struct { + int frame; + int subframe; + int slot; + int symbol; + int antenna; + unsigned char iq[4800]; +} ul_packet_t; + +void *benetel_start(char *ifname, shared_buffers *buffers, char *dpdk_main_command_line); + +void store_ul(benetel_t *bs, ul_packet_t *ul); +void store_prach(benetel_t *bs, int frame, int subframe, void *data); + +#endif /* _BENETEL_4G_LOW_H_ */ diff --git a/targets/ARCH/ETHERNET/benetel/4g/low_dpdk.c b/targets/ARCH/ETHERNET/benetel/4g/low_dpdk.c new file mode 100644 index 0000000000..ecff473010 --- /dev/null +++ b/targets/ARCH/ETHERNET/benetel/4g/low_dpdk.c @@ -0,0 +1,118 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/* those 2 lines for CPU_SET */ +#define _GNU_SOURCE +#include + +#include +#include +#include +#include + +#include "low.h" + +int dpdk_main(int argc, char **argv, benetel_t *); + +void *dpdk_thread(void *_bs) +{ + benetel_t *bs = _bs; + int n = 0; + char **v = NULL; // { "softmodem", "-n", "2", "-l", "8", "--", "-p", "0x2" }; + char *s = bs->dpdk_main_command_line; + char *tok; + + while ((tok = strtok(s, " ")) != NULL) { + n++; + v = realloc(v, n * sizeof(char *)); + if (v == NULL) { + printf("%s: out of memory\n", __FUNCTION__); + exit(1); + } + v[n-1] = tok; + s = NULL; + } + + dpdk_main(n, v, bs); + exit(1); + return 0; +} + +void *benetel_start_dpdk(char *ifname, shared_buffers *buffers, char *dpdk_main_command_line) +{ + benetel_t *bs; + + bs = calloc(1, sizeof(benetel_t)); + if (bs == NULL) { + printf("%s: out of memory\n", __FUNCTION__); + exit(1); + } + + bs->buffers = buffers; + + bs->expected_benetel_frame = 255; + + bs->dpdk_main_command_line = dpdk_main_command_line; + + pthread_attr_t attr; + + if (pthread_attr_init(&attr) != 0) { + printf("pthread_attr_init failed\n"); + exit(1); + } + + cpu_set_t cpuset; + CPU_ZERO(&cpuset); + CPU_SET(12,&cpuset); + if (pthread_attr_setaffinity_np(&attr, sizeof(cpu_set_t), &cpuset) != 0) { + printf("pthread_attr_setaffinity_np failed\n"); + exit(1); + } + + if (pthread_attr_setschedpolicy(&attr, SCHED_FIFO) != 0) { + printf("pthread_attr_setschedpolicy failed\n"); + exit(1); + } + + struct sched_param params; + params.sched_priority = sched_get_priority_max(SCHED_FIFO); + if (sched_get_priority_max(SCHED_FIFO) == -1) { + printf("sched_get_priority_max failed\n"); + exit(1); + } + if (pthread_attr_setschedparam(&attr, ¶ms) != 0) { + printf("pthread_setschedparam failed\n"); + exit(1); + } + + pthread_t t; + if (pthread_create(&t, &attr, dpdk_thread, bs) != 0) { + printf("%s: thread creation failed\n", __FUNCTION__); + exit(1); + } + + if (pthread_attr_destroy(&attr) != 0) { + printf("pthread_attr_init failed\n"); + exit(1); + } + + return bs; +} diff --git a/targets/ARCH/ETHERNET/benetel/4g/shared_buffers.c b/targets/ARCH/ETHERNET/benetel/4g/shared_buffers.c new file mode 100644 index 0000000000..492a15dfc3 --- /dev/null +++ b/targets/ARCH/ETHERNET/benetel/4g/shared_buffers.c @@ -0,0 +1,114 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +#include "shared_buffers.h" + +#include +#include +#include + +void init_buffers(shared_buffers *s) +{ + int subframe; + + memset(s, 0, sizeof(*s)); + + for (subframe = 0; subframe < 10; subframe++) { + if (pthread_mutex_init(&s->m_dl[subframe], NULL) != 0 || + pthread_cond_init(&s->c_dl[subframe], NULL) != 0 || + pthread_mutex_init(&s->m_ul[subframe], NULL) != 0 || + pthread_cond_init(&s->c_ul[subframe], NULL) != 0) { + printf("%s: error initializing mutex/cond\n", __FUNCTION__); + exit(1); + } + } + + /* in FDD the eNB's first transmitted DL subframe is 4 but the device + * needs to have subframes 1, 2 and 3 ready. Let's pretend there are ready. + */ + s->dl_busy[1] = 0x3fff; + s->dl_busy[2] = 0x3fff; + s->dl_busy[3] = 0x3fff; +} + +void lock_dl_buffer(shared_buffers *s, int subframe) +{ + if (pthread_mutex_lock(&s->m_dl[subframe]) != 0) { + printf("%s: fatal: lock fails\n", __FUNCTION__); + exit(1); + } +} + +void unlock_dl_buffer(shared_buffers *s, int subframe) +{ + if (pthread_mutex_unlock(&s->m_dl[subframe]) != 0) { + printf("%s: fatal: unlock fails\n", __FUNCTION__); + exit(1); + } +} + +void wait_dl_buffer(shared_buffers *s, int subframe) +{ + if (pthread_cond_wait(&s->c_dl[subframe], &s->m_dl[subframe]) != 0) { + printf("%s: fatal: cond_wait fails\n", __FUNCTION__); + exit(1); + } +} + +void signal_dl_buffer(shared_buffers *s, int subframe) +{ + if (pthread_cond_broadcast(&s->c_dl[subframe]) != 0) { + printf("%s: fatal: cond_broadcast fails\n", __FUNCTION__); + exit(1); + } +} + +void lock_ul_buffer(shared_buffers *s, int subframe) +{ + if (pthread_mutex_lock(&s->m_ul[subframe]) != 0) { + printf("%s: fatal: lock fails\n", __FUNCTION__); + exit(1); + } +} + +void unlock_ul_buffer(shared_buffers *s, int subframe) +{ + if (pthread_mutex_unlock(&s->m_ul[subframe]) != 0) { + printf("%s: fatal: unlock fails\n", __FUNCTION__); + exit(1); + } +} + +void wait_ul_buffer(shared_buffers *s, int subframe) +{ + if (pthread_cond_wait(&s->c_ul[subframe], &s->m_ul[subframe]) != 0) { + printf("%s: fatal: cond_wait fails\n", __FUNCTION__); + exit(1); + } +} + +void signal_ul_buffer(shared_buffers *s, int subframe) +{ + if (pthread_cond_broadcast(&s->c_ul[subframe]) != 0) { + printf("%s: fatal: cond_broadcast fails\n", __FUNCTION__); + exit(1); + } +} diff --git a/targets/ARCH/ETHERNET/benetel/4g/shared_buffers.h b/targets/ARCH/ETHERNET/benetel/4g/shared_buffers.h new file mode 100644 index 0000000000..1d5040b95b --- /dev/null +++ b/targets/ARCH/ETHERNET/benetel/4g/shared_buffers.h @@ -0,0 +1,60 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +#ifndef _BENETEL_4G_SHARED_BUFFERS_H_ +#define _BENETEL_4G_SHARED_BUFFERS_H_ + +#include +#include + +typedef struct { + unsigned char dl[10][14*1200*4]; + unsigned char ul[10][14*1200*4]; + uint16_t dl_busy[10]; + uint16_t ul_busy[10]; + + pthread_mutex_t m_ul[10]; + pthread_cond_t c_ul[10]; + + pthread_mutex_t m_dl[10]; + pthread_cond_t c_dl[10]; + + unsigned char prach[10][849*4]; + unsigned char prach_busy[10]; + + /* statistics/error counting */ + int ul_overflow; + int dl_underflow; +} shared_buffers; + +void init_buffers(shared_buffers *s); + +void lock_dl_buffer(shared_buffers *s, int subframe); +void unlock_dl_buffer(shared_buffers *s, int subframe); +void wait_dl_buffer(shared_buffers *s, int subframe); +void signal_dl_buffer(shared_buffers *s, int subframe); + +void lock_ul_buffer(shared_buffers *s, int subframe); +void unlock_ul_buffer(shared_buffers *s, int subframe); +void wait_ul_buffer(shared_buffers *s, int subframe); +void signal_ul_buffer(shared_buffers *s, int subframe); + +#endif /* _BENETEL_4G_SHARED_BUFFERS_H_ */ diff --git a/targets/ARCH/ETHERNET/benetel/5g/benetel.c b/targets/ARCH/ETHERNET/benetel/5g/benetel.c new file mode 100644 index 0000000000..c1ae1afcc7 --- /dev/null +++ b/targets/ARCH/ETHERNET/benetel/5g/benetel.c @@ -0,0 +1,388 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +#include + +#include "common_lib.h" +#include "ethernet_lib.h" +#include "shared_buffers.h" +#include "low.h" +#include "openair1/PHY/defs_gNB.h" + +typedef struct { + eth_state_t e; + shared_buffers buffers; + rru_config_msg_type_t last_msg; + int capabilities_sent; + void *benetel_priv; + char *dpdk_main_command_line; +} benetel_eth_state_t; + +int trx_benetel_start(openair0_device *device) +{ + printf("BENETEL: %s\n", __FUNCTION__); + return 0; +} + + +void trx_benetel_end(openair0_device *device) +{ + printf("BENETEL: %s\n", __FUNCTION__); +} + + +int trx_benetel_stop(openair0_device *device) +{ + printf("BENETEL: %s\n", __FUNCTION__); + return(0); +} + + +int trx_benetel_set_freq(openair0_device* device, + openair0_config_t *openair0_cfg, + int exmimo_dump_config) +{ + printf("BENETEL: %s\n", __FUNCTION__); + return(0); +} + + +int trx_benetel_set_gains(openair0_device* device, + openair0_config_t *openair0_cfg) +{ + printf("BENETEL: %s\n", __FUNCTION__); + return(0); +} + + +int trx_benetel_get_stats(openair0_device* device) +{ + printf("BENETEL: %s\n", __FUNCTION__); + return(0); +} + + +int trx_benetel_reset_stats(openair0_device* device) +{ + printf("BENETEL: %s\n", __FUNCTION__); + return(0); +} + + +int ethernet_tune(openair0_device *device, + unsigned int option, + int value) +{ + printf("BENETEL: %s\n", __FUNCTION__); + return 0; +} + +int trx_benetel_write_raw(openair0_device *device, + openair0_timestamp timestamp, + void **buff, int nsamps, int cc, int flags) +{ + printf("BENETEL: %s\n", __FUNCTION__); + return nsamps*4; +} + +int trx_benetel_read_raw(openair0_device *device, + openair0_timestamp *timestamp, + void **buff, int nsamps, int cc) +{ + printf("BENETEL: %s\n", __FUNCTION__); + return nsamps*4; +} + +char *msg_type(int t) +{ + static char *s[12] = { + "RAU_tick", + "RRU_capabilities", + "RRU_config", + "RRU_config_ok", + "RRU_start", + "RRU_stop", + "RRU_sync_ok", + "RRU_frame_resynch", + "RRU_MSG_max_num", + "RRU_check_sync", + "RRU_config_update", + "RRU_config_update_ok", + }; + + if (t < 0 || t > 11) return "UNKNOWN"; + return s[t]; +} + +int trx_benetel_ctlsend(openair0_device *device, void *msg, ssize_t msg_len) +{ + RRU_CONFIG_msg_t *rru_config_msg = msg; + benetel_eth_state_t *s = device->priv; + + printf("BENETEL: %s\n", __FUNCTION__); + + printf(" rru_config_msg->type %d [%s]\n", rru_config_msg->type, + msg_type(rru_config_msg->type)); + + s->last_msg = rru_config_msg->type; + + return msg_len; +} + +int trx_benetel_ctlrecv(openair0_device *device, void *msg, ssize_t msg_len) +{ + RRU_CONFIG_msg_t *rru_config_msg = msg; + benetel_eth_state_t *s = device->priv; + + printf("BENETEL: %s\n", __FUNCTION__); + + if (s->last_msg == RAU_tick && s->capabilities_sent == 0) { + RRU_capabilities_t *cap; + rru_config_msg->type = RRU_capabilities; + rru_config_msg->len = sizeof(RRU_CONFIG_msg_t)-MAX_RRU_CONFIG_SIZE+sizeof(RRU_capabilities_t); + cap = (RRU_capabilities_t*)&rru_config_msg->msg[0]; + cap->FH_fmt = OAI_IF4p5_only; + cap->num_bands = 1; + cap->band_list[0] = 78; + cap->nb_rx[0] = 1; + cap->nb_tx[0] = 1; + cap->max_pdschReferenceSignalPower[0] = -27; + cap->max_rxgain[0] = 90; + + s->capabilities_sent = 1; + + return rru_config_msg->len; + } +#if 0 + if (s->last_msg == RRU_config) { + rru_config_msg->type = RRU_config_ok; + return 0; + } + if (s->last_msg == RRU_start) { +printf("***************** benetel start\n"); + s->benetel_priv = benetel_start(s->e.if_name, &s->buffers, s->dpdk_main_command_line); + } +#endif + if (s->last_msg == RRU_config) { + rru_config_msg->type = RRU_config_ok; + s->benetel_priv = benetel_start(s->e.if_name, &s->buffers, s->dpdk_main_command_line); + } + /* correct? */ +//printf("***************** benetel pause\n"); +// while (1) pause(); + + return 0; +} + +void benetel_fh_if4p5_south_in(RU_t *ru, + int *frame, + int *slot) +{ +//printf("XXX benetel_fh_if4p5_south_in %d %d\n", *frame, *slot); + benetel_eth_state_t *s = ru->ifdevice.priv; + NR_DL_FRAME_PARMS *fp; + int symbol; + int32_t *rxdata; + int antenna = 0; + + lock_ul_buffer(&s->buffers, *slot); +#if 1 +next: + while (!(s->buffers.ul_busy[*slot] == 0x3fff || + s->buffers.prach_busy[*slot] == 1)) + wait_ul_buffer(&s->buffers, *slot); + if (s->buffers.prach_busy[*slot] == 1) { + int i; + int antenna = 0; + uint16_t *in; + uint16_t *out; + in = (uint16_t *)s->buffers.prach[*slot]; + out = (uint16_t *)ru->prach_rxsigF[antenna]; + for (i = 0; i < 839*2; i++) + out[i] = ntohs(in[i]); + s->buffers.prach_busy[*slot] = 0; + //printf("prach for f.sl %d.%d\n", *frame, *slot); + //ru->wakeup_prach_gNB(ru->gNB_list[0], ru, *frame, *slot); + goto next; + } +#endif + + fp = ru->nr_frame_parms; + for (symbol = 0; symbol < 14; symbol++) { + int i; + uint16_t *p = (uint16_t *)(&s->buffers.ul[*slot][symbol*1272*4]); + for (i = 0; i < 1272*2; i++) { + p[i] = htons(p[i]); + } + rxdata = &ru->common.rxdataF[antenna][symbol * fp->ofdm_symbol_size]; +#if 1 + memcpy(rxdata + 2048 - 1272/2, + &s->buffers.ul[*slot][symbol*1272*4], + (1272/2) * 4); + memcpy(rxdata, + &s->buffers.ul[*slot][symbol*1272*4] + (1272/2)*4, + (1272/2) * 4); +#endif + } + + s->buffers.ul_busy[*slot] = 0; + signal_ul_buffer(&s->buffers, *slot); + unlock_ul_buffer(&s->buffers, *slot); + + //printf("BENETEL: %s (f.sf %d.%d)\n", __FUNCTION__, *frame, *slot); + + RU_proc_t *proc = &ru->proc; + extern uint16_t sl_ahead; + int f = *frame; + int sl = *slot; + + //calculate timestamp_rx, timestamp_tx based on frame and slot + proc->tti_rx = sl; + proc->frame_rx = f; + /* TODO: be sure of samples_per_slot0 + FK: should use get_samples_per_slot(slot) + but for mu=1 its ok + */ + proc->timestamp_rx = ((proc->frame_rx * 20) + proc->tti_rx ) * fp->samples_per_slot0; + + if (get_nprocs()<=4) { + // why? what if there are more? + proc->tti_tx = (sl+sl_ahead)%20; + proc->frame_tx = (sl>(19-sl_ahead)) ? (f+1)&1023 : f; + } +} + +void benetel_fh_if4p5_south_out(RU_t *ru, + int frame, + int slot, + uint64_t timestamp) +{ +//printf("XXX benetel_fh_if4p5_south_out %d %d %ld\n", frame, slot, timestamp); + benetel_eth_state_t *s = ru->ifdevice.priv; + NR_DL_FRAME_PARMS *fp; + int symbol; + int32_t *txdata; + int aa = 0; + + //printf("BENETEL: %s (f.sf %d.%d ts %ld)\n", __FUNCTION__, frame, slot, timestamp); + + lock_dl_buffer(&s->buffers, slot); + if (s->buffers.dl_busy[slot]) { + printf("%s: fatal: DL buffer busy for subframe %d\n", __FUNCTION__, slot); + unlock_dl_buffer(&s->buffers, slot); + return; + } + + fp = ru->nr_frame_parms; + if (ru->num_gNB != 1 || ru->nb_tx != 1 || fp->ofdm_symbol_size != 2048 || + fp->Ncp != NORMAL || fp->symbols_per_slot != 14) { + printf("%s:%d:%s: unsupported configuration\n", + __FILE__, __LINE__, __FUNCTION__); + exit(1); + } + + for (symbol = 0; symbol < 14; symbol++) { + txdata = &ru->common.txdataF_BF[aa][symbol * fp->ofdm_symbol_size]; +#if 1 + memcpy(&s->buffers.dl[slot][symbol*1272*4], + txdata + 2048 - (1272/2), + (1272/2) * 4); + memcpy(&s->buffers.dl[slot][symbol*1272*4] + (1272/2)*4, + txdata, + (1272/2) * 4); +#endif + int i; + uint16_t *p = (uint16_t *)(&s->buffers.dl[slot][symbol*1272*4]); + for (i = 0; i < 1272*2; i++) { + p[i] = htons(p[i]); + } + } + + s->buffers.dl_busy[slot] = 0x3fff; + unlock_dl_buffer(&s->buffers, slot); +} + +void *get_internal_parameter(char *name) +{ + printf("BENETEL: %s\n", __FUNCTION__); + + if (!strcmp(name, "fh_if4p5_south_in")) + return benetel_fh_if4p5_south_in; + if (!strcmp(name, "fh_if4p5_south_out")) + return benetel_fh_if4p5_south_out; + + return NULL; +} + +__attribute__((__visibility__("default"))) +int transport_init(openair0_device *device, + openair0_config_t *openair0_cfg, + eth_params_t * eth_params ) +{ + benetel_eth_state_t *eth; + + printf("BENETEL: %s\n", __FUNCTION__); + + device->Mod_id = 0; + device->transp_type = ETHERNET_TP; + device->trx_start_func = trx_benetel_start; + device->trx_get_stats_func = trx_benetel_get_stats; + device->trx_reset_stats_func = trx_benetel_reset_stats; + device->trx_end_func = trx_benetel_end; + device->trx_stop_func = trx_benetel_stop; + device->trx_set_freq_func = trx_benetel_set_freq; + device->trx_set_gains_func = trx_benetel_set_gains; + + device->trx_write_func = trx_benetel_write_raw; + device->trx_read_func = trx_benetel_read_raw; + + device->trx_ctlsend_func = trx_benetel_ctlsend; + device->trx_ctlrecv_func = trx_benetel_ctlrecv; + + device->get_internal_parameter = get_internal_parameter; + + eth = calloc(1, sizeof(benetel_eth_state_t)); + if (eth == NULL) { + AssertFatal(0==1, "out of memory\n"); + } + + eth->e.flags = ETH_RAW_IF4p5_MODE; + eth->e.compression = NO_COMPRESS; + eth->e.if_name = eth_params->local_if_name; + device->priv = eth; + device->openair0_cfg=&openair0_cfg[0]; + + if (openair0_cfg->sdr_addrs == NULL) { + printf("benetel: fatal: sdr_addrs not set in configuration file\n"); + exit(1); + } + + eth->dpdk_main_command_line = strdup(openair0_cfg->sdr_addrs); + if (eth->dpdk_main_command_line == NULL) { + AssertFatal(0==1, "out of memory\n"); + } + + eth->last_msg = -1; + + init_buffers(ð->buffers); + + return 0; +} diff --git a/targets/ARCH/ETHERNET/benetel/5g/dpdk_driver.c b/targets/ARCH/ETHERNET/benetel/5g/dpdk_driver.c new file mode 100644 index 0000000000..b90702d331 --- /dev/null +++ b/targets/ARCH/ETHERNET/benetel/5g/dpdk_driver.c @@ -0,0 +1,856 @@ +/* license: to be defined */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "low.h" + +// HEADER DEFINITION +#define ANT_NUM buf[23] +#define PAYLOAD_1 buf[20] +#define PAYLOAD_2 buf[21] +#define ETH_TYPE buf[17] +#define SYMBOL buf[29] +#define SUBFRAME buf[28] +#define FRAME buf[27] + +static volatile bool force_quit; + +unsigned short iq[712320]; +unsigned char iq_swap[1424640]; + +unsigned short *iq_ptr[14]; +unsigned int dl_start = 0, slot_id_ctrl = 0, count_symbol = 0, sf = 0x10; + +/* MAC updating enabled by default */ +static int mac_updating = 1; +#define RTE_LOGTYPE_L2FWD RTE_LOGTYPE_USER1 +#define MAX_PKT_BURST 32 +#define BURST_TX_DRAIN_US 5 /* TX drain every ~100us */ +#define MEMPOOL_CACHE_SIZE 256 +/* + * Configurable number of RX/TX ring descriptors + */ +#define RTE_TEST_RX_DESC_DEFAULT 1024 +#define RTE_TEST_TX_DESC_DEFAULT 1024 +static uint16_t nb_rxd = RTE_TEST_RX_DESC_DEFAULT; +static uint16_t nb_txd = RTE_TEST_TX_DESC_DEFAULT; +/* ethernet addresses of ports */ +static struct ether_addr l2fwd_ports_eth_addr[RTE_MAX_ETHPORTS]; +/* mask of enabled ports */ +static uint32_t l2fwd_enabled_port_mask = 0; +/* list of enabled ports */ +static uint32_t l2fwd_dst_ports[RTE_MAX_ETHPORTS]; +static unsigned int l2fwd_rx_queue_per_lcore = 1; +#define MAX_RX_QUEUE_PER_LCORE 16 +#define MAX_TX_QUEUE_PER_PORT 16 +struct lcore_queue_conf { + unsigned n_rx_port; + unsigned rx_port_list[MAX_RX_QUEUE_PER_LCORE]; +} __rte_cache_aligned; +struct lcore_queue_conf lcore_queue_conf[RTE_MAX_LCORE]; +static struct rte_eth_dev_tx_buffer *tx_buffer[RTE_MAX_ETHPORTS]; +static struct rte_eth_conf port_conf = { + .rxmode = { + .split_hdr_size = 0, + .offloads = DEV_RX_OFFLOAD_CRC_STRIP, + .offloads = DEV_RX_OFFLOAD_JUMBO_FRAME, + .split_hdr_size = 0, + .max_rx_pkt_len = 9500, + }, + .txmode = { + .mq_mode = ETH_MQ_TX_NONE, + }, +}; +struct rte_mempool * l2fwd_pktmbuf_pool = NULL; +/* Per-port statistics struct */ +struct l2fwd_port_statistics { + uint64_t tx; + uint64_t rx; + uint64_t dropped; +} __rte_cache_aligned; +struct l2fwd_port_statistics port_statistics[RTE_MAX_ETHPORTS]; +#define MAX_TIMER_PERIOD 86400 /* 1 day max */ +/* A tsc-based timer responsible for triggering statistics printout */ +static uint64_t timer_period = 10; /* default period is 10 seconds */ +/* Print out statistics on packets dropped */ +static void +print_stats(void) +{ + uint64_t total_packets_dropped, total_packets_tx, total_packets_rx; + unsigned portid; + total_packets_dropped = 0; + total_packets_tx = 0; + total_packets_rx = 0; + const char clr[] = { 27, '[', '2', 'J', '\0' }; + const char topLeft[] = { 27, '[', '1', ';', '1', 'H','\0' }; + /* Clear screen and move to top left */ + printf("%s%s", clr, topLeft); + printf("\nPort statistics ===================================="); + for (portid = 0; portid < RTE_MAX_ETHPORTS; portid++) { + /* skip disabled ports */ + if ((l2fwd_enabled_port_mask & (1 << portid)) == 0) + continue; + printf("\nStatistics for port %u ------------------------------" + "\nPackets sent: %24"PRIu64 + "\nPackets received: %20"PRIu64 + "\nPackets dropped: %21"PRIu64, + portid, + port_statistics[portid].tx, + port_statistics[portid].rx, + port_statistics[portid].dropped); + total_packets_dropped += port_statistics[portid].dropped; + total_packets_tx += port_statistics[portid].tx; + total_packets_rx += port_statistics[portid].rx; + } + printf("\nAggregate statistics ===============================" + "\nTotal packets sent: %18"PRIu64 + "\nTotal packets received: %14"PRIu64 + "\nTotal packets dropped: %15"PRIu64, + total_packets_tx, + total_packets_rx, + total_packets_dropped); + printf("\n====================================================\n"); +} +static void +l2fwd_simple_forward(struct rte_mbuf *m, unsigned portid, benetel_t *bs) +{ + unsigned char *buf, *buf_tx; + unsigned int len; + struct ether_hdr *eth; + + unsigned dst_port; + int sent, prach_ctrl = 0; + struct rte_eth_dev_tx_buffer *buffer; + + unsigned char * IQ_ptr; + + ul_packet_t p; + + buf = rte_pktmbuf_mtod(m, unsigned char *); + //DD Debug + //rte_memdump(stdout, "Rx Packet",buf ,34); + eth = rte_pktmbuf_mtod(m, struct ether_hdr *); + len = rte_pktmbuf_data_len(m); + + IQ_ptr = &buf[34]; + if (portid == 0) + { + //destination mac address (RRU MAC) + /*eth->d_addr.addr_bytes[0] = 0x02; + eth->d_addr.addr_bytes[1] = 0x00; + eth->d_addr.addr_bytes[2] = 0x5e; + eth->d_addr.addr_bytes[3] = 0x01; + eth->d_addr.addr_bytes[4] = 0x01; + eth->d_addr.addr_bytes[5] = 0x01;*/ + + eth->d_addr.addr_bytes[0] = buf[6]; + eth->d_addr.addr_bytes[1] = buf[7]; + eth->d_addr.addr_bytes[2] = buf[8]; + eth->d_addr.addr_bytes[3] = buf[9]; + eth->d_addr.addr_bytes[4] = buf[10]; + eth->d_addr.addr_bytes[5] = buf[11]; + + //source mac address (DU MAC) + eth->s_addr.addr_bytes[0] = 0xdd; + eth->s_addr.addr_bytes[1] = 0xdd; + eth->s_addr.addr_bytes[2] = 0xdd; + eth->s_addr.addr_bytes[3] = 0xdd; + eth->s_addr.addr_bytes[4] = 0xdd; + eth->s_addr.addr_bytes[5] = 0xdd; + } + else + { + //destination mac address (RRU MAC) + /*eth->d_addr.addr_bytes[0] = 0x02; + eth->d_addr.addr_bytes[1] = 0x00; + eth->d_addr.addr_bytes[2] = 0x5e; + eth->d_addr.addr_bytes[3] = 0x01; + eth->d_addr.addr_bytes[4] = 0x01; + eth->d_addr.addr_bytes[5] = 0x01;*/ + + eth->d_addr.addr_bytes[0] = buf[6]; + eth->d_addr.addr_bytes[1] = buf[7]; + eth->d_addr.addr_bytes[2] = buf[8]; + eth->d_addr.addr_bytes[3] = buf[9]; + eth->d_addr.addr_bytes[4] = buf[10]; + eth->d_addr.addr_bytes[5] = buf[11]; + //source mac address (DU MAC) + eth->s_addr.addr_bytes[0] = 0xdd; + eth->s_addr.addr_bytes[1] = 0xdd; + eth->s_addr.addr_bytes[2] = 0xdd; + eth->s_addr.addr_bytes[3] = 0xdd; + eth->s_addr.addr_bytes[4] = 0xdd; + eth->s_addr.addr_bytes[5] = 0xde; + + } + dst_port = l2fwd_dst_ports[portid]; + //DD Debug + //printf("dstPort =%d\n", dst_port); + // Handshake Condition + if (buf[18] == 0xAA ) // ORAN handshake msgs. + { + printf("\n Start UP Request Received\n"); + printf("\n====================================================\n"); + + buf[18] = 0xBB;//change to msg2 after receive msg1 + + printf(" Start Up Response Sent\n"); + printf("\n====================================================\n"); + + } + + // Trigger start send DL packets + if(PAYLOAD_1 == 0x13 && PAYLOAD_2 == 0xe4 && SYMBOL == 0x46 && ANT_NUM == 0x00 && SUBFRAME == 0x00 && dl_start == 0){ + + printf("\nU-Plane Started\n"); + printf("\n====================================================\n"); + + dl_start = 1; + count_symbol = 28; + } + + + if(PAYLOAD_1 == 0x13 && PAYLOAD_2 == 0xe4 && ANT_NUM == 0x00) { + int subframe = SUBFRAME >> 4; + int slot = ((SUBFRAME & 0x0f) << 2) | ((SYMBOL >> 6) & 0x03); + p.frame = FRAME; + p.slot = subframe * 2 + slot; + p.symbol = SYMBOL & 0x3f; + p.antenna = 0; + memcpy(p.iq, IQ_ptr, 5088); + store_ul(bs, &p); + //if (p.symbol==0) printf("store ul f.sl.sy %d.%d.%d\n", p.frame, p.slot, p.symbol); + } + + // U-PLANE UL ANT_0 PROCESSING + if(PAYLOAD_1 == 0x13 && PAYLOAD_2 == 0xe4 && ANT_NUM == 0x00 && dl_start == 1) + { + int frame = FRAME; + int subframe = SUBFRAME >> 4; + int slot = ((SUBFRAME & 0x0f) << 2) | ((SYMBOL >> 6) & 0x03); + int symbol = SYMBOL & 0x3f; + int oai_slot; + + int tx_frame = frame; + int tx_subframe = subframe; + int tx_slot = slot; + int tx_symbol = symbol + 8; + + if (tx_symbol > 13) { + tx_symbol -= 14; + tx_slot++; + if (tx_slot == 2) { + tx_slot = 0; + tx_subframe++; + if (tx_subframe == 10) { + tx_subframe = 0; + tx_frame = (tx_frame + 1) & 255; + } + } + } + + ANT_NUM = 0x00; + + // Mask the symbol bits from UL packet received and apply the shift. + SYMBOL = ((SYMBOL & 0b00111111) + 8) % 14; + + ANT_NUM = 0x00; + SUBFRAME = sf; + + // Slot id control for DL + if(slot_id_ctrl > 13){ + SYMBOL = SYMBOL | 0b01000000; + } + + /* antenna 0 - send actual DL data (if available) */ + oai_slot = tx_subframe * 2 + tx_slot; + lock_dl_buffer(bs->buffers, oai_slot); + if (!(bs->buffers->dl_busy[oai_slot] & (1 << tx_symbol))) { + printf("%s: warning, DL underflow (sl.symbol %d.%d)\n", __FUNCTION__, + oai_slot, tx_symbol); + memset(IQ_ptr, 0, 1272 * 4); + } else { + memcpy(IQ_ptr, bs->buffers->dl[oai_slot] + tx_symbol * 1272*4, + 1272*4); + } + bs->buffers->dl_busy[oai_slot] &= ~(1 << tx_symbol); + unlock_dl_buffer(bs->buffers, oai_slot); + + // fill DL Data for ant 0 with 0 value +// memset(IQ_ptr, 0, 5088); + } + + // U-PLANE UL ANT_1 PROCESSING + if(PAYLOAD_1 == 0x13 && PAYLOAD_2 == 0xe4 && ANT_NUM == 0x01 && dl_start == 1) + { + + // Mask the symbol bits from UL packet received and apply the shift. + SYMBOL = ((SYMBOL & 0b00111111) + 8) % 14; + + ANT_NUM = 0x01; + SUBFRAME = sf; + + slot_id_ctrl++; + + // Slot id control for DL + if(slot_id_ctrl > 13){ + SYMBOL = SYMBOL | 0b01000000; + + if(slot_id_ctrl > 27){ + slot_id_ctrl = 0; + sf = sf + 0x10; + + if (sf >0x90){ + sf = 0; + } + } + } + + // fill DL Data for ant 1 with 0 value + memset(IQ_ptr, 0, 5088); + } + + // U-PLANE PRACH PROCESSING + else if(PAYLOAD_1 == 0x0d && PAYLOAD_2 == 0x28){ + if (ANT_NUM == 0) { + int subframe = SUBFRAME >> 4; + int slot = ((SUBFRAME & 0x0f) << 2) | ((SYMBOL >> 6) & 0x03); + if (subframe==9) { + //printf("store prach f.sf.sl %d.%d.%d %d\n", FRAME, subframe, slot, subframe * 2 + slot); + store_prach(bs, FRAME, slot /*subframe * 2 + slot*/, IQ_ptr); + } + } + rte_pktmbuf_free(m); + return; + } + + // Send Packets + buffer = tx_buffer[dst_port]; + + sent = rte_eth_tx_buffer(dst_port, 0, buffer, m); + + if (sent) + port_statistics[dst_port].tx += sent; + +} +/* main processing loop */ +static void +l2fwd_main_loop(benetel_t *bs) +{ + struct rte_mbuf *pkts_burst[MAX_PKT_BURST]; + struct rte_mbuf *m; + int sent; + unsigned lcore_id; + uint64_t prev_tsc, diff_tsc, cur_tsc, timer_tsc; + unsigned i, j, portid, nb_rx; + struct lcore_queue_conf *qconf; + const uint64_t drain_tsc = (rte_get_tsc_hz() + US_PER_S - 1) / US_PER_S * + BURST_TX_DRAIN_US; + struct rte_eth_dev_tx_buffer *buffer; + prev_tsc = 0; + timer_tsc = 0; + lcore_id = rte_lcore_id(); + qconf = &lcore_queue_conf[lcore_id]; + if (qconf->n_rx_port == 0) { + RTE_LOG(INFO, L2FWD, "lcore %u has nothing to do\n", lcore_id); + return; + } + RTE_LOG(INFO, L2FWD, "entering main loop on lcore %u\n", lcore_id); + for (i = 0; i < qconf->n_rx_port; i++) { + portid = qconf->rx_port_list[i]; + RTE_LOG(INFO, L2FWD, " -- lcoreid=%u portid=%u\n", lcore_id, + portid); + } + while (!force_quit) { + cur_tsc = rte_rdtsc(); + /* + * TX burst queue drain + */ + diff_tsc = cur_tsc - prev_tsc; + if (unlikely(diff_tsc > drain_tsc)) { + for (i = 0; i < qconf->n_rx_port; i++) { + portid = l2fwd_dst_ports[qconf->rx_port_list[i]]; + buffer = tx_buffer[portid]; + sent = rte_eth_tx_buffer_flush(portid, 0, buffer); + if (sent) + port_statistics[portid].tx += sent; + } + /* if timer is enabled */ + if (timer_period > 0) { + /* advance the timer */ + timer_tsc += diff_tsc; + /* if timer has reached its timeout */ + if (unlikely(timer_tsc >= timer_period)) { + /* do this only on master core */ + if (lcore_id == rte_get_master_lcore()) { + print_stats(); + /* reset the timer */ + timer_tsc = 0; + } + } + } + prev_tsc = cur_tsc; + } + /* + * Read packet from RX queues + */ + for (i = 0; i < qconf->n_rx_port; i++) { + portid = qconf->rx_port_list[i]; + nb_rx = rte_eth_rx_burst(portid, 0, + pkts_burst, MAX_PKT_BURST); + port_statistics[portid].rx += nb_rx; + for (j = 0; j < nb_rx; j++) { + m = pkts_burst[j]; + rte_prefetch0(rte_pktmbuf_mtod(m, void *)); + l2fwd_simple_forward(m, portid, bs); + } + } + } +} +static int +l2fwd_launch_one_lcore(void *bs) +{ + l2fwd_main_loop(bs); + return 0; +} +/* display usage */ +static void +l2fwd_usage(const char *prgname) +{ + printf("%s [EAL options] -- -p PORTMASK [-q NQ]\n" + " -p PORTMASK: hexadecimal bitmask of ports to configure\n" + " -q NQ: number of queue (=ports) per lcore (default is 1)\n" + " -T PERIOD: statistics will be refreshed each PERIOD seconds (0 to disable, 10 default, 86400 maximum)\n" + " --[no-]mac-updating: Enable or disable MAC addresses updating (enabled by default)\n" + " When enabled:\n" + " - The source MAC address is replaced by the TX port MAC address\n" + " - The destination MAC address is replaced by 02:00:00:00:00:TX_PORT_ID\n", + prgname); +} +static int +l2fwd_parse_portmask(const char *portmask) +{ + char *end = NULL; + unsigned long pm; + /* parse hexadecimal string */ + pm = strtoul(portmask, &end, 16); + if ((portmask[0] == '\0') || (end == NULL) || (*end != '\0')) + return -1; + if (pm == 0) + return -1; + return pm; +} +static unsigned int +l2fwd_parse_nqueue(const char *q_arg) +{ + char *end = NULL; + unsigned long n; + /* parse hexadecimal string */ + n = strtoul(q_arg, &end, 10); + if ((q_arg[0] == '\0') || (end == NULL) || (*end != '\0')) + return 0; + if (n == 0) + return 0; + if (n >= MAX_RX_QUEUE_PER_LCORE) + return 0; + return n; +} +static int +l2fwd_parse_timer_period(const char *q_arg) +{ + char *end = NULL; + int n; + /* parse number string */ + n = strtol(q_arg, &end, 10); + if ((q_arg[0] == '\0') || (end == NULL) || (*end != '\0')) + return -1; + if (n >= MAX_TIMER_PERIOD) + return -1; + return n; +} +static const char short_options[] = + "p:" /* portmask */ + "q:" /* number of queues */ + "T:" /* timer period */ + ; +#define CMD_LINE_OPT_MAC_UPDATING "mac-updating" +#define CMD_LINE_OPT_NO_MAC_UPDATING "no-mac-updating" +enum { + /* long options mapped to a short option */ + /* first long only option value must be >= 256, so that we won't + * conflict with short options */ + CMD_LINE_OPT_MIN_NUM = 256, +}; +static const struct option lgopts[] = { + { CMD_LINE_OPT_MAC_UPDATING, no_argument, &mac_updating, 1}, + { CMD_LINE_OPT_NO_MAC_UPDATING, no_argument, &mac_updating, 0}, + {NULL, 0, 0, 0} +}; +/* Parse the argument given in the command line of the application */ +static int +l2fwd_parse_args(int argc, char **argv) +{ + int opt, ret, timer_secs; + char **argvopt; + int option_index; + char *prgname = argv[0]; + argvopt = argv; + while ((opt = getopt_long(argc, argvopt, short_options, + lgopts, &option_index)) != EOF) { + switch (opt) { + /* portmask */ + case 'p': + l2fwd_enabled_port_mask = l2fwd_parse_portmask(optarg); + if (l2fwd_enabled_port_mask == 0) { + printf("invalid portmask\n"); + l2fwd_usage(prgname); + return -1; + } + break; + /* nqueue */ + case 'q': + l2fwd_rx_queue_per_lcore = l2fwd_parse_nqueue(optarg); + if (l2fwd_rx_queue_per_lcore == 0) { + printf("invalid queue number\n"); + l2fwd_usage(prgname); + return -1; + } + break; + /* timer period */ + case 'T': + timer_secs = l2fwd_parse_timer_period(optarg); + if (timer_secs < 0) { + printf("invalid timer period\n"); + l2fwd_usage(prgname); + return -1; + } + timer_period = timer_secs; + break; + /* long options */ + case 0: + break; + case 'proc-type': + break; + case 'socket-mem': + break; + case 'file-prefix': + l2fwd_rx_queue_per_lcore = l2fwd_parse_nqueue(optarg); + if (l2fwd_rx_queue_per_lcore == 0) { + printf("invalid queue number\n"); + l2fwd_usage(prgname); + return -1; + } + break; + /* timer period */ + /* timer period */ + /* timer period */ + default: + l2fwd_usage(prgname); + return -1; + } + } + if (optind >= 0) + argv[optind-1] = prgname; + ret = optind-1; + optind = 1; /* reset getopt lib */ + return ret; +} +/* Check the link status of all ports in up to 9s, and print them finally */ +static void +check_all_ports_link_status(uint32_t port_mask) +{ +#define CHECK_INTERVAL 100 /* 100ms */ +#define MAX_CHECK_TIME 90 /* 9s (90 * 100ms) in total */ + uint16_t portid; + uint8_t count, all_ports_up, print_flag = 0; + struct rte_eth_link link; + printf("\nChecking link status"); + fflush(stdout); + for (count = 0; count <= MAX_CHECK_TIME; count++) { + if (force_quit) + return; + all_ports_up = 1; + RTE_ETH_FOREACH_DEV(portid) { + if (force_quit) + return; + if ((port_mask & (1 << portid)) == 0) + continue; + memset(&link, 0, sizeof(link)); + rte_eth_link_get_nowait(portid, &link); + /* print link status if flag set */ + if (print_flag == 1) { + if (link.link_status) + printf( + "Port%d Link Up. Speed %u Mbps - %s\n", + portid, link.link_speed, + (link.link_duplex == ETH_LINK_FULL_DUPLEX) ? + ("full-duplex") : ("half-duplex\n")); + else + printf("Port %d Link Down\n", portid); + continue; + } + /* clear all_ports_up flag if any link down */ + if (link.link_status == ETH_LINK_DOWN) { + all_ports_up = 0; + break; + } + } + /* after finally printing all link status, get out */ + if (print_flag == 1) + break; + if (all_ports_up == 0) { + printf("."); + fflush(stdout); + rte_delay_ms(CHECK_INTERVAL); + } + /* set the print_flag if all ports up or timeout */ + if (all_ports_up == 1 || count == (MAX_CHECK_TIME - 1)) { + print_flag = 1; + printf("done\n"); + } + } +} +static void +signal_handler(int signum) +{ + if (signum == SIGINT || signum == SIGTERM) { + printf("\n\nSignal %d received, preparing to exit...\n", + signum); + force_quit = true; + } +} +int +dpdk_main(int argc, char **argv, benetel_t *bs) +{ + struct lcore_queue_conf *qconf; + int ret; + uint16_t nb_ports; + uint16_t nb_ports_available = 0; + uint16_t portid, last_port; + unsigned lcore_id, rx_lcore_id; + unsigned nb_ports_in_mask = 0; + unsigned int nb_lcores = 0; + unsigned int nb_mbufs; + /* init EAL */ + ret = rte_eal_init(argc, argv); + if (ret < 0) + rte_exit(EXIT_FAILURE, "Invalid EAL arguments\n"); + argc -= ret; + argv += ret; + force_quit = false; + signal(SIGINT, signal_handler); + signal(SIGTERM, signal_handler); + /* parse application arguments (after the EAL ones) */ + ret = l2fwd_parse_args(argc, argv); + if (ret < 0) + rte_exit(EXIT_FAILURE, "Invalid L2FWD arguments\n"); + printf("MAC updating %s\n", mac_updating ? "enabled" : "disabled"); + /* convert to number of cycles */ + timer_period *= rte_get_timer_hz(); + nb_ports = rte_eth_dev_count_avail(); + if (nb_ports == 0) + rte_exit(EXIT_FAILURE, "No Ethernet ports - bye\n"); + /* check port mask to possible port mask */ + if (l2fwd_enabled_port_mask & ~((1 << nb_ports) - 1)) + rte_exit(EXIT_FAILURE, "Invalid portmask; possible (0x%x)\n", + (1 << nb_ports) - 1); + /* reset l2fwd_dst_ports */ + for (portid = 0; portid < RTE_MAX_ETHPORTS; portid++) + l2fwd_dst_ports[portid] = 0; + last_port = 0; + /* + * Each logical core is assigned a dedicated TX queue on each port. + */ + RTE_ETH_FOREACH_DEV(portid) { + /* skip ports that are not enabled */ + if ((l2fwd_enabled_port_mask & (1 << portid)) == 0) + continue; + if (nb_ports_in_mask % 2) { + l2fwd_dst_ports[portid] = last_port; + l2fwd_dst_ports[last_port] = portid; + } + else + last_port = portid; + nb_ports_in_mask++; + } + if (nb_ports_in_mask % 2) { + printf("Notice: odd number of ports in portmask.\n"); + l2fwd_dst_ports[last_port] = last_port; + } + rx_lcore_id = 0; + qconf = NULL; + /* Initialize the port/queue configuration of each logical core */ + RTE_ETH_FOREACH_DEV(portid) { + /* skip ports that are not enabled */ + if ((l2fwd_enabled_port_mask & (1 << portid)) == 0) + continue; + /* get the lcore_id for this port */ + while (rte_lcore_is_enabled(rx_lcore_id) == 0 || + lcore_queue_conf[rx_lcore_id].n_rx_port == + l2fwd_rx_queue_per_lcore) { + rx_lcore_id++; + if (rx_lcore_id >= RTE_MAX_LCORE) + rte_exit(EXIT_FAILURE, "Not enough cores\n"); + } + if (qconf != &lcore_queue_conf[rx_lcore_id]) { + /* Assigned a new logical core in the loop above. */ + qconf = &lcore_queue_conf[rx_lcore_id]; + nb_lcores++; + } + qconf->rx_port_list[qconf->n_rx_port] = portid; + qconf->n_rx_port++; + printf("Lcore %u: RX port %u\n", rx_lcore_id, portid); + } + nb_mbufs = RTE_MAX(nb_ports * (nb_rxd + nb_txd + MAX_PKT_BURST + + nb_lcores * MEMPOOL_CACHE_SIZE), 8192U); + /* create the mbuf pool */ + //DD Debug + //printf ("Proc Type %d \n", rte_eal_process_type()); + l2fwd_pktmbuf_pool = rte_pktmbuf_pool_create("mbuf_pool", nb_mbufs, + MEMPOOL_CACHE_SIZE, 0, 9680, + rte_socket_id()); + if (l2fwd_pktmbuf_pool == NULL) + rte_exit(EXIT_FAILURE, "Cannot init mbuf pool\n"); + /* Initialise each port */ + RTE_ETH_FOREACH_DEV(portid) { + struct rte_eth_rxconf rxq_conf; + struct rte_eth_txconf txq_conf; + struct rte_eth_conf local_port_conf = port_conf; + struct rte_eth_dev_info dev_info; + /* skip ports that are not enabled */ + if ((l2fwd_enabled_port_mask & (1 << portid)) == 0) { + printf("Skipping disabled port %u\n", portid); + continue; + } + nb_ports_available++; + /* init port */ + printf("Initializing port %u... ", portid); + fflush(stdout); + rte_eth_dev_info_get(portid, &dev_info); + if (dev_info.tx_offload_capa & DEV_TX_OFFLOAD_MBUF_FAST_FREE) + local_port_conf.txmode.offloads |= + DEV_TX_OFFLOAD_MBUF_FAST_FREE; + ret = rte_eth_dev_configure(portid, 1, 1, &local_port_conf); + if (ret < 0) + rte_exit(EXIT_FAILURE, "Cannot configure device: err=%d, port=%u\n", + ret, portid); + ret = rte_eth_dev_adjust_nb_rx_tx_desc(portid, &nb_rxd, + &nb_txd); + if (ret < 0) + rte_exit(EXIT_FAILURE, + "Cannot adjust number of descriptors: err=%d, port=%u\n", + ret, portid); + rte_eth_macaddr_get(portid,&l2fwd_ports_eth_addr[portid]); + /* init one RX queue */ + fflush(stdout); + rxq_conf = dev_info.default_rxconf; + rxq_conf.offloads = local_port_conf.rxmode.offloads; + ret = rte_eth_rx_queue_setup(portid, 0, nb_rxd, + rte_eth_dev_socket_id(portid), + &rxq_conf, + l2fwd_pktmbuf_pool); + if (ret < 0) + rte_exit(EXIT_FAILURE, "rte_eth_rx_queue_setup:err=%d, port=%u\n", + ret, portid); + /* init one TX queue on each port */ + fflush(stdout); + txq_conf = dev_info.default_txconf; + txq_conf.offloads = local_port_conf.txmode.offloads; + ret = rte_eth_tx_queue_setup(portid, 0, nb_txd, + rte_eth_dev_socket_id(portid), + &txq_conf); + if (ret < 0) + rte_exit(EXIT_FAILURE, "rte_eth_tx_queue_setup:err=%d, port=%u\n", + ret, portid); + /* Initialize TX buffers */ + tx_buffer[portid] = rte_zmalloc_socket("tx_buffer", + RTE_ETH_TX_BUFFER_SIZE(MAX_PKT_BURST), 0, + rte_eth_dev_socket_id(portid)); + if (tx_buffer[portid] == NULL) + rte_exit(EXIT_FAILURE, "Cannot allocate buffer for tx on port %u\n", + portid); + rte_eth_tx_buffer_init(tx_buffer[portid], MAX_PKT_BURST); + ret = rte_eth_tx_buffer_set_err_callback(tx_buffer[portid], + rte_eth_tx_buffer_count_callback, + &port_statistics[portid].dropped); + if (ret < 0) + rte_exit(EXIT_FAILURE, + "Cannot set error callback for tx buffer on port %u\n", + portid); + /* Start device */ + ret = rte_eth_dev_start(portid); + if (ret < 0) + rte_exit(EXIT_FAILURE, "rte_eth_dev_start:err=%d, port=%u\n", + ret, portid); + printf("done: \n"); + rte_eth_promiscuous_enable(portid); + printf("Port %u, MAC address: %02X:%02X:%02X:%02X:%02X:%02X\n\n", + portid, + l2fwd_ports_eth_addr[portid].addr_bytes[0], + l2fwd_ports_eth_addr[portid].addr_bytes[1], + l2fwd_ports_eth_addr[portid].addr_bytes[2], + l2fwd_ports_eth_addr[portid].addr_bytes[3], + l2fwd_ports_eth_addr[portid].addr_bytes[4], + l2fwd_ports_eth_addr[portid].addr_bytes[5]); + /* initialize port stats */ + memset(&port_statistics, 0, sizeof(port_statistics)); + } + if (!nb_ports_available) { + rte_exit(EXIT_FAILURE, + "All available ports are disabled. Please set portmask.\n"); + } + check_all_ports_link_status(l2fwd_enabled_port_mask); + ret = 0; + /* launch per-lcore init on every lcore */ + rte_eal_mp_remote_launch(l2fwd_launch_one_lcore, bs, CALL_MASTER); + RTE_LCORE_FOREACH_SLAVE(lcore_id) { + if (rte_eal_wait_lcore(lcore_id) < 0) { + ret = -1; + break; + } + } + RTE_ETH_FOREACH_DEV(portid) { + if ((l2fwd_enabled_port_mask & (1 << portid)) == 0) + continue; + printf("Closing port %d...", portid); + rte_eth_dev_stop(portid); + rte_eth_dev_close(portid); + printf(" Done\n"); + } + printf("Bye...\n"); + return ret; +} diff --git a/targets/ARCH/ETHERNET/benetel/5g/low.c b/targets/ARCH/ETHERNET/benetel/5g/low.c new file mode 100644 index 0000000000..984e401421 --- /dev/null +++ b/targets/ARCH/ETHERNET/benetel/5g/low.c @@ -0,0 +1,97 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +#include "low.h" + +#include +#include +#include + +void store_ul(benetel_t *bs, ul_packet_t *ul) +{ + /* only antenna 0 for the moment */ + if (ul->antenna != 0) + return; + + if (ul->slot != bs->next_slot || + ul->symbol != bs->next_symbol) { + printf("%s: fatal, expected frame.sl.symbol %d.%d.%d, got %d.%d.%d\n", + __FUNCTION__, + bs->expected_benetel_frame, bs->next_slot, bs->next_symbol, + ul->frame, ul->slot, ul->symbol); + exit(1); + } + + lock_ul_buffer(bs->buffers, bs->next_slot); + if (bs->buffers->ul_busy[bs->next_slot] & (1 << bs->next_symbol)) { + printf("%s: warning, UL overflow (sl.symbol %d.%d)\n", __FUNCTION__, + bs->next_slot, bs->next_symbol); + } + + memcpy(bs->buffers->ul[bs->next_slot] + bs->next_symbol * 1272*4, + ul->iq, 1272*4); + bs->buffers->ul_busy[bs->next_slot] |= (1 << bs->next_symbol); + signal_ul_buffer(bs->buffers, bs->next_slot); + unlock_ul_buffer(bs->buffers, bs->next_slot); + + bs->next_symbol++; + if (bs->next_symbol == 14) { + bs->next_symbol = 0; + bs->next_slot = (bs->next_slot + 1) % 20; + if (bs->next_slot == 0) { + bs->expected_benetel_frame++; + bs->expected_benetel_frame &= 255; + } + } +} + +void store_prach(benetel_t *bs, int frame, int slot, void *data) +{ + static int last_frame = -1; + static int last_slot = -1; + /* hack: antenna number is always 0, discard second packet with same f/sf */ + //if (frame == last_frame && slot == last_slot) return; + if (frame == last_frame && slot == last_slot) { printf("got f.sl %d.%d twice\n", frame, slot); return; } + last_frame = frame; + last_slot = slot; + + lock_ul_buffer(bs->buffers, slot); + if (bs->buffers->prach_busy[slot]) { + printf("store_prach: fatal: previous prach buffer not processed\n"); + unlock_ul_buffer(bs->buffers, slot); + return; + } + bs->buffers->prach_busy[slot] = 1; + memcpy(bs->buffers->prach[slot], data, 839*4); + signal_ul_buffer(bs->buffers, slot); + unlock_ul_buffer(bs->buffers, slot); + +} + +void *benetel_start_dpdk(char *ifname, shared_buffers *buffers, char *dpdk_main_command_line); + +void *benetel_start(char *ifname, shared_buffers *buffers, char *dpdk_main_command_line) +{ + if (!strcmp(ifname, "dpdk")) + return benetel_start_dpdk(ifname, buffers, dpdk_main_command_line); + printf("benetel: fatal: interface %s not supported, only dpdpk is supported\n", ifname); + exit(1); +} diff --git a/targets/ARCH/ETHERNET/benetel/5g/low.h b/targets/ARCH/ETHERNET/benetel/5g/low.h new file mode 100644 index 0000000000..5e1daee9d1 --- /dev/null +++ b/targets/ARCH/ETHERNET/benetel/5g/low.h @@ -0,0 +1,48 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +#ifndef _BENETEL_5G_LOW_H_ +#define _BENETEL_5G_LOW_H_ + +#include "shared_buffers.h" + +typedef struct { + shared_buffers *buffers; + int next_slot; + int next_symbol; + int expected_benetel_frame; + char *dpdk_main_command_line; +} benetel_t; + +typedef struct { + int frame; + int slot; + int symbol; + int antenna; + unsigned char iq[5088]; +} ul_packet_t; + +void *benetel_start(char *ifname, shared_buffers *buffers, char *dpdk_main_command_line); + +void store_ul(benetel_t *bs, ul_packet_t *ul); +void store_prach(benetel_t *bs, int frame, int slot, void *data); + +#endif /* _BENETEL_5G_LOW_H_ */ diff --git a/targets/ARCH/ETHERNET/benetel/5g/low_dpdk.c b/targets/ARCH/ETHERNET/benetel/5g/low_dpdk.c new file mode 100644 index 0000000000..5e26f6782e --- /dev/null +++ b/targets/ARCH/ETHERNET/benetel/5g/low_dpdk.c @@ -0,0 +1,118 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/* those 2 lines for CPU_SET */ +#define _GNU_SOURCE +#include + +#include +#include +#include +#include + +#include "low.h" + +int dpdk_main(int argc, char **argv, benetel_t *); + +void *dpdk_thread(void *_bs) +{ + benetel_t *bs = _bs; + int n = 0; + char **v = NULL; // = { "softmodem", "-n", "2", "--file-prefix", "pg2", "-l", "6", "--", "-p", "0x1" }; + char *s = bs->dpdk_main_command_line; + char *tok; + + while ((tok = strtok(s, " ")) != NULL) { + n++; + v = realloc(v, n * sizeof(char *)); + if (v == NULL) { + printf("%s: out of memory\n", __FUNCTION__); + exit(1); + } + v[n-1] = tok; + s = NULL; + } + + dpdk_main(n, v, bs); + exit(1); + return 0; +} + +void *benetel_start_dpdk(char *ifname, shared_buffers *buffers, char *dpdk_main_command_line) +{ + benetel_t *bs; + + bs = calloc(1, sizeof(benetel_t)); + if (bs == NULL) { + printf("%s: out of memory\n", __FUNCTION__); + exit(1); + } + + bs->buffers = buffers; + + bs->expected_benetel_frame = 255; + + bs->dpdk_main_command_line = dpdk_main_command_line; + + pthread_attr_t attr; + + if (pthread_attr_init(&attr) != 0) { + printf("pthread_attr_init failed\n"); + exit(1); + } + + cpu_set_t cpuset; + CPU_ZERO(&cpuset); + CPU_SET(10,&cpuset); + if (pthread_attr_setaffinity_np(&attr, sizeof(cpu_set_t), &cpuset) != 0) { + printf("pthread_attr_setaffinity_np failed\n"); + exit(1); + } + + if (pthread_attr_setschedpolicy(&attr, SCHED_FIFO) != 0) { + printf("pthread_attr_setschedpolicy failed\n"); + exit(1); + } + + struct sched_param params; + params.sched_priority = sched_get_priority_max(SCHED_FIFO); + if (sched_get_priority_max(SCHED_FIFO) == -1) { + printf("sched_get_priority_max failed\n"); + exit(1); + } + if (pthread_attr_setschedparam(&attr, ¶ms) != 0) { + printf("pthread_setschedparam failed\n"); + exit(1); + } + + pthread_t t; + if (pthread_create(&t, &attr, dpdk_thread, bs) != 0) { + printf("%s: thread creation failed\n", __FUNCTION__); + exit(1); + } + + if (pthread_attr_destroy(&attr) != 0) { + printf("pthread_attr_init failed\n"); + exit(1); + } + + return bs; +} diff --git a/targets/ARCH/ETHERNET/benetel/5g/shared_buffers.c b/targets/ARCH/ETHERNET/benetel/5g/shared_buffers.c new file mode 100644 index 0000000000..b9da10b380 --- /dev/null +++ b/targets/ARCH/ETHERNET/benetel/5g/shared_buffers.c @@ -0,0 +1,118 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +#include "shared_buffers.h" + +#include +#include +#include + +void init_buffers(shared_buffers *s) +{ + int slot; + + memset(s, 0, sizeof(*s)); + + for (slot = 0; slot < 20; slot++) { + if (pthread_mutex_init(&s->m_dl[slot], NULL) != 0 || + pthread_cond_init(&s->c_dl[slot], NULL) != 0 || + pthread_mutex_init(&s->m_ul[slot], NULL) != 0 || + pthread_cond_init(&s->c_ul[slot], NULL) != 0) { + printf("%s: error initializing mutex/cond\n", __FUNCTION__); + exit(1); + } + } + + /* the gNB's first transmitted DL slot is 6 but the device + * needs to have slots 1, 2 and 3, 4 and 5 ready. Let's pretend + * they are ready. + */ + s->dl_busy[1] = 0x3fff; + s->dl_busy[2] = 0x3fff; + s->dl_busy[3] = 0x3fff; + s->dl_busy[4] = 0x3fff; + s->dl_busy[5] = 0x3fff; +} + +void lock_dl_buffer(shared_buffers *s, int slot) +{ + if (pthread_mutex_lock(&s->m_dl[slot]) != 0) { + printf("%s: fatal: lock fails\n", __FUNCTION__); + exit(1); + } +} + +void unlock_dl_buffer(shared_buffers *s, int slot) +{ + if (pthread_mutex_unlock(&s->m_dl[slot]) != 0) { + printf("%s: fatal: unlock fails\n", __FUNCTION__); + exit(1); + } +} + +void wait_dl_buffer(shared_buffers *s, int slot) +{ + if (pthread_cond_wait(&s->c_dl[slot], &s->m_dl[slot]) != 0) { + printf("%s: fatal: cond_wait fails\n", __FUNCTION__); + exit(1); + } +} + +void signal_dl_buffer(shared_buffers *s, int slot) +{ + if (pthread_cond_broadcast(&s->c_dl[slot]) != 0) { + printf("%s: fatal: cond_broadcast fails\n", __FUNCTION__); + exit(1); + } +} + +void lock_ul_buffer(shared_buffers *s, int slot) +{ + if (pthread_mutex_lock(&s->m_ul[slot]) != 0) { + printf("%s: fatal: lock fails\n", __FUNCTION__); + printf("%s: fatal: lock fails slot %d\n", __FUNCTION__, slot); + exit(1); + } +} + +void unlock_ul_buffer(shared_buffers *s, int slot) +{ + if (pthread_mutex_unlock(&s->m_ul[slot]) != 0) { + printf("%s: fatal: unlock fails\n", __FUNCTION__); + exit(1); + } +} + +void wait_ul_buffer(shared_buffers *s, int slot) +{ + if (pthread_cond_wait(&s->c_ul[slot], &s->m_ul[slot]) != 0) { + printf("%s: fatal: cond_wait fails\n", __FUNCTION__); + exit(1); + } +} + +void signal_ul_buffer(shared_buffers *s, int slot) +{ + if (pthread_cond_broadcast(&s->c_ul[slot]) != 0) { + printf("%s: fatal: cond_broadcast fails\n", __FUNCTION__); + exit(1); + } +} diff --git a/targets/ARCH/ETHERNET/benetel/5g/shared_buffers.h b/targets/ARCH/ETHERNET/benetel/5g/shared_buffers.h new file mode 100644 index 0000000000..ca7dbd9c8f --- /dev/null +++ b/targets/ARCH/ETHERNET/benetel/5g/shared_buffers.h @@ -0,0 +1,60 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +#ifndef _BENETEL_5G_SHARED_BUFFERS_H_ +#define _BENETEL_5G_SHARED_BUFFERS_H_ + +#include +#include + +typedef struct { + unsigned char dl[20][14*1272*4]; + unsigned char ul[20][14*1272*4]; + uint16_t dl_busy[20]; + uint16_t ul_busy[20]; + + pthread_mutex_t m_ul[20]; + pthread_cond_t c_ul[20]; + + pthread_mutex_t m_dl[20]; + pthread_cond_t c_dl[20]; + + unsigned char prach[20][849*4]; + unsigned char prach_busy[20]; + + /* statistics/error counting */ + int ul_overflow; + int dl_underflow; +} shared_buffers; + +void init_buffers(shared_buffers *s); + +void lock_dl_buffer(shared_buffers *s, int slot); +void unlock_dl_buffer(shared_buffers *s, int slot); +void wait_dl_buffer(shared_buffers *s, int slot); +void signal_dl_buffer(shared_buffers *s, int slot); + +void lock_ul_buffer(shared_buffers *s, int slot); +void unlock_ul_buffer(shared_buffers *s, int slot); +void wait_ul_buffer(shared_buffers *s, int slot); +void signal_ul_buffer(shared_buffers *s, int slot); + +#endif /* _BENETEL_5G_SHARED_BUFFERS_H_ */ diff --git a/targets/ARCH/IRIS/USERSPACE/LIB/iris_lib.cpp b/targets/ARCH/IRIS/USERSPACE/LIB/iris_lib.cpp index 5b20d8a8c7..1273097f3b 100644 --- a/targets/ARCH/IRIS/USERSPACE/LIB/iris_lib.cpp +++ b/targets/ARCH/IRIS/USERSPACE/LIB/iris_lib.cpp @@ -510,6 +510,11 @@ int trx_iris_reset_stats(openair0_device *device) { } +int trx_iris_write_init(openair0_device *device) +{ + return 0; +} + extern "C" { /*! \brief Initialize Openair Iris target. It returns 0 if OK @@ -831,6 +836,7 @@ int device_init(openair0_device *device, openair0_config_t *openair0_cfg) { device->trx_set_freq_func = trx_iris_set_freq; device->trx_set_gains_func = trx_iris_set_gains; device->openair0_cfg = openair0_cfg; + device->trx_write_init = trx_iris_write_init; s->sample_rate = openair0_cfg[0].sample_rate; // TODO: diff --git a/targets/ARCH/LMSSDR/USERSPACE/LIB/lms_lib.cpp b/targets/ARCH/LMSSDR/USERSPACE/LIB/lms_lib.cpp index 9fcfbdf571..79a389bfeb 100644 --- a/targets/ARCH/LMSSDR/USERSPACE/LIB/lms_lib.cpp +++ b/targets/ARCH/LMSSDR/USERSPACE/LIB/lms_lib.cpp @@ -350,6 +350,10 @@ void trx_lms_end(openair0_device *device) { } +int trx_lms_write_init(openair0_device *device) +{ + return 0; +} extern "C" { /*! \brief Initialize Openair LMSSDR target. It returns 0 if OK * \param device the hardware to use @@ -406,6 +410,7 @@ int device_init(openair0_device *device, openair0_config_t *openair0_cfg){ device->trx_stop_func = trx_lms_stop; device->trx_set_freq_func = trx_lms_set_freq; device->trx_set_gains_func = trx_lms_set_gains; + device->trx_write_init = trx_lms_write_init; device->openair0_cfg = openair0_cfg; diff --git a/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp b/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp index 08f0cd720b..0c89a68dd5 100644 --- a/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp +++ b/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp @@ -70,6 +70,8 @@ * @{ */ +extern int usrp_tx_thread; + typedef struct { @@ -106,7 +108,8 @@ typedef struct { int64_t rx_count; int wait_for_first_pps; int use_gps; - int first_tx; + //int first_tx; + //int first_rx; //! timestamp of RX packet openair0_timestamp rx_timestamp; } usrp_state_t; @@ -280,31 +283,28 @@ static int trx_usrp_start(openair0_device *device) { // set pin 5 (Shutdown LNA) to 1 when the radio is transmitting and receiveing (ATR_XX) // (we use full duplex here, because our RX is on all the time - this might need to change later) s->usrp->set_gpio_attr("FP0", "ATR_XX", (1<<5), 0x7f); - // set the output pins to 0 + // set the output pins to 1 s->usrp->set_gpio_attr("FP0", "OUT", 7<<7, 0xf80); - // init recv and send streaming - uhd::stream_cmd_t cmd(uhd::stream_cmd_t::STREAM_MODE_START_CONTINUOUS); - LOG_I(HW,"Time in secs now: %llu \n", s->usrp->get_time_now().to_ticks(s->sample_rate)); - LOG_I(HW,"Time in secs last pps: %llu \n", s->usrp->get_time_last_pps().to_ticks(s->sample_rate)); - - if (s->use_gps == 1 || device->openair0_cfg[0].time_source == external) { - s->wait_for_first_pps = 1; - cmd.time_spec = s->usrp->get_time_last_pps() + uhd::time_spec_t(1.0); - } else { - s->wait_for_first_pps = 0; - cmd.time_spec = s->usrp->get_time_now() + uhd::time_spec_t(0.005); - } - - cmd.stream_now = false; // start at constant delay - s->rx_stream->issue_stream_cmd(cmd); - /*s->tx_md.time_spec = cmd.time_spec + uhd::time_spec_t(1-(double)s->tx_forward_nsamps/s->sample_rate); - s->tx_md.has_time_spec = true; - s->tx_md.start_of_burst = true; - s->tx_md.end_of_burst = false;*/ + s->wait_for_first_pps = 1; s->rx_count = 0; s->tx_count = 0; + //s->first_tx = 1; + //s->first_rx = 1; s->rx_timestamp = 0; + + s->usrp->set_time_next_pps(uhd::time_spec_t(0.0)); + // wait for the pps to change + uhd::time_spec_t time_last_pps = s->usrp->get_time_last_pps(); + while (time_last_pps == s->usrp->get_time_last_pps()) { + boost::this_thread::sleep(boost::posix_time::milliseconds(1)); + } + + uhd::stream_cmd_t cmd(uhd::stream_cmd_t::STREAM_MODE_START_CONTINUOUS); + cmd.time_spec = uhd::time_spec_t(1.0); + cmd.stream_now = false; // start at constant delay + s->rx_stream->issue_stream_cmd(cmd); + return 0; } /*! \brief Terminate operation of the USRP transceiver -- free all associated resources @@ -345,7 +345,6 @@ static int trx_usrp_write(openair0_device *device, int flags_msb = (flags>>8)&0xff; int end; - int write_tread = 0; openair0_thread_t *write_thread = &device->write_thread; openair0_write_package_t *write_package = write_thread->write_package; @@ -382,7 +381,7 @@ static int trx_usrp_write(openair0_device *device, last_packet_state = true; } - if(write_tread == 0){ + if(usrp_tx_thread == 0){ #if defined(__x86_64) || defined(__i386__) #ifdef __AVX2__ nsamps2 = (nsamps+7)>>3; @@ -419,6 +418,7 @@ static int trx_usrp_write(openair0_device *device, s->tx_md.time_spec = uhd::time_spec_t::from_ticks(timestamp, s->sample_rate); s->tx_count++; +VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_BEAM_SWITCHING_GPIO,1); // bit 3 enables gpio (for backward compatibility) if (flags_msb&8) { // push GPIO bits 7-9 from flags_msb @@ -427,6 +427,7 @@ static int trx_usrp_write(openair0_device *device, s->usrp->set_gpio_attr("FP0", "OUT", gpio789, 0x380); s->usrp->clear_command_time(); } +VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_BEAM_SWITCHING_GPIO,0); if (cc>1) { std::vector buff_ptrs; @@ -586,7 +587,7 @@ void *trx_usrp_write_thread(void * arg){ return NULL; } -int trx_write_init(openair0_device *device){ +int trx_usrp_write_init(openair0_device *device){ uhd::set_thread_priority_safe(1.0); openair0_thread_t *write_thread = &device->write_thread; @@ -632,7 +633,6 @@ static int trx_usrp_read(openair0_device *device, openair0_timestamp *ptimestamp int16x8_t buff_tmp[2][nsamps2]; #endif - if (device->type == USRP_B200_DEV) { if (cc>1) { // receive multiple channels (e.g. RF A and RF B) std::vector buff_ptrs; @@ -645,7 +645,7 @@ static int trx_usrp_read(openair0_device *device, openair0_timestamp *ptimestamp samples_received=0; while (samples_received != nsamps) { - samples_received += s->rx_stream->recv(buff_tmp[0]+samples_received, + samples_received += s->rx_stream->recv((void*)((int32_t*)buff_tmp[0]+samples_received), nsamps-samples_received, s->rx_md); if ((s->wait_for_first_pps == 0) && (s->rx_md.error_code!=uhd::rx_metadata_t::ERROR_CODE_NONE)) @@ -655,7 +655,6 @@ static int trx_usrp_read(openair0_device *device, openair0_timestamp *ptimestamp printf("sleep...\n"); //usleep(100); } } - if (samples_received == nsamps) s->wait_for_first_pps=0; } @@ -681,22 +680,10 @@ static int trx_usrp_read(openair0_device *device, openair0_timestamp *ptimestamp #endif } } - } else if (device->type == USRP_X300_DEV) { - if (cc>1) { - // receive multiple channels (e.g. RF A and RF B) - std::vector buff_ptrs; - for (int i=0; irx_stream->recv(buff_ptrs, nsamps, s->rx_md,1.0); - } else { - // receive a single channel (e.g. from connector RF A) - samples_received = s->rx_stream->recv(buff[0], nsamps, s->rx_md,1.0); + if (samples_received < nsamps) { + LOG_E(HW,"[recv] received %d samples out of %d\n",samples_received,nsamps); } - } - - if (samples_received < nsamps) - LOG_E(HW,"[recv] received %d samples out of %d\n",samples_received,nsamps); if ( s->rx_md.error_code != uhd::rx_metadata_t::ERROR_CODE_NONE) LOG_E(HW, "%s\n", s->rx_md.to_pp_string(true).c_str()); @@ -832,6 +819,17 @@ rx_gain_calib_table_t calib_table_x310[] = { {-1,0} }; +/*! \brief USRPB210 RX calibration table */ +rx_gain_calib_table_t calib_table_n310[] = { + {3500000000.0,0.0}, + {2660000000.0,0.0}, + {2300000000.0,0.0}, + {1880000000.0,0.0}, + {816000000.0, 0.0}, + {-1,0} +}; + + /*! \brief Set RX gain offset * \param openair0_cfg RF frontend parameters set by application * \param chain_index RF chain to apply settings to @@ -932,7 +930,7 @@ extern "C" { device->trx_stop_func = trx_usrp_stop; device->trx_set_freq_func = trx_usrp_set_freq; device->trx_set_gains_func = trx_usrp_set_gains; - device->trx_write_init = trx_write_init; + device->trx_write_init = trx_usrp_write_init; // hotfix! to be checked later @@ -973,7 +971,6 @@ extern "C" { double usrp_master_clock; if (device_adds[0].get("type") == "b200") { - printf("Found USRP b200\n"); device->type = USRP_B200_DEV; usrp_master_clock = 30.72e6; args += boost::str(boost::format(",master_clock_rate=%f") % usrp_master_clock); @@ -982,7 +979,7 @@ extern "C" { if (device_adds[0].get("type") == "n3xx") { printf("Found USRP n300\n"); - device->type=USRP_X300_DEV; //treat it as X300 for now + device->type=USRP_N300_DEV; usrp_master_clock = 122.88e6; args += boost::str(boost::format(",master_clock_rate=%f") % usrp_master_clock); //args += ", send_buff_size=33554432"; @@ -1068,9 +1065,18 @@ extern "C" { if (device->type==USRP_X300_DEV) { openair0_cfg[0].rx_gain_calib_table = calib_table_x310; - std::cerr << "-- Using calibration table: calib_table_x310" << std::endl; // Bell Labs info + std::cerr << "-- Using calibration table: calib_table_x310" << std::endl; + } + + if (device->type==USRP_N300_DEV) { + openair0_cfg[0].rx_gain_calib_table = calib_table_n310; + std::cerr << "-- Using calibration table: calib_table_n310" << std::endl; + } + + + if (device->type==USRP_N300_DEV || device->type==USRP_X300_DEV) { LOG_I(HW,"%s() sample_rate:%u\n", __FUNCTION__, (int)openair0_cfg[0].sample_rate); - + switch ((int)openair0_cfg[0].sample_rate) { case 122880000: // from usrp_time_offset diff --git a/targets/ARCH/rfsimulator/README.md b/targets/ARCH/rfsimulator/README.md index 421cc662bb..9ec0ae5065 100644 --- a/targets/ARCH/rfsimulator/README.md +++ b/targets/ARCH/rfsimulator/README.md @@ -96,11 +96,19 @@ sudo RFSIMULATOR=server ./nr-softmodem -O ../../../targets/PROJECTS/GENERIC-LTE- ### Launch UE in another window ```bash -sudo RFSIMULATOR= ./nr-uesoftmodem --rfsim --phy-test --rrc_config_path ../../../ci-scripts/rrc-files +sudo RFSIMULATOR= ./nr-uesoftmodem --rfsim --phy-test --rrc_config_path . ``` -Note: + +Notes: + 1. can be 127.0.0.1 if both gNB and nrUE executables run on the same host, OR the IP interface address of the remote host running the gNB executable, if the gNB and nrUE run on separate hosts -2. the --rrc_config_path parameter can be omitted (but not necessarily) if the gNB and nrUE run on the same host, in which case the gNB provides the nrUE with the necessary rrc configuration +2. the --rrc_config_path parameter SHALL specify where the 2 RAW files are located (`rbconfig.raw` and `reconfig.raw`). + - If you are running on the same machine and launched the 2 executables (`nr-softmodem` and `nr-uesoftmodem`) from the same directory, nothing has to be done. + - If you launched the 2 executables from 2 different folders, just point to the location where you launched the `nr-softmodem`: + * `sudo RFSIMULATOR= ./nr-uesoftmodem --rfsim --phy-test --rrc_config_path /the/path/where/you/launched/nr-softmodem` + - If you are not running on the same machine or launched the 2 executables from 2 different folders, you need to **COPY** the 2 raw files + * `scp usera@machineA:/the/path/where/you/launched/nr-softmodem/r*config.raw userb@machineB:/the/path/where/you/will/launch/nr-uesoftmodem/` + * Obviously this operation SHALL be done before launching the `nr-uesoftmodem` executable. 3. to enable the noS1 mode --noS1 and --nokrnmod 1 options should be added to the command line diff --git a/targets/ARCH/rfsimulator/apply_channelmod.c b/targets/ARCH/rfsimulator/apply_channelmod.c index faf84bb0aa..7aa5d78bf8 100644 --- a/targets/ARCH/rfsimulator/apply_channelmod.c +++ b/targets/ARCH/rfsimulator/apply_channelmod.c @@ -34,6 +34,9 @@ #include #include #include +#include +#include +#include /* Legacy study: @@ -99,8 +102,8 @@ void rxAddInput( struct complex16 *input_sig, struct complex16 *after_channel_si } //l } - out_ptr->r += round(rx_tmp.x*pathLossLinear + noise_per_sample*gaussdouble(0.0,1.0)); - out_ptr->i += round(rx_tmp.y*pathLossLinear + noise_per_sample*gaussdouble(0.0,1.0)); + out_ptr->r += round(rx_tmp.x*pathLossLinear + noise_per_sample*gaussZiggurat(0.0,1.0)); + out_ptr->i += round(rx_tmp.y*pathLossLinear + noise_per_sample*gaussZiggurat(0.0,1.0)); out_ptr++; } @@ -112,3 +115,4 @@ void rxAddInput( struct complex16 *input_sig, struct complex16 *after_channel_si channelDesc->path_loss_dB, 10*log10(noise_per_sample)); } + diff --git a/targets/ARCH/rfsimulator/new_channel_sim.c b/targets/ARCH/rfsimulator/new_channel_sim.c new file mode 100644 index 0000000000..0501babd20 --- /dev/null +++ b/targets/ARCH/rfsimulator/new_channel_sim.c @@ -0,0 +1,108 @@ +/* +* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more +* contributor license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright ownership. +* The OpenAirInterface Software Alliance licenses this file to You under +* the OAI Public License, Version 1.1 (the "License"); you may not use this file +* except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.openairinterface.org/?page_id=698 +* +* Author and copyright: Laurent Thomas, open-cells.com +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*------------------------------------------------------------------------------- +* For more information about the OpenAirInterface (OAI) Software Alliance: +* contact@openairinterface.org +*/ + + +#include +#include +#include +#include +#include +#include + + +#include +#include +#include +#include +#include + +// Ziggurat +static double wn[128],fn[128]; +static uint32_t iz,jz,jsr=123456789,kn[128]; +static int32_t hz; +#define SHR3 (jz=jsr, jsr^=(jsr<<13),jsr^=(jsr>>17),jsr^=(jsr<<5),jz+jsr) +#define UNI (0.5+(signed) SHR3 * 0.2328306e-9) + +double nfix(void) { + const double r = 3.442620; + static double x, y; + + for (;;) { + x=hz * wn[iz]; + + if (iz==0) { + do { + x = - 0.2904764 * log (UNI); + y = - log (UNI); + } while (y+y < x*x); + + return (hz>0)? r+x : -r-x; + } + + if (fn[iz]+UNI*(fn[iz-1]-fn[iz]) #include #include +#include #include #include "common_lib.h" #include #include "openair1/PHY/defs_UE.h" #define CHANNELMOD_DYNAMICLOAD #include +#include #define PORT 4043 //default TCP port for this simulator #define CirSize 307200 // 100ms is enough @@ -77,11 +79,25 @@ extern RAN_CONTEXT_t RC; #define RFSIMULATOR_PARAMS_DESC {\ {"serveraddr", "\n", 0, strptr:&(rfsimulator->ip), defstrval:"127.0.0.1", TYPE_STRING, 0 },\ {"serverport", "\n", 0, u16ptr:&(rfsimulator->port), defuintval:PORT, TYPE_UINT16, 0 },\ - {RFSIMU_OPTIONS_PARAMNAME, RFSIM_CONFIG_HELP_OPTIONS, 0, strlistptr:NULL, defstrlistval:NULL, TYPE_STRINGLIST,0},\ + {RFSIMU_OPTIONS_PARAMNAME, RFSIM_CONFIG_HELP_OPTIONS, 0, strlistptr:NULL, defstrlistval:NULL, TYPE_STRINGLIST,0 },\ {"IQfile", "\n", 0, strptr:&(saveF), defstrval:"/tmp/rfsimulator.iqs",TYPE_STRING, 0 },\ - {"modelname", "\n", 0, strptr:&(modelname), defstrval:"AWGN", TYPE_STRING, 0 }\ + {"modelname", "\n", 0, strptr:&(modelname), defstrval:"AWGN", TYPE_STRING, 0 },\ + {"ploss", "\n", 0, dblptr:&(rfsimulator->chan_pathloss), defdblval:0, TYPE_DOUBLE, 0 },\ + {"forgetfact", "\n", 0, dblptr:&(rfsimulator->chan_forgetfact), defdblval:0, TYPE_DOUBLE, 0 },\ + {"offset", "\n", 0, iptr:&(rfsimulator->chan_offset), defintval:0, TYPE_INT, 0 }\ }; + + +static int rfsimu_setchanmod_cmd(char *buff, int debug, telnet_printfunc_t prnt, void *arg); +static telnetshell_cmddef_t rfsimu_cmdarray[] = { + {"setmodel","",(cmdfunc_t)rfsimu_setchanmod_cmd,TELNETSRV_CMDFLAG_PUSHINTPOOLQ}, + {"","",NULL}, +}; + +static telnetshell_vardef_t rfsimu_vardef[] = { + {"",0,NULL} +}; pthread_mutex_t Sockmutex; typedef struct complex16 sample_t; // 2*16 bits complex number @@ -113,6 +129,11 @@ typedef struct { double sample_rate; double tx_bw; int channelmod; + double chan_pathloss; + double chan_forgetfact; + int chan_offset; + void *telnetcmd_qid; + poll_telnetcmdq_func_t poll_telnetcmdq; } rfsimulator_state_t; @@ -146,13 +167,29 @@ void allocCirBuf(rfsimulator_state_t *bridge, int sock) { // the value channel_model->path_loss_dB seems only a storage place (new_channel_desc_scm() only copy the passed value) // Legacy changes directlty the variable channel_model->path_loss_dB place to place // while calling new_channel_desc_scm() with path losses = 0 + static bool init_done=false; + + if (!init_done) { + uint64_t rand; + FILE *h=fopen("/dev/random","r"); + if ( 1 != fread(&rand,sizeof(rand),1,h) ) + LOG_W(HW, "Simulator can't read /dev/random\n"); + fclose(h); + randominit(rand); + tableNor(rand); + init_done=true; + } + ptr->channel_model=new_channel_desc_scm(bridge->tx_num_channels,bridge->rx_num_channels, bridge->channelmod, bridge->sample_rate, bridge->tx_bw, - 0.0, // forgetting_factor - 0, // maybe used for TA - 0); // path_loss in dB + 30e-9, // TDL delay-spread parameter + bridge->chan_forgetfact, // forgetting_factor + bridge->chan_offset, // maybe used for TA + bridge->chan_pathloss); // path_loss in dB + set_channeldesc_owner(ptr->channel_model, RFSIMU_MODULEID); + random_channel(ptr->channel_model,false); } } @@ -279,6 +316,42 @@ void rfsimulator_readconfig(rfsimulator_state_t *rfsimulator) { rfsimulator->typeStamp = UE_MAGICDL_FDD; } +static int rfsimu_setchanmod_cmd(char *buff, int debug, telnet_printfunc_t prnt, void *arg) { + char *modelname=NULL; + int s = sscanf(buff,"%ms\n",&modelname); + if (s == 1) { + int channelmod=modelid_fromname(modelname); + if (channelmod<0) + prnt("ERROR: model %s unknown\n",modelname); + else { + rfsimulator_state_t *t = (rfsimulator_state_t *)arg; + for (int i=0; ibuf[i]; + if (b->conn_sock >= 0 ) { + channel_desc_t *newmodel=new_channel_desc_scm(t->tx_num_channels,t->rx_num_channels, + channelmod, + t->sample_rate, + t->tx_bw, + 30e-9, // TDL delay-spread parameter + t->chan_forgetfact, // forgetting_factor + t->chan_offset, // maybe used for TA + t->chan_pathloss); // path_loss in dB + set_channeldesc_owner(newmodel, RFSIMU_MODULEID); + random_channel(newmodel,false); + channel_desc_t *oldmodel=b->channel_model; + b->channel_model=newmodel; + free_channel_desc_scm(oldmodel); + prnt("New model %s applied to channel connected to sock %d\n",modelname,i); + } + } + } + } else { + prnt("ERROR: no model specified\n"); + } + free(modelname); + return CMDSTATUS_FOUND; +} + int server_start(openair0_device *device) { rfsimulator_state_t *t = (rfsimulator_state_t *) device->priv; t->typeStamp=ENB_MAGICDL_FDD; @@ -368,6 +441,7 @@ static int rfsimulator_write_internal(rfsimulator_state_t *t, openair0_timestamp if (t->lastWroteTS > timestamp+nsamps) LOG_E(HW,"Not supported to send Tx out of order (same in USRP) %lu, %lu\n", t->lastWroteTS, timestamp); + t->lastWroteTS=timestamp+nsamps; if (!alreadyLocked) @@ -385,7 +459,7 @@ int rfsimulator_write(openair0_device *device, openair0_timestamp timestamp, voi static bool flushInput(rfsimulator_state_t *t, int timeout, int nsamps_for_initial) { // Process all incoming events on sockets // store the data in lists - struct epoll_event events[FD_SETSIZE]= {0}; + struct epoll_event events[FD_SETSIZE]= {{0}}; int nfds = epoll_wait(t->epollfd, events, FD_SETSIZE, timeout); if ( nfds==-1 ) { @@ -469,16 +543,21 @@ static bool flushInput(rfsimulator_state_t *t, int timeout, int nsamps_for_initi b->trashingPacket=true; } else if ( b->lastReceivedTS < b->th.timestamp) { int nbAnt= b->th.nbAnt; - + + if ( b->th.timestamp-b->lastReceivedTS < CirSize ) { for (uint64_t index=b->lastReceivedTS; index < b->th.timestamp; index++ ) { for (int a=0; a < nbAnt; a++) { b->circularBuf[(index*nbAnt+a)%CirSize].r = 0; b->circularBuf[(index*nbAnt+a)%CirSize].i = 0; } } + } else { + memset(b->circularBuf, 0, sampleToByte(CirSize,1)); + } if (b->lastReceivedTS != 0 && b->th.timestamp-b->lastReceivedTS > 50 ) LOG_W(HW,"UEsock: %d gap of: %ld in reception\n", fd, b->th.timestamp-b->lastReceivedTS ); + b->lastReceivedTS=b->th.timestamp; } else if ( b->lastReceivedTS > b->th.timestamp && b->th.size == 1 ) { @@ -497,7 +576,7 @@ static bool flushInput(rfsimulator_state_t *t, int timeout, int nsamps_for_initi LOG_E(HW,"UEsock: %d Tx/Rx shift too large Tx:%lu, Rx:%lu\n", fd, t->lastWroteTS, b->lastReceivedTS); pthread_mutex_unlock(&Sockmutex); - b->transferPtr=(char *)&b->circularBuf[b->lastReceivedTS%CirSize]; + b->transferPtr=(char *)&b->circularBuf[(b->lastReceivedTS*b->th.nbAnt)%CirSize]; b->remainToTransfer=sampleToByte(b->th.size, b->th.nbAnt); } @@ -561,6 +640,7 @@ int rfsimulator_read(openair0_device *device, openair0_timestamp *ptimestamp, vo pthread_mutex_unlock(&Sockmutex); usleep(10000); pthread_mutex_lock(&Sockmutex); + if ( t->lastWroteTS < t->nextTimestamp ) { // Assuming Tx is not done fully in another thread // We can never write is the past from the received time @@ -574,6 +654,7 @@ int rfsimulator_read(openair0_device *device, openair0_timestamp *ptimestamp, vo for ( int i=0; i < t->tx_num_channels; i++) samplesVoid[i]=(void *)&v; + LOG_I(HW, "No samples Tx occured, so we send 1 sample to notify it: Tx:%lu, Rx:%lu\n", t->lastWroteTS, t->nextTimestamp); rfsimulator_write_internal(t, t->nextTimestamp, @@ -625,8 +706,10 @@ int rfsimulator_read(openair0_device *device, openair0_timestamp *ptimestamp, vo // it seems legacy behavior is: never in UL, each frame in DL if (reGenerateChannel) random_channel(ptr->channel_model,0); + if (t->poll_telnetcmdq) + t->poll_telnetcmdq(t->telnetcmd_qid,t); - for (int a=0; achannel_model != NULL ) // apply a channel model rxAddInput( ptr->circularBuf, (struct complex16 *) samplesVoid[a], a, @@ -637,13 +720,16 @@ int rfsimulator_read(openair0_device *device, openair0_timestamp *ptimestamp, vo ); else { // no channel modeling sample_t *out=(sample_t *)samplesVoid[a]; - - for ( int i=0; i < nsamps; i++ ) { - out[i].r+=ptr->circularBuf[((t->nextTimestamp+i)*nbAnt+a)%CirSize].r; - out[i].i+=ptr->circularBuf[((t->nextTimestamp+i)*nbAnt+a)%CirSize].i; - } + int nbAnt_tx = ptr->th.nbAnt;//number of Tx antennas + //LOG_I(HW, "nbAnt_tx %d\n",nbAnt_tx); + for (int i=0; i < nsamps; i++) {//loop over nsamps + for (int a_tx=0; a_txcircularBuf[((t->nextTimestamp+i)*nbAnt_tx+a_tx)%CirSize].r; + out[i].i+=ptr->circularBuf[((t->nextTimestamp+i)*nbAnt_tx+a_tx)%CirSize].i; + } // end for a_tx + } // end for i (number of samps) } // end of no channel modeling - } // end for a... + } // end for a (number of rx antennas) } } @@ -716,7 +802,20 @@ int device_init(openair0_device *device, openair0_config_t *openair0_cfg) { rfsimulator->rx_num_channels=openair0_cfg->rx_num_channels; rfsimulator->sample_rate=openair0_cfg->sample_rate; rfsimulator->tx_bw=openair0_cfg->tx_bw; - randominit(0); + //randominit(0); set_taus_seed(0); + /* look for telnet server, if it is loaded, add the channel modeling commands to it */ + add_telnetcmd_func_t addcmd = (add_telnetcmd_func_t)get_shlibmodule_fptr("telnetsrv", TELNET_ADDCMD_FNAME); + + if (addcmd != NULL) { + rfsimulator->poll_telnetcmdq = (poll_telnetcmdq_func_t)get_shlibmodule_fptr("telnetsrv", TELNET_POLLCMDQ_FNAME); + addcmd("rfsimu",rfsimu_vardef,rfsimu_cmdarray); + for(int i=0; rfsimu_cmdarray[i].cmdfunc != NULL; i++) { + if ( rfsimu_cmdarray[i].qptr != NULL) { + rfsimulator->telnetcmd_qid = rfsimu_cmdarray[i].qptr; + break; + } + } + } return 0; } diff --git a/targets/ARCH/tcp_bridge/tcp_bridge.c b/targets/ARCH/tcp_bridge/tcp_bridge.c index 8b287acfa1..f8c12dcb7a 100644 --- a/targets/ARCH/tcp_bridge/tcp_bridge.c +++ b/targets/ARCH/tcp_bridge/tcp_bridge.c @@ -243,6 +243,11 @@ ts += nsamps; return nsamps; } +int tcp_bridge_write_init(openair0_device *device) +{ + return 0; +} + __attribute__((__visibility__("default"))) int device_init(openair0_device* device, openair0_config_t *openair0_cfg) { @@ -267,6 +272,7 @@ int device_init(openair0_device* device, openair0_config_t *openair0_cfg) device->trx_set_gains_func = tcp_bridge_set_gains; device->trx_write_func = tcp_bridge_write; device->trx_read_func = tcp_bridge_read; + device->trx_write_init = tcp_bridge_write_init; device->priv = tcp_bridge; diff --git a/targets/COMMON/create_nr_tasks.c b/targets/COMMON/create_nr_tasks.c index 24c4115980..13f72b3876 100644 --- a/targets/COMMON/create_nr_tasks.c +++ b/targets/COMMON/create_nr_tasks.c @@ -51,17 +51,17 @@ int create_gNB_tasks(uint32_t gnb_nb) } if (gnb_nb > 0) { - /* Last task to create, others task must be ready before its start */ + // Last task to create, others task must be ready before its start if (itti_create_task (TASK_GNB_APP, gNB_app_task, NULL) < 0) { LOG_E(GNB_APP, "Create task for gNB APP failed\n"); return -1; } } -/* + if (EPC_MODE_ENABLED) { if (gnb_nb > 0) { - if (itti_create_task (TASK_SCTP, sctp_eNB_task, NULL) < 0) { + /*if (itti_create_task (TASK_SCTP, sctp_eNB_task, NULL) < 0) { LOG_E(SCTP, "Create task for SCTP failed\n"); return -1; } @@ -69,7 +69,7 @@ int create_gNB_tasks(uint32_t gnb_nb) if (itti_create_task (TASK_S1AP, s1ap_eNB_task, NULL) < 0) { LOG_E(S1AP, "Create task for S1AP failed\n"); return -1; - } + }*/ if(!emulate_rf){ if (itti_create_task (TASK_UDP, udp_eNB_task, NULL) < 0) { LOG_E(UDP_, "Create task for UDP failed\n"); @@ -84,7 +84,15 @@ int create_gNB_tasks(uint32_t gnb_nb) } } -*/ + + /*if (gnb_nb > 0) { + // Last task to create, others task must be ready before its start + if (itti_create_task (TASK_GNB_APP, gNB_app_task, NULL) < 0) { + LOG_E(GNB_APP, "Create task for gNB APP failed\n"); + return -1; + } + }*/ + if (gnb_nb > 0) { LOG_I(NR_RRC,"Creating NR RRC gNB Task\n"); @@ -100,4 +108,4 @@ int create_gNB_tasks(uint32_t gnb_nb) return 0; } -#endif +//#endif diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/benetel-4g.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/benetel-4g.conf new file mode 100644 index 0000000000..716bfd3b6b --- /dev/null +++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/benetel-4g.conf @@ -0,0 +1,281 @@ +Active_eNBs = ( "eNB-Eurecom-LTEBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +eNBs = +( + { + # real_time choice in {hard, rt-preempt, no} + real_time = "no"; + + ////////// Identification parameters: + eNB_ID = 0xe00; + + cell_type = "CELL_MACRO_ENB"; + + eNB_name = "eNB-Eurecom-LTEBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + plmn_list = ( { mcc = 222; mnc = 01; mnc_length = 2; } ); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + component_carriers = ( + { + node_function = "NGFI_RCC_IF4p5"; + node_timing = "synch_to_ext_device"; + node_synch_ref = 0; + frame_type = "FDD"; + tdd_config = 3; + tdd_config_s = 0; + prefix_type = "NORMAL"; + eutra_band = 7; + downlink_frequency = 2655000000L; + uplink_frequency_offset = -120000000; + Nid_cell = 0; + N_RB_DL = 100; + Nid_cell_mbsfn = 0; + nb_antenna_ports = 1; + nb_antennas_tx = 1; + nb_antennas_rx = 1; + tx_gain = 90; + rx_gain = 125; + pbch_repetition = "FALSE"; + prach_root = 0; + prach_config_index = 0; + prach_high_speed = "DISABLE"; + prach_zero_correlation = 1; + prach_freq_offset = 90; + pucch_delta_shift = 1; + pucch_nRB_CQI = 0; + pucch_nCS_AN = 0; + pucch_n1_AN = 0; + pdsch_referenceSignalPower = -10; + pdsch_p_b = 0; + pusch_n_SB = 1; + pusch_enable64QAM = "DISABLE"; + pusch_hoppingMode = "interSubFrame"; + pusch_hoppingOffset = 0; + pusch_groupHoppingEnabled = "ENABLE"; + pusch_groupAssignment = 0; + pusch_sequenceHoppingEnabled = "DISABLE"; + pusch_nDMRS1 = 1; + phich_duration = "NORMAL"; + phich_resource = "ONESIXTH"; + srs_enable = "DISABLE"; + /* srs_BandwidthConfig =; + srs_SubframeConfig =; + srs_ackNackST =; + srs_MaxUpPts =;*/ + + pusch_p0_Nominal = -96; + pusch_alpha = "AL1"; + pucch_p0_Nominal = -104; + msg3_delta_Preamble = 6; + pucch_deltaF_Format1 = "deltaF2"; + pucch_deltaF_Format1b = "deltaF3"; + pucch_deltaF_Format2 = "deltaF0"; + pucch_deltaF_Format2a = "deltaF0"; + pucch_deltaF_Format2b = "deltaF0"; + + rach_numberOfRA_Preambles = 64; + rach_preamblesGroupAConfig = "DISABLE"; + /* + rach_sizeOfRA_PreamblesGroupA = ; + rach_messageSizeGroupA = ; + rach_messagePowerOffsetGroupB = ; + */ + rach_powerRampingStep = 4; + rach_preambleInitialReceivedTargetPower = -108; + rach_preambleTransMax = 10; + rach_raResponseWindowSize = 10; + rach_macContentionResolutionTimer = 48; + rach_maxHARQ_Msg3Tx = 4; + + pcch_default_PagingCycle = 128; + pcch_nB = "oneT"; + bcch_modificationPeriodCoeff = 2; + ue_TimersAndConstants_t300 = 1000; + ue_TimersAndConstants_t301 = 1000; + ue_TimersAndConstants_t310 = 1000; + ue_TimersAndConstants_t311 = 10000; + ue_TimersAndConstants_n310 = 20; + ue_TimersAndConstants_n311 = 1; + ue_TransmissionMode = 1; + + //Parameters for SIB18 + rxPool_sc_CP_Len = "normal"; + rxPool_sc_Period = "sf40"; + rxPool_data_CP_Len = "normal"; + rxPool_ResourceConfig_prb_Num = 20; + rxPool_ResourceConfig_prb_Start = 5; + rxPool_ResourceConfig_prb_End = 44; + rxPool_ResourceConfig_offsetIndicator_present = "prSmall"; + rxPool_ResourceConfig_offsetIndicator_choice = 0; + rxPool_ResourceConfig_subframeBitmap_present = "prBs40"; + rxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "00000000000000000000"; + rxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5; + rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0; +/* rxPool_dataHoppingConfig_hoppingParameter = 0; + rxPool_dataHoppingConfig_numSubbands = "ns1"; + rxPool_dataHoppingConfig_rbOffset = 0; + rxPool_commTxResourceUC-ReqAllowed = "TRUE"; +*/ + // Parameters for SIB19 + discRxPool_cp_Len = "normal" + discRxPool_discPeriod = "rf32" + discRxPool_numRetx = 1; + discRxPool_numRepetition = 2; + discRxPool_ResourceConfig_prb_Num = 5; + discRxPool_ResourceConfig_prb_Start = 3; + discRxPool_ResourceConfig_prb_End = 21; + discRxPool_ResourceConfig_offsetIndicator_present = "prSmall"; + discRxPool_ResourceConfig_offsetIndicator_choice = 0; + discRxPool_ResourceConfig_subframeBitmap_present = "prBs40"; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "f0ffffffff"; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0; + + } + ); + + + srb1_parameters : + { + # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500] + timer_poll_retransmit = 80; + + # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200] + timer_reordering = 35; + + # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500] + timer_status_prohibit = 0; + + # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)] + poll_pdu = 4; + + # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)] + poll_byte = 99999; + + # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32] + max_retx_threshold = 4; + } + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.61.195"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + enable_measurement_reports = "no"; + + ///X2 + enable_x2 = "yes"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + + NETWORK_INTERFACES : + { + ENB_INTERFACE_NAME_FOR_S1_MME = "eth0"; + ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.160.46"; + ENB_INTERFACE_NAME_FOR_S1U = "eth0"; + ENB_IPV4_ADDRESS_FOR_S1U = "192.168.160.46"; + ENB_PORT_FOR_S1U = 2152; # Spec 2152 + ENB_IPV4_ADDRESS_FOR_X2C = "127.0.0.1"; + ENB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + phy_test_mode = 0; + puSch10xSnr = 160; + puCch10xSnr = 160; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + prach_dtx_threshold = 150; + } +); + +RUs = ( + { + //local_if_name = "enp129s0f0"; + local_if_name = "dpdk"; + sdr_addrs = "softmodem -m 2048 -l 8 -n 2 -b 0000:3b:00.0 --proc-type auto --file-prefix ggg -- -p 0x1"; + #sdr_addrs = "softmodem -l 8 -n 2 -- -p 0x2"; + remote_address = "127.0.0.2"; + local_address = "127.0.0.1"; + local_portc = 50000; + remote_portc = 50000; + local_portd = 50001; + remote_portd = 50001; + local_rf = "no" + tr_preference = "raw_if4p5" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + eNB_instances = [0]; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + #parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + parallel_config = "PARALLEL_SINGLE_THREAD"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + +NETWORK_CONTROLLER : +{ + FLEXRAN_ENABLED = "no"; + FLEXRAN_INTERFACE_NAME = "lo"; + FLEXRAN_IPV4_ADDRESS = "127.0.0.1"; + FLEXRAN_PORT = 2210; + FLEXRAN_CACHE = "/mnt/oai_agent_cache"; + FLEXRAN_AWAIT_RECONF = "no"; +}; + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/benetel-5g.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/benetel-5g.conf new file mode 100644 index 0000000000..27fc90e5e3 --- /dev/null +++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/benetel-5g.conf @@ -0,0 +1,307 @@ +Active_gNBs = ( "gNB-Eurecom-5GNRBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + + cell_type = "CELL_MACRO_GNB"; + + gNB_name = "gNB-Eurecom-5GNRBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ({mcc = 222; mnc = 01; mnc_length = 2;}); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 31; //0; + pdsch_AntennaPorts = 1; + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + +# downlinkConfigCommon + #frequencyInfoDL + # this is is the central frequency of SSB + absoluteFrequencySSB = 640000; //641272 + dl_frequencyBand = 78; + # the carrier frequency is assumed to be in the middle of the carrier, i.e. dl_absoluteFrequencyPointA_kHz + dl_carrierBandwidth*12*SCS_kHz/2 + dl_absoluteFrequencyPointA = 638728; //640000; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 1; + dl_carrierBandwidth = 106; + #initialDownlinkBWP + #genericParameters + # this is RBstart=84,L=13 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 6366; //28875; //6366; #6407; #3384; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 1; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 0; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; + #initialULBWPmappingType + #0=typeA,1=typeB + initialDLBWPmappingType_0 = 0; + #this is SS=1,L=13 + initialDLBWPstartSymbolAndLength_0 = 40; + + initialDLBWPk0_1 = 0; + initialDLBWPmappingType_1 = 0; + #this is SS=2,L=12 + initialDLBWPstartSymbolAndLength_1 = 53; + + initialDLBWPk0_2 = 0; + initialDLBWPmappingType_2 = 0; + #this is SS=1,L=12 + initialDLBWPstartSymbolAndLength_2 = 54; + + initialDLBWPk0_3 = 0; + initialDLBWPmappingType_3 = 0; + #this is SS=1,L=4 //5 (4 is for 43, 5 is for 57) + initialDLBWPstartSymbolAndLength_3 = 57; //43; //57; + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 78; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 1; + ul_carrierBandwidth = 106; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 6366; //28875; //6366; #6407; #3384; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 1; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 4; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 74; + zeroCorrelationZoneConfig = 13; + #preambleReceivedTargetPower = -118; + preambleReceivedTargetPower = -104; +#preamblTransMax (0...10) = (3,4,5,6,7,8,10,20,50,100,200) + preambleTransMax = 6; +#powerRampingStep +# 0=dB0,1=dB2,2=dB4,3=dB6 + powerRampingStep = 2; +#ra_ReponseWindow +#1,2,4,8,10,20,40,80 + ra_ResponseWindow = 5; +#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR +#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen + ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4; +#oneHalf (0..15) 4,8,12,16,...60,64 + ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 14; //15; +#ra_ContentionResolutionTimer +#(0..7) 8,16,24,32,40,48,56,64 + ra_ContentionResolutionTimer = 7; + rsrp_ThresholdSSB = 19; +#prach-RootSequenceIndex_PR +#1 = 839, 2 = 139 + prach_RootSequenceIndex_PR = 1; + prach_RootSequenceIndex = 1; + # SCS for msg1, can only be 15 for 30 kHz < 6 GHz, takes precendence over the one derived from prach-ConfigIndex + # + #msg1_SubcarrierSpacing = 1, + +# restrictedSetConfig +# 0=unrestricted, 1=restricted type A, 2=restricted type B + restrictedSetConfig = 0, + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 2; + initialULBWPmappingType_0 = 1 + # this is SS=0 L=11 + initialULBWPstartSymbolAndLength_0 = 55; + + initialULBWPk2_1 = 2; + initialULBWPmappingType_1 = 1; + # this is SS=0 L=12 + initialULBWPstartSymbolAndLength_1 = 69; + + initialULBWPk2_2 = 7; + initialULBWPmappingType_2 = 1; + # this is SS=10 L=4 + initialULBWPstartSymbolAndLength_2 = 52; + + msg3_DeltaPreamble = 1; + p0_NominalWithGrant =-90; + +# pucch-ConfigCommon setup : +# pucchGroupHopping +# 0 = neither, 1= group hopping, 2=sequence hopping + pucchGroupHopping = 0; + hoppingId = 40; + p0_nominal = -90; +# ssb_PositionsInBurs_BitmapPR +# 1=short, 2=medium, 3=long + ssb_PositionsInBurst_PR = 2; + ssb_PositionsInBurst_Bitmap = 1; #0x80; + +# ssb_periodicityServingCell +# 0 = ms5, 1=ms10, 2=ms20, 3=ms40, 4=ms80, 5=ms160, 6=spare2, 7=spare1 + ssb_periodicityServingCell = 2; + +# dmrs_TypeA_position +# 0 = pos2, 1 = pos3 + dmrs_TypeA_Position = 0; + +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + subcarrierSpacing = 1; + + + #tdd-UL-DL-ConfigurationCommon +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + referenceSubcarrierSpacing = 1; + # pattern1 + # dl_UL_TransmissionPeriodicity + # 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10 + dl_UL_TransmissionPeriodicity = 6; + nrofDownlinkSlots = 7; //8; //7; + nrofDownlinkSymbols = 6; //0; //6; + nrofUplinkSlots = 2; + nrofUplinkSymbols = 4; //0; //4; + + #ssPBCH_BlockPower = 10; + ssPBCH_BlockPower = 10; + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.61.195"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + ///X2 + enable_x2 = "yes"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + target_enb_x2_ip_address = ( + { ipv4 = "127.0.0.1"; + ipv6 = "192:168:30::17"; + preference = "ipv4"; + } + ); + + NETWORK_INTERFACES : + { + + GNB_INTERFACE_NAME_FOR_S1_MME = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1_MME = "192.168.160.146/24"; + GNB_INTERFACE_NAME_FOR_S1U = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1U = "192.168.160.146/24"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + GNB_IPV4_ADDRESS_FOR_X2C = "127.0.0.2/24"; + GNB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + } +); + +RUs = ( + { + local_rf = "no" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 114; + eNB_instances = [0]; + //clock_src = "internal"; + clock_src = "external"; + + local_if_name = "dpdk"; + sdr_addrs = "softmodem -m 2048 -l 6 -n 3 -b 0000:3b:00.1 --proc-type auto --file-prefix hhh -- -p 0x1"; + remote_address = "127.0.0.2"; + local_address = "127.0.0.1"; + local_portc = 50000; + remote_portc = 50000; + local_portd = 50001; + remote_portd = 50001; + tr_preference = "raw_if4p5" + + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + //parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + parallel_config = "PARALLEL_SINGLE_THREAD"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_DISABLE"; + } +); + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band257.tm1.32PRB.usrpx300.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band257.tm1.32PRB.usrpx300.conf index 1363be3bce..983404e459 100644 --- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band257.tm1.32PRB.usrpx300.conf +++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band257.tm1.32PRB.usrpx300.conf @@ -105,8 +105,8 @@ gNBs = #1,2,4,8,10,20,40,80 ra_ResponseWindow = 4; #ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR -#0=oneeighth,1=onefourth,2=half,3=one,4=two,5=four,6=eight,7=sixteen - ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 3; +#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen + ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4; #oneHalf (0..15) 4,8,12,16,...60,64 ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 15; #ra_ContentionResolutionTimer @@ -114,8 +114,8 @@ gNBs = ra_ContentionResolutionTimer = 7; rsrp_ThresholdSSB = 19; #prach-RootSequenceIndex_PR -#0 = 839, 1 = 139 - prach_RootSequenceIndex_PR = 1; +#1 = 839, 2 = 139 + prach_RootSequenceIndex_PR = 2; prach_RootSequenceIndex = 1; # SCS for msg1, can only be 15 for 30 kHz < 6 GHz, takes precendence over the one derived from prach-ConfigIndex # @@ -235,7 +235,7 @@ RUs = ( att_rx = 0; bands = [7]; max_pdschReferenceSignalPower = -27; - max_rxgain = 114; + max_rxgain = 75; eNB_instances = [0]; sdr_addrs = "addr=192.168.10.2,second_addr=192.168.20.2"; if_freq = 5300000000; diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band257.tm1.66PRB.usrpn300.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band257.tm1.66PRB.usrpn300.conf index 1fbc8e30ef..2737357851 100644 --- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band257.tm1.66PRB.usrpn300.conf +++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band257.tm1.66PRB.usrpn300.conf @@ -105,8 +105,8 @@ gNBs = #1,2,4,8,10,20,40,80 ra_ResponseWindow = 4; #ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR -#0=oneeighth,1=onefourth,2=half,3=one,4=two,5=four,6=eight,7=sixteen - ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 3; +#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen + ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4; #oneHalf (0..15) 4,8,12,16,...60,64 ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 15; #ra_ContentionResolutionTimer @@ -114,8 +114,8 @@ gNBs = ra_ContentionResolutionTimer = 7; rsrp_ThresholdSSB = 19; #prach-RootSequenceIndex_PR -#0 = 839, 1 = 139 - prach_RootSequenceIndex_PR = 1; +#1 = 839, 2 = 139 + prach_RootSequenceIndex_PR = 2; prach_RootSequenceIndex = 1; # SCS for msg1, can only be 15 for 30 kHz < 6 GHz, takes precendence over the one derived from prach-ConfigIndex # @@ -235,7 +235,7 @@ RUs = ( att_rx = 0; bands = [7]; max_pdschReferenceSignalPower = -27; - max_rxgain = 114; + max_rxgain = 75; eNB_instances = [0]; sdr_addrs = "type=n300"; } diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band261.tm1.32PRB.usrpn300.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band261.tm1.32PRB.usrpn300.conf index 72a27cc1e7..e171b2faa9 100644 --- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band261.tm1.32PRB.usrpn300.conf +++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band261.tm1.32PRB.usrpn300.conf @@ -235,7 +235,7 @@ RUs = ( att_rx = 0; bands = [7]; max_pdschReferenceSignalPower = -27; - max_rxgain = 114; + max_rxgain = 75; eNB_instances = [0]; sdr_addrs = "addr=192.168.10.2,second_addr=192.168.20.2"; if_freq = 5124520000L; diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.106PRB.slave.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.106PRB.slave.conf new file mode 100644 index 0000000000..81796ada2c --- /dev/null +++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.106PRB.slave.conf @@ -0,0 +1,295 @@ +Active_gNBs = ( "gNB-Eurecom-5GNRBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + + cell_type = "CELL_MACRO_GNB"; + + gNB_name = "gNB-Eurecom-5GNRBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ({mcc = 208; mnc = 93; mnc_length = 2;}); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 0; + pdsch_AntennaPorts = 1; + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + +# downlinkConfigCommon + #frequencyInfoDL + # this is 3600 MHz + 43 PRBs@30kHz SCS (same as initial BWP) + absoluteFrequencySSB = 641032; + dl_frequencyBand = 78; + # this is 3600 MHz + dl_absoluteFrequencyPointA = 640000; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 1; + dl_carrierBandwidth = 106; + #initialDownlinkBWP + #genericParameters + # this is RBstart=0,L=50 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 6366; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 1; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 12; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; + #initialULBWPmappingType + #0=typeA,1=typeB + initialDLBWPmappingType_0 = 0; + #this is SS=1,L=13 + initialDLBWPstartSymbolAndLength_0 = 40; + + initialDLBWPk0_1 = 0; + initialDLBWPmappingType_1 = 0; + #this is SS=2,L=12 + initialDLBWPstartSymbolAndLength_1 = 53; + + initialDLBWPk0_2 = 0; + initialDLBWPmappingType_2 = 0; + #this is SS=1,L=12 + initialDLBWPstartSymbolAndLength_2 = 54; + + initialDLBWPk0_3 = 0; + initialDLBWPmappingType_3 = 0; + #this is SS=1,L=4 + initialDLBWPstartSymbolAndLength_3 = 57; + + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 78; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 1; + ul_carrierBandwidth = 106; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 6366; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 1; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 98; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 13; + preambleReceivedTargetPower = -118; +#preamblTransMax (0...10) = (3,4,5,6,7,8,10,20,50,100,200) + preambleTransMax = 6; +#powerRampingStep +# 0=dB0,1=dB2,2=dB4,3=dB6 + powerRampingStep = 1; +#ra_ReponseWindow +#1,2,4,8,10,20,40,80 + ra_ResponseWindow = 4; +#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR +#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen + ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4; +#oneHalf (0..15) 4,8,12,16,...60,64 + ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 15; +#ra_ContentionResolutionTimer +#(0..7) 8,16,24,32,40,48,56,64 + ra_ContentionResolutionTimer = 7; + rsrp_ThresholdSSB = 19; +#prach-RootSequenceIndex_PR +#1 = 839, 2 = 139 + prach_RootSequenceIndex_PR = 2; + prach_RootSequenceIndex = 1; + # SCS for msg1, can only be 15 for 30 kHz < 6 GHz, takes precendence over the one derived from prach-ConfigIndex + # + msg1_SubcarrierSpacing = 1, + +# restrictedSetConfig +# 0=unrestricted, 1=restricted type A, 2=restricted type B + restrictedSetConfig = 0, + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 2; + initialULBWPmappingType_0 = 1 + # this is SS=0 L=11 + initialULBWPstartSymbolAndLength_0 = 55; + + initialULBWPk2_1 = 2; + initialULBWPmappingType_1 = 1; + # this is SS=0 L=12 + initialULBWPstartSymbolAndLength_1 = 69; + + initialULBWPk2_2 = 7; + initialULBWPmappingType_2 = 1; + # this is SS=10 L=4 + initialULBWPstartSymbolAndLength_2 = 52; + + + msg3_DeltaPreamble = 1; + p0_NominalWithGrant =-90; + +# pucch-ConfigCommon setup : +# pucchGroupHopping +# 0 = neither, 1= group hopping, 2=sequence hopping + pucchGroupHopping = 0; + hoppingId = 40; + p0_nominal = -90; +# ssb_PositionsInBurs_BitmapPR +# 1=short, 2=medium, 3=long + ssb_PositionsInBurst_PR = 2; + ssb_PositionsInBurst_Bitmap = 1; + +# ssb_periodicityServingCell +# 0 = ms5, 1=ms10, 2=ms20, 3=ms40, 4=ms80, 5=ms160, 6=spare2, 7=spare1 + ssb_periodicityServingCell = 2; + +# dmrs_TypeA_position +# 0 = pos2, 1 = pos3 + dmrs_TypeA_Position = 0; + +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + subcarrierSpacing = 1; + + + #tdd-UL-DL-ConfigurationCommon +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + referenceSubcarrierSpacing = 1; + # pattern1 + # dl_UL_TransmissionPeriodicity + # 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10 + dl_UL_TransmissionPeriodicity = 6; + nrofDownlinkSlots = 7; + nrofDownlinkSymbols = 6; + nrofUplinkSlots = 2; + nrofUplinkSymbols = 4; + + ssPBCH_BlockPower = 10; + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.12.26"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + ///X2 + enable_x2 = "yes"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + target_enb_x2_ip_address = ( + { ipv4 = "192.168.12.188"; + ipv6 = "192:168:30::17"; + preference = "ipv4"; + } + ); + + NETWORK_INTERFACES : + { + + GNB_INTERFACE_NAME_FOR_S1_MME = "enp0s31f6"; + GNB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.75/24"; + GNB_INTERFACE_NAME_FOR_S1U = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1U = "192.168.12.75/24"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + + GNB_IPV4_ADDRESS_FOR_X2C = "192.168.12.75/23"; + GNB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 114; + eNB_instances = [0]; + sdr_addrs = "addr=192.168.20.2,mgmt_addr=192.168.20.2"; + clock_src = "internal"; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.usrpb210.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.usrpb210.conf index fdc4894da6..862f0e6303 100644 --- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.usrpb210.conf +++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.usrpb210.conf @@ -21,183 +21,166 @@ gNBs = ////////// Physical parameters: - component_carriers = ( - { - node_function = "3GPP_gNODEB"; - node_timing = "synch_to_ext_device"; - node_synch_ref = 0; - frame_type = "TDD"; - DL_prefix_type = "NORMAL"; - UL_prefix_type = "NORMAL"; - eutra_band = 78; - downlink_frequency = 3510000000L; - uplink_frequency_offset = -120000000; - Nid_cell = 0; - N_RB_DL = 106; - nb_antenna_ports = 1; - nb_antennas_tx = 1; - nb_antennas_rx = 1; - tx_gain = 90; - rx_gain = 125; - MIB_subCarrierSpacingCommon = 30; - MIB_ssb_SubcarrierOffset = 0; - MIB_dmrs_TypeA_Position = 2; - pdcch_ConfigSIB1 = 0; - SIB1_frequencyOffsetSSB = "khz5"; - SIB1_ssb_PeriodicityServingCell = 5; - SIB1_ss_PBCH_BlockPower = -60; - absoluteFrequencySSB = 0; - DL_FreqBandIndicatorNR = 15; - DL_absoluteFrequencyPointA = 15; - DL_offsetToCarrier = 15; - DL_SCS_SubcarrierSpacing = "kHz30"; - DL_SCS_SpecificCarrier_k0 = 0; - DL_carrierBandwidth = 15; - DL_locationAndBandwidth = 15; - DL_BWP_SubcarrierSpacing = "kHz30"; - DL_BWP_prefix_type = "NORMAL"; - UL_FreqBandIndicatorNR = 15; - UL_absoluteFrequencyPointA = 13; - UL_additionalSpectrumEmission = 3; - UL_p_Max = -1; - UL_frequencyShift7p5khz = "TRUE"; - UL_offsetToCarrier = 10; - UL_SCS_SubcarrierSpacing = "kHz30"; - UL_SCS_SpecificCarrier_k0 = 0; - UL_carrierBandwidth = 15; - UL_locationAndBandwidth = 15; - UL_BWP_SubcarrierSpacing = "kHz30"; - UL_BWP_prefix_type = "NORMAL"; - UL_timeAlignmentTimerCommon = "infinity"; - ServingCellConfigCommon_n_TimingAdvanceOffset = "n0" - ServingCellConfigCommon_ssb_PositionsInBurst_PR = 0x01; - ServingCellConfigCommon_ssb_periodicityServingCell = 10; - ServingCellConfigCommon_dmrs_TypeA_Position = 2; - NIA_SubcarrierSpacing = "kHz15"; - ServingCellConfigCommon_ss_PBCH_BlockPower = -60; - referenceSubcarrierSpacing = "kHz15"; - dl_UL_TransmissionPeriodicity = "ms0p5"; - nrofDownlinkSlots = 10; - nrofDownlinkSymbols = 10; - nrofUplinkSlots = 10; - nrofUplinkSymbols = 10; - rach_totalNumberOfRA_Preambles = 63; - rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_choice = "oneEighth"; - rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneEighth = 4; - rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneFourth = 8; - rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneHalf = 16; - rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_one = 24; - rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_two = 32; - rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_four = 8; - rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_eight = 4; - rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_sixteen = 2; - rach_groupBconfigured = "ENABLE"; - rach_ra_Msg3SizeGroupA = 56; - rach_messagePowerOffsetGroupB = "dB0"; - rach_numberOfRA_PreamblesGroupA = 32; - rach_ra_ContentionResolutionTimer = 8; - rsrp_ThresholdSSB = 64; - rsrp_ThresholdSSB_SUL = 64; - prach_RootSequenceIndex_choice = "l839"; - prach_RootSequenceIndex_l839 = 0; - prach_RootSequenceIndex_l139 = 0; - prach_msg1_SubcarrierSpacing = "kHz30"; - restrictedSetConfig = "unrestrictedSet"; - msg3_transformPrecoding = "ENABLE"; - prach_ConfigurationIndex = 10; - prach_msg1_FDM = "one"; - prach_msg1_FrequencyStart = 10; - zeroCorrelationZoneConfig = 10; - preambleReceivedTargetPower = -150; - preambleTransMax = 6; - powerRampingStep = "dB0"; - ra_ResponseWindow = 8; - groupHoppingEnabledTransformPrecoding = "ENABLE"; - msg3_DeltaPreamble = 0; - p0_NominalWithGrant = 0; - PUSCH_TimeDomainResourceAllocation_k2 = 0; - PUSCH_TimeDomainResourceAllocation_mappingType = "typeA"; - PUSCH_TimeDomainResourceAllocation_startSymbolAndLength = 0; - pucch_ResourceCommon = 0; - pucch_GroupHopping = "neither"; - hoppingId = 0; - p0_nominal = -30; - PDSCH_TimeDomainResourceAllocation_k0 = 2; - PDSCH_TimeDomainResourceAllocation_mappingType = "typeA"; - PDSCH_TimeDomainResourceAllocation_startSymbolAndLength = 0; - rateMatchPatternId = 0; - RateMatchPattern_patternType = "bitmaps"; - symbolsInResourceBlock = "oneSlot"; - periodicityAndPattern = 2; - RateMatchPattern_controlResourceSet = 5; - RateMatchPattern_subcarrierSpacing = "kHz30"; - RateMatchPattern_mode = "dynamic"; - controlResourceSetZero = 0; - searchSpaceZero = 0; - searchSpaceSIB1 = 10; - searchSpaceOtherSystemInformation = 10; - pagingSearchSpace = 10; - ra_SearchSpace = 10; - PDCCH_common_controlResourceSetId = 5; - PDCCH_common_ControlResourceSet_duration = 2; - PDCCH_cce_REG_MappingType = "nonInterleaved"; - PDCCH_reg_BundleSize = 3; - PDCCH_interleaverSize = 3; - PDCCH_shiftIndex = 10; - PDCCH_precoderGranularity = "sameAsREG-bundle"; - PDCCH_TCI_StateId = 32; - tci_PresentInDCI = "ENABLE"; - PDCCH_DMRS_ScramblingID = 0; - SearchSpaceId = 10; - commonSearchSpaces_controlResourceSetId = 5; - SearchSpace_monitoringSlotPeriodicityAndOffset_choice = "sl1"; - SearchSpace_monitoringSlotPeriodicityAndOffset_value = 0; - SearchSpace_duration = 2; - SearchSpace_nrofCandidates_aggregationLevel1 = 0; - SearchSpace_nrofCandidates_aggregationLevel2 = 0; - SearchSpace_nrofCandidates_aggregationLevel4 = 0; - SearchSpace_nrofCandidates_aggregationLevel8 = 0; - SearchSpace_nrofCandidates_aggregationLevel16 = 0; - SearchSpace_searchSpaceType = "common"; - Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel1 = 1; - Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel2 = 1; - Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel4 = 1; - Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel8 = 1; - Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel16 = 1; - Common_dci_Format2_3_monitoringPeriodicity = 1; - Common_dci_Format2_3_nrofPDCCH_Candidates = 1; - ue_Specific__dci_Formats = "formats0-0-And-1-0"; - RateMatchPatternLTE_CRS_carrierFreqDL = 6; - RateMatchPatternLTE_CRS_carrierBandwidthDL = 6; - RateMatchPatternLTE_CRS_nrofCRS_Ports = 1; - RateMatchPatternLTE_CRS_v_Shift = 0; - RateMatchPatternLTE_CRS_radioframeAllocationPeriod = 1; - RateMatchPatternLTE_CRS_radioframeAllocationOffset = 0; - RateMatchPatternLTE_CRS_subframeAllocation_choice = "oneFrame"; - } - ); - - - srb1_parameters : + ssb_SubcarrierOffset = 0; + pdsch_AntennaPorts = 1; + + servingCellConfigCommon = ( { - # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500] - timer_poll_retransmit = 80; + #spCellConfigCommon - # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200] - timer_reordering = 35; + physCellId = 0; - # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500] - timer_status_prohibit = 0; +# downlinkConfigCommon + #frequencyInfoDL + # this is 3600 MHz + 43 PRBs@30kHz SCS (same as initial BWP) + absoluteFrequencySSB = 641032; + dl_frequencyBand = 78; + # this is 3600 MHz + dl_absoluteFrequencyPointA = 640000; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 1; + dl_carrierBandwidth = 106; + #initialDownlinkBWP + #genericParameters + # this is RBstart=0,L=50 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 13475; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 1; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 12; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; + #initialULBWPmappingType + #0=typeA,1=typeB + initialDLBWPmappingType_0 = 0; + #this is SS=2,L=3 + initialDLBWPstartSymbolAndLength_0 = 40; - # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)] - poll_pdu = 4; + initialDLBWPk0_1 = 0; + initialDLBWPmappingType_1 = 0; + #this is SS=2,L=12 + initialDLBWPstartSymbolAndLength_1 = 53; - # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)] - poll_byte = 99999; + initialDLBWPk0_2 = 0; + initialDLBWPmappingType_2 = 0; + #this is SS=1,L=12 + initialDLBWPstartSymbolAndLength_2 = 54; + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 78; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 1; + ul_carrierBandwidth = 106; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 13475; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 1; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 98; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 13; + preambleReceivedTargetPower = -118; +#preamblTransMax (0...10) = (3,4,5,6,7,8,10,20,50,100,200) + preambleTransMax = 6; +#powerRampingStep +# 0=dB0,1=dB2,2=dB4,3=dB6 + powerRampingStep = 1; +#ra_ReponseWindow +#1,2,4,8,10,20,40,80 + ra_ResponseWindow = 4; +#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR +#0=oneeighth,1=onefourth,2=half,3=one,4=two,5=four,6=eight,7=sixteen + ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 3; +#oneHalf (0..15) 4,8,12,16,...60,64 + ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 15; +#ra_ContentionResolutionTimer +#(0..7) 8,16,24,32,40,48,56,64 + ra_ContentionResolutionTimer = 7; + rsrp_ThresholdSSB = 19; +#prach-RootSequenceIndex_PR +#0 = 839, 1 = 139 + prach_RootSequenceIndex_PR = 1; + prach_RootSequenceIndex = 1; + # SCS for msg1, can only be 15 for 30 kHz < 6 GHz, takes precendence over the one derived from prach-ConfigIndex + # + msg1_SubcarrierSpacing = 1, + +# restrictedSetConfig +# 0=unrestricted, 1=restricted type A, 2=restricted type B + restrictedSetConfig = 0, + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 2; + initialULBWPmappingType_0 = 1 + # this is SS=0 L=11 + initialULBWPstartSymbolAndLength_0 = 55; + + initialULBWPk2_1 = 2; + initialULBWPmappingType_1 = 1; + # this is SS=0 L=12 + initialULBWPstartSymbolAndLength_1 = 69; + + + msg3_DeltaPreamble = 1; + p0_NominalWithGrant =-90; + +# pucch-ConfigCommon setup : +# pucchGroupHopping +# 0 = neither, 1= group hopping, 2=sequence hopping + pucchGroupHopping = 0; + hoppingId = 40; + p0_nominal = -90; +# ssb_PositionsInBurs_BitmapPR +# 1=short, 2=medium, 3=long + ssb_PositionsInBurst_PR = 2; + ssb_PositionsInBurst_Bitmap = 1; + +# ssb_periodicityServingCell +# 0 = ms5, 1=ms10, 2=ms20, 3=ms40, 4=ms80, 5=ms160, 6=spare2, 7=spare1 + ssb_periodicityServingCell = 2; + +# dmrs_TypeA_position +# 0 = pos2, 1 = pos3 + dmrs_TypeA_Position = 0; + +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + subcarrierSpacing = 1; + + + #tdd-UL-DL-ConfigurationCommon +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + referenceSubcarrierSpacing = 1; + # pattern1 + # dl_UL_TransmissionPeriodicity + # 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10 + dl_UL_TransmissionPeriodicity = 6; + nrofDownlinkSlots = 7; + nrofDownlinkSymbols = 6; + nrofUplinkSlots = 2; + nrofUplinkSymbols = 4; + + ssPBCH_BlockPower = 10; + } + + ); - # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32] - max_retx_threshold = 4; - } # ------- SCTP definitions SCTP : @@ -255,7 +238,7 @@ RUs = ( max_rxgain = 114; eNB_instances = [0]; sdr_addrs = "type=b200"; - + #clock_src = "external"; } ); @@ -264,20 +247,10 @@ THREAD_STRUCT = ( #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" parallel_config = "PARALLEL_SINGLE_THREAD"; #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" - worker_config = "WORKER_DISABLE"; + worker_config = "WORKER_ENABLE"; } ); -NETWORK_CONTROLLER : -{ - FLEXRAN_ENABLED = "no"; - FLEXRAN_INTERFACE_NAME = "lo"; - FLEXRAN_IPV4_ADDRESS = "127.0.0.1"; - FLEXRAN_PORT = 2210; - FLEXRAN_CACHE = "/mnt/oai_agent_cache"; - FLEXRAN_AWAIT_RECONF = "no"; -}; - log_config : { global_log_level ="info"; diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.usrpn300.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.usrpn300.conf index fed15739cf..aeb9e2be88 100644 --- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.usrpn300.conf +++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.usrpn300.conf @@ -46,7 +46,7 @@ gNBs = #initialDownlinkBWP #genericParameters # this is RBstart=0,L=50 (275*(L-1))+RBstart - initialDLBWPlocationAndBandwidth = 13475; + initialDLBWPlocationAndBandwidth = 6366; # subcarrierSpacing # 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 initialDLBWPsubcarrierSpacing = 1; @@ -59,7 +59,7 @@ gNBs = #initialULBWPmappingType #0=typeA,1=typeB initialDLBWPmappingType_0 = 0; - #this is SS=2,L=3 + #this is SS=1,L=13 initialDLBWPstartSymbolAndLength_0 = 40; initialDLBWPk0_1 = 0; @@ -71,6 +71,12 @@ gNBs = initialDLBWPmappingType_2 = 0; #this is SS=1,L=12 initialDLBWPstartSymbolAndLength_2 = 54; + + initialDLBWPk0_3 = 0; + initialDLBWPmappingType_3 = 0; + #this is SS=1,L=4 + initialDLBWPstartSymbolAndLength_3 = 57; + #uplinkConfigCommon #frequencyInfoUL ul_frequencyBand = 78; @@ -83,7 +89,7 @@ gNBs = pMax = 20; #initialUplinkBWP #genericParameters - initialULBWPlocationAndBandwidth = 13475; + initialULBWPlocationAndBandwidth = 6366; # subcarrierSpacing # 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 initialULBWPsubcarrierSpacing = 1; @@ -105,8 +111,8 @@ gNBs = #1,2,4,8,10,20,40,80 ra_ResponseWindow = 4; #ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR -#0=oneeighth,1=onefourth,2=half,3=one,4=two,5=four,6=eight,7=sixteen - ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 3; +#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen + ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4; #oneHalf (0..15) 4,8,12,16,...60,64 ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 15; #ra_ContentionResolutionTimer @@ -114,16 +120,16 @@ gNBs = ra_ContentionResolutionTimer = 7; rsrp_ThresholdSSB = 19; #prach-RootSequenceIndex_PR -#0 = 839, 1 = 139 - prach_RootSequenceIndex_PR = 1; +#1 = 839, 2 = 139 + prach_RootSequenceIndex_PR = 2; prach_RootSequenceIndex = 1; # SCS for msg1, can only be 15 for 30 kHz < 6 GHz, takes precendence over the one derived from prach-ConfigIndex # msg1_SubcarrierSpacing = 1, - # restrictedSetConfig # 0=unrestricted, 1=restricted type A, 2=restricted type B restrictedSetConfig = 0, + # pusch-ConfigCommon (up to 16 elements) initialULBWPk2_0 = 2; initialULBWPmappingType_0 = 1 @@ -135,6 +141,11 @@ gNBs = # this is SS=0 L=12 initialULBWPstartSymbolAndLength_1 = 69; + initialULBWPk2_2 = 7; + initialULBWPmappingType_2 = 1; + # this is SS=10 L=4 + initialULBWPstartSymbolAndLength_2 = 52; + msg3_DeltaPreamble = 1; p0_NominalWithGrant =-90; @@ -235,9 +246,11 @@ RUs = ( att_rx = 0; bands = [7]; max_pdschReferenceSignalPower = -27; - max_rxgain = 114; + max_rxgain = 75; eNB_instances = [0]; - sdr_addrs = "addr=192.168.10.2,mgmt_addr=192.168.10.2,second_addr=192.168.20.2"; + #beamforming 1x4 matrix: + bf_weights = [0x00007fff, 0x0000, 0x0000, 0x0000]; + sdr_addrs = "addr=192.168.10.2,mgmt_addr=192.168.10.2,second_addr=192.168.20.2"; clock_src = "external"; } ); diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.usrpx300.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.usrpx300.conf index 06aa4f6f9f..0b04dc82d1 100644 --- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.usrpx300.conf +++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.106PRB.usrpx300.conf @@ -33,10 +33,10 @@ gNBs = # downlinkConfigCommon #frequencyInfoDL # this is 3600 MHz + 43 PRBs@30kHz SCS (same as initial BWP) - absoluteFrequencySSB = 633032; + absoluteFrequencySSB = 641032; dl_frequencyBand = 78; - # this is 3480 MHz - dl_absoluteFrequencyPointA = 632000; + # this is 3600 MHz + dl_absoluteFrequencyPointA = 640000; #scs-SpecificCarrierList dl_offstToCarrier = 0; # subcarrierSpacing @@ -59,7 +59,7 @@ gNBs = #initialULBWPmappingType #0=typeA,1=typeB initialDLBWPmappingType_0 = 0; - #this is SS=2,L=3 + #this is SS=1,L=13 initialDLBWPstartSymbolAndLength_0 = 40; initialDLBWPk0_1 = 0; @@ -71,6 +71,11 @@ gNBs = initialDLBWPmappingType_2 = 0; #this is SS=1,L=12 initialDLBWPstartSymbolAndLength_2 = 54; + + initialDLBWPk0_3 = 0; + initialDLBWPmappingType_3 = 0; + #this is SS=1,L=5 + initialDLBWPstartSymbolAndLength_3 = 57; #uplinkConfigCommon #frequencyInfoUL ul_frequencyBand = 78; @@ -105,8 +110,8 @@ gNBs = #1,2,4,8,10,20,40,80 ra_ResponseWindow = 4; #ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR -#0=oneeighth,1=onefourth,2=half,3=one,4=two,5=four,6=eight,7=sixteen - ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 3; +#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen + ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4; #oneHalf (0..15) 4,8,12,16,...60,64 ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 15; #ra_ContentionResolutionTimer @@ -114,8 +119,8 @@ gNBs = ra_ContentionResolutionTimer = 7; rsrp_ThresholdSSB = 19; #prach-RootSequenceIndex_PR -#0 = 839, 1 = 139 - prach_RootSequenceIndex_PR = 1; +#1 = 839, 2 = 139 + prach_RootSequenceIndex_PR = 2; prach_RootSequenceIndex = 1; # SCS for msg1, can only be 15 for 30 kHz < 6 GHz, takes precendence over the one derived from prach-ConfigIndex # @@ -148,7 +153,7 @@ gNBs = # ssb_PositionsInBurs_BitmapPR # 1=short, 2=medium, 3=long ssb_PositionsInBurst_PR = 2; - ssb_PositionsInBurst_Bitmap = 255; + ssb_PositionsInBurst_Bitmap = 1; # ssb_periodicityServingCell # 0 = ms5, 1=ms10, 2=ms20, 3=ms40, 4=ms80, 5=ms160, 6=spare2, 7=spare1 @@ -237,7 +242,8 @@ RUs = ( max_pdschReferenceSignalPower = -27; max_rxgain = 114; eNB_instances = [0]; - sdr_addrs = "type=x300"; + sdr_addrs = "type=x300"; + clock_src = "external"; } ); diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.217PRB.usrpn300.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.217PRB.usrpn300.conf index b82c455ef4..9420c488ec 100644 --- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.217PRB.usrpn300.conf +++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.217PRB.usrpn300.conf @@ -59,7 +59,7 @@ gNBs = #initialULBWPmappingType #0=typeA,1=typeB initialDLBWPmappingType_0 = 0; - #this is SS=2,L=3 + #this is SS=1,L=13 initialDLBWPstartSymbolAndLength_0 = 40; initialDLBWPk0_1 = 0; @@ -71,6 +71,11 @@ gNBs = initialDLBWPmappingType_2 = 0; #this is SS=1,L=12 initialDLBWPstartSymbolAndLength_2 = 54; + + initialDLBWPk0_3 = 0; + initialDLBWPmappingType_3 = 0; + #this is SS=1,L=5 + initialDLBWPstartSymbolAndLength_3 = 57; #uplinkConfigCommon #frequencyInfoUL ul_frequencyBand = 78; @@ -105,8 +110,8 @@ gNBs = #1,2,4,8,10,20,40,80 ra_ResponseWindow = 4; #ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR -#0=oneeighth,1=onefourth,2=half,3=one,4=two,5=four,6=eight,7=sixteen - ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 3; +#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen + ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4; #oneHalf (0..15) 4,8,12,16,...60,64 ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 15; #ra_ContentionResolutionTimer @@ -114,8 +119,8 @@ gNBs = ra_ContentionResolutionTimer = 7; rsrp_ThresholdSSB = 19; #prach-RootSequenceIndex_PR -#0 = 839, 1 = 139 - prach_RootSequenceIndex_PR = 1; +#1 = 839, 2 = 139 + prach_RootSequenceIndex_PR = 2; prach_RootSequenceIndex = 1; # SCS for msg1, can only be 15 for 30 kHz < 6 GHz, takes precendence over the one derived from prach-ConfigIndex # @@ -249,7 +254,7 @@ RUs = ( att_rx = 0; bands = [7]; max_pdschReferenceSignalPower = -27; - max_rxgain = 114; + max_rxgain = 75; eNB_instances = [0]; sdr_addrs = "addr=192.168.10.2,mgmt_addr=192.168.10.2"; clock_src = "external"; diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.217PRB.usrpx300.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.217PRB.usrpx300.conf index 4cbec5b86e..c907dcfe8d 100644 --- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.217PRB.usrpx300.conf +++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.217PRB.usrpx300.conf @@ -59,7 +59,7 @@ gNBs = #initialULBWPmappingType #0=typeA,1=typeB initialDLBWPmappingType_0 = 0; - #this is SS=2,L=3 + #this is SS=1,L=13 initialDLBWPstartSymbolAndLength_0 = 40; initialDLBWPk0_1 = 0; @@ -71,6 +71,11 @@ gNBs = initialDLBWPmappingType_2 = 0; #this is SS=1,L=12 initialDLBWPstartSymbolAndLength_2 = 54; + + initialDLBWPk0_3 = 0; + initialDLBWPmappingType_3 = 0; + #this is SS=1,L=5 + initialDLBWPstartSymbolAndLength_3 = 57; #uplinkConfigCommon #frequencyInfoUL ul_frequencyBand = 78; @@ -105,8 +110,8 @@ gNBs = #1,2,4,8,10,20,40,80 ra_ResponseWindow = 4; #ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR -#0=oneeighth,1=onefourth,2=half,3=one,4=two,5=four,6=eight,7=sixteen - ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 3; +#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen + ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4; #oneHalf (0..15) 4,8,12,16,...60,64 ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 15; #ra_ContentionResolutionTimer @@ -114,8 +119,8 @@ gNBs = ra_ContentionResolutionTimer = 7; rsrp_ThresholdSSB = 19; #prach-RootSequenceIndex_PR -#0 = 839, 1 = 139 - prach_RootSequenceIndex_PR = 1; +#1 = 839, 2 = 139 + prach_RootSequenceIndex_PR = 2; prach_RootSequenceIndex = 1; # SCS for msg1, can only be 15 for 30 kHz < 6 GHz, takes precendence over the one derived from prach-ConfigIndex # diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.273PRB.usrpn300.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.273PRB.usrpn300.conf index 08bfeea7ee..0a6268f8a8 100644 --- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.273PRB.usrpn300.conf +++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band78.tm1.273PRB.usrpn300.conf @@ -59,7 +59,7 @@ gNBs = #initialULBWPmappingType #0=typeA,1=typeB initialDLBWPmappingType_0 = 0; - #this is SS=2,L=3 + #this is SS=1,L=13 initialDLBWPstartSymbolAndLength_0 = 40; initialDLBWPk0_1 = 0; @@ -71,6 +71,11 @@ gNBs = initialDLBWPmappingType_2 = 0; #this is SS=1,L=12 initialDLBWPstartSymbolAndLength_2 = 54; + + initialDLBWPk0_3 = 0; + initialDLBWPmappingType_3 = 0; + #this is SS=1,L=5 + initialDLBWPstartSymbolAndLength_3 = 57; #uplinkConfigCommon #frequencyInfoUL ul_frequencyBand = 78; @@ -105,8 +110,8 @@ gNBs = #1,2,4,8,10,20,40,80 ra_ResponseWindow = 4; #ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR -#0=oneeighth,1=onefourth,2=half,3=one,4=two,5=four,6=eight,7=sixteen - ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 3; +#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen + ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4; #oneHalf (0..15) 4,8,12,16,...60,64 ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 15; #ra_ContentionResolutionTimer @@ -114,8 +119,8 @@ gNBs = ra_ContentionResolutionTimer = 7; rsrp_ThresholdSSB = 19; #prach-RootSequenceIndex_PR -#0 = 839, 1 = 139 - prach_RootSequenceIndex_PR = 1; +#1 = 839, 2 = 139 + prach_RootSequenceIndex_PR = 2; prach_RootSequenceIndex = 1; # SCS for msg1, can only be 15 for 30 kHz < 6 GHz, takes precendence over the one derived from prach-ConfigIndex # @@ -235,7 +240,7 @@ RUs = ( att_rx = 0; bands = [7]; max_pdschReferenceSignalPower = -27; - max_rxgain = 114; + max_rxgain = 75; eNB_instances = [0]; sdr_addrs = "addr=192.168.10.2,mgmt_addr=192.168.10.2,second_addr=192.168.20.2"; clock_src = "external"; diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/testing_enb.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/testing_enb.conf new file mode 100644 index 0000000000..4c0d346360 --- /dev/null +++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/testing_enb.conf @@ -0,0 +1,281 @@ +Active_eNBs = ( "eNB-Eurecom-LTEBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +eNBs = +( + { + # real_time choice in {hard, rt-preempt, no} + real_time = "no"; + ////////// Identification parameters: + eNB_ID = 0xe01; + + cell_type = "CELL_MACRO_ENB"; + + eNB_name = "eNB-Eurecom-LTEBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + plmn_list = ( + { mcc = 222; mnc = 01; mnc_length = 2; } + ); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + component_carriers = ( + { + node_function = "eNodeB_3GPP"; + node_timing = "synch_to_ext_device"; + node_synch_ref = 0; + nb_antenna_ports = 1; + ue_TransmissionMode = 1; + frame_type = "FDD"; + tdd_config = 3; + tdd_config_s = 0; + prefix_type = "NORMAL"; + eutra_band = 7; + downlink_frequency = 2680000000L; //2655000000L; + uplink_frequency_offset = -120000000; + + Nid_cell = 0; + N_RB_DL = 25; //100; + Nid_cell_mbsfn = 0; + nb_antennas_tx = 1; + nb_antennas_rx = 1; + prach_root = 0; + tx_gain = 90; + rx_gain = 115; + pbch_repetition = "FALSE"; + prach_config_index = 0; + prach_high_speed = "DISABLE"; + prach_zero_correlation = 1; + prach_freq_offset = 2; + pucch_delta_shift = 1; + pucch_nRB_CQI = 0; + pucch_nCS_AN = 0; + pucch_n1_AN = 0; + pdsch_referenceSignalPower = -29; + pdsch_p_b = 0; + pusch_n_SB = 1; + pusch_enable64QAM = "DISABLE"; + pusch_hoppingMode = "interSubFrame"; + pusch_hoppingOffset = 0; + pusch_groupHoppingEnabled = "ENABLE"; + pusch_groupAssignment = 0; + pusch_sequenceHoppingEnabled = "DISABLE"; + pusch_nDMRS1 = 1; + phich_duration = "NORMAL"; + phich_resource = "ONESIXTH"; + srs_enable = "DISABLE"; + /* srs_BandwidthConfig =; + srs_SubframeConfig =; + srs_ackNackST =; + srs_MaxUpPts =;*/ + + pusch_p0_Nominal = -96; + pusch_alpha = "AL1"; + pucch_p0_Nominal = -96; + msg3_delta_Preamble = 6; + pucch_deltaF_Format1 = "deltaF2"; + pucch_deltaF_Format1b = "deltaF3"; + pucch_deltaF_Format2 = "deltaF0"; + pucch_deltaF_Format2a = "deltaF0"; + pucch_deltaF_Format2b = "deltaF0"; + + rach_numberOfRA_Preambles = 64; + rach_preamblesGroupAConfig = "DISABLE"; +/* + rach_sizeOfRA_PreamblesGroupA = ; + rach_messageSizeGroupA = ; + rach_messagePowerOffsetGroupB = ; +*/ + rach_powerRampingStep = 4; + rach_preambleInitialReceivedTargetPower = -108; + rach_preambleTransMax = 10; + rach_raResponseWindowSize = 10; + rach_macContentionResolutionTimer = 48; + rach_maxHARQ_Msg3Tx = 4; + + pcch_default_PagingCycle = 128; + pcch_nB = "oneT"; + bcch_modificationPeriodCoeff = 2; + ue_TimersAndConstants_t300 = 1000; + ue_TimersAndConstants_t301 = 1000; + ue_TimersAndConstants_t310 = 1000; + ue_TimersAndConstants_t311 = 10000; + ue_TimersAndConstants_n310 = 20; + ue_TimersAndConstants_n311 = 1; + + //Parameters for SIB18 + rxPool_sc_CP_Len = "normal"; + rxPool_sc_Period = "sf40"; + rxPool_data_CP_Len = "normal"; + rxPool_ResourceConfig_prb_Num = 20; + rxPool_ResourceConfig_prb_Start = 5; + rxPool_ResourceConfig_prb_End = 44; + rxPool_ResourceConfig_offsetIndicator_present = "prSmall"; + rxPool_ResourceConfig_offsetIndicator_choice = 0; + rxPool_ResourceConfig_subframeBitmap_present = "prBs40"; + rxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "00000000000000000000"; + rxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5; + rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0; +/* rxPool_dataHoppingConfig_hoppingParameter = 0; + rxPool_dataHoppingConfig_numSubbands = "ns1"; + rxPool_dataHoppingConfig_rbOffset = 0; + rxPool_commTxResourceUC-ReqAllowed = "TRUE"; +*/ + // Parameters for SIB19 + discRxPool_cp_Len = "normal" + discRxPool_discPeriod = "rf32" + discRxPool_numRetx = 1; + discRxPool_numRepetition = 2; + discRxPool_ResourceConfig_prb_Num = 5; + discRxPool_ResourceConfig_prb_Start = 3; + discRxPool_ResourceConfig_prb_End = 21; + discRxPool_ResourceConfig_offsetIndicator_present = "prSmall"; + discRxPool_ResourceConfig_offsetIndicator_choice = 0; + discRxPool_ResourceConfig_subframeBitmap_present = "prBs40"; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "f0ffffffff"; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0; + + } + ); + + srb1_parameters : + { + # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500] + timer_poll_retransmit = 80; + + # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200] + timer_reordering = 35; + + # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500] + timer_status_prohibit = 0; + + # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)] + poll_pdu = 4; + + # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)] + poll_byte = 99999; + + # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32] + max_retx_threshold = 4; + } + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + enable_measurement_reports = "yes"; + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.18.99"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + ///X2 + enable_x2 = "yes"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + + NETWORK_INTERFACES : + { + ENB_INTERFACE_NAME_FOR_S1_MME = "eth1"; + ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.18.199/24"; + + ENB_INTERFACE_NAME_FOR_S1U = "eth1"; + ENB_IPV4_ADDRESS_FOR_S1U = "192.168.18.199/24"; + ENB_PORT_FOR_S1U = 2152; # Spec 2152 + + ENB_IPV4_ADDRESS_FOR_X2C = "192.168.18.199/24"; + ENB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="high"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="debug"; + rlc_log_verbosity ="high"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="high"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + phy_test_mode = 0; + puSch10xSnr = 160; + puCch10xSnr = 160; + } +); + +THREAD_STRUCT = ( + { + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + worker_config = "ENABLE"; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 118; + eNB_instances = [0]; + clock_src = "external"; + } +); + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="high"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="high"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="high"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/testing_gnb.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/testing_gnb.conf new file mode 100644 index 0000000000..2eed408b53 --- /dev/null +++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/testing_gnb.conf @@ -0,0 +1,295 @@ +Active_gNBs = ( "gNB-Eurecom-5GNRBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + + cell_type = "CELL_MACRO_GNB"; + + gNB_name = "gNB-Eurecom-5GNRBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ({mcc = 222; mnc = 01; mnc_length = 2;}); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 31; //0; + pdsch_AntennaPorts = 1; + pusch_TargetSNRx10 = 200; + pucch_TargetSNRx10 = 200; + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + +# downlinkConfigCommon + #frequencyInfoDL + # this is 3600 MHz + 84 PRBs@30kHz SCS (same as initial BWP) + absoluteFrequencySSB = 641272; //641032; #641968; 641968=start of ssb at 3600MHz + 82 RBs 641032=center of SSB at center of cell + dl_frequencyBand = 78; + # this is 3600 MHz + dl_absoluteFrequencyPointA = 640000; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 1; + dl_carrierBandwidth = 106; + #initialDownlinkBWP + #genericParameters + # this is RBstart=84,L=13 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 6366; //28875; //6366; #6407; #3384; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 1; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 0; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; + #initialULBWPmappingType + #0=typeA,1=typeB + initialDLBWPmappingType_0 = 0; + #this is SS=1,L=13 + initialDLBWPstartSymbolAndLength_0 = 40; + + initialDLBWPk0_1 = 0; + initialDLBWPmappingType_1 = 0; + #this is SS=2,L=12 + initialDLBWPstartSymbolAndLength_1 = 53; + + initialDLBWPk0_2 = 0; + initialDLBWPmappingType_2 = 0; + #this is SS=1,L=12 + initialDLBWPstartSymbolAndLength_2 = 54; + + initialDLBWPk0_3 = 0; + initialDLBWPmappingType_3 = 0; + #this is SS=1,L=4 //5 (4 is for 43, 5 is for 57) + initialDLBWPstartSymbolAndLength_3 = 57; //43; //57; + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 78; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 1; + ul_carrierBandwidth = 106; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 6366; //28875; //6366; #6407; #3384; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 1; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 98; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 13; + preambleReceivedTargetPower = -100; +#preamblTransMax (0...10) = (3,4,5,6,7,8,10,20,50,100,200) + preambleTransMax = 6; +#powerRampingStep +# 0=dB0,1=dB2,2=dB4,3=dB6 + powerRampingStep = 1; +#ra_ReponseWindow +#1,2,4,8,10,20,40,80 + ra_ResponseWindow = 5; +#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR +#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen + ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4; +#oneHalf (0..15) 4,8,12,16,...60,64 + ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 14; //15; +#ra_ContentionResolutionTimer +#(0..7) 8,16,24,32,40,48,56,64 + ra_ContentionResolutionTimer = 7; + rsrp_ThresholdSSB = 19; +#prach-RootSequenceIndex_PR +#1 = 839, 2 = 139 + prach_RootSequenceIndex_PR = 2; + prach_RootSequenceIndex = 1; + # SCS for msg1, can only be 15 for 30 kHz < 6 GHz, takes precendence over the one derived from prach-ConfigIndex + # + msg1_SubcarrierSpacing = 1, + +# restrictedSetConfig +# 0=unrestricted, 1=restricted type A, 2=restricted type B + restrictedSetConfig = 0, + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 2; + initialULBWPmappingType_0 = 1 + # this is SS=0 L=12 + initialULBWPstartSymbolAndLength_0 = 55; + + initialULBWPk2_1 = 2; + initialULBWPmappingType_1 = 1; + # this is SS=0 L=11 + initialULBWPstartSymbolAndLength_1 = 69; + + initialULBWPk2_2 = 7; + initialULBWPmappingType_2 = 1; + # this is SS=10 L=4 + initialULBWPstartSymbolAndLength_2 = 52; + + msg3_DeltaPreamble = 1; + p0_NominalWithGrant =-90; + +# pucch-ConfigCommon setup : +# pucchGroupHopping +# 0 = neither, 1= group hopping, 2=sequence hopping + pucchGroupHopping = 0; + hoppingId = 40; + p0_nominal = -90; +# ssb_PositionsInBurs_BitmapPR +# 1=short, 2=medium, 3=long + ssb_PositionsInBurst_PR = 2; + ssb_PositionsInBurst_Bitmap = 1; #0x80; + +# ssb_periodicityServingCell +# 0 = ms5, 1=ms10, 2=ms20, 3=ms40, 4=ms80, 5=ms160, 6=spare2, 7=spare1 + ssb_periodicityServingCell = 2; + +# dmrs_TypeA_position +# 0 = pos2, 1 = pos3 + dmrs_TypeA_Position = 0; + +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + subcarrierSpacing = 1; + + + #tdd-UL-DL-ConfigurationCommon +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + referenceSubcarrierSpacing = 1; + # pattern1 + # dl_UL_TransmissionPeriodicity + # 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10 + dl_UL_TransmissionPeriodicity = 6; + nrofDownlinkSlots = 7; //8; //7; + nrofDownlinkSymbols = 6; //0; //6; + nrofUplinkSlots = 2; + nrofUplinkSymbols = 4; //0; //4; + + ssPBCH_BlockPower = -25; + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.18.99"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + ///X2 + enable_x2 = "yes"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + target_enb_x2_ip_address = ( + { ipv4 = "192.168.18.199"; + ipv6 = "192:168:30::17"; + preference = "ipv4"; + } + ); + + NETWORK_INTERFACES : + { + + GNB_INTERFACE_NAME_FOR_S1_MME = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1_MME = "192.168.18.198/24"; + GNB_INTERFACE_NAME_FOR_S1U = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1U = "192.168.18.198/24"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + GNB_IPV4_ADDRESS_FOR_X2C = "192.168.18.198/24"; + GNB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 114; + eNB_instances = [0]; + clock_src = "external"; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + //parallel_config = "PARALLEL_SINGLE_THREAD"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/testing_gnb_n310.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/testing_gnb_n310.conf new file mode 100644 index 0000000000..f30c928448 --- /dev/null +++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/testing_gnb_n310.conf @@ -0,0 +1,295 @@ +Active_gNBs = ( "gNB-Eurecom-5GNRBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + + cell_type = "CELL_MACRO_GNB"; + + gNB_name = "gNB-Eurecom-5GNRBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ({mcc = 222; mnc = 01; mnc_length = 2;}); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 31; //0; + pdsch_AntennaPorts = 1; + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + +# downlinkConfigCommon + #frequencyInfoDL + # this is 3600 MHz + 84 PRBs@30kHz SCS (same as initial BWP) + absoluteFrequencySSB = 641272; //641032; #641968; 641968=start of ssb at 3600MHz + 82 RBs 641032=center of SSB at center of cell + dl_frequencyBand = 78; + # this is 3600 MHz + dl_absoluteFrequencyPointA = 640000; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 1; + dl_carrierBandwidth = 106; + #initialDownlinkBWP + #genericParameters + # this is RBstart=84,L=13 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 6366; //28875; //6366; #6407; #3384; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 1; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 0; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; + #initialULBWPmappingType + #0=typeA,1=typeB + initialDLBWPmappingType_0 = 0; + #this is SS=1,L=13 + initialDLBWPstartSymbolAndLength_0 = 40; + + initialDLBWPk0_1 = 0; + initialDLBWPmappingType_1 = 0; + #this is SS=2,L=12 + initialDLBWPstartSymbolAndLength_1 = 53; + + initialDLBWPk0_2 = 0; + initialDLBWPmappingType_2 = 0; + #this is SS=1,L=12 + initialDLBWPstartSymbolAndLength_2 = 54; + + initialDLBWPk0_3 = 0; + initialDLBWPmappingType_3 = 0; + #this is SS=1,L=4 //5 (4 is for 43, 5 is for 57) + initialDLBWPstartSymbolAndLength_3 = 57; //43; //57; + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 78; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 1; + ul_carrierBandwidth = 106; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 6366; //28875; //6366; #6407; #3384; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 1; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 98; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 13; + preambleReceivedTargetPower = -90; +#preamblTransMax (0...10) = (3,4,5,6,7,8,10,20,50,100,200) + preambleTransMax = 6; +#powerRampingStep +# 0=dB0,1=dB2,2=dB4,3=dB6 + powerRampingStep = 1; +#ra_ReponseWindow +#1,2,4,8,10,20,40,80 + ra_ResponseWindow = 5; +#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR +#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen + ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4; +#oneHalf (0..15) 4,8,12,16,...60,64 + ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 14; //15; +#ra_ContentionResolutionTimer +#(0..7) 8,16,24,32,40,48,56,64 + ra_ContentionResolutionTimer = 7; + rsrp_ThresholdSSB = 19; +#prach-RootSequenceIndex_PR +#1 = 839, 2 = 139 + prach_RootSequenceIndex_PR = 2; + prach_RootSequenceIndex = 1; + # SCS for msg1, can only be 15 for 30 kHz < 6 GHz, takes precendence over the one derived from prach-ConfigIndex + # + msg1_SubcarrierSpacing = 1, + +# restrictedSetConfig +# 0=unrestricted, 1=restricted type A, 2=restricted type B + restrictedSetConfig = 0, + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 2; + initialULBWPmappingType_0 = 1 + # this is SS=0 L=11 + initialULBWPstartSymbolAndLength_0 = 55; + + initialULBWPk2_1 = 2; + initialULBWPmappingType_1 = 1; + # this is SS=0 L=12 + initialULBWPstartSymbolAndLength_1 = 69; + + initialULBWPk2_2 = 7; + initialULBWPmappingType_2 = 1; + # this is SS=10 L=4 + initialULBWPstartSymbolAndLength_2 = 52; + + msg3_DeltaPreamble = 1; + p0_NominalWithGrant =-90; + +# pucch-ConfigCommon setup : +# pucchGroupHopping +# 0 = neither, 1= group hopping, 2=sequence hopping + pucchGroupHopping = 0; + hoppingId = 40; + p0_nominal = -90; +# ssb_PositionsInBurs_BitmapPR +# 1=short, 2=medium, 3=long + ssb_PositionsInBurst_PR = 2; + ssb_PositionsInBurst_Bitmap = 1; #0x80; + +# ssb_periodicityServingCell +# 0 = ms5, 1=ms10, 2=ms20, 3=ms40, 4=ms80, 5=ms160, 6=spare2, 7=spare1 + ssb_periodicityServingCell = 2; + +# dmrs_TypeA_position +# 0 = pos2, 1 = pos3 + dmrs_TypeA_Position = 0; + +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + subcarrierSpacing = 1; + + + #tdd-UL-DL-ConfigurationCommon +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + referenceSubcarrierSpacing = 1; + # pattern1 + # dl_UL_TransmissionPeriodicity + # 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10 + dl_UL_TransmissionPeriodicity = 6; + nrofDownlinkSlots = 7; //8; //7; + nrofDownlinkSymbols = 6; //0; //6; + nrofUplinkSlots = 2; + nrofUplinkSymbols = 4; //0; //4; + + ssPBCH_BlockPower = 0; + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.18.99"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + ///X2 + enable_x2 = "yes"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + target_enb_x2_ip_address = ( + { ipv4 = "192.168.18.199"; + ipv6 = "192:168:30::17"; + preference = "ipv4"; + } + ); + + NETWORK_INTERFACES : + { + + GNB_INTERFACE_NAME_FOR_S1_MME = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1_MME = "192.168.18.196/24"; + GNB_INTERFACE_NAME_FOR_S1U = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1U = "192.168.18.196/24"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + GNB_IPV4_ADDRESS_FOR_X2C = "192.168.18.196/24"; + GNB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 75; + eNB_instances = [0]; + sdr_addrs = "addr=192.168.10.2,mgmt_addr=192.168.10.2,second_addr=192.168.20.2"; + clock_src = "external"; + time_src = "external"; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + #parallel_config = "PARALLEL_SINGLE_THREAD"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + diff --git a/targets/RT/USER/gNB_usrp.gtkw b/targets/RT/USER/gNB_usrp.gtkw index 6ece894bb6..ebf3a57665 100644 --- a/targets/RT/USER/gNB_usrp.gtkw +++ b/targets/RT/USER/gNB_usrp.gtkw @@ -32,43 +32,50 @@ variables.frame_number_RX1_UE[63:0] variables.trx_ts_ue[63:0] variables.trx_ts[63:0] variables.trx_tst[63:0] -variables.frame_number_RX0_RU[63:0] -variables.tti_number_RX0_RU[63:0] -variables.frame_number_TX0_RU[63:0] -variables.tti_number_TX0_RU[63:0] -@28 -functions.mac_schedule_dlsch -functions.macxface_eNB_dlsch_ulsch_scheduler -@24 -variables.frame_number_RX0_gNB[63:0] -variables.slot_number_RX0_gNB[63:0] -variables.frame_number_TX0_gNB[63:0] -variables.slot_number_TX0_gNB[63:0] -@28 -functions.gNB_thread_rxtx0 -@24 -variables.frame_number_RX1_gNB[63:0] -variables.slot_number_RX1_gNB[63:0] -variables.frame_number_TX1_gNB[63:0] -variables.slot_number_TX1_gNB[63:0] -@28 -functions.gNB_thread_rxtx1 -functions.phy_enb_pdcch_tx -functions.phy_eNB_dlsch_encoding -functions.phy_eNB_dlsch_encoding_w -functions.generate_dlsch +@22 +variables.frame_number_RX0_UE[63:0] @420 variables.frame_number_RX0_UE[63:0] +@24 +variables.frame_number_RX0_RU[63:0] +variables.tti_number_RX0_RU[63:0] +variables.frame_number_RX0_gNB[63:0] +variables.slot_number_RX0_gNB[63:0] +variables.slot_number_RX1_gNB[63:0] +variables.frame_number_RX1_gNB[63:0] @28 functions.phy_procedures_ru_feprx0 functions.phy_procedures_ru_feprx1 +functions.phy_procedures_gNB_uespec_rx +functions.nr_rx_pusch +functions.nr_ulsch_procedures_rx +functions.gNB_ulsch_decoding +@24 +variables.frame_number_TX0_RU[63:0] +variables.frame_number_TX0_gNB[63:0] +variables.frame_number_TX1_gNB[63:0] +variables.tti_number_TX0_RU[63:0] +variables.slot_number_TX0_gNB[63:0] +variables.slot_number_TX1_gNB[63:0] +@29 +functions.mac_schedule_dlsch +@28 +functions.macxface_gNB_dlsch_ulsch_scheduler +functions.gNB_thread_rxtx0 +functions.gNB_thread_rxtx1 +functions.generate_dlsch +functions.phy_procedures_gNB_common_tx +functions.phy_procedures_gNB_tx +functions.gNB_pdcch_tx +functions.gNB_dlsch_encoding +functions.gNB_pdsch_codeword_scrambling +functions.gNB_pdsch_modulation functions.phy_procedures_ru_feptx_ofdm0 functions.phy_procedures_ru_feptx_ofdm1 functions.phy_procedures_ru_feptx_ofdm2 functions.phy_procedures_ru_feptx_prec0 functions.phy_procedures_ru_feptx_prec1 functions.phy_procedures_ru_feptx_prec2 -@22 variables.ru_tx_ofdm_mask[63:0] [pattern_trace] 1 [pattern_trace] 0 diff --git a/targets/RT/USER/lte-ru.c b/targets/RT/USER/lte-ru.c index d2e734f205..e3b9797105 100644 --- a/targets/RT/USER/lte-ru.c +++ b/targets/RT/USER/lte-ru.c @@ -679,7 +679,11 @@ void rx_rf(RU_t *ru, resynch=1; } - proc->timestamp_rx = ts-ru->ts_offset; + if(get_softmodem_params()->emulate_rf) { + proc->timestamp_rx = old_ts + fp->samples_per_tti; + } else { + proc->timestamp_rx = ts-ru->ts_offset; + } // AssertFatal(rxs == fp->samples_per_tti, // "rx_rf: Asked for %d samples, got %d from SDR\n",fp->samples_per_tti,rxs); @@ -2337,19 +2341,22 @@ void init_RU_proc(RU_t *ru) { LOG_I(PHY,"%s() DJP - added creation of pthread_prach\n", __FUNCTION__); pthread_create( &proc->pthread_prach, attr_prach, ru_thread_prach, (void *)ru ); ru->state=RU_RUN; - fill_rf_config(ru,ru->rf_config_file); - init_frame_parms(ru->frame_parms,1); - ru->frame_parms->nb_antennas_rx = ru->nb_rx; - phy_init_RU(ru); - ret = openair0_device_load(&ru->rfdevice,&ru->openair0_cfg); - if (ret < 0) { - LOG_I(PHY,"Exiting, cannot load device. Make sure that your SDR board is connected!\n"); - exit(1); - } + if(!get_softmodem_params()->emulate_rf) + { + fill_rf_config(ru,ru->rf_config_file); + init_frame_parms(ru->frame_parms,1); + ru->frame_parms->nb_antennas_rx = ru->nb_rx; + phy_init_RU(ru); + ret = openair0_device_load(&ru->rfdevice,&ru->openair0_cfg); + if (ret < 0) { + LOG_I(PHY,"Exiting, cannot load device. Make sure that your SDR board is connected!\n"); + exit(1); + } - if (setup_RU_buffers(ru)!=0) { - LOG_I(PHY,"Exiting, cannot initialize RU Buffers\n"); - exit(1); + if (setup_RU_buffers(ru)!=0) { + LOG_I(PHY,"Exiting, cannot initialize RU Buffers\n"); + exit(1); + } } } @@ -2668,6 +2675,15 @@ void set_function_spec_param(RU_t *ru) { exit(-1); } + if (ru->ifdevice.get_internal_parameter != NULL) { + void *t = ru->ifdevice.get_internal_parameter("fh_if4p5_south_in"); + if (t != NULL) + ru->fh_south_in = t; + t = ru->ifdevice.get_internal_parameter("fh_if4p5_south_out"); + if (t != NULL) + ru->fh_south_out = t; + } + malloc_IF4p5_buffer(ru); break; diff --git a/targets/RT/USER/lte-softmodem.c b/targets/RT/USER/lte-softmodem.c index d8c5e25593..0d0dde4ac4 100644 --- a/targets/RT/USER/lte-softmodem.c +++ b/targets/RT/USER/lte-softmodem.c @@ -170,6 +170,7 @@ extern void init_eNB_afterRU(void); int transmission_mode=1; int emulate_rf = 0; int numerology = 0; +int usrp_tx_thread = 0; THREAD_STRUCT thread_struct; /* struct for ethernet specific parameters given in eNB conf file */ @@ -437,9 +438,6 @@ int restart_L1L2(module_id_t enb_id) { } RC.ru_mask |= (1 << ru->idx); - /* copy the changed frame parameters to the RU */ - /* TODO this should be done for all RUs associated to this eNB */ - memcpy(&ru->frame_parms, &RC.eNB[enb_id][0]->frame_parms, sizeof(LTE_DL_FRAME_PARMS)); set_function_spec_param(RC.ru[enb_id]); /* reset the list of connected UEs in the MAC, since in this process with * loose all UEs (have to reconnect) */ @@ -555,6 +553,8 @@ int main ( int argc, char **argv ) MSC_INIT(MSC_E_UTRAN, THREAD_MAX+TASK_MAX); init_opt(); + // to make a graceful exit when ctrl-c is pressed + set_softmodem_sighandler(); check_clock(); #ifndef PACKAGE_VERSION # define PACKAGE_VERSION "UNKNOWN-EXPERIMENTAL" @@ -659,6 +659,7 @@ int main ( int argc, char **argv ) initTpool("n", L1proc->threadPool, true); initNotifiedFIFO(L1proc->respEncode); initNotifiedFIFO(L1proc->respDecode); + RC.eNB[x][CC_id]->proc.L1_proc_tx.threadPool = L1proc->threadPool; } @@ -711,9 +712,12 @@ int main ( int argc, char **argv ) sync_var=0; pthread_cond_broadcast(&sync_cond); pthread_mutex_unlock(&sync_mutex); + create_tasks_mbms(1); config_check_unknown_cmdlineopt(CONFIG_CHECKALLSECTIONS); } - create_tasks_mbms(1); + else + create_tasks_mbms(1); + //create_tasks_mbms(1); // wait for end of program LOG_UI(ENB_APP,"TYPE TO TERMINATE\n"); @@ -723,7 +727,7 @@ int main ( int argc, char **argv ) // end of CI modifications //getchar(); if(IS_SOFTMODEM_DOFORMS) - load_softscope("enb"); + load_softscope("enb",NULL); itti_wait_tasks_end(); oai_exit=1; LOG_I(ENB_APP,"oai_exit=%d\n",oai_exit); diff --git a/targets/RT/USER/lte-softmodem.h b/targets/RT/USER/lte-softmodem.h index c5fdb5f546..1c537dabe3 100644 --- a/targets/RT/USER/lte-softmodem.h +++ b/targets/RT/USER/lte-softmodem.h @@ -155,6 +155,10 @@ extern int sync_var; extern int transmission_mode; extern double cpuf; +extern int emulate_rf; +extern int numerology; +extern int usrp_tx_thread; + // In lte-enb.c extern void stop_eNB(int); extern void kill_eNB_proc(int inst); diff --git a/targets/RT/USER/lte-uesoftmodem.c b/targets/RT/USER/lte-uesoftmodem.c index 2c9271888b..54a9f4a669 100644 --- a/targets/RT/USER/lte-uesoftmodem.c +++ b/targets/RT/USER/lte-uesoftmodem.c @@ -171,6 +171,8 @@ extern void get_uethreads_params(void); int transmission_mode=1; +int usrp_tx_thread = 0; + char *usrp_args=NULL; char *usrp_clksrc=NULL; @@ -757,7 +759,7 @@ int main( int argc, char **argv ) { } if(IS_SOFTMODEM_DOFORMS) - load_softscope("ue"); + load_softscope("ue",NULL); config_check_unknown_cmdlineopt(CONFIG_CHECKALLSECTIONS); printf("Sending sync to all threads (%p,%p,%p)\n",&sync_var,&sync_cond,&sync_mutex); diff --git a/targets/RT/USER/rfsim.c b/targets/RT/USER/rfsim.c index a9a0912433..eb380b9518 100644 --- a/targets/RT/USER/rfsim.c +++ b/targets/RT/USER/rfsim.c @@ -337,6 +337,7 @@ void init_ue_devices(PHY_VARS_UE *UE) { void init_ocm(void) { module_id_t UE_id, ru_id; int CC_id; + double DS_TDL = .03; randominit(0); set_taus_seed(0); init_channelmod(); @@ -357,6 +358,7 @@ void init_ocm(void) { AWGN, N_RB2sampling_rate(RC.ru[ru_id]->frame_parms->N_RB_DL), N_RB2channel_bandwidth(RC.ru[ru_id]->frame_parms->N_RB_DL), + DS_TDL, 0.0, 0, 0); @@ -369,6 +371,7 @@ void init_ocm(void) { AWGN, N_RB2sampling_rate(RC.ru[ru_id]->frame_parms->N_RB_UL), N_RB2channel_bandwidth(RC.ru[ru_id]->frame_parms->N_RB_UL), + DS_TDL, 0.0, 0, 0);