Files
openairinterface5g/openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c
T
Cedric Roux db3c2b4d71 add licensing info at top of source files
only .c, .h and .cpp processed.

 Changes to be committed:
	modified:   common/utils/asn1_conversions.h
	modified:   common/utils/assertions.h
	modified:   common/utils/itti/assertions.h
	modified:   common/utils/itti/backtrace.c
	modified:   common/utils/itti/backtrace.h
	modified:   common/utils/itti/intertask_interface.c
	modified:   common/utils/itti/intertask_interface.h
	modified:   common/utils/itti/intertask_interface_dump.c
	modified:   common/utils/itti/intertask_interface_dump.h
	modified:   common/utils/itti/intertask_interface_init.h
	modified:   common/utils/itti/intertask_interface_types.h
	modified:   common/utils/itti/intertask_messages_def.h
	modified:   common/utils/itti/intertask_messages_types.h
	modified:   common/utils/itti/itti_types.h
	modified:   common/utils/itti/memory_pools.c
	modified:   common/utils/itti/memory_pools.h
	modified:   common/utils/itti/messages_def.h
	modified:   common/utils/itti/messages_types.h
	modified:   common/utils/itti/signals.c
	modified:   common/utils/itti/signals.h
	modified:   common/utils/itti/tasks_def.h
	modified:   common/utils/itti/timer.c
	modified:   common/utils/itti/timer.h
	modified:   common/utils/itti/timer_messages_def.h
	modified:   common/utils/itti/timer_messages_types.h
	modified:   common/utils/itti_analyzer/common/itti_types.h
	modified:   common/utils/itti_analyzer/common/logs.h
	modified:   common/utils/itti_analyzer/common/rc.h
	modified:   common/utils/itti_analyzer/itti_analyzer.c
	modified:   common/utils/itti_analyzer/libbuffers/buffers.c
	modified:   common/utils/itti_analyzer/libbuffers/buffers.h
	modified:   common/utils/itti_analyzer/libbuffers/file.c
	modified:   common/utils/itti_analyzer/libbuffers/file.h
	modified:   common/utils/itti_analyzer/libbuffers/socket.c
	modified:   common/utils/itti_analyzer/libbuffers/socket.h
	modified:   common/utils/itti_analyzer/libparser/array_type.c
	modified:   common/utils/itti_analyzer/libparser/array_type.h
	modified:   common/utils/itti_analyzer/libparser/enum_type.c
	modified:   common/utils/itti_analyzer/libparser/enum_type.h
	modified:   common/utils/itti_analyzer/libparser/enum_value_type.c
	modified:   common/utils/itti_analyzer/libparser/enum_value_type.h
	modified:   common/utils/itti_analyzer/libparser/field_type.c
	modified:   common/utils/itti_analyzer/libparser/field_type.h
	modified:   common/utils/itti_analyzer/libparser/file_type.c
	modified:   common/utils/itti_analyzer/libparser/file_type.h
	modified:   common/utils/itti_analyzer/libparser/fundamental_type.c
	modified:   common/utils/itti_analyzer/libparser/fundamental_type.h
	modified:   common/utils/itti_analyzer/libparser/intertask_contexts.h
	modified:   common/utils/itti_analyzer/libparser/pointer_type.c
	modified:   common/utils/itti_analyzer/libparser/pointer_type.h
	modified:   common/utils/itti_analyzer/libparser/reference_type.c
	modified:   common/utils/itti_analyzer/libparser/reference_type.h
	modified:   common/utils/itti_analyzer/libparser/struct_type.c
	modified:   common/utils/itti_analyzer/libparser/struct_type.h
	modified:   common/utils/itti_analyzer/libparser/typedef_type.c
	modified:   common/utils/itti_analyzer/libparser/typedef_type.h
	modified:   common/utils/itti_analyzer/libparser/types.c
	modified:   common/utils/itti_analyzer/libparser/types.h
	modified:   common/utils/itti_analyzer/libparser/union_type.c
	modified:   common/utils/itti_analyzer/libparser/union_type.h
	modified:   common/utils/itti_analyzer/libparser/xml_parse.c
	modified:   common/utils/itti_analyzer/libparser/xml_parse.h
	modified:   common/utils/itti_analyzer/libresolver/locate_root.c
	modified:   common/utils/itti_analyzer/libresolver/locate_root.h
	modified:   common/utils/itti_analyzer/libresolver/resolvers.c
	modified:   common/utils/itti_analyzer/libresolver/resolvers.h
	modified:   common/utils/itti_analyzer/libui/ui_callbacks.c
	modified:   common/utils/itti_analyzer/libui/ui_callbacks.h
	modified:   common/utils/itti_analyzer/libui/ui_filters.c
	modified:   common/utils/itti_analyzer/libui/ui_filters.h
	modified:   common/utils/itti_analyzer/libui/ui_interface.c
	modified:   common/utils/itti_analyzer/libui/ui_interface.h
	modified:   common/utils/itti_analyzer/libui/ui_main_screen.c
	modified:   common/utils/itti_analyzer/libui/ui_main_screen.h
	modified:   common/utils/itti_analyzer/libui/ui_menu_bar.c
	modified:   common/utils/itti_analyzer/libui/ui_menu_bar.h
	modified:   common/utils/itti_analyzer/libui/ui_notebook.c
	modified:   common/utils/itti_analyzer/libui/ui_notebook.h
	modified:   common/utils/itti_analyzer/libui/ui_notif_dlg.c
	modified:   common/utils/itti_analyzer/libui/ui_notif_dlg.h
	modified:   common/utils/itti_analyzer/libui/ui_notifications.c
	modified:   common/utils/itti_analyzer/libui/ui_notifications.h
	modified:   common/utils/itti_analyzer/libui/ui_signal_dissect_view.c
	modified:   common/utils/itti_analyzer/libui/ui_signal_dissect_view.h
	modified:   common/utils/itti_analyzer/libui/ui_tree_view.c
	modified:   common/utils/itti_analyzer/libui/ui_tree_view.h
	modified:   common/utils/msc/msc.c
	modified:   common/utils/msc/msc.h
	modified:   openair1/PHY/CODING/3gpplte.c
	modified:   openair1/PHY/CODING/3gpplte_sse.c
	modified:   openair1/PHY/CODING/3gpplte_turbo_decoder.c
	modified:   openair1/PHY/CODING/3gpplte_turbo_decoder_avx2_16bit.c
	modified:   openair1/PHY/CODING/3gpplte_turbo_decoder_sse.c
	modified:   openair1/PHY/CODING/3gpplte_turbo_decoder_sse_16bit.c
	modified:   openair1/PHY/CODING/3gpplte_turbo_decoder_sse_8bit.c
	modified:   openair1/PHY/CODING/TESTBENCH/ltetest.c
	modified:   openair1/PHY/CODING/TESTBENCH/pdcch_test.c
	modified:   openair1/PHY/CODING/TESTBENCH/viterbi_test.c
	modified:   openair1/PHY/CODING/ccoding_byte.c
	modified:   openair1/PHY/CODING/ccoding_byte_lte.c
	modified:   openair1/PHY/CODING/crc_byte.c
	modified:   openair1/PHY/CODING/defs.h
	modified:   openair1/PHY/CODING/extern.h
	modified:   openair1/PHY/CODING/extern_3GPPinterleaver.h
	modified:   openair1/PHY/CODING/lte_interleaver.h
	modified:   openair1/PHY/CODING/lte_interleaver2.h
	modified:   openair1/PHY/CODING/lte_interleaver_inline.h
	modified:   openair1/PHY/CODING/lte_rate_matching.c
	modified:   openair1/PHY/CODING/lte_segmentation.c
	modified:   openair1/PHY/CODING/rate_matching.c
	modified:   openair1/PHY/CODING/scrambler.h
	modified:   openair1/PHY/CODING/vars.h
	modified:   openair1/PHY/CODING/viterbi.c
	modified:   openair1/PHY/CODING/viterbi_lte.c
	modified:   openair1/PHY/INIT/defs.h
	modified:   openair1/PHY/INIT/extern.h
	modified:   openair1/PHY/INIT/init_top.c
	modified:   openair1/PHY/INIT/lte_init.c
	modified:   openair1/PHY/INIT/lte_param_init.c
	modified:   openair1/PHY/INIT/lte_parms.c
	modified:   openair1/PHY/INIT/vars.h
	modified:   openair1/PHY/LTE_ESTIMATION/adjust_gain.c
	modified:   openair1/PHY/LTE_ESTIMATION/defs.h
	modified:   openair1/PHY/LTE_ESTIMATION/extern.h
	modified:   openair1/PHY/LTE_ESTIMATION/filt96_32.h
	modified:   openair1/PHY/LTE_ESTIMATION/freq_equalization.c
	modified:   openair1/PHY/LTE_ESTIMATION/lte_adjust_sync.c
	modified:   openair1/PHY/LTE_ESTIMATION/lte_dl_channel_estimation.c
	modified:   openair1/PHY/LTE_ESTIMATION/lte_dl_channel_estimation_emos.c
	modified:   openair1/PHY/LTE_ESTIMATION/lte_dl_mbsfn_channel_estimation.c
	modified:   openair1/PHY/LTE_ESTIMATION/lte_eNB_measurements.c
	modified:   openair1/PHY/LTE_ESTIMATION/lte_est_freq_offset.c
	modified:   openair1/PHY/LTE_ESTIMATION/lte_sync_time.c
	modified:   openair1/PHY/LTE_ESTIMATION/lte_sync_timefreq.c
	modified:   openair1/PHY/LTE_ESTIMATION/lte_ue_measurements.c
	modified:   openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
	modified:   openair1/PHY/LTE_ESTIMATION/pss6144.h
	modified:   openair1/PHY/LTE_ESTIMATION/vars.h
	modified:   openair1/PHY/LTE_REFSIG/defs.h
	modified:   openair1/PHY/LTE_REFSIG/lte_dl_cell_spec.c
	modified:   openair1/PHY/LTE_REFSIG/lte_dl_mbsfn.c
	modified:   openair1/PHY/LTE_REFSIG/lte_dl_uespec.c
	modified:   openair1/PHY/LTE_REFSIG/lte_gold.c
	modified:   openair1/PHY/LTE_REFSIG/lte_gold_mbsfn.c
	modified:   openair1/PHY/LTE_REFSIG/lte_ul_ref.c
	modified:   openair1/PHY/LTE_REFSIG/mod_table.h
	modified:   openair1/PHY/LTE_REFSIG/primary_synch.h
	modified:   openair1/PHY/LTE_TRANSPORT/dci.c
	modified:   openair1/PHY/LTE_TRANSPORT/dci.h
	modified:   openair1/PHY/LTE_TRANSPORT/dci_tools.c
	modified:   openair1/PHY/LTE_TRANSPORT/defs.h
	modified:   openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
	modified:   openair1/PHY/LTE_TRANSPORT/dlsch_decoding.c
	modified:   openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
	modified:   openair1/PHY/LTE_TRANSPORT/dlsch_llr_computation.c
	modified:   openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c
	modified:   openair1/PHY/LTE_TRANSPORT/dlsch_scrambling.c
	modified:   openair1/PHY/LTE_TRANSPORT/dlsch_tbs.h
	modified:   openair1/PHY/LTE_TRANSPORT/dlsch_tbs_full.h
	modified:   openair1/PHY/LTE_TRANSPORT/drs_modulation.c
	modified:   openair1/PHY/LTE_TRANSPORT/extern.h
	modified:   openair1/PHY/LTE_TRANSPORT/group_hopping.c
	modified:   openair1/PHY/LTE_TRANSPORT/if4_tools.c
	modified:   openair1/PHY/LTE_TRANSPORT/if4_tools.h
	modified:   openair1/PHY/LTE_TRANSPORT/if5_tools.c
	modified:   openair1/PHY/LTE_TRANSPORT/if5_tools.h
	modified:   openair1/PHY/LTE_TRANSPORT/initial_sync.c
	modified:   openair1/PHY/LTE_TRANSPORT/lte_mcs.c
	modified:   openair1/PHY/LTE_TRANSPORT/mcs_tbs_tools.h
	modified:   openair1/PHY/LTE_TRANSPORT/pbch.c
	modified:   openair1/PHY/LTE_TRANSPORT/pcfich.c
	modified:   openair1/PHY/LTE_TRANSPORT/pch.c
	modified:   openair1/PHY/LTE_TRANSPORT/phich.c
	modified:   openair1/PHY/LTE_TRANSPORT/pilots.c
	modified:   openair1/PHY/LTE_TRANSPORT/pilots_mbsfn.c
	modified:   openair1/PHY/LTE_TRANSPORT/pmch.c
	modified:   openair1/PHY/LTE_TRANSPORT/power_control.c
	modified:   openair1/PHY/LTE_TRANSPORT/prach.c
	modified:   openair1/PHY/LTE_TRANSPORT/prach.h
	modified:   openair1/PHY/LTE_TRANSPORT/print_stats.c
	modified:   openair1/PHY/LTE_TRANSPORT/proto.h
	modified:   openair1/PHY/LTE_TRANSPORT/pss.c
	modified:   openair1/PHY/LTE_TRANSPORT/pucch.c
	modified:   openair1/PHY/LTE_TRANSPORT/rar_tools.c
	modified:   openair1/PHY/LTE_TRANSPORT/srs_modulation.c
	modified:   openair1/PHY/LTE_TRANSPORT/sss.c
	modified:   openair1/PHY/LTE_TRANSPORT/sss.h
	modified:   openair1/PHY/LTE_TRANSPORT/uci.h
	modified:   openair1/PHY/LTE_TRANSPORT/uci_tools.c
	modified:   openair1/PHY/LTE_TRANSPORT/ulsch_coding.c
	modified:   openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c
	modified:   openair1/PHY/LTE_TRANSPORT/ulsch_demodulation.c
	modified:   openair1/PHY/LTE_TRANSPORT/ulsch_modulation.c
	modified:   openair1/PHY/LTE_TRANSPORT/vars.h
	modified:   openair1/PHY/MODULATION/defs.h
	modified:   openair1/PHY/MODULATION/extern.h
	modified:   openair1/PHY/MODULATION/kHz_7_5.h
	modified:   openair1/PHY/MODULATION/ofdm_mod.c
	modified:   openair1/PHY/MODULATION/prach625Hz.h
	modified:   openair1/PHY/MODULATION/slot_fep.c
	modified:   openair1/PHY/MODULATION/slot_fep_mbsfn.c
	modified:   openair1/PHY/MODULATION/slot_fep_ul.c
	modified:   openair1/PHY/MODULATION/ul_7_5_kHz.c
	modified:   openair1/PHY/MODULATION/vars.h
	modified:   openair1/PHY/TOOLS/8bit_rxdemux.c
	modified:   openair1/PHY/TOOLS/8bit_txmux.c
	modified:   openair1/PHY/TOOLS/alaw_lut.h
	modified:   openair1/PHY/TOOLS/angle.c
	modified:   openair1/PHY/TOOLS/cadd_sv.c
	modified:   openair1/PHY/TOOLS/cadd_vv.c
	modified:   openair1/PHY/TOOLS/cdot_prod.c
	modified:   openair1/PHY/TOOLS/cmult_sv.c
	modified:   openair1/PHY/TOOLS/cmult_vv.c
	modified:   openair1/PHY/TOOLS/costable.h
	modified:   openair1/PHY/TOOLS/dB_routines.c
	modified:   openair1/PHY/TOOLS/dB_routines.h
	modified:   openair1/PHY/TOOLS/defs.h
	modified:   openair1/PHY/TOOLS/extern.h
	modified:   openair1/PHY/TOOLS/file_output.c
	modified:   openair1/PHY/TOOLS/invSqrt.c
	modified:   openair1/PHY/TOOLS/log2_approx.c
	modified:   openair1/PHY/TOOLS/lte_dfts.c
	modified:   openair1/PHY/TOOLS/lte_phy_scope.c
	modified:   openair1/PHY/TOOLS/lte_phy_scope.h
	modified:   openair1/PHY/TOOLS/lut.c
	modified:   openair1/PHY/TOOLS/memory_routines.c
	modified:   openair1/PHY/TOOLS/signal_energy.c
	modified:   openair1/PHY/TOOLS/smbv.c
	modified:   openair1/PHY/TOOLS/smbv.h
	modified:   openair1/PHY/TOOLS/sqrt.c
	modified:   openair1/PHY/TOOLS/time_meas.c
	modified:   openair1/PHY/TOOLS/time_meas.h
	modified:   openair1/PHY/TOOLS/twiddle12288.h
	modified:   openair1/PHY/TOOLS/twiddle1536.h
	modified:   openair1/PHY/TOOLS/twiddle24576.h
	modified:   openair1/PHY/TOOLS/twiddle6144.h
	modified:   openair1/PHY/TOOLS/twiddles4096.h
	modified:   openair1/PHY/TOOLS/twiddles8192.h
	modified:   openair1/PHY/TOOLS/vars.h
	modified:   openair1/PHY/defs.h
	modified:   openair1/PHY/extern.h
	modified:   openair1/PHY/impl_defs_lte.h
	modified:   openair1/PHY/impl_defs_top.h
	modified:   openair1/PHY/sse_intrin.h
	modified:   openair1/PHY/types.h
	modified:   openair1/PHY/vars.h
	modified:   openair1/SCHED/defs.h
	modified:   openair1/SCHED/extern.h
	modified:   openair1/SCHED/phy_mac_stub.c
	modified:   openair1/SCHED/phy_procedures_emos.h
	modified:   openair1/SCHED/phy_procedures_lte_common.c
	modified:   openair1/SCHED/phy_procedures_lte_eNb.c
	modified:   openair1/SCHED/phy_procedures_lte_ue.c
	modified:   openair1/SCHED/pucch_pc.c
	modified:   openair1/SCHED/pusch_pc.c
	modified:   openair1/SCHED/rt_compat.h
	modified:   openair1/SCHED/vars.h
	modified:   openair1/SIMULATION/ETH_TRANSPORT/bypass_session_layer.c
	modified:   openair1/SIMULATION/ETH_TRANSPORT/defs.h
	modified:   openair1/SIMULATION/ETH_TRANSPORT/emu_transport.c
	modified:   openair1/SIMULATION/ETH_TRANSPORT/extern.h
	modified:   openair1/SIMULATION/ETH_TRANSPORT/multicast_link.c
	modified:   openair1/SIMULATION/ETH_TRANSPORT/multicast_link.h
	modified:   openair1/SIMULATION/ETH_TRANSPORT/netlink_init.c
	modified:   openair1/SIMULATION/ETH_TRANSPORT/pgm_link.c
	modified:   openair1/SIMULATION/ETH_TRANSPORT/pgm_link.h
	modified:   openair1/SIMULATION/ETH_TRANSPORT/proto.h
	modified:   openair1/SIMULATION/ETH_TRANSPORT/socket.c
	modified:   openair1/SIMULATION/ETH_TRANSPORT/socket.h
	modified:   openair1/SIMULATION/ETH_TRANSPORT/vars.h
	modified:   openair1/SIMULATION/LTE_PHY/LTE_Configuration.c
	modified:   openair1/SIMULATION/LTE_PHY/LTE_Configuration.h
	modified:   openair1/SIMULATION/LTE_PHY/dlsim.c
	modified:   openair1/SIMULATION/LTE_PHY/framegen.c
	modified:   openair1/SIMULATION/LTE_PHY/gpib_send.c
	modified:   openair1/SIMULATION/LTE_PHY/gpib_send.h
	modified:   openair1/SIMULATION/LTE_PHY/mbmssim.c
	modified:   openair1/SIMULATION/LTE_PHY/pbchsim.c
	modified:   openair1/SIMULATION/LTE_PHY/pdcchsim.c
	modified:   openair1/SIMULATION/LTE_PHY/prachsim.c
	modified:   openair1/SIMULATION/LTE_PHY/pucchsignalgegerator.h
	modified:   openair1/SIMULATION/LTE_PHY/pucchsignalgenerator.c
	modified:   openair1/SIMULATION/LTE_PHY/pucchsim.c
	modified:   openair1/SIMULATION/LTE_PHY/scansim.c
	modified:   openair1/SIMULATION/LTE_PHY/signalanalyzer.c
	modified:   openair1/SIMULATION/LTE_PHY/signalanalyzer.h
	modified:   openair1/SIMULATION/LTE_PHY/syncsim.c
	modified:   openair1/SIMULATION/LTE_PHY/test.c
	modified:   openair1/SIMULATION/LTE_PHY/ulsignalgenerator.c
	modified:   openair1/SIMULATION/LTE_PHY/ulsignalgenerator.h
	modified:   openair1/SIMULATION/LTE_PHY/ulsim.c
	modified:   openair1/SIMULATION/LTE_PHY/ulsim2.c
	modified:   openair1/SIMULATION/LTE_PHY/unitary_defs.h
	modified:   openair1/SIMULATION/RF/adc.c
	modified:   openair1/SIMULATION/RF/dac.c
	modified:   openair1/SIMULATION/RF/defs.h
	modified:   openair1/SIMULATION/RF/rf.c
	modified:   openair1/SIMULATION/TOOLS/abstraction.c
	modified:   openair1/SIMULATION/TOOLS/ch_desc_proto.c
	modified:   openair1/SIMULATION/TOOLS/defs.h
	modified:   openair1/SIMULATION/TOOLS/gauss.c
	modified:   openair1/SIMULATION/TOOLS/llr_quantization.c
	modified:   openair1/SIMULATION/TOOLS/multipath_channel.c
	modified:   openair1/SIMULATION/TOOLS/multipath_tv_channel.c
	modified:   openair1/SIMULATION/TOOLS/random_channel.c
	modified:   openair1/SIMULATION/TOOLS/rangen_double.c
	modified:   openair1/SIMULATION/TOOLS/scm_corrmat.h
	modified:   openair1/SIMULATION/TOOLS/taus.c
	modified:   openair2/COMMON/as_message.h
	modified:   openair2/COMMON/commonDef.h
	modified:   openair2/COMMON/gtpv1_u_messages_def.h
	modified:   openair2/COMMON/gtpv1_u_messages_types.h
	modified:   openair2/COMMON/intertask_interface_conf.h
	modified:   openair2/COMMON/mac_messages_def.h
	modified:   openair2/COMMON/mac_messages_types.h
	modified:   openair2/COMMON/mac_primitives.h
	modified:   openair2/COMMON/mac_rlc_primitives.h
	modified:   openair2/COMMON/mac_rrc_primitives.h
	modified:   openair2/COMMON/messages_def.h
	modified:   openair2/COMMON/messages_types.h
	modified:   openair2/COMMON/nas_messages_def.h
	modified:   openair2/COMMON/nas_messages_types.h
	modified:   openair2/COMMON/networkDef.h
	modified:   openair2/COMMON/openair_defs.h
	modified:   openair2/COMMON/openair_types.h
	modified:   openair2/COMMON/pdcp_messages_def.h
	modified:   openair2/COMMON/pdcp_messages_types.h
	modified:   openair2/COMMON/phy_messages_def.h
	modified:   openair2/COMMON/phy_messages_types.h
	modified:   openair2/COMMON/platform_constants.h
	modified:   openair2/COMMON/platform_types.h
	modified:   openair2/COMMON/ral_messages_def.h
	modified:   openair2/COMMON/ral_messages_types.h
	modified:   openair2/COMMON/rlc_messages_def.h
	modified:   openair2/COMMON/rlc_messages_types.h
	modified:   openair2/COMMON/rrc_messages_def.h
	modified:   openair2/COMMON/rrc_messages_types.h
	modified:   openair2/COMMON/rrm_config_structs.h
	modified:   openair2/COMMON/rrm_constants.h
	modified:   openair2/COMMON/rtos_header.h
	modified:   openair2/COMMON/s1ap_messages_def.h
	modified:   openair2/COMMON/s1ap_messages_types.h
	modified:   openair2/COMMON/sctp_messages_def.h
	modified:   openair2/COMMON/sctp_messages_types.h
	modified:   openair2/COMMON/tasks_def.h
	modified:   openair2/COMMON/udp_messages_def.h
	modified:   openair2/COMMON/udp_messages_types.h
	modified:   openair2/COMMON/x2ap_messages_def.h
	modified:   openair2/COMMON/x2ap_messages_types.h
	modified:   openair2/DOCS/TEMPLATES/CODE/example_doxy.h
	modified:   openair2/ENB_APP/enb_app.c
	modified:   openair2/ENB_APP/enb_app.h
	modified:   openair2/ENB_APP/enb_config.c
	modified:   openair2/ENB_APP/enb_config.h
	modified:   openair2/LAYER2/MAC/config.c
	modified:   openair2/LAYER2/MAC/defs.h
	modified:   openair2/LAYER2/MAC/eNB_scheduler.c
	modified:   openair2/LAYER2/MAC/eNB_scheduler_RA.c
	modified:   openair2/LAYER2/MAC/eNB_scheduler_bch.c
	modified:   openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
	modified:   openair2/LAYER2/MAC/eNB_scheduler_mch.c
	modified:   openair2/LAYER2/MAC/eNB_scheduler_primitives.c
	modified:   openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
	modified:   openair2/LAYER2/MAC/extern.h
	modified:   openair2/LAYER2/MAC/l1_helpers.c
	modified:   openair2/LAYER2/MAC/lte_transport_init.c
	modified:   openair2/LAYER2/MAC/main.c
	modified:   openair2/LAYER2/MAC/openair2_proc.c
	modified:   openair2/LAYER2/MAC/pre_processor.c
	modified:   openair2/LAYER2/MAC/proto.h
	modified:   openair2/LAYER2/MAC/ra_procedures.c
	modified:   openair2/LAYER2/MAC/rar_tools.c
	modified:   openair2/LAYER2/MAC/ue_procedures.c
	modified:   openair2/LAYER2/MAC/vars.h
	modified:   openair2/LAYER2/PDCP_v10.1.0/pdcp.c
	modified:   openair2/LAYER2/PDCP_v10.1.0/pdcp.h
	modified:   openair2/LAYER2/PDCP_v10.1.0/pdcp_control_primitive.c
	modified:   openair2/LAYER2/PDCP_v10.1.0/pdcp_control_primitives_proto_extern.h
	modified:   openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c
	modified:   openair2/LAYER2/PDCP_v10.1.0/pdcp_netlink.c
	modified:   openair2/LAYER2/PDCP_v10.1.0/pdcp_primitives.c
	modified:   openair2/LAYER2/PDCP_v10.1.0/pdcp_primitives.h
	modified:   openair2/LAYER2/PDCP_v10.1.0/pdcp_proto_extern.h
	modified:   openair2/LAYER2/PDCP_v10.1.0/pdcp_security.c
	modified:   openair2/LAYER2/PDCP_v10.1.0/pdcp_sequence_manager.c
	modified:   openair2/LAYER2/PDCP_v10.1.0/pdcp_sequence_manager.h
	modified:   openair2/LAYER2/PDCP_v10.1.0/pdcp_thread.c
	modified:   openair2/LAYER2/PDCP_v10.1.0/pdcp_util.c
	modified:   openair2/LAYER2/PDCP_v10.1.0/pdcp_util.h
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am.c
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am.h
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_constants.h
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_entity.h
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_in_sdu.c
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_in_sdu.h
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_init.c
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_init.h
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_proto_extern.h
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_reassembly.c
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_reassembly.h
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_receiver.c
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_receiver.h
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_retransmit.c
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_retransmit.h
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_rx_list.c
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_rx_list.h
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_segment.c
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_segment.h
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_segments_holes.c
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_segments_holes.h
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_status_report.c
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_status_report.h
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_structs.h
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_test.c
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_test.h
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_timer_poll_retransmit.c
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_timer_poll_retransmit.h
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_timer_reordering.c
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_timer_reordering.h
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_timer_status_prohibit.c
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_timer_status_prohibit.h
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_windows.c
	modified:   openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_windows.h
	modified:   openair2/LAYER2/RLC/TM_v9.3.0/rlc_tm.c
	modified:   openair2/LAYER2/RLC/TM_v9.3.0/rlc_tm.h
	modified:   openair2/LAYER2/RLC/TM_v9.3.0/rlc_tm_entity.h
	modified:   openair2/LAYER2/RLC/TM_v9.3.0/rlc_tm_init.c
	modified:   openair2/LAYER2/RLC/TM_v9.3.0/rlc_tm_init.h
	modified:   openair2/LAYER2/RLC/TM_v9.3.0/rlc_tm_structs.h
	modified:   openair2/LAYER2/RLC/UM_v9.3.0/rlc_um.c
	modified:   openair2/LAYER2/RLC/UM_v9.3.0/rlc_um.h
	modified:   openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_constants.h
	modified:   openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_control_primitives.c
	modified:   openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_control_primitives.h
	modified:   openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_dar.c
	modified:   openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_dar.h
	modified:   openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_entity.h
	modified:   openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_fsm.c
	modified:   openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_fsm.h
	modified:   openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_reassembly.c
	modified:   openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_reassembly.h
	modified:   openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_receiver.c
	modified:   openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_receiver.h
	modified:   openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_segment.c
	modified:   openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_segment.h
	modified:   openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_structs.h
	modified:   openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_test.c
	modified:   openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_test.h
	modified:   openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_very_simple_test.c
	modified:   openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_very_simple_test.h
	modified:   openair2/LAYER2/RLC/mac_primitives.h
	modified:   openair2/LAYER2/RLC/rlc.c
	modified:   openair2/LAYER2/RLC/rlc.h
	modified:   openair2/LAYER2/RLC/rlc_def.h
	modified:   openair2/LAYER2/RLC/rlc_def_lte.h
	modified:   openair2/LAYER2/RLC/rlc_mac.c
	modified:   openair2/LAYER2/RLC/rlc_mpls.c
	modified:   openair2/LAYER2/RLC/rlc_primitives.h
	modified:   openair2/LAYER2/RLC/rlc_rrc.c
	modified:   openair2/LAYER2/layer2_top.c
	modified:   openair2/LAYER2/openair2_proc.c
	modified:   openair2/LAYER2/register.c
	modified:   openair2/LAYER2/register.h
	modified:   openair2/NAS/DRIVER/CELLULAR/CTL_TOOL/nascell_ioctl.c
	modified:   openair2/NAS/DRIVER/CELLULAR/CTL_TOOL/nascell_ioctl.h
	modified:   openair2/NAS/DRIVER/CELLULAR/NASMT/nasmt_ascontrol.c
	modified:   openair2/NAS/DRIVER/CELLULAR/NASMT/nasmt_classifier.c
	modified:   openair2/NAS/DRIVER/CELLULAR/NASMT/nasmt_common.c
	modified:   openair2/NAS/DRIVER/CELLULAR/NASMT/nasmt_constant.h
	modified:   openair2/NAS/DRIVER/CELLULAR/NASMT/nasmt_device.c
	modified:   openair2/NAS/DRIVER/CELLULAR/NASMT/nasmt_iocontrol.c
	modified:   openair2/NAS/DRIVER/CELLULAR/NASMT/nasmt_iocontrol.h
	modified:   openair2/NAS/DRIVER/CELLULAR/NASMT/nasmt_netlink.c
	modified:   openair2/NAS/DRIVER/CELLULAR/NASMT/nasmt_proto.h
	modified:   openair2/NAS/DRIVER/CELLULAR/NASMT/nasmt_sap.h
	modified:   openair2/NAS/DRIVER/CELLULAR/NASMT/nasmt_tool.c
	modified:   openair2/NAS/DRIVER/CELLULAR/NASMT/nasmt_variables.h
	modified:   openair2/NAS/DRIVER/CELLULAR/NASRG/nasrg_ascontrol.c
	modified:   openair2/NAS/DRIVER/CELLULAR/NASRG/nasrg_classifier.c
	modified:   openair2/NAS/DRIVER/CELLULAR/NASRG/nasrg_common.c
	modified:   openair2/NAS/DRIVER/CELLULAR/NASRG/nasrg_constant.h
	modified:   openair2/NAS/DRIVER/CELLULAR/NASRG/nasrg_device.c
	modified:   openair2/NAS/DRIVER/CELLULAR/NASRG/nasrg_iocontrol.c
	modified:   openair2/NAS/DRIVER/CELLULAR/NASRG/nasrg_iocontrol.h
	modified:   openair2/NAS/DRIVER/CELLULAR/NASRG/nasrg_netlink.c
	modified:   openair2/NAS/DRIVER/CELLULAR/NASRG/nasrg_proto.h
	modified:   openair2/NAS/DRIVER/CELLULAR/NASRG/nasrg_sap.h
	modified:   openair2/NAS/DRIVER/CELLULAR/NASRG/nasrg_tool.c
	modified:   openair2/NAS/DRIVER/CELLULAR/NASRG/nasrg_variables.h
	modified:   openair2/NAS/DRIVER/CELLULAR/NETLTEST/netltest.c
	modified:   openair2/NAS/DRIVER/CELLULAR/NETLTEST/nettestPDCP.c
	modified:   openair2/NAS/SIMU_CELLULAR/nas_simu_proto.h
	modified:   openair2/NAS/SIMU_CELLULAR/nasrg_simu_meas.c
	modified:   openair2/NAS/SIMU_CELLULAR/rrm_fifo_standalone.c
	modified:   openair2/NAS/nas_ue_task.h
	modified:   openair2/NETWORK_DRIVER/LITE/RB_TOOL/rb_tool.c
	modified:   openair2/NETWORK_DRIVER/LITE/classifier.c
	modified:   openair2/NETWORK_DRIVER/LITE/common.c
	modified:   openair2/NETWORK_DRIVER/LITE/constant.h
	modified:   openair2/NETWORK_DRIVER/LITE/device.c
	modified:   openair2/NETWORK_DRIVER/LITE/ioctl.c
	modified:   openair2/NETWORK_DRIVER/LITE/ioctl.h
	modified:   openair2/NETWORK_DRIVER/LITE/local.h
	modified:   openair2/NETWORK_DRIVER/LITE/netlink.c
	modified:   openair2/NETWORK_DRIVER/LITE/proto_extern.h
	modified:   openair2/NETWORK_DRIVER/LITE/sap.h
	modified:   openair2/NETWORK_DRIVER/LITE/tool.c
	modified:   openair2/NETWORK_DRIVER/MESH/RB_TOOL/rb_tool.c
	modified:   openair2/NETWORK_DRIVER/MESH/TESTBENCH/testbench.c
	modified:   openair2/NETWORK_DRIVER/MESH/classifier.c
	modified:   openair2/NETWORK_DRIVER/MESH/common.c
	modified:   openair2/NETWORK_DRIVER/MESH/constant.h
	modified:   openair2/NETWORK_DRIVER/MESH/device.c
	modified:   openair2/NETWORK_DRIVER/MESH/ioctl.c
	modified:   openair2/NETWORK_DRIVER/MESH/ioctl.h
	modified:   openair2/NETWORK_DRIVER/MESH/local.h
	modified:   openair2/NETWORK_DRIVER/MESH/mesh.c
	modified:   openair2/NETWORK_DRIVER/MESH/netlink.c
	modified:   openair2/NETWORK_DRIVER/MESH/proto_extern.h
	modified:   openair2/NETWORK_DRIVER/MESH/rrc_nas_primitives.h
	modified:   openair2/NETWORK_DRIVER/MESH/sap.h
	modified:   openair2/NETWORK_DRIVER/MESH/tool.c
	modified:   openair2/NETWORK_DRIVER/UE_IP/common.c
	modified:   openair2/NETWORK_DRIVER/UE_IP/constant.h
	modified:   openair2/NETWORK_DRIVER/UE_IP/device.c
	modified:   openair2/NETWORK_DRIVER/UE_IP/local.h
	modified:   openair2/NETWORK_DRIVER/UE_IP/netlink.c
	modified:   openair2/NETWORK_DRIVER/UE_IP/proto_extern.h
	modified:   openair2/NETWORK_DRIVER/UE_IP/sap.h
	modified:   openair2/PHY_INTERFACE/defs.h
	modified:   openair2/PHY_INTERFACE/extern.h
	modified:   openair2/PHY_INTERFACE/mac_phy_primitives.c
	modified:   openair2/PHY_INTERFACE/mac_phy_primitives.h
	modified:   openair2/PHY_INTERFACE/vars.h
	modified:   openair2/RRC/L2_INTERFACE/openair_rrc_L2_interface.c
	modified:   openair2/RRC/L2_INTERFACE/openair_rrc_L2_interface.h
	modified:   openair2/RRC/LITE/L2_interface.c
	modified:   openair2/RRC/LITE/MESSAGES/asn1_msg.c
	modified:   openair2/RRC/LITE/MESSAGES/asn1_msg.h
	modified:   openair2/RRC/LITE/MESSAGES/rtai_mem.c
	modified:   openair2/RRC/LITE/MESSAGES/rtai_mem.h
	modified:   openair2/RRC/LITE/defs.h
	modified:   openair2/RRC/LITE/extern.h
	modified:   openair2/RRC/LITE/mesh_top.c
	modified:   openair2/RRC/LITE/plmn_data.h
	modified:   openair2/RRC/LITE/proto.h
	modified:   openair2/RRC/LITE/rrc_2_rrm_msg.c
	modified:   openair2/RRC/LITE/rrc_UE.c
	modified:   openair2/RRC/LITE/rrc_UE_ral.c
	modified:   openair2/RRC/LITE/rrc_UE_ral.h
	modified:   openair2/RRC/LITE/rrc_common.c
	modified:   openair2/RRC/LITE/rrc_config.c
	modified:   openair2/RRC/LITE/rrc_eNB.c
	modified:   openair2/RRC/LITE/rrc_eNB_GTPV1U.c
	modified:   openair2/RRC/LITE/rrc_eNB_GTPV1U.h
	modified:   openair2/RRC/LITE/rrc_eNB_S1AP.c
	modified:   openair2/RRC/LITE/rrc_eNB_S1AP.h
	modified:   openair2/RRC/LITE/rrc_eNB_UE_context.c
	modified:   openair2/RRC/LITE/rrc_eNB_UE_context.h
	modified:   openair2/RRC/LITE/rrc_eNB_ral.c
	modified:   openair2/RRC/LITE/rrc_eNB_ral.h
	modified:   openair2/RRC/LITE/rrc_rrm_interface.c
	modified:   openair2/RRC/LITE/rrc_rrm_interface.h
	modified:   openair2/RRC/LITE/rrc_types.h
	modified:   openair2/RRC/LITE/rrm_2_rrc_msg.c
	modified:   openair2/RRC/LITE/utils.c
	modified:   openair2/RRC/LITE/vars.h
	modified:   openair2/RRC/NAS/nas_config.c
	modified:   openair2/RRC/NAS/nas_config.h
	modified:   openair2/RRC/NAS/rb_config.c
	modified:   openair2/RRC/NAS/rb_config.h
	modified:   openair2/RRM_4_RRC_LITE/src/com/Message.cpp
	modified:   openair2/RRM_4_RRC_LITE/src/com/Message.h
	modified:   openair2/RRM_4_RRC_LITE/src/com/rrc/RRC2RRMMessageAddRadioAccessBearerConfirm.cpp
	modified:   openair2/RRM_4_RRC_LITE/src/com/rrc/RRC2RRMMessageAddRadioAccessBearerConfirm.h
	modified:   openair2/RRM_4_RRC_LITE/src/com/rrc/RRC2RRMMessageAddRadioAccessBearerRequest.cpp
	modified:   openair2/RRM_4_RRC_LITE/src/com/rrc/RRC2RRMMessageAddRadioAccessBearerRequest.h
	modified:   openair2/RRM_4_RRC_LITE/src/com/rrc/RRC2RRMMessageAddUserConfirm.cpp
	modified:   openair2/RRM_4_RRC_LITE/src/com/rrc/RRC2RRMMessageAddUserConfirm.h
	modified:   openair2/RRM_4_RRC_LITE/src/com/rrc/RRC2RRMMessageAddUserRequest.cpp
	modified:   openair2/RRM_4_RRC_LITE/src/com/rrc/RRC2RRMMessageAddUserRequest.h
	modified:   openair2/RRM_4_RRC_LITE/src/com/rrc/RRC2RRMMessageConnectionRequest.cpp
	modified:   openair2/RRM_4_RRC_LITE/src/com/rrc/RRC2RRMMessageConnectionRequest.h
	modified:   openair2/RRM_4_RRC_LITE/src/com/rrc/RRC2RRMMessageRemoveRadioAccessBearerRequest.cpp
	modified:   openair2/RRM_4_RRC_LITE/src/com/rrc/RRC2RRMMessageRemoveRadioAccessBearerRequest.h
	modified:   openair2/RRM_4_RRC_LITE/src/com/rrc/RRC2RRMMessageRemoveUserRequest.cpp
	modified:   openair2/RRM_4_RRC_LITE/src/com/rrc/RRC2RRMMessageRemoveUserRequest.h
	modified:   openair2/RRM_4_RRC_LITE/src/com/rrc/RRC2RRMMessageUserReconfigurationComplete.cpp
	modified:   openair2/RRM_4_RRC_LITE/src/com/rrc/RRC2RRMMessageUserReconfigurationComplete.h
	modified:   openair2/RRM_4_RRC_LITE/src/com/rrc/RRCMessageHandler.cpp
	modified:   openair2/RRM_4_RRC_LITE/src/com/rrc/RRCMessageHandler.h
	modified:   openair2/RRM_4_RRC_LITE/src/com/rrc/RRCUdpSocket.cpp
	modified:   openair2/RRM_4_RRC_LITE/src/com/rrc/RRCUdpSocket.h
	modified:   openair2/RRM_4_RRC_LITE/src/com/rrc/RRM2RRCMessageAddRadioAccessBearerResponse.cpp
	modified:   openair2/RRM_4_RRC_LITE/src/com/rrc/RRM2RRCMessageAddRadioAccessBearerResponse.h
	modified:   openair2/RRM_4_RRC_LITE/src/com/rrc/RRM2RRCMessageAddUserResponse.cpp
	modified:   openair2/RRM_4_RRC_LITE/src/com/rrc/RRM2RRCMessageAddUserResponse.h
	modified:   openair2/RRM_4_RRC_LITE/src/com/rrc/RRM2RRCMessageConnectionResponse.cpp
	modified:   openair2/RRM_4_RRC_LITE/src/com/rrc/RRM2RRCMessageConnectionResponse.h
	modified:   openair2/RRM_4_RRC_LITE/src/com/rrc/RRM2RRCMessageRemoveRadioAccessBearerResponse.cpp
	modified:   openair2/RRM_4_RRC_LITE/src/com/rrc/RRM2RRCMessageRemoveRadioAccessBearerResponse.h
	modified:   openair2/RRM_4_RRC_LITE/src/com/rrc/RRM2RRCMessageRemoveUserResponse.cpp
	modified:   openair2/RRM_4_RRC_LITE/src/com/rrc/RRM2RRCMessageRemoveUserResponse.h
	modified:   openair2/RRM_4_RRC_LITE/src/com/rrc/RRM2RRCMessageUserReconfiguration.cpp
	modified:   openair2/RRM_4_RRC_LITE/src/com/rrc/RRM2RRCMessageUserReconfiguration.h
	modified:   openair2/RRM_4_RRC_LITE/src/com/rrm/RRMMessageHandler.cpp
	modified:   openair2/RRM_4_RRC_LITE/src/com/rrm/RRMMessageHandler.h
	modified:   openair2/RRM_4_RRC_LITE/src/com/rrm/RRMUdpSocket.cpp
	modified:   openair2/RRM_4_RRC_LITE/src/com/rrm/RRMUdpSocket.h
	modified:   openair2/RRM_4_RRC_LITE/src/platform.h
	modified:   openair2/RRM_4_RRC_LITE/src/platform_constants.h
	modified:   openair2/RRM_4_RRC_LITE/src/platform_defines.h
	modified:   openair2/RRM_4_RRC_LITE/src/platform_dim.h
	modified:   openair2/RRM_4_RRC_LITE/src/radio_resources/Asn1Utils.cpp
	modified:   openair2/RRM_4_RRC_LITE/src/radio_resources/Asn1Utils.h
	modified:   openair2/RRM_4_RRC_LITE/src/radio_resources/Command.cpp
	modified:   openair2/RRM_4_RRC_LITE/src/radio_resources/Command.h
	modified:   openair2/RRM_4_RRC_LITE/src/radio_resources/DataRadioBearer.cpp
	modified:   openair2/RRM_4_RRC_LITE/src/radio_resources/DataRadioBearer.h
	modified:   openair2/RRM_4_RRC_LITE/src/radio_resources/ENodeB.cpp
	modified:   openair2/RRM_4_RRC_LITE/src/radio_resources/ENodeB.h
	modified:   openair2/RRM_4_RRC_LITE/src/radio_resources/Exceptions.h
	modified:   openair2/RRM_4_RRC_LITE/src/radio_resources/LogicalChannel.cpp
	modified:   openair2/RRM_4_RRC_LITE/src/radio_resources/LogicalChannel.h
	modified:   openair2/RRM_4_RRC_LITE/src/radio_resources/Mobile.cpp
	modified:   openair2/RRM_4_RRC_LITE/src/radio_resources/Mobile.h
	modified:   openair2/RRM_4_RRC_LITE/src/radio_resources/RadioBearer.cpp
	modified:   openair2/RRM_4_RRC_LITE/src/radio_resources/RadioBearer.h
	modified:   openair2/RRM_4_RRC_LITE/src/radio_resources/RadioResources.cpp
	modified:   openair2/RRM_4_RRC_LITE/src/radio_resources/RadioResources.h
	modified:   openair2/RRM_4_RRC_LITE/src/radio_resources/SignallingRadioBearer.cpp
	modified:   openair2/RRM_4_RRC_LITE/src/radio_resources/SignallingRadioBearer.h
	modified:   openair2/RRM_4_RRC_LITE/src/radio_resources/Transaction.cpp
	modified:   openair2/RRM_4_RRC_LITE/src/radio_resources/Transaction.h
	modified:   openair2/RRM_4_RRC_LITE/src/radio_resources/Transactions.cpp
	modified:   openair2/RRM_4_RRC_LITE/src/radio_resources/Transactions.h
	modified:   openair2/RRM_4_RRC_LITE/src/rrm.cpp
	modified:   openair2/RRM_4_RRC_LITE/src/test/TestScenario.cpp
	modified:   openair2/RRM_4_RRC_LITE/src/test/TestScenario.h
	modified:   openair2/RRM_4_RRC_LITE/src/test/test.cpp
	modified:   openair2/RRM_4_RRC_LITE/src/version.h
	modified:   openair2/UTIL/BIGPHYS/bigphys.c
	modified:   openair2/UTIL/BIGPHYS/defs.h
	modified:   openair2/UTIL/CLI/cli.c
	modified:   openair2/UTIL/CLI/cli.h
	modified:   openair2/UTIL/CLI/cli_cmd.c
	modified:   openair2/UTIL/CLI/cli_if.h
	modified:   openair2/UTIL/CLI/cli_server.c
	modified:   openair2/UTIL/FIFO/pad_list.c
	modified:   openair2/UTIL/FIFO/pad_list.h
	modified:   openair2/UTIL/FIFO/types.h
	modified:   openair2/UTIL/LISTS/list.c
	modified:   openair2/UTIL/LISTS/list.h
	modified:   openair2/UTIL/LISTS/list2.c
	modified:   openair2/UTIL/LOG/log.c
	modified:   openair2/UTIL/LOG/log.h
	modified:   openair2/UTIL/LOG/log_extern.h
	modified:   openair2/UTIL/LOG/log_if.h
	modified:   openair2/UTIL/LOG/vcd_signal_dumper.c
	modified:   openair2/UTIL/LOG/vcd_signal_dumper.h
	modified:   openair2/UTIL/MATH/crc_byte.c
	modified:   openair2/UTIL/MATH/oml.c
	modified:   openair2/UTIL/MATH/oml.h
	modified:   openair2/UTIL/MATH/random.c
	modified:   openair2/UTIL/MATH/random_proto_extern.h
	modified:   openair2/UTIL/MATH/taus.c
	modified:   openair2/UTIL/MEM/mem_block.c
	modified:   openair2/UTIL/MEM/mem_block.h
	modified:   openair2/UTIL/MEM/mem_mngt.c
	modified:   openair2/UTIL/MEM/mem_mngt_proto_extern.h
	modified:   openair2/UTIL/MEM/mem_pool.h
	modified:   openair2/UTIL/OCG/OCG.c
	modified:   openair2/UTIL/OCG/OCG.h
	modified:   openair2/UTIL/OCG/OCG_call_emu.c
	modified:   openair2/UTIL/OCG/OCG_call_emu.h
	modified:   openair2/UTIL/OCG/OCG_config_mobi.c
	modified:   openair2/UTIL/OCG/OCG_config_mobi.h
	modified:   openair2/UTIL/OCG/OCG_create_dir.c
	modified:   openair2/UTIL/OCG/OCG_create_dir.h
	modified:   openair2/UTIL/OCG/OCG_detect_file.c
	modified:   openair2/UTIL/OCG/OCG_detect_file.h
	modified:   openair2/UTIL/OCG/OCG_extern.h
	modified:   openair2/UTIL/OCG/OCG_generate_report.c
	modified:   openair2/UTIL/OCG/OCG_generate_report.h
	modified:   openair2/UTIL/OCG/OCG_get_opt.c
	modified:   openair2/UTIL/OCG/OCG_get_opt.h
	modified:   openair2/UTIL/OCG/OCG_if.h
	modified:   openair2/UTIL/OCG/OCG_parse_XML.c
	modified:   openair2/UTIL/OCG/OCG_parse_XML.h
	modified:   openair2/UTIL/OCG/OCG_parse_filename.c
	modified:   openair2/UTIL/OCG/OCG_parse_filename.h
	modified:   openair2/UTIL/OCG/OCG_save_XML.c
	modified:   openair2/UTIL/OCG/OCG_save_XML.h
	modified:   openair2/UTIL/OCG/OCG_vars.h
	modified:   openair2/UTIL/OMG/client_traci_OMG.c
	modified:   openair2/UTIL/OMG/client_traci_OMG.h
	modified:   openair2/UTIL/OMG/common.c
	modified:   openair2/UTIL/OMG/defs.h
	modified:   openair2/UTIL/OMG/grid.c
	modified:   openair2/UTIL/OMG/grid.h
	modified:   openair2/UTIL/OMG/id_manager.c
	modified:   openair2/UTIL/OMG/id_manager.h
	modified:   openair2/UTIL/OMG/job.c
	modified:   openair2/UTIL/OMG/mobility_parser.c
	modified:   openair2/UTIL/OMG/mobility_parser.h
	modified:   openair2/UTIL/OMG/omg.c
	modified:   openair2/UTIL/OMG/omg.h
	modified:   openair2/UTIL/OMG/omg_constants.h
	modified:   openair2/UTIL/OMG/omg_hashtable.c
	modified:   openair2/UTIL/OMG/omg_hashtable.h
	modified:   openair2/UTIL/OMG/omg_vars.h
	modified:   openair2/UTIL/OMG/rwalk.c
	modified:   openair2/UTIL/OMG/rwalk.h
	modified:   openair2/UTIL/OMG/rwp.c
	modified:   openair2/UTIL/OMG/rwp.h
	modified:   openair2/UTIL/OMG/socket_traci_OMG.c
	modified:   openair2/UTIL/OMG/socket_traci_OMG.h
	modified:   openair2/UTIL/OMG/static.c
	modified:   openair2/UTIL/OMG/static.h
	modified:   openair2/UTIL/OMG/steadystaterwp.c
	modified:   openair2/UTIL/OMG/steadystaterwp.h
	modified:   openair2/UTIL/OMG/storage_traci_OMG.c
	modified:   openair2/UTIL/OMG/storage_traci_OMG.h
	modified:   openair2/UTIL/OMG/sumo.c
	modified:   openair2/UTIL/OMG/sumo.h
	modified:   openair2/UTIL/OMG/trace.c
	modified:   openair2/UTIL/OMG/trace.h
	modified:   openair2/UTIL/OMG/trace_hashtable.c
	modified:   openair2/UTIL/OMG/trace_hashtable.h
	modified:   openair2/UTIL/OMV/communicationthread.cpp
	modified:   openair2/UTIL/OMV/communicationthread.h
	modified:   openair2/UTIL/OMV/mywindow.cpp
	modified:   openair2/UTIL/OMV/mywindow.h
	modified:   openair2/UTIL/OMV/omv.cpp
	modified:   openair2/UTIL/OMV/openglwidget.cpp
	modified:   openair2/UTIL/OMV/openglwidget.h
	modified:   openair2/UTIL/OMV/structures.h
	modified:   openair2/UTIL/OPT/opt.h
	modified:   openair2/UTIL/OPT/socket_sender.c
	modified:   openair2/UTIL/OPT/vars.h
	modified:   openair2/UTIL/OSA/osa_defs.h
	modified:   openair2/UTIL/OSA/osa_internal.h
	modified:   openair2/UTIL/OSA/osa_key_deriver.c
	modified:   openair2/UTIL/OSA/osa_rijndael.c
	modified:   openair2/UTIL/OSA/osa_rijndael.h
	modified:   openair2/UTIL/OSA/osa_snow3g.c
	modified:   openair2/UTIL/OSA/osa_snow3g.h
	modified:   openair2/UTIL/OSA/osa_stream_eea.c
	modified:   openair2/UTIL/OSA/osa_stream_eia.c
	modified:   openair2/UTIL/OTG/main.c
	modified:   openair2/UTIL/OTG/otg.c
	modified:   openair2/UTIL/OTG/otg.h
	modified:   openair2/UTIL/OTG/otg_config.h
	modified:   openair2/UTIL/OTG/otg_defs.h
	modified:   openair2/UTIL/OTG/otg_externs.h
	modified:   openair2/UTIL/OTG/otg_form.c
	modified:   openair2/UTIL/OTG/otg_form.h
	modified:   openair2/UTIL/OTG/otg_kpi.c
	modified:   openair2/UTIL/OTG/otg_kpi.h
	modified:   openair2/UTIL/OTG/otg_models.c
	modified:   openair2/UTIL/OTG/otg_models.h
	modified:   openair2/UTIL/OTG/otg_rx.c
	modified:   openair2/UTIL/OTG/otg_rx.h
	modified:   openair2/UTIL/OTG/otg_rx_socket.c
	modified:   openair2/UTIL/OTG/otg_rx_socket.h
	modified:   openair2/UTIL/OTG/otg_tx.c
	modified:   openair2/UTIL/OTG/otg_tx.h
	modified:   openair2/UTIL/OTG/otg_tx_socket.c
	modified:   openair2/UTIL/OTG/otg_tx_socket.h
	modified:   openair2/UTIL/OTG/otg_vars.h
	modified:   openair2/UTIL/OTG/traffic_config.h
	modified:   openair2/UTIL/TIMER/umts_timer.c
	modified:   openair2/UTIL/TIMER/umts_timer.h
	modified:   openair2/UTIL/TIMER/umts_timer_proto_extern.h
	modified:   openair2/UTIL/TIMER/umts_timer_struct.h
	modified:   openair2/UTIL/TRACE/fifo_printf.c
	modified:   openair2/UTIL/TRACE/fifo_printf.h
	modified:   openair2/UTIL/TRACE/fifo_printf_proto_extern.h
	modified:   openair2/UTIL/TRACE/print.h
	modified:   openair2/X2AP/x2ap.c
	modified:   openair2/X2AP/x2ap.h
	modified:   openair2/X2AP/x2ap_common.c
	modified:   openair2/X2AP/x2ap_common.h
	modified:   openair3/COMMON/common_types.h
	modified:   openair3/COMMON/gtpv1_u_messages_def.h
	modified:   openair3/COMMON/gtpv1_u_messages_types.h
	modified:   openair3/COMMON/intertask_interface_conf.h
	modified:   openair3/COMMON/messages_def.h
	modified:   openair3/COMMON/messages_types.h
	modified:   openair3/COMMON/nas_messages_def.h
	modified:   openair3/COMMON/nas_messages_types.h
	modified:   openair3/COMMON/s1ap_messages_def.h
	modified:   openair3/COMMON/s1ap_messages_types.h
	modified:   openair3/COMMON/sctp_messages_def.h
	modified:   openair3/COMMON/sctp_messages_types.h
	modified:   openair3/COMMON/security_types.h
	modified:   openair3/COMMON/tasks_def.h
	modified:   openair3/COMMON/udp_messages_def.h
	modified:   openair3/COMMON/udp_messages_types.h
	modified:   openair3/GTPV1-U/gtpv1u.h
	modified:   openair3/GTPV1-U/gtpv1u_eNB.c
	modified:   openair3/GTPV1-U/gtpv1u_eNB_defs.h
	modified:   openair3/GTPV1-U/gtpv1u_eNB_task.h
	modified:   openair3/GTPV1-U/gtpv1u_sgw_defs.h
	modified:   openair3/GTPV1-U/gtpv1u_task.c
	modified:   openair3/GTPV1-U/gtpv1u_teid_pool.c
	modified:   openair3/NAS/COMMON/API/NETWORK/as_message.c
	modified:   openair3/NAS/COMMON/API/NETWORK/l2_message.h
	modified:   openair3/NAS/COMMON/API/NETWORK/nas_message.c
	modified:   openair3/NAS/COMMON/API/NETWORK/nas_message.h
	modified:   openair3/NAS/COMMON/API/NETWORK/network_api.c
	modified:   openair3/NAS/COMMON/API/NETWORK/network_api.h
	modified:   openair3/NAS/COMMON/EMM/MSG/AttachAccept.c
	modified:   openair3/NAS/COMMON/EMM/MSG/AttachAccept.h
	modified:   openair3/NAS/COMMON/EMM/MSG/AttachComplete.c
	modified:   openair3/NAS/COMMON/EMM/MSG/AttachComplete.h
	modified:   openair3/NAS/COMMON/EMM/MSG/AttachReject.c
	modified:   openair3/NAS/COMMON/EMM/MSG/AttachReject.h
	modified:   openair3/NAS/COMMON/EMM/MSG/AttachRequest.c
	modified:   openair3/NAS/COMMON/EMM/MSG/AttachRequest.h
	modified:   openair3/NAS/COMMON/EMM/MSG/AuthenticationFailure.c
	modified:   openair3/NAS/COMMON/EMM/MSG/AuthenticationFailure.h
	modified:   openair3/NAS/COMMON/EMM/MSG/AuthenticationReject.c
	modified:   openair3/NAS/COMMON/EMM/MSG/AuthenticationReject.h
	modified:   openair3/NAS/COMMON/EMM/MSG/AuthenticationRequest.c
	modified:   openair3/NAS/COMMON/EMM/MSG/AuthenticationRequest.h
	modified:   openair3/NAS/COMMON/EMM/MSG/AuthenticationResponse.c
	modified:   openair3/NAS/COMMON/EMM/MSG/AuthenticationResponse.h
	modified:   openair3/NAS/COMMON/EMM/MSG/CsServiceNotification.c
	modified:   openair3/NAS/COMMON/EMM/MSG/CsServiceNotification.h
	modified:   openair3/NAS/COMMON/EMM/MSG/DetachAccept.c
	modified:   openair3/NAS/COMMON/EMM/MSG/DetachAccept.h
	modified:   openair3/NAS/COMMON/EMM/MSG/DetachRequest.c
	modified:   openair3/NAS/COMMON/EMM/MSG/DetachRequest.h
	modified:   openair3/NAS/COMMON/EMM/MSG/DownlinkNasTransport.c
	modified:   openair3/NAS/COMMON/EMM/MSG/DownlinkNasTransport.h
	modified:   openair3/NAS/COMMON/EMM/MSG/EmmInformation.c
	modified:   openair3/NAS/COMMON/EMM/MSG/EmmInformation.h
	modified:   openair3/NAS/COMMON/EMM/MSG/EmmStatus.c
	modified:   openair3/NAS/COMMON/EMM/MSG/EmmStatus.h
	modified:   openair3/NAS/COMMON/EMM/MSG/ExtendedServiceRequest.c
	modified:   openair3/NAS/COMMON/EMM/MSG/ExtendedServiceRequest.h
	modified:   openair3/NAS/COMMON/EMM/MSG/GutiReallocationCommand.c
	modified:   openair3/NAS/COMMON/EMM/MSG/GutiReallocationCommand.h
	modified:   openair3/NAS/COMMON/EMM/MSG/GutiReallocationComplete.c
	modified:   openair3/NAS/COMMON/EMM/MSG/GutiReallocationComplete.h
	modified:   openair3/NAS/COMMON/EMM/MSG/IdentityRequest.c
	modified:   openair3/NAS/COMMON/EMM/MSG/IdentityRequest.h
	modified:   openair3/NAS/COMMON/EMM/MSG/IdentityResponse.c
	modified:   openair3/NAS/COMMON/EMM/MSG/IdentityResponse.h
	modified:   openair3/NAS/COMMON/EMM/MSG/NASSecurityModeCommand.h
	modified:   openair3/NAS/COMMON/EMM/MSG/NASSecurityModeComplete.h
	modified:   openair3/NAS/COMMON/EMM/MSG/SecurityModeCommand.c
	modified:   openair3/NAS/COMMON/EMM/MSG/SecurityModeComplete.c
	modified:   openair3/NAS/COMMON/EMM/MSG/SecurityModeReject.c
	modified:   openair3/NAS/COMMON/EMM/MSG/SecurityModeReject.h
	modified:   openair3/NAS/COMMON/EMM/MSG/ServiceReject.c
	modified:   openair3/NAS/COMMON/EMM/MSG/ServiceReject.h
	modified:   openair3/NAS/COMMON/EMM/MSG/ServiceRequest.c
	modified:   openair3/NAS/COMMON/EMM/MSG/ServiceRequest.h
	modified:   openair3/NAS/COMMON/EMM/MSG/TrackingAreaUpdateAccept.c
	modified:   openair3/NAS/COMMON/EMM/MSG/TrackingAreaUpdateAccept.h
	modified:   openair3/NAS/COMMON/EMM/MSG/TrackingAreaUpdateComplete.c
	modified:   openair3/NAS/COMMON/EMM/MSG/TrackingAreaUpdateComplete.h
	modified:   openair3/NAS/COMMON/EMM/MSG/TrackingAreaUpdateReject.c
	modified:   openair3/NAS/COMMON/EMM/MSG/TrackingAreaUpdateReject.h
	modified:   openair3/NAS/COMMON/EMM/MSG/TrackingAreaUpdateRequest.c
	modified:   openair3/NAS/COMMON/EMM/MSG/TrackingAreaUpdateRequest.h
	modified:   openair3/NAS/COMMON/EMM/MSG/UplinkNasTransport.c
	modified:   openair3/NAS/COMMON/EMM/MSG/UplinkNasTransport.h
	modified:   openair3/NAS/COMMON/EMM/MSG/emm_cause.h
	modified:   openair3/NAS/COMMON/EMM/MSG/emm_msg.c
	modified:   openair3/NAS/COMMON/EMM/MSG/emm_msg.h
	modified:   openair3/NAS/COMMON/EMM/MSG/emm_msgDef.h
	modified:   openair3/NAS/COMMON/ESM/MSG/ActivateDedicatedEpsBearerContextAccept.c
	modified:   openair3/NAS/COMMON/ESM/MSG/ActivateDedicatedEpsBearerContextAccept.h
	modified:   openair3/NAS/COMMON/ESM/MSG/ActivateDedicatedEpsBearerContextReject.c
	modified:   openair3/NAS/COMMON/ESM/MSG/ActivateDedicatedEpsBearerContextReject.h
	modified:   openair3/NAS/COMMON/ESM/MSG/ActivateDedicatedEpsBearerContextRequest.c
	modified:   openair3/NAS/COMMON/ESM/MSG/ActivateDedicatedEpsBearerContextRequest.h
	modified:   openair3/NAS/COMMON/ESM/MSG/ActivateDefaultEpsBearerContextAccept.c
	modified:   openair3/NAS/COMMON/ESM/MSG/ActivateDefaultEpsBearerContextAccept.h
	modified:   openair3/NAS/COMMON/ESM/MSG/ActivateDefaultEpsBearerContextReject.c
	modified:   openair3/NAS/COMMON/ESM/MSG/ActivateDefaultEpsBearerContextReject.h
	modified:   openair3/NAS/COMMON/ESM/MSG/ActivateDefaultEpsBearerContextRequest.c
	modified:   openair3/NAS/COMMON/ESM/MSG/ActivateDefaultEpsBearerContextRequest.h
	modified:   openair3/NAS/COMMON/ESM/MSG/BearerResourceAllocationReject.c
	modified:   openair3/NAS/COMMON/ESM/MSG/BearerResourceAllocationReject.h
	modified:   openair3/NAS/COMMON/ESM/MSG/BearerResourceAllocationRequest.c
	modified:   openair3/NAS/COMMON/ESM/MSG/BearerResourceAllocationRequest.h
	modified:   openair3/NAS/COMMON/ESM/MSG/BearerResourceModificationReject.c
	modified:   openair3/NAS/COMMON/ESM/MSG/BearerResourceModificationReject.h
	modified:   openair3/NAS/COMMON/ESM/MSG/BearerResourceModificationRequest.c
	modified:   openair3/NAS/COMMON/ESM/MSG/BearerResourceModificationRequest.h
	modified:   openair3/NAS/COMMON/ESM/MSG/DeactivateEpsBearerContextAccept.c
	modified:   openair3/NAS/COMMON/ESM/MSG/DeactivateEpsBearerContextAccept.h
	modified:   openair3/NAS/COMMON/ESM/MSG/DeactivateEpsBearerContextRequest.c
	modified:   openair3/NAS/COMMON/ESM/MSG/DeactivateEpsBearerContextRequest.h
	modified:   openair3/NAS/COMMON/ESM/MSG/EsmInformationRequest.c
	modified:   openair3/NAS/COMMON/ESM/MSG/EsmInformationRequest.h
	modified:   openair3/NAS/COMMON/ESM/MSG/EsmInformationResponse.c
	modified:   openair3/NAS/COMMON/ESM/MSG/EsmInformationResponse.h
	modified:   openair3/NAS/COMMON/ESM/MSG/EsmStatus.c
	modified:   openair3/NAS/COMMON/ESM/MSG/EsmStatus.h
	modified:   openair3/NAS/COMMON/ESM/MSG/ModifyEpsBearerContextAccept.c
	modified:   openair3/NAS/COMMON/ESM/MSG/ModifyEpsBearerContextAccept.h
	modified:   openair3/NAS/COMMON/ESM/MSG/ModifyEpsBearerContextReject.c
	modified:   openair3/NAS/COMMON/ESM/MSG/ModifyEpsBearerContextReject.h
	modified:   openair3/NAS/COMMON/ESM/MSG/ModifyEpsBearerContextRequest.c
	modified:   openair3/NAS/COMMON/ESM/MSG/ModifyEpsBearerContextRequest.h
	modified:   openair3/NAS/COMMON/ESM/MSG/PdnConnectivityReject.c
	modified:   openair3/NAS/COMMON/ESM/MSG/PdnConnectivityReject.h
	modified:   openair3/NAS/COMMON/ESM/MSG/PdnConnectivityRequest.c
	modified:   openair3/NAS/COMMON/ESM/MSG/PdnConnectivityRequest.h
	modified:   openair3/NAS/COMMON/ESM/MSG/PdnDisconnectReject.c
	modified:   openair3/NAS/COMMON/ESM/MSG/PdnDisconnectReject.h
	modified:   openair3/NAS/COMMON/ESM/MSG/PdnDisconnectRequest.c
	modified:   openair3/NAS/COMMON/ESM/MSG/PdnDisconnectRequest.h
	modified:   openair3/NAS/COMMON/ESM/MSG/esm_cause.h
	modified:   openair3/NAS/COMMON/ESM/MSG/esm_msg.c
	modified:   openair3/NAS/COMMON/ESM/MSG/esm_msg.h
	modified:   openair3/NAS/COMMON/ESM/MSG/esm_msgDef.h
	modified:   openair3/NAS/COMMON/IES/AccessPointName.c
	modified:   openair3/NAS/COMMON/IES/AccessPointName.h
	modified:   openair3/NAS/COMMON/IES/AdditionalUpdateResult.c
	modified:   openair3/NAS/COMMON/IES/AdditionalUpdateResult.h
	modified:   openair3/NAS/COMMON/IES/AdditionalUpdateType.c
	modified:   openair3/NAS/COMMON/IES/AdditionalUpdateType.h
	modified:   openair3/NAS/COMMON/IES/ApnAggregateMaximumBitRate.c
	modified:   openair3/NAS/COMMON/IES/ApnAggregateMaximumBitRate.h
	modified:   openair3/NAS/COMMON/IES/AuthenticationFailureParameter.c
	modified:   openair3/NAS/COMMON/IES/AuthenticationFailureParameter.h
	modified:   openair3/NAS/COMMON/IES/AuthenticationParameterAutn.c
	modified:   openair3/NAS/COMMON/IES/AuthenticationParameterAutn.h
	modified:   openair3/NAS/COMMON/IES/AuthenticationParameterRand.c
	modified:   openair3/NAS/COMMON/IES/AuthenticationParameterRand.h
	modified:   openair3/NAS/COMMON/IES/AuthenticationResponseParameter.c
	modified:   openair3/NAS/COMMON/IES/AuthenticationResponseParameter.h
	modified:   openair3/NAS/COMMON/IES/CipheringKeySequenceNumber.c
	modified:   openair3/NAS/COMMON/IES/CipheringKeySequenceNumber.h
	modified:   openair3/NAS/COMMON/IES/Cli.c
	modified:   openair3/NAS/COMMON/IES/Cli.h
	modified:   openair3/NAS/COMMON/IES/CsfbResponse.c
	modified:   openair3/NAS/COMMON/IES/CsfbResponse.h
	modified:   openair3/NAS/COMMON/IES/DaylightSavingTime.c
	modified:   openair3/NAS/COMMON/IES/DaylightSavingTime.h
	modified:   openair3/NAS/COMMON/IES/DetachType.c
	modified:   openair3/NAS/COMMON/IES/DetachType.h
	modified:   openair3/NAS/COMMON/IES/DrxParameter.c
	modified:   openair3/NAS/COMMON/IES/DrxParameter.h
	modified:   openair3/NAS/COMMON/IES/EmergencyNumberList.c
	modified:   openair3/NAS/COMMON/IES/EmergencyNumberList.h
	modified:   openair3/NAS/COMMON/IES/EmmCause.c
	modified:   openair3/NAS/COMMON/IES/EmmCause.h
	modified:   openair3/NAS/COMMON/IES/EpsAttachResult.c
	modified:   openair3/NAS/COMMON/IES/EpsAttachResult.h
	modified:   openair3/NAS/COMMON/IES/EpsAttachType.c
	modified:   openair3/NAS/COMMON/IES/EpsAttachType.h
	modified:   openair3/NAS/COMMON/IES/EpsBearerContextStatus.c
	modified:   openair3/NAS/COMMON/IES/EpsBearerContextStatus.h
	modified:   openair3/NAS/COMMON/IES/EpsBearerIdentity.c
	modified:   openair3/NAS/COMMON/IES/EpsBearerIdentity.h
	modified:   openair3/NAS/COMMON/IES/EpsMobileIdentity.c
	modified:   openair3/NAS/COMMON/IES/EpsMobileIdentity.h
	modified:   openair3/NAS/COMMON/IES/EpsNetworkFeatureSupport.c
	modified:   openair3/NAS/COMMON/IES/EpsNetworkFeatureSupport.h
	modified:   openair3/NAS/COMMON/IES/EpsQualityOfService.c
	modified:   openair3/NAS/COMMON/IES/EpsQualityOfService.h
	modified:   openair3/NAS/COMMON/IES/EpsUpdateResult.c
	modified:   openair3/NAS/COMMON/IES/EpsUpdateResult.h
	modified:   openair3/NAS/COMMON/IES/EpsUpdateType.c
	modified:   openair3/NAS/COMMON/IES/EpsUpdateType.h
	modified:   openair3/NAS/COMMON/IES/EsmCause.c
	modified:   openair3/NAS/COMMON/IES/EsmCause.h
	modified:   openair3/NAS/COMMON/IES/EsmInformationTransferFlag.c
	modified:   openair3/NAS/COMMON/IES/EsmInformationTransferFlag.h
	modified:   openair3/NAS/COMMON/IES/EsmMessageContainer.c
	modified:   openair3/NAS/COMMON/IES/EsmMessageContainer.h
	modified:   openair3/NAS/COMMON/IES/GprsTimer.c
	modified:   openair3/NAS/COMMON/IES/GprsTimer.h
	modified:   openair3/NAS/COMMON/IES/GutiType.c
	modified:   openair3/NAS/COMMON/IES/GutiType.h
	modified:   openair3/NAS/COMMON/IES/IdentityType2.c
	modified:   openair3/NAS/COMMON/IES/IdentityType2.h
	modified:   openair3/NAS/COMMON/IES/ImeisvRequest.c
	modified:   openair3/NAS/COMMON/IES/ImeisvRequest.h
	modified:   openair3/NAS/COMMON/IES/KsiAndSequenceNumber.c
	modified:   openair3/NAS/COMMON/IES/KsiAndSequenceNumber.h
	modified:   openair3/NAS/COMMON/IES/LcsClientIdentity.c
	modified:   openair3/NAS/COMMON/IES/LcsClientIdentity.h
	modified:   openair3/NAS/COMMON/IES/LcsIndicator.c
	modified:   openair3/NAS/COMMON/IES/LcsIndicator.h
	modified:   openair3/NAS/COMMON/IES/LinkedEpsBearerIdentity.c
	modified:   openair3/NAS/COMMON/IES/LinkedEpsBearerIdentity.h
	modified:   openair3/NAS/COMMON/IES/LlcServiceAccessPointIdentifier.c
	modified:   openair3/NAS/COMMON/IES/LlcServiceAccessPointIdentifier.h
	modified:   openair3/NAS/COMMON/IES/LocationAreaIdentification.c
	modified:   openair3/NAS/COMMON/IES/LocationAreaIdentification.h
	modified:   openair3/NAS/COMMON/IES/MessageType.c
	modified:   openair3/NAS/COMMON/IES/MessageType.h
	modified:   openair3/NAS/COMMON/IES/MobileIdentity.c
	modified:   openair3/NAS/COMMON/IES/MobileIdentity.h
	modified:   openair3/NAS/COMMON/IES/MobileStationClassmark2.c
	modified:   openair3/NAS/COMMON/IES/MobileStationClassmark2.h
	modified:   openair3/NAS/COMMON/IES/MobileStationClassmark3.c
	modified:   openair3/NAS/COMMON/IES/MobileStationClassmark3.h
	modified:   openair3/NAS/COMMON/IES/MsNetworkCapability.c
	modified:   openair3/NAS/COMMON/IES/MsNetworkCapability.h
	modified:   openair3/NAS/COMMON/IES/MsNetworkFeatureSupport.c
	modified:   openair3/NAS/COMMON/IES/MsNetworkFeatureSupport.h
	modified:   openair3/NAS/COMMON/IES/NasKeySetIdentifier.c
	modified:   openair3/NAS/COMMON/IES/NasKeySetIdentifier.h
	modified:   openair3/NAS/COMMON/IES/NasMessageContainer.c
	modified:   openair3/NAS/COMMON/IES/NasMessageContainer.h
	modified:   openair3/NAS/COMMON/IES/NasRequestType.c
	modified:   openair3/NAS/COMMON/IES/NasRequestType.h
	modified:   openair3/NAS/COMMON/IES/NasSecurityAlgorithms.c
	modified:   openair3/NAS/COMMON/IES/NasSecurityAlgorithms.h
	modified:   openair3/NAS/COMMON/IES/NetworkName.c
	modified:   openair3/NAS/COMMON/IES/NetworkName.h
	modified:   openair3/NAS/COMMON/IES/Nonce.c
	modified:   openair3/NAS/COMMON/IES/Nonce.h
	modified:   openair3/NAS/COMMON/IES/PTmsiSignature.c
	modified:   openair3/NAS/COMMON/IES/PTmsiSignature.h
	modified:   openair3/NAS/COMMON/IES/PacketFlowIdentifier.c
	modified:   openair3/NAS/COMMON/IES/PacketFlowIdentifier.h
	modified:   openair3/NAS/COMMON/IES/PagingIdentity.c
	modified:   openair3/NAS/COMMON/IES/PagingIdentity.h
	modified:   openair3/NAS/COMMON/IES/PdnAddress.c
	modified:   openair3/NAS/COMMON/IES/PdnAddress.h
	modified:   openair3/NAS/COMMON/IES/PdnType.c
	modified:   openair3/NAS/COMMON/IES/PdnType.h
	modified:   openair3/NAS/COMMON/IES/PlmnList.c
	modified:   openair3/NAS/COMMON/IES/PlmnList.h
	modified:   openair3/NAS/COMMON/IES/ProcedureTransactionIdentity.c
	modified:   openair3/NAS/COMMON/IES/ProcedureTransactionIdentity.h
	modified:   openair3/NAS/COMMON/IES/ProtocolConfigurationOptions.c
	modified:   openair3/NAS/COMMON/IES/ProtocolConfigurationOptions.h
	modified:   openair3/NAS/COMMON/IES/ProtocolDiscriminator.c
	modified:   openair3/NAS/COMMON/IES/ProtocolDiscriminator.h
	modified:   openair3/NAS/COMMON/IES/QualityOfService.c
	modified:   openair3/NAS/COMMON/IES/QualityOfService.h
	modified:   openair3/NAS/COMMON/IES/RadioPriority.c
	modified:   openair3/NAS/COMMON/IES/RadioPriority.h
	modified:   openair3/NAS/COMMON/IES/SecurityHeaderType.c
	modified:   openair3/NAS/COMMON/IES/SecurityHeaderType.h
	modified:   openair3/NAS/COMMON/IES/ServiceType.c
	modified:   openair3/NAS/COMMON/IES/ServiceType.h
	modified:   openair3/NAS/COMMON/IES/ShortMac.c
	modified:   openair3/NAS/COMMON/IES/ShortMac.h
	modified:   openair3/NAS/COMMON/IES/SsCode.c
	modified:   openair3/NAS/COMMON/IES/SsCode.h
	modified:   openair3/NAS/COMMON/IES/SupportedCodecList.c
	modified:   openair3/NAS/COMMON/IES/SupportedCodecList.h
	modified:   openair3/NAS/COMMON/IES/TimeZone.c
	modified:   openair3/NAS/COMMON/IES/TimeZone.h
	modified:   openair3/NAS/COMMON/IES/TimeZoneAndTime.c
	modified:   openair3/NAS/COMMON/IES/TimeZoneAndTime.h
	modified:   openair3/NAS/COMMON/IES/TmsiStatus.c
	modified:   openair3/NAS/COMMON/IES/TmsiStatus.h
	modified:   openair3/NAS/COMMON/IES/TrackingAreaIdentity.c
	modified:   openair3/NAS/COMMON/IES/TrackingAreaIdentity.h
	modified:   openair3/NAS/COMMON/IES/TrackingAreaIdentityList.c
	modified:   openair3/NAS/COMMON/IES/TrackingAreaIdentityList.h
	modified:   openair3/NAS/COMMON/IES/TrafficFlowAggregateDescription.c
	modified:   openair3/NAS/COMMON/IES/TrafficFlowAggregateDescription.h
	modified:   openair3/NAS/COMMON/IES/TrafficFlowTemplate.c
	modified:   openair3/NAS/COMMON/IES/TrafficFlowTemplate.h
	modified:   openair3/NAS/COMMON/IES/TransactionIdentifier.c
	modified:   openair3/NAS/COMMON/IES/TransactionIdentifier.h
	modified:   openair3/NAS/COMMON/IES/UeNetworkCapability.c
	modified:   openair3/NAS/COMMON/IES/UeNetworkCapability.h
	modified:   openair3/NAS/COMMON/IES/UeRadioCapabilityInformationUpdateNeeded.c
	modified:   openair3/NAS/COMMON/IES/UeRadioCapabilityInformationUpdateNeeded.h
	modified:   openair3/NAS/COMMON/IES/UeSecurityCapability.c
	modified:   openair3/NAS/COMMON/IES/UeSecurityCapability.h
	modified:   openair3/NAS/COMMON/IES/VoiceDomainPreferenceAndUeUsageSetting.c
	modified:   openair3/NAS/COMMON/IES/VoiceDomainPreferenceAndUeUsageSetting.h
	modified:   openair3/NAS/COMMON/UTIL/OctetString.c
	modified:   openair3/NAS/COMMON/UTIL/OctetString.h
	modified:   openair3/NAS/COMMON/UTIL/TLVDecoder.c
	modified:   openair3/NAS/COMMON/UTIL/TLVDecoder.h
	modified:   openair3/NAS/COMMON/UTIL/TLVEncoder.c
	modified:   openair3/NAS/COMMON/UTIL/TLVEncoder.h
	modified:   openair3/NAS/COMMON/UTIL/device.c
	modified:   openair3/NAS/COMMON/UTIL/device.h
	modified:   openair3/NAS/COMMON/UTIL/memory.c
	modified:   openair3/NAS/COMMON/UTIL/memory.h
	modified:   openair3/NAS/COMMON/UTIL/nas_log.c
	modified:   openair3/NAS/COMMON/UTIL/nas_log.h
	modified:   openair3/NAS/COMMON/UTIL/nas_timer.c
	modified:   openair3/NAS/COMMON/UTIL/nas_timer.h
	modified:   openair3/NAS/COMMON/UTIL/parser.c
	modified:   openair3/NAS/COMMON/UTIL/parser.h
	modified:   openair3/NAS/COMMON/UTIL/socket.c
	modified:   openair3/NAS/COMMON/UTIL/socket.h
	modified:   openair3/NAS/COMMON/UTIL/stty.c
	modified:   openair3/NAS/COMMON/UTIL/tst/timer.c
	modified:   openair3/NAS/COMMON/securityDef.h
	modified:   openair3/NAS/COMMON/userDef.h
	modified:   openair3/NAS/TEST/AS_SIMULATOR/as_data.c
	modified:   openair3/NAS/TEST/AS_SIMULATOR/as_data.h
	modified:   openair3/NAS/TEST/AS_SIMULATOR/as_process.c
	modified:   openair3/NAS/TEST/AS_SIMULATOR/as_process.h
	modified:   openair3/NAS/TEST/AS_SIMULATOR/as_simulator.c
	modified:   openair3/NAS/TEST/AS_SIMULATOR/as_simulator_parser.c
	modified:   openair3/NAS/TEST/AS_SIMULATOR/as_simulator_parser.h
	modified:   openair3/NAS/TEST/AS_SIMULATOR/nas_data.c
	modified:   openair3/NAS/TEST/AS_SIMULATOR/nas_data.h
	modified:   openair3/NAS/TEST/AS_SIMULATOR/nas_process.c
	modified:   openair3/NAS/TEST/AS_SIMULATOR/nas_process.h
	modified:   openair3/NAS/TEST/NETWORK/network_parser.c
	modified:   openair3/NAS/TEST/NETWORK/network_parser.h
	modified:   openair3/NAS/TEST/NETWORK/network_simulator.c
	modified:   openair3/NAS/TEST/USER/user_parser.c
	modified:   openair3/NAS/TEST/USER/user_parser.h
	modified:   openair3/NAS/TEST/USER/user_simulator.c
	modified:   openair3/NAS/TOOLS/network.h
	modified:   openair3/NAS/TOOLS/ue_data.c
	modified:   openair3/NAS/TOOLS/usim_data.c
	modified:   openair3/NAS/UE/API/USER/at_command.c
	modified:   openair3/NAS/UE/API/USER/at_command.h
	modified:   openair3/NAS/UE/API/USER/at_error.c
	modified:   openair3/NAS/UE/API/USER/at_error.h
	modified:   openair3/NAS/UE/API/USER/at_response.c
	modified:   openair3/NAS/UE/API/USER/at_response.h
	modified:   openair3/NAS/UE/API/USER/tst/at_parser.c
	modified:   openair3/NAS/UE/API/USER/user_api.c
	modified:   openair3/NAS/UE/API/USER/user_api.h
	modified:   openair3/NAS/UE/API/USER/user_indication.c
	modified:   openair3/NAS/UE/API/USER/user_indication.h
	modified:   openair3/NAS/UE/API/USIM/aka_functions.c
	modified:   openair3/NAS/UE/API/USIM/aka_functions.h
	modified:   openair3/NAS/UE/API/USIM/usim_api.c
	modified:   openair3/NAS/UE/API/USIM/usim_api.h
	modified:   openair3/NAS/UE/EMM/Attach.c
	modified:   openair3/NAS/UE/EMM/Authentication.c
	modified:   openair3/NAS/UE/EMM/Detach.c
	modified:   openair3/NAS/UE/EMM/EmmStatusHdl.c
	modified:   openair3/NAS/UE/EMM/Identification.c
	modified:   openair3/NAS/UE/EMM/IdleMode.c
	modified:   openair3/NAS/UE/EMM/IdleMode.h
	modified:   openair3/NAS/UE/EMM/LowerLayer.c
	modified:   openair3/NAS/UE/EMM/LowerLayer.h
	modified:   openair3/NAS/UE/EMM/SAP/EmmDeregistered.c
	modified:   openair3/NAS/UE/EMM/SAP/EmmDeregisteredAttachNeeded.c
	modified:   openair3/NAS/UE/EMM/SAP/EmmDeregisteredAttemptingToAttach.c
	modified:   openair3/NAS/UE/EMM/SAP/EmmDeregisteredInitiated.c
	modified:   openair3/NAS/UE/EMM/SAP/EmmDeregisteredLimitedService.c
	modified:   openair3/NAS/UE/EMM/SAP/EmmDeregisteredNoCellAvailable.c
	modified:   openair3/NAS/UE/EMM/SAP/EmmDeregisteredNoImsi.c
	modified:   openair3/NAS/UE/EMM/SAP/EmmDeregisteredNormalService.c
	modified:   openair3/NAS/UE/EMM/SAP/EmmDeregisteredPlmnSearch.c
	modified:   openair3/NAS/UE/EMM/SAP/EmmNull.c
	modified:   openair3/NAS/UE/EMM/SAP/EmmRegistered.c
	modified:   openair3/NAS/UE/EMM/SAP/EmmRegisteredAttemptingToUpdate.c
	modified:   openair3/NAS/UE/EMM/SAP/EmmRegisteredImsiDetachInitiated.c
	modified:   openair3/NAS/UE/EMM/SAP/EmmRegisteredInitiated.c
	modified:   openair3/NAS/UE/EMM/SAP/EmmRegisteredLimitedService.c
	modified:   openair3/NAS/UE/EMM/SAP/EmmRegisteredNoCellAvailable.c
	modified:   openair3/NAS/UE/EMM/SAP/EmmRegisteredNormalService.c
	modified:   openair3/NAS/UE/EMM/SAP/EmmRegisteredPlmnSearch.c
	modified:   openair3/NAS/UE/EMM/SAP/EmmRegisteredUpdateNeeded.c
	modified:   openair3/NAS/UE/EMM/SAP/EmmServiceRequestInitiated.c
	modified:   openair3/NAS/UE/EMM/SAP/EmmTrackingAreaUpdatingInitiated.c
	modified:   openair3/NAS/UE/EMM/SAP/emm_as.c
	modified:   openair3/NAS/UE/EMM/SAP/emm_as.h
	modified:   openair3/NAS/UE/EMM/SAP/emm_asDef.h
	modified:   openair3/NAS/UE/EMM/SAP/emm_esm.c
	modified:   openair3/NAS/UE/EMM/SAP/emm_esm.h
	modified:   openair3/NAS/UE/EMM/SAP/emm_esmDef.h
	modified:   openair3/NAS/UE/EMM/SAP/emm_fsm.c
	modified:   openair3/NAS/UE/EMM/SAP/emm_fsm.h
	modified:   openair3/NAS/UE/EMM/SAP/emm_recv.c
	modified:   openair3/NAS/UE/EMM/SAP/emm_recv.h
	modified:   openair3/NAS/UE/EMM/SAP/emm_reg.c
	modified:   openair3/NAS/UE/EMM/SAP/emm_reg.h
	modified:   openair3/NAS/UE/EMM/SAP/emm_regDef.h
	modified:   openair3/NAS/UE/EMM/SAP/emm_sap.c
	modified:   openair3/NAS/UE/EMM/SAP/emm_sap.h
	modified:   openair3/NAS/UE/EMM/SAP/emm_send.c
	modified:   openair3/NAS/UE/EMM/SAP/emm_send.h
	modified:   openair3/NAS/UE/EMM/SecurityModeControl.c
	modified:   openair3/NAS/UE/EMM/ServiceRequestHdl.c
	modified:   openair3/NAS/UE/EMM/TrackingAreaUpdate.c
	modified:   openair3/NAS/UE/EMM/emmData.h
	modified:   openair3/NAS/UE/EMM/emm_main.c
	modified:   openair3/NAS/UE/EMM/emm_main.h
	modified:   openair3/NAS/UE/EMM/emm_proc.h
	modified:   openair3/NAS/UE/ESM/DedicatedEpsBearerContextActivation.c
	modified:   openair3/NAS/UE/ESM/DefaultEpsBearerContextActivation.c
	modified:   openair3/NAS/UE/ESM/EpsBearerContextDeactivation.c
	modified:   openair3/NAS/UE/ESM/EsmStatusHdl.c
	modified:   openair3/NAS/UE/ESM/PdnConnectivity.c
	modified:   openair3/NAS/UE/ESM/PdnDisconnect.c
	modified:   openair3/NAS/UE/ESM/SAP/esm_recv.c
	modified:   openair3/NAS/UE/ESM/SAP/esm_recv.h
	modified:   openair3/NAS/UE/ESM/SAP/esm_sap.c
	modified:   openair3/NAS/UE/ESM/SAP/esm_sap.h
	modified:   openair3/NAS/UE/ESM/SAP/esm_sapDef.h
	modified:   openair3/NAS/UE/ESM/SAP/esm_send.c
	modified:   openair3/NAS/UE/ESM/SAP/esm_send.h
	modified:   openair3/NAS/UE/ESM/esmData.h
	modified:   openair3/NAS/UE/ESM/esm_ebr.c
	modified:   openair3/NAS/UE/ESM/esm_ebr.h
	modified:   openair3/NAS/UE/ESM/esm_ebr_context.c
	modified:   openair3/NAS/UE/ESM/esm_ebr_context.h
	modified:   openair3/NAS/UE/ESM/esm_ip.c
	modified:   openair3/NAS/UE/ESM/esm_main.c
	modified:   openair3/NAS/UE/ESM/esm_main.h
	modified:   openair3/NAS/UE/ESM/esm_proc.h
	modified:   openair3/NAS/UE/ESM/esm_pt.c
	modified:   openair3/NAS/UE/ESM/esm_pt.h
	modified:   openair3/NAS/UE/UEprocess.c
	modified:   openair3/NAS/UE/nas_itti_messaging.c
	modified:   openair3/NAS/UE/nas_itti_messaging.h
	modified:   openair3/NAS/UE/nas_network.c
	modified:   openair3/NAS/UE/nas_network.h
	modified:   openair3/NAS/UE/nas_parser.c
	modified:   openair3/NAS/UE/nas_parser.h
	modified:   openair3/NAS/UE/nas_proc.c
	modified:   openair3/NAS/UE/nas_proc.h
	modified:   openair3/NAS/UE/nas_ue_task.c
	modified:   openair3/NAS/UE/nas_user.c
	modified:   openair3/NAS/UE/nas_user.h
	modified:   openair3/S1AP/s1ap_common.c
	modified:   openair3/S1AP/s1ap_common.h
	modified:   openair3/S1AP/s1ap_eNB.c
	modified:   openair3/S1AP/s1ap_eNB.h
	modified:   openair3/S1AP/s1ap_eNB_context_management_procedures.c
	modified:   openair3/S1AP/s1ap_eNB_context_management_procedures.h
	modified:   openair3/S1AP/s1ap_eNB_decoder.c
	modified:   openair3/S1AP/s1ap_eNB_decoder.h
	modified:   openair3/S1AP/s1ap_eNB_default_values.h
	modified:   openair3/S1AP/s1ap_eNB_defs.h
	modified:   openair3/S1AP/s1ap_eNB_encoder.c
	modified:   openair3/S1AP/s1ap_eNB_encoder.h
	modified:   openair3/S1AP/s1ap_eNB_handlers.c
	modified:   openair3/S1AP/s1ap_eNB_handlers.h
	modified:   openair3/S1AP/s1ap_eNB_itti_messaging.c
	modified:   openair3/S1AP/s1ap_eNB_itti_messaging.h
	modified:   openair3/S1AP/s1ap_eNB_management_procedures.c
	modified:   openair3/S1AP/s1ap_eNB_management_procedures.h
	modified:   openair3/S1AP/s1ap_eNB_nas_procedures.c
	modified:   openair3/S1AP/s1ap_eNB_nas_procedures.h
	modified:   openair3/S1AP/s1ap_eNB_nnsf.c
	modified:   openair3/S1AP/s1ap_eNB_nnsf.h
	modified:   openair3/S1AP/s1ap_eNB_overload.c
	modified:   openair3/S1AP/s1ap_eNB_overload.h
	modified:   openair3/S1AP/s1ap_eNB_trace.c
	modified:   openair3/S1AP/s1ap_eNB_trace.h
	modified:   openair3/S1AP/s1ap_eNB_ue_context.c
	modified:   openair3/S1AP/s1ap_eNB_ue_context.h
	modified:   openair3/SCTP/sctp_common.c
	modified:   openair3/SCTP/sctp_common.h
	modified:   openair3/SCTP/sctp_default_values.h
	modified:   openair3/SCTP/sctp_eNB_defs.h
	modified:   openair3/SCTP/sctp_eNB_itti_messaging.c
	modified:   openair3/SCTP/sctp_eNB_itti_messaging.h
	modified:   openair3/SCTP/sctp_eNB_task.c
	modified:   openair3/SCTP/sctp_eNB_task.h
	modified:   openair3/SCTP/sctp_primitives_client.c
	modified:   openair3/SCTP/sctp_primitives_client.h
	modified:   openair3/SECU/kdf.c
	modified:   openair3/SECU/key_nas_deriver.c
	modified:   openair3/SECU/key_nas_encryption.c
	modified:   openair3/SECU/nas_stream_eea1.c
	modified:   openair3/SECU/nas_stream_eea2.c
	modified:   openair3/SECU/nas_stream_eia1.c
	modified:   openair3/SECU/nas_stream_eia2.c
	modified:   openair3/SECU/rijndael.c
	modified:   openair3/SECU/rijndael.h
	modified:   openair3/SECU/secu_defs.h
	modified:   openair3/SECU/snow3g.c
	modified:   openair3/SECU/snow3g.h
	modified:   openair3/TEST/EPC_TEST/generate_scenario.c
	modified:   openair3/TEST/EPC_TEST/generate_scenario.h
	modified:   openair3/TEST/EPC_TEST/play_scenario.c
	modified:   openair3/TEST/EPC_TEST/play_scenario.h
	modified:   openair3/TEST/EPC_TEST/play_scenario_decode.c
	modified:   openair3/TEST/EPC_TEST/play_scenario_display.c
	modified:   openair3/TEST/EPC_TEST/play_scenario_fsm.c
	modified:   openair3/TEST/EPC_TEST/play_scenario_parse.c
	modified:   openair3/TEST/EPC_TEST/play_scenario_s1ap.c
	modified:   openair3/TEST/EPC_TEST/play_scenario_s1ap_compare_ie.c
	modified:   openair3/TEST/EPC_TEST/play_scenario_s1ap_eNB_defs.h
	modified:   openair3/TEST/EPC_TEST/play_scenario_sctp.c
	modified:   openair3/TEST/oaisim_mme_client_test.c
	modified:   openair3/TEST/oaisim_mme_itti_test.c
	modified:   openair3/TEST/oaisim_mme_list_benchmark.c
	modified:   openair3/TEST/oaisim_mme_s1ap_test.c
	modified:   openair3/TEST/oaisim_mme_sctp_test.c
	modified:   openair3/TEST/oaisim_mme_test_s1c.c
	modified:   openair3/TEST/oaisim_mme_test_s1c.h
	modified:   openair3/TEST/oaisim_mme_test_s1c_s1ap.c
	modified:   openair3/TEST/oaisim_mme_test_s1c_s1ap.h
	modified:   openair3/TEST/oaisim_mme_test_s1c_scenario.c
	modified:   openair3/TEST/oaisim_mme_test_s1c_scenario.h
	modified:   openair3/TEST/oaisim_mme_test_s1c_scenario1.c
	modified:   openair3/TEST/test_aes128_cmac_encrypt.c
	modified:   openair3/TEST/test_aes128_ctr_decrypt.c
	modified:   openair3/TEST/test_aes128_ctr_encrypt.c
	modified:   openair3/TEST/test_kdf.c
	modified:   openair3/TEST/test_s1ap.c
	modified:   openair3/TEST/test_secu.c
	modified:   openair3/TEST/test_secu_kenb.c
	modified:   openair3/TEST/test_secu_knas.c
	modified:   openair3/TEST/test_secu_knas_encrypt_eea1.c
	modified:   openair3/TEST/test_secu_knas_encrypt_eea2.c
	modified:   openair3/TEST/test_secu_knas_encrypt_eia1.c
	modified:   openair3/TEST/test_secu_knas_encrypt_eia2.c
	modified:   openair3/TEST/test_secu_knas_stream_int.c
	modified:   openair3/UDP/udp_eNB_task.c
	modified:   openair3/UDP/udp_eNB_task.h
	modified:   openair3/UTILS/conversions.c
	modified:   openair3/UTILS/conversions.h
	modified:   openair3/UTILS/enum_string.c
	modified:   openair3/UTILS/enum_string.h
	modified:   openair3/UTILS/log.c
	modified:   openair3/UTILS/log.h
	modified:   openair3/UTILS/mcc_mnc_itu.c
	modified:   openair3/UTILS/mcc_mnc_itu.h
	modified:   openair3/UTILS/mme_config.c
	modified:   openair3/UTILS/mme_config.h
	modified:   openair3/UTILS/mme_default_values.h
	modified:   targets/ARCH/BLADERF/USERSPACE/LIB/bladerf_lib.c
	modified:   targets/ARCH/BLADERF/USERSPACE/LIB/bladerf_lib.h
	modified:   targets/ARCH/COMMON/common_lib.c
	modified:   targets/ARCH/COMMON/common_lib.h
	modified:   targets/ARCH/ETHERNET/USERSPACE/LIB/eth_raw.c
	modified:   targets/ARCH/ETHERNET/USERSPACE/LIB/eth_udp.c
	modified:   targets/ARCH/ETHERNET/USERSPACE/LIB/ethernet_lib.c
	modified:   targets/ARCH/ETHERNET/USERSPACE/LIB/ethernet_lib.h
	modified:   targets/ARCH/ETHERNET/USERSPACE/LIB/if_defs.h
	modified:   targets/ARCH/EXMIMO/DEFS/openair_device.h
	modified:   targets/ARCH/EXMIMO/DEFS/pcie_interface.h
	modified:   targets/ARCH/EXMIMO/DRIVER/eurecom/defs.h
	modified:   targets/ARCH/EXMIMO/DRIVER/eurecom/exmimo_fw.c
	modified:   targets/ARCH/EXMIMO/DRIVER/eurecom/extern.h
	modified:   targets/ARCH/EXMIMO/DRIVER/eurecom/fileops.c
	modified:   targets/ARCH/EXMIMO/DRIVER/eurecom/irq.c
	modified:   targets/ARCH/EXMIMO/DRIVER/eurecom/module_main.c
	modified:   targets/ARCH/EXMIMO/DRIVER/eurecom/vars.h
	modified:   targets/ARCH/EXMIMO/DRIVER/exmimo3/defs.h
	modified:   targets/ARCH/EXMIMO/DRIVER/exmimo3/exmimo_fw.c
	modified:   targets/ARCH/EXMIMO/DRIVER/exmimo3/extern.h
	modified:   targets/ARCH/EXMIMO/DRIVER/exmimo3/fileops.c
	modified:   targets/ARCH/EXMIMO/DRIVER/exmimo3/irq.c
	modified:   targets/ARCH/EXMIMO/DRIVER/exmimo3/module_main.c
	modified:   targets/ARCH/EXMIMO/DRIVER/exmimo3/vars.h
	modified:   targets/ARCH/EXMIMO/DRIVER/telecomparistech/em1_dev.c
	modified:   targets/ARCH/EXMIMO/DRIVER/telecomparistech/em1_drv.c
	modified:   targets/ARCH/EXMIMO/DRIVER/telecomparistech/em1_drv.h
	modified:   targets/ARCH/EXMIMO/DRIVER/telecomparistech/em1_fifos.c
	modified:   targets/ARCH/EXMIMO/DRIVER/telecomparistech/em1_ioctl.c
	modified:   targets/ARCH/EXMIMO/DRIVER/telecomparistech/em1_mmap.c
	modified:   targets/ARCH/EXMIMO/DRIVER/telecomparistech/em1_rw.c
	modified:   targets/ARCH/EXMIMO/USERSPACE/LIB/example.c
	modified:   targets/ARCH/EXMIMO/USERSPACE/LIB/gain_control.c
	modified:   targets/ARCH/EXMIMO/USERSPACE/LIB/gain_control.h
	modified:   targets/ARCH/EXMIMO/USERSPACE/LIB/openair0_lib.c
	modified:   targets/ARCH/EXMIMO/USERSPACE/LIB/openair0_lib.h
	modified:   targets/ARCH/EXMIMO/USERSPACE/OAI_FW_INIT/updatefw.c
	modified:   targets/ARCH/EXMIMO/USERSPACE/OAI_FW_INIT/updatefw.h
	modified:   targets/ARCH/EXMIMO/USERSPACE/OCTAVE/oarf.h
	modified:   targets/ARCH/LMSSDR/USERSPACE/LIB/lms_lib.cpp
	modified:   targets/ARCH/LMSSDR/USERSPACE/LIB/sodera_lib.cpp
	modified:   targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp
	modified:   targets/COMMON/create_tasks.c
	modified:   targets/COMMON/create_tasks.h
	modified:   targets/RT/USER/TOOLS/thread_ipc.c
	modified:   targets/RT/USER/TOOLS/thread_ipc.h
	modified:   targets/RT/USER/UE_transport_IQ.c
	modified:   targets/RT/USER/condtest.c
	modified:   targets/RT/USER/eNB_transport_IQ.c
	modified:   targets/RT/USER/emos-raw.c
	modified:   targets/RT/USER/lte-enb.c
	modified:   targets/RT/USER/lte-softmodem.c
	modified:   targets/RT/USER/lte-ue.c
	modified:   targets/RT/USER/msg_helper.c
	modified:   targets/RT/USER/msg_many.c
	modified:   targets/RT/USER/msg_many.h
	modified:   targets/RT/USER/rrh.c
	modified:   targets/RT/USER/rrh_gw.c
	modified:   targets/RT/USER/rrh_gw.h
	modified:   targets/RT/USER/rrh_gw_externs.h
	modified:   targets/RT/USER/rt_wrapper.c
	modified:   targets/RT/USER/rt_wrapper.h
	modified:   targets/RT/USER/sleeptest.c
	modified:   targets/RT/USER/stats.c
	modified:   targets/RT/USER/stats.h
	modified:   targets/RT/USER/synctest.c
	modified:   targets/SIMU/PROC/Process.c
	modified:   targets/SIMU/PROC/Process.h
	modified:   targets/SIMU/PROC/Tsync.h
	modified:   targets/SIMU/PROC/channel_sim_proc.c
	modified:   targets/SIMU/PROC/channel_sim_proc.h
	modified:   targets/SIMU/PROC/interface.h
	modified:   targets/SIMU/USER/channel_sim.c
	modified:   targets/SIMU/USER/cor_SF_sim.c
	modified:   targets/SIMU/USER/cor_SF_sim.h
	modified:   targets/SIMU/USER/event_handler.c
	modified:   targets/SIMU/USER/event_handler.h
	modified:   targets/SIMU/USER/init_lte.c
	modified:   targets/SIMU/USER/init_lte.h
	modified:   targets/SIMU/USER/oaisim.c
	modified:   targets/SIMU/USER/oaisim.h
	modified:   targets/SIMU/USER/oaisim_config.c
	modified:   targets/SIMU/USER/oaisim_config.h
	modified:   targets/SIMU/USER/oaisim_functions.c
	modified:   targets/SIMU/USER/oaisim_functions.h
	modified:   targets/SIMU/USER/oaisim_pad.c
	modified:   targets/SIMU/USER/phy_procedures_sim_form.c
	modified:   targets/SIMU/USER/phy_procedures_sim_form.h
	modified:   targets/SIMU/USER/sinr_sim.c
	modified:   targets/TEST/AT_COMMANDS/oaisim.c
	modified:   targets/TEST/PACKET_TRACER/pt.c
	modified:   targets/TEST/PDCP/test_pdcp.c
	modified:   targets/TEST/PDCP/test_pdcp.h
	modified:   targets/TEST/PDCP/test_util.h
	modified:   targets/TEST/PDCP/with_rlc/test_pdcp_rlc.c
	modified:   targets/TEST/RLC_AM_V9.3.0/oaisim.c
	modified:   targets/TEST/RLC_UM_V9.3.0/oaisim.c
	modified:   targets/TEST/ROHDE_SCHWARZ/EthernetRawCommand.cpp
	modified:   targets/TEST/ROHDE_SCHWARZ/TcpClient.cpp
	modified:   targets/TEST/ROHDE_SCHWARZ/TcpClient.h
2016-09-27 16:54:39 +02:00

2090 lines
55 KiB
C

/*
* 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.0 (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 PHY/LTE_TRANSPORT/ulsch_decoding.c
* \brief Top-level routines for decoding the ULSCH transport channel from 36.212 V8.6 2009-03
* \author R. Knopp
* \date 2011
* \version 0.1
* \company Eurecom
* \email: knopp@eurecom.fr
* \note
* \warning
*/
//#include "defs.h"
#include "PHY/defs.h"
#include "PHY/extern.h"
#include "PHY/CODING/extern.h"
#include "extern.h"
#include "SCHED/extern.h"
#ifdef OPENAIR2
#include "LAYER2/MAC/defs.h"
#include "LAYER2/MAC/extern.h"
#include "RRC/LITE/extern.h"
#include "PHY_INTERFACE/extern.h"
#endif
#ifdef PHY_ABSTRACTION
#include "UTIL/OCG/OCG.h"
#include "UTIL/OCG/OCG_extern.h"
#endif
#include "UTIL/LOG/vcd_signal_dumper.h"
//#define DEBUG_ULSCH_DECODING
void free_eNB_ulsch(LTE_eNB_ULSCH_t *ulsch)
{
int i,r;
if (ulsch) {
for (i=0; i<8; i++) {
if (ulsch->harq_processes[i]) {
if (ulsch->harq_processes[i]->b) {
free16(ulsch->harq_processes[i]->b,MAX_ULSCH_PAYLOAD_BYTES);
ulsch->harq_processes[i]->b = NULL;
}
for (r=0; r<MAX_NUM_ULSCH_SEGMENTS; r++) {
free16(ulsch->harq_processes[i]->c[r],((r==0)?8:0) + 768);
ulsch->harq_processes[i]->c[r] = NULL;
}
for (r=0; r<MAX_NUM_ULSCH_SEGMENTS; r++)
if (ulsch->harq_processes[i]->d[r]) {
free16(ulsch->harq_processes[i]->d[r],((3*8*6144)+12+96)*sizeof(short));
ulsch->harq_processes[i]->d[r] = NULL;
}
free16(ulsch->harq_processes[i],sizeof(LTE_UL_eNB_HARQ_t));
ulsch->harq_processes[i] = NULL;
}
}
free16(ulsch,sizeof(LTE_eNB_ULSCH_t));
ulsch = NULL;
}
}
LTE_eNB_ULSCH_t *new_eNB_ulsch(uint8_t max_turbo_iterations,uint8_t N_RB_UL, uint8_t abstraction_flag)
{
LTE_eNB_ULSCH_t *ulsch;
uint8_t exit_flag = 0,i,r;
unsigned char bw_scaling =1;
switch (N_RB_UL) {
case 6:
bw_scaling =16;
break;
case 25:
bw_scaling =4;
break;
case 50:
bw_scaling =2;
break;
default:
bw_scaling =1;
break;
}
ulsch = (LTE_eNB_ULSCH_t *)malloc16(sizeof(LTE_eNB_ULSCH_t));
if (ulsch) {
memset(ulsch,0,sizeof(LTE_eNB_ULSCH_t));
ulsch->max_turbo_iterations = max_turbo_iterations;
ulsch->Mlimit = 4;
for (i=0; i<8; i++) {
// printf("new_ue_ulsch: Harq process %d\n",i);
ulsch->harq_processes[i] = (LTE_UL_eNB_HARQ_t *)malloc16(sizeof(LTE_UL_eNB_HARQ_t));
if (ulsch->harq_processes[i]) {
memset(ulsch->harq_processes[i],0,sizeof(LTE_UL_eNB_HARQ_t));
ulsch->harq_processes[i]->b = (uint8_t*)malloc16(MAX_ULSCH_PAYLOAD_BYTES/bw_scaling);
if (ulsch->harq_processes[i]->b)
memset(ulsch->harq_processes[i]->b,0,MAX_ULSCH_PAYLOAD_BYTES/bw_scaling);
else
exit_flag=3;
if (abstraction_flag==0) {
for (r=0; r<MAX_NUM_ULSCH_SEGMENTS/bw_scaling; r++) {
ulsch->harq_processes[i]->c[r] = (uint8_t*)malloc16(((r==0)?8:0) + 3+768);
if (ulsch->harq_processes[i]->c[r])
memset(ulsch->harq_processes[i]->c[r],0,((r==0)?8:0) + 3+768);
else
exit_flag=2;
ulsch->harq_processes[i]->d[r] = (short*)malloc16(((3*8*6144)+12+96)*sizeof(short));
if (ulsch->harq_processes[i]->d[r])
memset(ulsch->harq_processes[i]->d[r],0,((3*8*6144)+12+96)*sizeof(short));
else
exit_flag=2;
}
ulsch->harq_processes[i]->subframe_scheduling_flag = 0;
}
} else {
exit_flag=1;
}
}
if (exit_flag==0)
return(ulsch);
}
LOG_E(PHY,"new_ue_ulsch: exit_flag = %d\n",exit_flag);
free_eNB_ulsch(ulsch);
return(NULL);
}
void clean_eNb_ulsch(LTE_eNB_ULSCH_t *ulsch)
{
unsigned char i;
//ulsch = (LTE_eNB_ULSCH_t *)malloc16(sizeof(LTE_eNB_ULSCH_t));
if (ulsch) {
ulsch->rnti = 0;
for (i=0; i<8; i++) {
if (ulsch->harq_processes[i]) {
// ulsch->harq_processes[i]->Ndi = 0;
ulsch->harq_processes[i]->status = 0;
ulsch->harq_processes[i]->subframe_scheduling_flag = 0;
//ulsch->harq_processes[i]->phich_active = 0; //this will be done later after transmission of PHICH
ulsch->harq_processes[i]->phich_ACK = 0;
ulsch->harq_processes[i]->round = 0;
}
}
}
}
uint8_t extract_cqi_crc(uint8_t *cqi,uint8_t CQI_LENGTH)
{
uint8_t crc;
crc = cqi[CQI_LENGTH>>3];
// printf("crc1: %x, shift %d\n",crc,CQI_LENGTH&0x7);
crc = (crc<<(CQI_LENGTH&0x7));
// clear crc bits
// ((char *)cqi)[CQI_LENGTH>>3] &= 0xff>>(8-(CQI_LENGTH&0x7));
// printf("crc2: %x, cqi0 %x\n",crc,cqi[1+(CQI_LENGTH>>3)]);
crc |= (cqi[1+(CQI_LENGTH>>3)])>>(8-(CQI_LENGTH&0x7));
// clear crc bits
//(((char *)cqi)[1+(CQI_LENGTH>>3)]) = 0;
// printf("crc : %x\n",crc);
return(crc);
}
int ulsch_decoding_data_2thread0(td_params* tdp) {
PHY_VARS_eNB *eNB = tdp->eNB;
int UE_id = tdp->UE_id;
int harq_pid = tdp->harq_pid;
int llr8_flag = tdp->llr8_flag;
unsigned int r,r_offset=0,Kr,Kr_bytes,iind;
uint8_t crc_type;
int offset = 0;
int ret = 1;
int16_t dummy_w[MAX_NUM_ULSCH_SEGMENTS][3*(6144+64)];
LTE_eNB_ULSCH_t *ulsch = eNB->ulsch[UE_id];
LTE_UL_eNB_HARQ_t *ulsch_harq = ulsch->harq_processes[harq_pid];
int Q_m = get_Qm_ul(ulsch_harq->mcs);
int G = ulsch_harq->nb_rb * (12 * Q_m) * ulsch_harq->Nsymb_pusch;
uint32_t E;
uint32_t Gp,GpmodC,Nl=1;
uint32_t C = ulsch_harq->C;
uint8_t (*tc)(int16_t *y,
uint8_t *,
uint16_t,
uint16_t,
uint16_t,
uint8_t,
uint8_t,
uint8_t,
time_stats_t *,
time_stats_t *,
time_stats_t *,
time_stats_t *,
time_stats_t *,
time_stats_t *,
time_stats_t *);
if (llr8_flag == 0)
tc = phy_threegpplte_turbo_decoder16;
else
tc = phy_threegpplte_turbo_decoder8;
// go through first half of segments to get r_offset
for (r=0; r<(ulsch_harq->C/2); r++) {
// Get Turbo interleaver parameters
if (r<ulsch_harq->Cminus)
Kr = ulsch_harq->Kminus;
else
Kr = ulsch_harq->Kplus;
Kr_bytes = Kr>>3;
if (Kr_bytes<=64)
iind = (Kr_bytes-5);
else if (Kr_bytes <=128)
iind = 59 + ((Kr_bytes-64)>>1);
else if (Kr_bytes <= 256)
iind = 91 + ((Kr_bytes-128)>>2);
else if (Kr_bytes <= 768)
iind = 123 + ((Kr_bytes-256)>>3);
else {
LOG_E(PHY,"ulsch_decoding: Illegal codeword size %d!!!\n",Kr_bytes);
return(-1);
}
// This is stolen from rate-matching algorithm to get the value of E
Gp = G/Nl/Q_m;
GpmodC = Gp%C;
if (r < (C-(GpmodC)))
E = Nl*Q_m * (Gp/C);
else
E = Nl*Q_m * ((GpmodC==0?0:1) + (Gp/C));
r_offset += E;
if (r==0) {
offset = Kr_bytes - (ulsch_harq->F>>3) - ((ulsch_harq->C>1)?3:0);
} else {
offset += (Kr_bytes- ((ulsch_harq->C>1)?3:0));
}
}
// go through second half of segments
for (; r<(ulsch_harq->C); r++) {
// printf("before subblock deinterleaving c[%d] = %p\n",r,ulsch_harq->c[r]);
// Get Turbo interleaver parameters
if (r<ulsch_harq->Cminus)
Kr = ulsch_harq->Kminus;
else
Kr = ulsch_harq->Kplus;
Kr_bytes = Kr>>3;
if (Kr_bytes<=64)
iind = (Kr_bytes-5);
else if (Kr_bytes <=128)
iind = 59 + ((Kr_bytes-64)>>1);
else if (Kr_bytes <= 256)
iind = 91 + ((Kr_bytes-128)>>2);
else if (Kr_bytes <= 768)
iind = 123 + ((Kr_bytes-256)>>3);
else {
LOG_E(PHY,"ulsch_decoding: Illegal codeword size %d!!!\n",Kr_bytes);
return(-1);
}
#ifdef DEBUG_ULSCH_DECODING
printf("f1 %d, f2 %d, F %d\n",f1f2mat_old[2*iind],f1f2mat_old[1+(2*iind)],(r==0) ? ulsch_harq->F : 0);
#endif
memset(&dummy_w[r][0],0,3*(6144+64)*sizeof(short));
ulsch_harq->RTC[r] = generate_dummy_w(4+(Kr_bytes*8),
(uint8_t*)&dummy_w[r][0],
(r==0) ? ulsch_harq->F : 0);
#ifdef DEBUG_ULSCH_DECODING
printf("Rate Matching Segment %d (coded bits (G) %d,unpunctured/repeated bits %d, Q_m %d, nb_rb %d, Nl %d)...\n",
r, G,
Kr*3,
Q_m,
nb_rb,
ulsch_harq->Nl);
#endif
if (lte_rate_matching_turbo_rx(ulsch_harq->RTC[r],
G,
ulsch_harq->w[r],
(uint8_t*) &dummy_w[r][0],
ulsch_harq->e+r_offset,
ulsch_harq->C,
NSOFT,
0, //Uplink
1,
ulsch_harq->rvidx,
(ulsch_harq->round==0)?1:0, // clear
get_Qm_ul(ulsch_harq->mcs),
1,
r,
&E)==-1) {
LOG_E(PHY,"ulsch_decoding.c: Problem in rate matching\n");
return(-1);
}
r_offset += E;
sub_block_deinterleaving_turbo(4+Kr,
&ulsch_harq->d[r][96],
ulsch_harq->w[r]);
if (ulsch_harq->C == 1)
crc_type = CRC24_A;
else
crc_type = CRC24_B;
ret = tc(&ulsch_harq->d[r][96],
ulsch_harq->c[r],
Kr,
f1f2mat_old[iind*2],
f1f2mat_old[(iind*2)+1],
ulsch->max_turbo_iterations,//MAX_TURBO_ITERATIONS,
crc_type,
(r==0) ? ulsch_harq->F : 0,
&eNB->ulsch_tc_init_stats,
&eNB->ulsch_tc_alpha_stats,
&eNB->ulsch_tc_beta_stats,
&eNB->ulsch_tc_gamma_stats,
&eNB->ulsch_tc_ext_stats,
&eNB->ulsch_tc_intl1_stats,
&eNB->ulsch_tc_intl2_stats);
// Reassembly of Transport block here
if (ret != (1+ulsch->max_turbo_iterations)) {
if (r<ulsch_harq->Cminus)
Kr = ulsch_harq->Kminus;
else
Kr = ulsch_harq->Kplus;
Kr_bytes = Kr>>3;
memcpy(ulsch_harq->b+offset,
ulsch_harq->c[r],
Kr_bytes - ((ulsch_harq->C>1)?3:0));
offset += (Kr_bytes- ((ulsch_harq->C>1)?3:0));
} else {
break;
}
}
return(ret);
}
extern int oai_exit;
void *td_thread(void *param) {
PHY_VARS_eNB *eNB = ((td_params*)param)->eNB;
eNB_proc_t *proc = &eNB->proc;
while (!oai_exit) {
if (wait_on_condition(&proc->mutex_td,&proc->cond_td,&proc->instance_cnt_td,"td thread")<0) break;
((td_params*)param)->ret = ulsch_decoding_data_2thread0((td_params*)param);
if (release_thread(&proc->mutex_td,&proc->instance_cnt_td,"td thread")<0) break;
if (pthread_cond_signal(&proc->cond_td) != 0) {
printf("[eNB] ERROR pthread_cond_signal for td thread exit\n");
exit_fun( "ERROR pthread_cond_signal" );
return(NULL);
}
}
return(NULL);
}
int ulsch_decoding_data_2thread(PHY_VARS_eNB *eNB,int UE_id,int harq_pid,int llr8_flag) {
eNB_proc_t *proc = &eNB->proc;
unsigned int r,r_offset=0,Kr,Kr_bytes,iind;
uint8_t crc_type;
int offset = 0;
int ret = 1;
int16_t dummy_w[MAX_NUM_ULSCH_SEGMENTS][3*(6144+64)];
LTE_eNB_ULSCH_t *ulsch = eNB->ulsch[UE_id];
LTE_UL_eNB_HARQ_t *ulsch_harq = ulsch->harq_processes[harq_pid];
int Q_m = get_Qm_ul(ulsch_harq->mcs);
int G = ulsch_harq->nb_rb * (12 * Q_m) * ulsch_harq->Nsymb_pusch;
unsigned int E;
int Cby2;
uint8_t (*tc)(int16_t *y,
uint8_t *,
uint16_t,
uint16_t,
uint16_t,
uint8_t,
uint8_t,
uint8_t,
time_stats_t *,
time_stats_t *,
time_stats_t *,
time_stats_t *,
time_stats_t *,
time_stats_t *,
time_stats_t *);
struct timespec wait;
wait.tv_sec=0;
wait.tv_nsec=5000000L;
if (llr8_flag == 0)
tc = phy_threegpplte_turbo_decoder16;
else
tc = phy_threegpplte_turbo_decoder8;
if (ulsch_harq->C>1) { // wakeup worker if more than 1 segment
if (pthread_mutex_timedlock(&proc->mutex_td,&wait) != 0) {
printf("[eNB] ERROR pthread_mutex_lock for TD thread (IC %d)\n", proc->instance_cnt_td);
exit_fun( "error locking mutex_fep" );
return -1;
}
if (proc->instance_cnt_td==0) {
printf("[eNB] TD thread busy\n");
exit_fun("TD thread busy");
pthread_mutex_unlock( &proc->mutex_td );
return -1;
}
++proc->instance_cnt_td;
proc->tdp.eNB = eNB;
proc->tdp.UE_id = UE_id;
proc->tdp.harq_pid = harq_pid;
proc->tdp.llr8_flag = llr8_flag;
// wakeup worker to do second half segments
if (pthread_cond_signal(&proc->cond_td) != 0) {
printf("[eNB] ERROR pthread_cond_signal for td thread exit\n");
exit_fun( "ERROR pthread_cond_signal" );
return (1+ulsch->max_turbo_iterations);
}
pthread_mutex_unlock( &proc->mutex_td );
Cby2 = ulsch_harq->C/2;
}
else {
Cby2 = 1;
}
// go through first half of segments in main thread
for (r=0; r<Cby2; r++) {
// printf("before subblock deinterleaving c[%d] = %p\n",r,ulsch_harq->c[r]);
// Get Turbo interleaver parameters
if (r<ulsch_harq->Cminus)
Kr = ulsch_harq->Kminus;
else
Kr = ulsch_harq->Kplus;
Kr_bytes = Kr>>3;
if (Kr_bytes<=64)
iind = (Kr_bytes-5);
else if (Kr_bytes <=128)
iind = 59 + ((Kr_bytes-64)>>1);
else if (Kr_bytes <= 256)
iind = 91 + ((Kr_bytes-128)>>2);
else if (Kr_bytes <= 768)
iind = 123 + ((Kr_bytes-256)>>3);
else {
LOG_E(PHY,"ulsch_decoding: Illegal codeword size %d!!!\n",Kr_bytes);
return(-1);
}
#ifdef DEBUG_ULSCH_DECODING
printf("f1 %d, f2 %d, F %d\n",f1f2mat_old[2*iind],f1f2mat_old[1+(2*iind)],(r==0) ? ulsch_harq->F : 0);
#endif
memset(&dummy_w[r][0],0,3*(6144+64)*sizeof(short));
ulsch_harq->RTC[r] = generate_dummy_w(4+(Kr_bytes*8),
(uint8_t*)&dummy_w[r][0],
(r==0) ? ulsch_harq->F : 0);
#ifdef DEBUG_ULSCH_DECODING
printf("Rate Matching Segment %d (coded bits (G) %d,unpunctured/repeated bits %d, Q_m %d, nb_rb %d, Nl %d)...\n",
r, G,
Kr*3,
Q_m,
nb_rb,
ulsch_harq->Nl);
#endif
start_meas(&eNB->ulsch_rate_unmatching_stats);
if (lte_rate_matching_turbo_rx(ulsch_harq->RTC[r],
G,
ulsch_harq->w[r],
(uint8_t*) &dummy_w[r][0],
ulsch_harq->e+r_offset,
ulsch_harq->C,
NSOFT,
0, //Uplink
1,
ulsch_harq->rvidx,
(ulsch_harq->round==0)?1:0, // clear
get_Qm_ul(ulsch_harq->mcs),
1,
r,
&E)==-1) {
LOG_E(PHY,"ulsch_decoding.c: Problem in rate matching\n");
return(-1);
}
stop_meas(&eNB->ulsch_rate_unmatching_stats);
r_offset += E;
start_meas(&eNB->ulsch_deinterleaving_stats);
sub_block_deinterleaving_turbo(4+Kr,
&ulsch_harq->d[r][96],
ulsch_harq->w[r]);
stop_meas(&eNB->ulsch_deinterleaving_stats);
if (ulsch_harq->C == 1)
crc_type = CRC24_A;
else
crc_type = CRC24_B;
start_meas(&eNB->ulsch_turbo_decoding_stats);
ret = tc(&ulsch_harq->d[r][96],
ulsch_harq->c[r],
Kr,
f1f2mat_old[iind*2],
f1f2mat_old[(iind*2)+1],
ulsch->max_turbo_iterations,//MAX_TURBO_ITERATIONS,
crc_type,
(r==0) ? ulsch_harq->F : 0,
&eNB->ulsch_tc_init_stats,
&eNB->ulsch_tc_alpha_stats,
&eNB->ulsch_tc_beta_stats,
&eNB->ulsch_tc_gamma_stats,
&eNB->ulsch_tc_ext_stats,
&eNB->ulsch_tc_intl1_stats,
&eNB->ulsch_tc_intl2_stats);
// Reassembly of Transport block here
if (ret != (1+ulsch->max_turbo_iterations)) {
if (r<ulsch_harq->Cminus)
Kr = ulsch_harq->Kminus;
else
Kr = ulsch_harq->Kplus;
Kr_bytes = Kr>>3;
if (r==0) {
memcpy(ulsch_harq->b,
&ulsch_harq->c[0][(ulsch_harq->F>>3)],
Kr_bytes - (ulsch_harq->F>>3) - ((ulsch_harq->C>1)?3:0));
offset = Kr_bytes - (ulsch_harq->F>>3) - ((ulsch_harq->C>1)?3:0);
} else {
memcpy(ulsch_harq->b+offset,
ulsch_harq->c[r],
Kr_bytes - ((ulsch_harq->C>1)?3:0));
offset += (Kr_bytes- ((ulsch_harq->C>1)?3:0));
}
} else {
break;
}
stop_meas(&eNB->ulsch_turbo_decoding_stats);
}
// wait for worker to finish
wait_on_busy_condition(&proc->mutex_td,&proc->cond_td,&proc->instance_cnt_td,"td thread");
return( (ret>proc->tdp.ret) ? ret : proc->tdp.ret );
}
int ulsch_decoding_data(PHY_VARS_eNB *eNB,int UE_id,int harq_pid,int llr8_flag) {
unsigned int r,r_offset=0,Kr,Kr_bytes,iind;
uint8_t crc_type;
int offset = 0;
int ret = 1;
int16_t dummy_w[MAX_NUM_ULSCH_SEGMENTS][3*(6144+64)];
LTE_eNB_ULSCH_t *ulsch = eNB->ulsch[UE_id];
LTE_UL_eNB_HARQ_t *ulsch_harq = ulsch->harq_processes[harq_pid];
int Q_m = get_Qm_ul(ulsch_harq->mcs);
int G = ulsch_harq->nb_rb * (12 * Q_m) * ulsch_harq->Nsymb_pusch;
unsigned int E;
uint8_t (*tc)(int16_t *y,
uint8_t *,
uint16_t,
uint16_t,
uint16_t,
uint8_t,
uint8_t,
uint8_t,
time_stats_t *,
time_stats_t *,
time_stats_t *,
time_stats_t *,
time_stats_t *,
time_stats_t *,
time_stats_t *);
if (llr8_flag == 0)
tc = phy_threegpplte_turbo_decoder16;
else
tc = phy_threegpplte_turbo_decoder8;
for (r=0; r<ulsch_harq->C; r++) {
// printf("before subblock deinterleaving c[%d] = %p\n",r,ulsch_harq->c[r]);
// Get Turbo interleaver parameters
if (r<ulsch_harq->Cminus)
Kr = ulsch_harq->Kminus;
else
Kr = ulsch_harq->Kplus;
Kr_bytes = Kr>>3;
if (Kr_bytes<=64)
iind = (Kr_bytes-5);
else if (Kr_bytes <=128)
iind = 59 + ((Kr_bytes-64)>>1);
else if (Kr_bytes <= 256)
iind = 91 + ((Kr_bytes-128)>>2);
else if (Kr_bytes <= 768)
iind = 123 + ((Kr_bytes-256)>>3);
else {
LOG_E(PHY,"ulsch_decoding: Illegal codeword size %d!!!\n",Kr_bytes);
return(-1);
}
#ifdef DEBUG_ULSCH_DECODING
printf("f1 %d, f2 %d, F %d\n",f1f2mat_old[2*iind],f1f2mat_old[1+(2*iind)],(r==0) ? ulsch_harq->F : 0);
#endif
memset(&dummy_w[r][0],0,3*(6144+64)*sizeof(short));
ulsch_harq->RTC[r] = generate_dummy_w(4+(Kr_bytes*8),
(uint8_t*)&dummy_w[r][0],
(r==0) ? ulsch_harq->F : 0);
#ifdef DEBUG_ULSCH_DECODING
printf("Rate Matching Segment %d (coded bits (G) %d,unpunctured/repeated bits %d, Q_m %d, nb_rb %d, Nl %d)...\n",
r, G,
Kr*3,
Q_m,
nb_rb,
ulsch_harq->Nl);
#endif
start_meas(&eNB->ulsch_rate_unmatching_stats);
if (lte_rate_matching_turbo_rx(ulsch_harq->RTC[r],
G,
ulsch_harq->w[r],
(uint8_t*) &dummy_w[r][0],
ulsch_harq->e+r_offset,
ulsch_harq->C,
NSOFT,
0, //Uplink
1,
ulsch_harq->rvidx,
(ulsch_harq->round==0)?1:0, // clear
get_Qm_ul(ulsch_harq->mcs),
1,
r,
&E)==-1) {
LOG_E(PHY,"ulsch_decoding.c: Problem in rate matching\n");
return(-1);
}
stop_meas(&eNB->ulsch_rate_unmatching_stats);
r_offset += E;
start_meas(&eNB->ulsch_deinterleaving_stats);
sub_block_deinterleaving_turbo(4+Kr,
&ulsch_harq->d[r][96],
ulsch_harq->w[r]);
stop_meas(&eNB->ulsch_deinterleaving_stats);
if (ulsch_harq->C == 1)
crc_type = CRC24_A;
else
crc_type = CRC24_B;
start_meas(&eNB->ulsch_turbo_decoding_stats);
ret = tc(&ulsch_harq->d[r][96],
ulsch_harq->c[r],
Kr,
f1f2mat_old[iind*2],
f1f2mat_old[(iind*2)+1],
ulsch->max_turbo_iterations,//MAX_TURBO_ITERATIONS,
crc_type,
(r==0) ? ulsch_harq->F : 0,
&eNB->ulsch_tc_init_stats,
&eNB->ulsch_tc_alpha_stats,
&eNB->ulsch_tc_beta_stats,
&eNB->ulsch_tc_gamma_stats,
&eNB->ulsch_tc_ext_stats,
&eNB->ulsch_tc_intl1_stats,
&eNB->ulsch_tc_intl2_stats);
stop_meas(&eNB->ulsch_turbo_decoding_stats);
// Reassembly of Transport block here
if (ret != (1+ulsch->max_turbo_iterations)) {
if (r<ulsch_harq->Cminus)
Kr = ulsch_harq->Kminus;
else
Kr = ulsch_harq->Kplus;
Kr_bytes = Kr>>3;
if (r==0) {
memcpy(ulsch_harq->b,
&ulsch_harq->c[0][(ulsch_harq->F>>3)],
Kr_bytes - (ulsch_harq->F>>3) - ((ulsch_harq->C>1)?3:0));
offset = Kr_bytes - (ulsch_harq->F>>3) - ((ulsch_harq->C>1)?3:0);
} else {
memcpy(ulsch_harq->b+offset,
ulsch_harq->c[r],
Kr_bytes - ((ulsch_harq->C>1)?3:0));
offset += (Kr_bytes- ((ulsch_harq->C>1)?3:0));
}
} else {
break;
}
}
return(ret);
}
static inline unsigned int lte_gold_unscram(unsigned int *x1, unsigned int *x2, unsigned char reset) __attribute__((always_inline));
static inline unsigned int lte_gold_unscram(unsigned int *x1, unsigned int *x2, unsigned char reset)
{
int n;
if (reset) {
*x1 = 1+ (1<<31);
*x2=*x2 ^ ((*x2 ^ (*x2>>1) ^ (*x2>>2) ^ (*x2>>3))<<31);
// skip first 50 double words (1600 bits)
// printf("n=0 : x1 %x, x2 %x\n",x1,x2);
for (n=1; n<50; n++) {
*x1 = (*x1>>1) ^ (*x1>>4);
*x1 = *x1 ^ (*x1<<31) ^ (*x1<<28);
*x2 = (*x2>>1) ^ (*x2>>2) ^ (*x2>>3) ^ (*x2>>4);
*x2 = *x2 ^ (*x2<<31) ^ (*x2<<30) ^ (*x2<<29) ^ (*x2<<28);
}
}
*x1 = (*x1>>1) ^ (*x1>>4);
*x1 = *x1 ^ (*x1<<31) ^ (*x1<<28);
*x2 = (*x2>>1) ^ (*x2>>2) ^ (*x2>>3) ^ (*x2>>4);
*x2 = *x2 ^ (*x2<<31) ^ (*x2<<30) ^ (*x2<<29) ^ (*x2<<28);
return(*x1^*x2);
// printf("n=%d : c %x\n",n,x1^x2);
}
unsigned int ulsch_decoding(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,
uint8_t UE_id,
uint8_t control_only_flag,
uint8_t Nbundled,
uint8_t llr8_flag)
{
int16_t *ulsch_llr = eNB->pusch_vars[UE_id]->llr;
LTE_DL_FRAME_PARMS *frame_parms = &eNB->frame_parms;
LTE_eNB_ULSCH_t *ulsch = eNB->ulsch[UE_id];
uint8_t harq_pid;
unsigned short nb_rb;
unsigned int A;
uint8_t Q_m;
unsigned int i,i2,q,j,j2;
int iprime;
unsigned int ret=0;
// uint8_t dummy_channel_output[(3*8*block_length)+12];
int r,Kr;
uint8_t *columnset;
unsigned int sumKr=0;
unsigned int Qprime,L,G,Q_CQI,Q_RI,H,Hprime,Hpp,Cmux,Rmux_prime,O_RCC;
unsigned int Qprime_ACK,Qprime_RI,len_ACK=0,len_RI=0;
// uint8_t q_ACK[MAX_ACK_PAYLOAD],q_RI[MAX_RI_PAYLOAD];
int metric,metric_new;
uint8_t o_flip[8];
uint32_t x1, x2, s=0;
int16_t ys,c;
uint32_t wACK_idx;
uint8_t dummy_w_cc[3*(MAX_CQI_BITS+8+32)];
int16_t y[6*14*1200];
uint8_t ytag[14*1200];
// uint8_t ytag2[6*14*1200],*ytag2_ptr;
int16_t cseq[6*14*1200];
int off;
int subframe = proc->subframe_rx;
LTE_UL_eNB_HARQ_t *ulsch_harq;
harq_pid = subframe2harq_pid(frame_parms,proc->frame_rx,subframe);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_ULSCH_DECODING0+harq_pid,1);
// x1 is set in lte_gold_generic
x2 = ((uint32_t)ulsch->rnti<<14) + ((uint32_t)subframe<<9) + frame_parms->Nid_cell; //this is c_init in 36.211 Sec 6.3.1
ulsch_harq = ulsch->harq_processes[harq_pid];
if (harq_pid==255) {
LOG_E(PHY, "FATAL ERROR: illegal harq_pid, returning\n");
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_ULSCH_DECODING0+harq_pid,0);
return -1;
}
if (ulsch_harq->Nsymb_pusch == 0) {
LOG_E(PHY, "FATAL ERROR: harq_pid %d, Nsymb 0!\n",harq_pid);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_ULSCH_DECODING0+harq_pid,0);
return 1+ulsch->max_turbo_iterations;
}
nb_rb = ulsch_harq->nb_rb;
A = ulsch_harq->TBS;
Q_m = get_Qm_ul(ulsch_harq->mcs);
G = nb_rb * (12 * Q_m) * ulsch_harq->Nsymb_pusch;
#ifdef DEBUG_ULSCH_DECODING
printf("ulsch_decoding (Nid_cell %d, rnti %x, x2 %x): round %d, RV %d, mcs %d, O_RI %d, O_ACK %d, G %d, subframe %d\n",
frame_parms->Nid_cell,ulsch->rnti,x2,
ulsch_harq->round,
ulsch_harq->rvidx,
ulsch_harq->mcs,
ulsch_harq->O_RI,
ulsch_harq->O_ACK,
G,
subframe);
#endif
if (ulsch_harq->round == 0) {
// This is a new packet, so compute quantities regarding segmentation
ulsch_harq->B = A+24;
lte_segmentation(NULL,
NULL,
ulsch_harq->B,
&ulsch_harq->C,
&ulsch_harq->Cplus,
&ulsch_harq->Cminus,
&ulsch_harq->Kplus,
&ulsch_harq->Kminus,
&ulsch_harq->F);
// CLEAR LLR's HERE for first packet in process
}
// printf("after segmentation c[%d] = %p\n",0,ulsch_harq->c[0]);
sumKr = 0;
for (r=0; r<ulsch_harq->C; r++) {
if (r<ulsch_harq->Cminus)
Kr = ulsch_harq->Kminus;
else
Kr = ulsch_harq->Kplus;
sumKr += Kr;
}
if (sumKr==0) {
LOG_N(PHY,"[eNB %d] ulsch_decoding.c: FATAL sumKr is 0!\n",eNB->Mod_id);
LOG_D(PHY,"ulsch_decoding (Nid_cell %d, rnti %x, x2 %x): harq_pid %d round %d, RV %d, mcs %d, O_RI %d, O_ACK %d, G %d, subframe %d\n",
frame_parms->Nid_cell,ulsch->rnti,x2,
harq_pid,
ulsch_harq->round,
ulsch_harq->rvidx,
ulsch_harq->mcs,
ulsch_harq->O_RI,
ulsch_harq->O_ACK,
G,
subframe);
mac_xface->macphy_exit("ulsch_decoding.c: FATAL sumKr is 0!");
return(-1);
}
// Compute Q_ri
Qprime = ulsch_harq->O_RI*ulsch_harq->Msc_initial*ulsch_harq->Nsymb_initial * ulsch->beta_offset_ri_times8;
if (Qprime > 0 ) {
if ((Qprime % (8*sumKr)) > 0)
Qprime = 1+(Qprime/(8*sumKr));
else
Qprime = Qprime/(8*sumKr);
if (Qprime > 4*nb_rb * 12)
Qprime = 4*nb_rb * 12;
}
Q_RI = Q_m*Qprime;
Qprime_RI = Qprime;
// Compute Q_ack
Qprime = ulsch_harq->O_ACK*ulsch_harq->Msc_initial*ulsch_harq->Nsymb_initial * ulsch->beta_offset_harqack_times8;
if (Qprime > 0) {
if ((Qprime % (8*sumKr)) > 0)
Qprime = 1+(Qprime/(8*sumKr));
else
Qprime = Qprime/(8*sumKr);
if (Qprime > (4*nb_rb * 12))
Qprime = 4*nb_rb * 12;
}
// Q_ACK = Qprime * Q_m;
Qprime_ACK = Qprime;
#ifdef DEBUG_ULSCH_DECODING
printf("ulsch_decoding.c: Qprime_ACK %d, Msc_initial %d, Nsymb_initial %d, sumKr %d\n",
Qprime_ACK,ulsch_harq->Msc_initial,ulsch_harq->Nsymb_initial,sumKr);
#endif
// Compute Q_cqi
if (ulsch_harq->Or1 < 12)
L=0;
else
L=8;
// NOTE: we have to handle the case where we have a very small number of bits (condition on pg. 26 36.212)
if (ulsch_harq->Or1 > 0)
Qprime = (ulsch_harq->Or1 + L) * ulsch_harq->Msc_initial*ulsch_harq->Nsymb_initial * ulsch->beta_offset_cqi_times8;
else
Qprime=0;
if (Qprime > 0) { // check if ceiling is larger than floor in Q' expression
if ((Qprime % (8*sumKr)) > 0)
Qprime = 1+(Qprime/(8*sumKr));
else
Qprime = Qprime/(8*sumKr);
}
G = nb_rb * (12 * Q_m) * (ulsch_harq->Nsymb_pusch);
Q_CQI = Q_m * Qprime;
#ifdef DEBUG_ULSCH_DECODING
printf("ulsch_decoding: G %d, Q_RI %d, Q_CQI %d (L %d, Or1 %d) O_ACK %d\n",G,Q_RI,Q_CQI,L,ulsch_harq->Or1,ulsch_harq->O_ACK);
#endif
G = G - Q_RI - Q_CQI;
if ((int)G < 0) {
LOG_E(PHY,"FATAL: ulsch_decoding.c G < 0 (%d) : Q_RI %d, Q_CQI %d\n",G,Q_RI,Q_CQI);
return(-1);
}
H = G + Q_CQI;
Hprime = H/Q_m;
// Demultiplexing/Deinterleaving of PUSCH/ACK/RI/CQI
start_meas(&eNB->ulsch_demultiplexing_stats);
Hpp = Hprime + Qprime_RI;
Cmux = ulsch_harq->Nsymb_pusch;
Rmux_prime = Hpp/Cmux;
// Clear "tag" interleaving matrix to allow for CQI/DATA identification
memset(ytag,0,Cmux*Rmux_prime);
i=0;
memset(y,LTE_NULL,Q_m*Hpp);
// read in buffer and unscramble llrs for everything but placeholder bits
// llrs stored per symbol correspond to columns of interleaving matrix
s = lte_gold_unscram(&x1, &x2, 1);
i2=0;
for (i=0; i<((Hpp*Q_m)>>5); i++) {
/*
for (j=0; j<32; j++) {
cseq[i2++] = (int16_t)((((s>>j)&1)<<1)-1);
}
*/
#if defined(__x86_64__) || defined(__i386__)
#ifndef __AVX2__
((__m128i*)cseq)[i2++] = ((__m128i*)unscrambling_lut)[(s&65535)<<1];
((__m128i*)cseq)[i2++] = ((__m128i*)unscrambling_lut)[1+((s&65535)<<1)];
s>>=16;
((__m128i*)cseq)[i2++] = ((__m128i*)unscrambling_lut)[(s&65535)<<1];
((__m128i*)cseq)[i2++] = ((__m128i*)unscrambling_lut)[1+((s&65535)<<1)];
#else
((__m256i*)cseq)[i2++] = ((__m256i*)unscrambling_lut)[s&65535];
((__m256i*)cseq)[i2++] = ((__m256i*)unscrambling_lut)[(s>>16)&65535];
#endif
#elif defined(__arm__)
((int16x8_t*)cseq)[i2++] = ((int16x8_t*)unscrambling_lut)[(s&65535)<<1];
((int16x8_t*)cseq)[i2++] = ((int16x8_t*)unscrambling_lut)[1+((s&65535)<<1)];
s>>=16;
((int16x8_t*)cseq)[i2++] = ((int16x8_t*)unscrambling_lut)[(s&65535)<<1];
((int16x8_t*)cseq)[i2++] = ((int16x8_t*)unscrambling_lut)[1+((s&65535)<<1)];
#endif
s = lte_gold_unscram(&x1, &x2, 0);
}
// printf("after unscrambling c[%d] = %p\n",0,ulsch_harq->c[0]);
if (frame_parms->Ncp == 0)
columnset = cs_ri_normal;
else
columnset = cs_ri_extended;
j=0;
for (i=0; i<Qprime_RI; i++) {
r = Rmux_prime - 1 - (i>>2);
/*
for (q=0;q<Q_m;q++)
ytag2[q+(Q_m*((r*Cmux) + columnset[j]))] = q_RI[(q+(Q_m*i))%len_RI];
*/
off =((Rmux_prime*Q_m*columnset[j])+(r*Q_m));
cseq[off+1] = cseq[off]; // PUSCH_y
for (q=2; q<Q_m; q++)
cseq[off+q] = -1; // PUSCH_x
j=(j+3)&3;
}
// printf("after RI c[%d] = %p\n",0,ulsch_harq->c[0]);
// HARQ-ACK Bits (Note these overwrite some bits)
if (frame_parms->Ncp == 0)
columnset = cs_ack_normal;
else
columnset = cs_ack_extended;
j=0;
for (i=0; i<Qprime_ACK; i++) {
r = Rmux_prime - 1 - (i>>2);
off =((Rmux_prime*Q_m*columnset[j])+(r*Q_m));
if (ulsch_harq->O_ACK == 1) {
if (ulsch->bundling==0)
cseq[off+1] = cseq[off]; // PUSCH_y
for (q=2; q<Q_m; q++)
cseq[off+q] = -1; // PUSCH_x
} else if (ulsch_harq->O_ACK == 2) {
for (q=2; q<Q_m; q++)
cseq[off+q] = -1; // PUSCH_x
}
#ifdef DEBUG_ULSCH_DECODING
printf("ulsch_decoding.c: ACK i %d, r %d, j %d, ColumnSet[j] %d\n",i,r,j,columnset[j]);
#endif
j=(j+3)&3;
}
i=0;
switch (Q_m) {
case 2:
for (j=0; j<Cmux; j++) {
i2=j<<1;
for (r=0; r<Rmux_prime; r++) {
c = cseq[i];
// printf("ulsch %d: %d * ",i,c);
y[i2++] = c*ulsch_llr[i++];
// printf("%d\n",ulsch_llr[i-1]);
c = cseq[i];
// printf("ulsch %d: %d * ",i,c);
y[i2] = c*ulsch_llr[i++];
// printf("%d\n",ulsch_llr[i-1]);
i2=(i2+(Cmux<<1)-1);
}
}
break;
case 4:
for (j=0; j<Cmux; j++) {
i2=j<<2;
for (r=0; r<Rmux_prime; r++) {
/*
c = cseq[i];
y[i2++] = c*ulsch_llr[i++];
c = cseq[i];
y[i2++] = c*ulsch_llr[i++];
c = cseq[i];
y[i2++] = c*ulsch_llr[i++];
c = cseq[i];
y[i2] = c*ulsch_llr[i++];
i2=(i2+(Cmux<<2)-3);
*/
*(__m64 *)&y[i2] = _mm_sign_pi16(*(__m64*)&ulsch_llr[i],*(__m64*)&cseq[i]);i+=4;i2+=(Cmux<<2);
}
}
break;
case 6:
for (j=0; j<Cmux; j++) {
i2=j*6;
for (r=0; r<Rmux_prime; r++) {
c = cseq[i];
y[i2++] = c*ulsch_llr[i++];
c = cseq[i];
y[i2++] = c*ulsch_llr[i++];
c = cseq[i];
y[i2++] = c*ulsch_llr[i++];
c = cseq[i];
y[i2++] = c*ulsch_llr[i++];
c = cseq[i];
y[i2++] = c*ulsch_llr[i++];
c = cseq[i];
y[i2] = c*ulsch_llr[i++];
i2=(i2+(Cmux*6)-5);
}
}
break;
}
if (i!=(H+Q_RI))
LOG_D(PHY,"ulsch_decoding.c: Error in input buffer length (j %d, H+Q_RI %d)\n",i,H+Q_RI);
// HARQ-ACK Bits (LLRs are nulled in overwritten bits after copying HARQ-ACK LLR)
if (frame_parms->Ncp == 0)
columnset = cs_ack_normal;
else
columnset = cs_ack_extended;
j=0;
if (ulsch_harq->O_ACK == 1) {
switch (Q_m) {
case 2:
len_ACK = 2;
break;
case 4:
len_ACK = 4;
break;
case 6:
len_ACK = 6;
break;
}
}
if (ulsch_harq->O_ACK == 2) {
switch (Q_m) {
case 2:
len_ACK = 6;
break;
case 4:
len_ACK = 12;
break;
case 6:
len_ACK = 18;
break;
}
}
if (ulsch_harq->O_ACK > 2) {
LOG_E(PHY,"ulsch_decoding: FATAL, ACK cannot be more than 2 bits yet\n");
return(-1);
}
for (i=0; i<len_ACK; i++)
ulsch_harq->q_ACK[i] = 0;
for (i=0; i<Qprime_ACK; i++) {
r = Rmux_prime -1 - (i>>2);
for (q=0; q<Q_m; q++) {
if (y[q+(Q_m*((r*Cmux) + columnset[j]))]!=0)
ulsch_harq->q_ACK[(q+(Q_m*i))%len_ACK] += y[q+(Q_m*((r*Cmux) + columnset[j]))];
y[q+(Q_m*((r*Cmux) + columnset[j]))]=0; // NULL LLRs in ACK positions
}
j=(j+3)&3;
}
// printf("after ACKNAK c[%d] = %p\n",0,ulsch_harq->c[0]);
// RI BITS
if (ulsch_harq->O_RI == 1) {
switch (Q_m) {
case 2:
len_RI=2;
break;
case 4:
len_RI=4;
break;
case 6:
len_RI=6;
break;
}
}
if (ulsch_harq->O_RI > 1) {
LOG_E(PHY,"ulsch_decoding: FATAL, RI cannot be more than 1 bit yet\n");
return(-1);
}
for (i=0; i<len_RI; i++)
ulsch_harq->q_RI[i] = 0;
if (frame_parms->Ncp == 0)
columnset = cs_ri_normal;
else
columnset = cs_ri_extended;
j=0;
for (i=0; i<Qprime_RI; i++) {
r = Rmux_prime -1 - (i>>2);
for (q=0; q<Q_m; q++)
ulsch_harq->q_RI[(q+(Q_m*i))%len_RI] += y[q+(Q_m*((r*Cmux) + columnset[j]))];
ytag[(r*Cmux) + columnset[j]] = LTE_NULL;
j=(j+3)&3;
}
// printf("after RI2 c[%d] = %p\n",0,ulsch_harq->c[0]);
// CQI and Data bits
j=0;
j2=0;
// r=0;
if (Q_RI>0) {
for (i=0; i<(Q_CQI/Q_m); i++) {
while (ytag[j]==LTE_NULL) {
j++;
j2+=Q_m;
}
for (q=0; q<Q_m; q++) {
// ys = y[q+(Q_m*((r*Cmux)+j))];
ys = y[q+j2];
if (ys>127)
ulsch_harq->q[q+(Q_m*i)] = 127;
else if (ys<-128)
ulsch_harq->q[q+(Q_m*i)] = -128;
else
ulsch_harq->q[q+(Q_m*i)] = ys;
}
j2+=Q_m;
}
switch (Q_m) {
case 2:
for (iprime=0; iprime<G;) {
while (ytag[j]==LTE_NULL) {
j++;
j2+=2;
}
ulsch_harq->e[iprime++] = y[j2++];
ulsch_harq->e[iprime++] = y[j2++];
}
break;
case 4:
for (iprime=0; iprime<G;) {
while (ytag[j]==LTE_NULL) {
j++;
j2+=4;
}
ulsch_harq->e[iprime++] = y[j2++];
ulsch_harq->e[iprime++] = y[j2++];
ulsch_harq->e[iprime++] = y[j2++];
ulsch_harq->e[iprime++] = y[j2++];
}
break;
case 6:
for (iprime=0; iprime<G;) {
while (ytag[j]==LTE_NULL) {
j++;
j2+=6;
}
ulsch_harq->e[iprime++] = y[j2++];
ulsch_harq->e[iprime++] = y[j2++];
ulsch_harq->e[iprime++] = y[j2++];
ulsch_harq->e[iprime++] = y[j2++];
ulsch_harq->e[iprime++] = y[j2++];
ulsch_harq->e[iprime++] = y[j2++];
}
break;
}
} // Q_RI>0
else {
for (i=0; i<(Q_CQI/Q_m); i++) {
for (q=0; q<Q_m; q++) {
ys = y[q+j2];
if (ys>127)
ulsch_harq->q[q+(Q_m*i)] = 127;
else if (ys<-128)
ulsch_harq->q[q+(Q_m*i)] = -128;
else
ulsch_harq->q[q+(Q_m*i)] = ys;
}
j2+=Q_m;
}
#if defined(__x86_64__)||defined(__i386__)
#ifndef __AVX2
for (iprime=0; iprime<G;iprime+=8,j2+=8)
*((__m128i *)&ulsch_harq->e[iprime]) = *((__m128i *)&y[j2]);
#else
for (iprime=0; iprime<G;iprime+=16,j2+=16)
*((__m256i *)&ulsch_harq->e[iprime]) = *((__m256i *)&y[j2]);
#endif
#elif defined(__arm__)
for (iprime=0; iprime<G;iprime+=8,j2+=8)
*((int16x8_t *)&ulsch_harq->e[iprime]) = *((int16x8_t *)&y[j2]);
#endif
}
stop_meas(&eNB->ulsch_demultiplexing_stats);
// printf("after ACKNAK2 c[%d] = %p (iprime %d, G %d)\n",0,ulsch_harq->c[0],iprime,G);
// Do CQI/RI/HARQ-ACK Decoding first and pass to MAC
// HARQ-ACK
wACK_idx = (ulsch->bundling==0) ? 4 : ((Nbundled-1)&3);
if (ulsch_harq->O_ACK == 1) {
ulsch_harq->q_ACK[0] *= wACK_RX[wACK_idx][0];
ulsch_harq->q_ACK[0] += (ulsch->bundling==0) ? ulsch_harq->q_ACK[1]*wACK_RX[wACK_idx][0] : ulsch_harq->q_ACK[1]*wACK_RX[wACK_idx][1];
if (ulsch_harq->q_ACK[0] < 0)
ulsch_harq->o_ACK[0] = 0;
else
ulsch_harq->o_ACK[0] = 1;
}
if (ulsch_harq->O_ACK == 2) {
switch (Q_m) {
case 2:
ulsch_harq->q_ACK[0] = ulsch_harq->q_ACK[0]*wACK_RX[wACK_idx][0] + ulsch_harq->q_ACK[3]*wACK_RX[wACK_idx][1];
ulsch_harq->q_ACK[1] = ulsch_harq->q_ACK[1]*wACK_RX[wACK_idx][0] + ulsch_harq->q_ACK[4]*wACK_RX[wACK_idx][1];
ulsch_harq->q_ACK[2] = ulsch_harq->q_ACK[2]*wACK_RX[wACK_idx][0] + ulsch_harq->q_ACK[5]*wACK_RX[wACK_idx][1];
break;
case 4:
ulsch_harq->q_ACK[0] = ulsch_harq->q_ACK[0]*wACK_RX[wACK_idx][0] + ulsch_harq->q_ACK[5]*wACK_RX[wACK_idx][1];
ulsch_harq->q_ACK[1] = ulsch_harq->q_ACK[1]*wACK_RX[wACK_idx][0] + ulsch_harq->q_ACK[8]*wACK_RX[wACK_idx][1];
ulsch_harq->q_ACK[2] = ulsch_harq->q_ACK[4]*wACK_RX[wACK_idx][0] + ulsch_harq->q_ACK[9]*wACK_RX[wACK_idx][1];
break;
case 6:
ulsch_harq->q_ACK[0] = ulsch_harq->q_ACK[0]*wACK_RX[wACK_idx][0] + ulsch_harq->q_ACK[7]*wACK_RX[wACK_idx][1];
ulsch_harq->q_ACK[1] = ulsch_harq->q_ACK[1]*wACK_RX[wACK_idx][0] + ulsch_harq->q_ACK[12]*wACK_RX[wACK_idx][1];
ulsch_harq->q_ACK[2] = ulsch_harq->q_ACK[6]*wACK_RX[wACK_idx][0] + ulsch_harq->q_ACK[13]*wACK_RX[wACK_idx][1];
break;
}
ulsch_harq->o_ACK[0] = 1;
ulsch_harq->o_ACK[1] = 1;
metric = ulsch_harq->q_ACK[0]+ulsch_harq->q_ACK[1]-ulsch_harq->q_ACK[2];
metric_new = -ulsch_harq->q_ACK[0]+ulsch_harq->q_ACK[1]+ulsch_harq->q_ACK[2];
if (metric_new > metric) {
ulsch_harq->o_ACK[0]=0;
ulsch_harq->o_ACK[1]=1;
metric = metric_new;
}
metric_new = ulsch_harq->q_ACK[0]-ulsch_harq->q_ACK[1]+ulsch_harq->q_ACK[2];
if (metric_new > metric) {
ulsch_harq->o_ACK[0] = 1;
ulsch_harq->o_ACK[1] = 0;
metric = metric_new;
}
metric_new = -ulsch_harq->q_ACK[0]-ulsch_harq->q_ACK[1]-ulsch_harq->q_ACK[2];
if (metric_new > metric) {
ulsch_harq->o_ACK[0] = 0;
ulsch_harq->o_ACK[1] = 0;
metric = metric_new;
}
}
// RI
if ((ulsch_harq->O_RI == 1) && (Qprime_RI > 0)) {
ulsch_harq->o_RI[0] = ((ulsch_harq->q_RI[0] + ulsch_harq->q_RI[Q_m/2]) > 0) ? 0 : 1;
}
// CQI
// printf("before cqi c[%d] = %p\n",0,ulsch_harq->c[0]);
if (Q_CQI>0) {
memset((void *)&dummy_w_cc[0],0,3*(ulsch_harq->Or1+8+32));
O_RCC = generate_dummy_w_cc(ulsch_harq->Or1+8,
&dummy_w_cc[0]);
lte_rate_matching_cc_rx(O_RCC,
Q_CQI,
ulsch_harq->o_w,
dummy_w_cc,
ulsch_harq->q);
sub_block_deinterleaving_cc((unsigned int)(ulsch_harq->Or1+8),
&ulsch_harq->o_d[96],
&ulsch_harq->o_w[0]);
memset(o_flip,0,1+((8+ulsch_harq->Or1)/8));
phy_viterbi_lte_sse2(ulsch_harq->o_d+96,o_flip,8+ulsch_harq->Or1);
if (extract_cqi_crc(o_flip,ulsch_harq->Or1) == (crc8(o_flip,ulsch_harq->Or1)>>24))
ulsch_harq->cqi_crc_status = 1;
else
ulsch_harq->cqi_crc_status = 0;
if (ulsch->harq_processes[harq_pid]->Or1<=32) {
ulsch_harq->o[3] = o_flip[0] ;
ulsch_harq->o[2] = o_flip[1] ;
ulsch_harq->o[1] = o_flip[2] ;
ulsch_harq->o[0] = o_flip[3] ;
} else {
ulsch_harq->o[7] = o_flip[0] ;
ulsch_harq->o[6] = o_flip[1] ;
ulsch_harq->o[5] = o_flip[2] ;
ulsch_harq->o[4] = o_flip[3] ;
ulsch_harq->o[3] = o_flip[4] ;
ulsch_harq->o[2] = o_flip[5] ;
ulsch_harq->o[1] = o_flip[6] ;
ulsch_harq->o[0] = o_flip[7] ;
}
#ifdef DEBUG_ULSCH_DECODING
printf("ulsch_decoding: Or1=%d\n",ulsch_harq->Or1);
for (i=0; i<1+((8+ulsch_harq->Or1)/8); i++)
printf("ulsch_decoding: O[%d] %d\n",i,ulsch_harq->o[i]);
if (ulsch_harq->cqi_crc_status == 1)
printf("RX CQI CRC OK (%x)\n",extract_cqi_crc(o_flip,ulsch_harq->Or1));
else
printf("RX CQI CRC NOT OK (%x)\n",extract_cqi_crc(o_flip,ulsch_harq->Or1));
#endif
}
// Do ULSCH Decoding for data portion
ret = eNB->td(eNB,UE_id,harq_pid,llr8_flag);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_ULSCH_DECODING0+harq_pid,0);
return(ret);
}
#ifdef PHY_ABSTRACTION
#ifdef PHY_ABSTRACTION_UL
int ulsch_abstraction(double* sinr_dB, uint8_t TM, uint8_t mcs,uint16_t nrb, uint16_t frb)
{
int index,ii;
double sinr_eff = 0;
int rb_count = 0;
int offset;
double bler = 0;
TM = TM-1;
sinr_eff = sinr_dB[frb]; //the single sinr_eff value we calculated with MMSE FDE formula in init_snr_up function
sinr_eff *= 10;
sinr_eff = floor(sinr_eff);
sinr_eff /= 10;
LOG_D(PHY,"[ABSTRACTION] sinr_eff after rounding = %f\n",sinr_eff);
for (index = 0; index < 16; index++) {
if(index == 0) {
if (sinr_eff < sinr_bler_map_up[mcs][0][index]) {
bler = 1;
break;
}
}
if (sinr_eff == sinr_bler_map_up[mcs][0][index]) {
bler = sinr_bler_map_up[mcs][1][index];
}
}
#ifdef USER_MODE // need to be adapted for the emulation in the kernel space
if (uniformrandom() < bler) {
LOG_I(OCM,"abstraction_decoding failed (mcs=%d, sinr_eff=%f, bler=%f)\n",mcs,sinr_eff,bler);
return(0);
} else {
LOG_I(OCM,"abstraction_decoding successful (mcs=%d, sinr_eff=%f, bler=%f)\n",mcs,sinr_eff,bler);
return(1);
}
#endif
}
int ulsch_abstraction_MIESM(double* sinr_dB,uint8_t TM, uint8_t mcs,uint16_t nrb, uint16_t frb)
{
int index;
double sinr_eff = 0;
double sinr_db1 = 0;
double sinr_db2 = 0;
double SI=0;
double RBIR=0;
int rb_count = 0;
int offset, M=0;
double bler = 0;
int start,middle,end;
TM = TM-1;
for (offset = frb; offset <= (frb + nrb -1); offset++) {
rb_count++;
//we need to do the table lookups here for the mutual information corresponding to the certain sinr_dB.
sinr_db1 = sinr_dB[offset*2];
sinr_db2 = sinr_dB[offset*2+1];
printf("sinr_db1=%f\n,sinr_db2=%f\n",sinr_db1,sinr_db2);
//rounding up for the table lookup
sinr_db1 *= 10;
sinr_db2 *= 10;
sinr_db1 = floor(sinr_db1);
sinr_db2 = floor(sinr_db2);
if ((int)sinr_db1%2) {
sinr_db1 += 1;
}
if ((int)sinr_db2%2) {
sinr_db2 += 1;
}
sinr_db1 /= 10;
sinr_db2 /= 10;
if(mcs<10) {
//for sinr_db1
for (index = 0; index < 162; index++) {
if (sinr_db1 < MI_map_4qam[0][0]) {
SI += (MI_map_4qam[1][0]/beta1_dlsch_MI[TM][mcs]);
M +=2;
break;
}
if (sinr_db1 > MI_map_4qam[0][161]) {
SI += (MI_map_4qam[1][161]/beta1_dlsch_MI[TM][mcs]);
M +=2;
break;
}
if (sinr_db1 == MI_map_4qam[0][index]) {
SI += (MI_map_4qam[1][index]/beta1_dlsch_MI[TM][mcs]);
M +=2;
break;
}
}
//for sinr_db2
for (index = 0; index < 162; index++) {
if (sinr_db2 < MI_map_4qam[0][0]) {
SI += (MI_map_4qam[1][0]/beta1_dlsch_MI[TM][mcs]);
M +=2;
break;
}
if (sinr_db2 > MI_map_4qam[0][161]) {
SI += (MI_map_4qam[1][161]/beta1_dlsch_MI[TM][mcs]);
M +=2;
break;
}
if (sinr_db2 == MI_map_4qam[0][index]) {
SI += (MI_map_4qam[1][index]/beta1_dlsch_MI[TM][mcs]);
M +=2;
break;
}
}
} else if(mcs>9 && mcs<17) {
//for sinr_db1
for (index = 0; index < 197; index++) {
if (sinr_db1 < MI_map_16qam[0][0]) {
SI += (MI_map_16qam[1][0]/beta1_dlsch_MI[TM][mcs]);
M +=4;
break;
}
if (sinr_db1 > MI_map_16qam[0][196]) {
SI += (MI_map_16qam[1][196]/beta1_dlsch_MI[TM][mcs]);
M +=4;
break;
}
if (sinr_db1 == MI_map_16qam[0][index]) {
SI += (MI_map_16qam[1][index]/beta1_dlsch_MI[TM][mcs]);
M +=4;
break;
}
}
//for sinr_db2
for (index = 0; index < 197; index++) {
if (sinr_db2 < MI_map_16qam[0][0]) {
SI += (MI_map_16qam[1][0]/beta1_dlsch_MI[TM][mcs]);
M +=4;
break;
}
if (sinr_db2 > MI_map_16qam[0][196]) {
SI += (MI_map_16qam[1][196]/beta1_dlsch_MI[TM][mcs]);
M +=4;
break;
}
if (sinr_db2 == MI_map_16qam[0][index]) {
SI += (MI_map_16qam[1][index]/beta1_dlsch_MI[TM][mcs]);
M +=4;
break;
}
}
} else if(mcs>16 && mcs<22) {
//for sinr_db1
for (index = 0; index < 227; index++) {
if (sinr_db1 < MI_map_64qam[0][0]) {
SI += (MI_map_64qam[1][0]/beta1_dlsch_MI[TM][mcs]);
M +=6;
break;
}
if (sinr_db1 > MI_map_64qam[0][226]) {
SI += (MI_map_64qam[1][226]/beta1_dlsch_MI[TM][mcs]);
M +=6;
break;
}
if (sinr_db1 == MI_map_64qam[0][index]) {
SI += (MI_map_64qam[1][index]/beta1_dlsch_MI[TM][mcs]);
M +=6;
break;
}
}
//for sinr_db2
for (index = 0; index < 227; index++) {
if (sinr_db2 < MI_map_64qam[0][0]) {
SI += (MI_map_64qam[1][0]/beta1_dlsch_MI[TM][mcs]);
M +=6;
break;
}
if (sinr_db2 > MI_map_64qam[0][226]) {
SI += (MI_map_64qam[1][226]/beta1_dlsch_MI[TM][mcs]);
M +=6;
break;
}
if (sinr_db2 == MI_map_64qam[0][index]) {
SI += (MI_map_64qam[1][index]/beta1_dlsch_MI[TM][mcs]);
M +=6;
break;
}
}
}
}
// }
RBIR = SI/M;
//Now RBIR->SINR_effective Mapping
//binary search method is performed here
if(mcs<10) {
start = 0;
end = 161;
middle = end/2;
if (RBIR <= MI_map_4qam[2][start]) {
sinr_eff = MI_map_4qam[0][start];
} else {
if (RBIR >= MI_map_4qam[2][end])
sinr_eff = MI_map_4qam[0][end];
else {
//while((end-start > 1) && (RBIR >= MI_map_4qam[2]))
if (RBIR < MI_map_4qam[2][middle]) {
end = middle;
middle = end/2;
} else {
start = middle;
middle = (end-middle)/2;
}
}
for (; end>start; end--) {
if ((RBIR < MI_map_4qam[2][end]) && (RBIR > MI_map_4qam[2][end-2])) {
sinr_eff = MI_map_4qam[0][end-1];
break;
}
}
}
sinr_eff = sinr_eff * beta2_dlsch_MI[TM][mcs];
}
else if (mcs>9 && mcs<17) {
start = 0;
end = 196;
middle = end/2;
if (RBIR <= MI_map_16qam[2][start]) {
sinr_eff = MI_map_16qam[0][start];
} else {
if (RBIR >= MI_map_16qam[2][end])
sinr_eff = MI_map_16qam[0][end];
else {
//while((end-start > 1) && (RBIR >= MI_map_4qam[2]))
if (RBIR < MI_map_16qam[2][middle]) {
end = middle;
middle = end/2;
} else {
start = middle;
middle = (end-middle)/2;
}
}
for (; end>start; end--) {
if ((RBIR < MI_map_16qam[2][end]) && (RBIR > MI_map_16qam[2][end-2])) {
sinr_eff = MI_map_16qam[0][end-1];
break;
}
}
}
sinr_eff = sinr_eff * beta2_dlsch_MI[TM][mcs];
} else if (mcs>16) {
start = 0;
end = 226;
middle = end/2;
if (RBIR <= MI_map_64qam[2][start]) {
sinr_eff = MI_map_64qam[0][start];
} else {
if (RBIR >= MI_map_64qam[2][end])
sinr_eff = MI_map_64qam[0][end];
else {
//while((end-start > 1) && (RBIR >= MI_map_4qam[2]))
if (RBIR < MI_map_64qam[2][middle]) {
end = middle;
middle = end/2;
} else {
start = middle;
middle = (end-middle)/2;
}
}
for (; end>start; end--) {
if ((RBIR < MI_map_64qam[2][end]) && (RBIR > MI_map_64qam[2][end-2])) {
sinr_eff = MI_map_64qam[0][end-1];
break;
}
}
}
sinr_eff = sinr_eff * beta2_dlsch_MI[TM][mcs];
}
printf("SINR_Eff = %e\n",sinr_eff);
sinr_eff *= 10;
sinr_eff = floor(sinr_eff);
// if ((int)sinr_eff%2) {
// sinr_eff += 1;
// }
sinr_eff /= 10;
printf("sinr_eff after rounding = %f\n",sinr_eff);
for (index = 0; index < 16; index++) {
if(index == 0) {
if (sinr_eff < sinr_bler_map_up[mcs][0][index]) {
bler = 1;
break;
}
}
if (sinr_eff == sinr_bler_map_up[mcs][0][index]) {
bler = sinr_bler_map_up[mcs][1][index];
}
}
#ifdef USER_MODE // need to be adapted for the emulation in the kernel space
if (uniformrandom() < bler) {
printf("abstraction_decoding failed (mcs=%d, sinr_eff=%f, bler=%f)\n",mcs,sinr_eff,bler);
return(0);
} else {
printf("abstraction_decoding successful (mcs=%d, sinr_eff=%f, bler=%f)\n",mcs,sinr_eff,bler);
return(1);
}
#endif
}
#endif
uint32_t ulsch_decoding_emul(PHY_VARS_eNB *eNB, eNB_rxtx_proc_t *proc,
uint8_t UE_index,
uint16_t *crnti)
{
uint8_t UE_id;
uint16_t rnti;
int subframe = proc->subframe_rx;
uint8_t harq_pid;
uint8_t CC_id = eNB->CC_id;
harq_pid = subframe2harq_pid(&eNB->frame_parms,proc->frame_rx,subframe);
rnti = eNB->ulsch[UE_index]->rnti;
#ifdef DEBUG_PHY
LOG_D(PHY,"[eNB %d] ulsch_decoding_emul : subframe %d UE_index %d harq_pid %d rnti %x\n",eNB->Mod_id,subframe,UE_index,harq_pid,rnti);
#endif
for (UE_id=0; UE_id<NB_UE_INST; UE_id++) {
if (rnti == PHY_vars_UE_g[UE_id][CC_id]->pdcch_vars[0]->crnti)
break;
}
if (UE_id==NB_UE_INST) {
LOG_W(PHY,"[eNB %d] ulsch_decoding_emul: FATAL, didn't find UE with rnti %x (UE index %d)\n",
eNB->Mod_id, rnti, UE_index);
return(1+eNB->ulsch[UE_id]->max_turbo_iterations);
} else {
LOG_D(PHY,"[eNB %d] Found UE with rnti %x => UE_id %d\n",eNB->Mod_id, rnti, UE_id);
}
if (PHY_vars_UE_g[UE_id][CC_id]->ulsch[0]->harq_processes[harq_pid]->status == CBA_ACTIVE) {
*crnti = rnti;
PHY_vars_UE_g[UE_id][CC_id]->ulsch[0]->harq_processes[harq_pid]->status=IDLE;
} else
*crnti = 0x0;
// Do abstraction here to determine if packet it in error
/* if (ulsch_abstraction_MIESM(eNB->sinr_dB_eNB,1, eNB->ulsch[UE_id]->harq_processes[harq_pid]->mcs,eNB->ulsch[UE_id]->harq_processes[harq_pid]->nb_rb, eNB->ulsch[UE_id]->harq_processes[harq_pid]->first_rb) == 1)
flag = 1;
else flag = 0;*/
/*
//SINRdbPost = eNB->sinr_dB_eNB;
mcsPost = eNB->ulsch[UE_id]->harq_processes[harq_pid]->mcs,
nrbPost = eNB->ulsch[UE_id]->harq_processes[harq_pid]->nb_rb;
frbPost = eNB->ulsch[UE_id]->harq_processes[harq_pid]->first_rb;
if(nrbPost > 0)
{
SINRdbPost = eNB->sinr_dB_eNB;
ULflag1 = 1;
}
else
{
SINRdbPost = NULL ;
ULflag1 = 0 ;
}*/
//
// write_output("postprocSINR.m","SINReNB",eNB->sinr_dB,301,1,7);
//Yazdir buraya her frame icin 300 eNb
// fprintf(SINRrx,"%e,%e,%e,%e;\n",SINRdbPost);
//fprintf(SINRrx,"%e\n",SINRdbPost);
// fprintf(csv_fd,"%e+i*(%e),",channelx,channely);
// if (ulsch_abstraction(eNB->sinr_dB,1, eNB->ulsch[UE_id]->harq_processes[harq_pid]->mcs,eNB->ulsch[UE_id]->harq_processes[harq_pid]->nb_rb, eNB->ulsch[UE_id]->harq_processes[harq_pid]->first_rb) == 1) {
if (1) {
LOG_D(PHY,"ulsch_decoding_emul abstraction successful\n");
memcpy(eNB->ulsch[UE_index]->harq_processes[harq_pid]->b,
PHY_vars_UE_g[UE_id][CC_id]->ulsch[0]->harq_processes[harq_pid]->b,
eNB->ulsch[UE_index]->harq_processes[harq_pid]->TBS>>3);
// get local ue's ack
if ((UE_index >= oai_emulation.info.first_ue_local) ||(UE_index <(oai_emulation.info.first_ue_local+oai_emulation.info.nb_ue_local))) {
get_ack(&eNB->frame_parms,
PHY_vars_UE_g[UE_id][CC_id]->dlsch[0][0]->harq_ack,
subframe,
eNB->ulsch[UE_index]->harq_processes[harq_pid]->o_ACK);
} else { // get remote UEs' ack
eNB->ulsch[UE_index]->harq_processes[harq_pid]->o_ACK[0] = PHY_vars_UE_g[UE_id][CC_id]->ulsch[0]->o_ACK[0];
eNB->ulsch[UE_index]->harq_processes[harq_pid]->o_ACK[1] = PHY_vars_UE_g[UE_id][CC_id]->ulsch[0]->o_ACK[1];
}
// Do abstraction of PUSCH feedback
#ifdef DEBUG_PHY
LOG_D(PHY,"[eNB %d][EMUL] ue index %d UE_id %d: subframe %d : o_ACK (%d %d), cqi (val %d, len %d)\n",
eNB->Mod_id,UE_index, UE_id, subframe,eNB->ulsch[UE_index]->harq_processes[harq_pid]->o_ACK[0],
eNB->ulsch[UE_index]->harq_processes[harq_pid]->o_ACK[1],
((HLC_subband_cqi_rank1_2A_5MHz *)PHY_vars_UE_g[UE_id][CC_id]->ulsch[0]->o)->cqi1,
PHY_vars_UE_g[UE_id][CC_id]->ulsch[0]->O);
#endif
eNB->ulsch[UE_index]->harq_processes[harq_pid]->Or1 = PHY_vars_UE_g[UE_id][CC_id]->ulsch[0]->O;
eNB->ulsch[UE_index]->harq_processes[harq_pid]->Or2 = PHY_vars_UE_g[UE_id][CC_id]->ulsch[0]->O;
eNB->ulsch[UE_index]->harq_processes[harq_pid]->uci_format = PHY_vars_UE_g[UE_id][CC_id]->ulsch[0]->uci_format;
memcpy(eNB->ulsch[UE_index]->harq_processes[harq_pid]->o,PHY_vars_UE_g[UE_id][CC_id]->ulsch[0]->o,MAX_CQI_BYTES);
memcpy(eNB->ulsch[UE_index]->harq_processes[harq_pid]->o_RI,PHY_vars_UE_g[UE_id][CC_id]->ulsch[0]->o_RI,2);
eNB->ulsch[UE_index]->harq_processes[harq_pid]->cqi_crc_status = 1;
return(1);
} else {
LOG_W(PHY,"[eNB %d] ulsch_decoding_emul abstraction failed for UE %d\n",eNB->Mod_id,UE_index);
eNB->ulsch[UE_index]->harq_processes[harq_pid]->cqi_crc_status = 0;
// retransmission
return(1+eNB->ulsch[UE_index]->max_turbo_iterations);
}
}
#endif