Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
oai1B
openairinterface5G
Commits
8f6746be
Commit
8f6746be
authored
Dec 12, 2016
by
Cedric Roux
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'develop1B_integration_w49' into 'develop'
Develop1 b integration w49 See merge request
!56
parents
bf5bf8ba
17aefade
Changes
104
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
104 changed files
with
3314 additions
and
786 deletions
+3314
-786
.gitlab-ci.yml
.gitlab-ci.yml
+2
-1
cmake_targets/CMakeLists.txt
cmake_targets/CMakeLists.txt
+1
-0
openair1/PHY/CODING/lte_segmentation.c
openair1/PHY/CODING/lte_segmentation.c
+1
-1
openair1/PHY/INIT/defs.h
openair1/PHY/INIT/defs.h
+12
-0
openair1/PHY/INIT/lte_init.c
openair1/PHY/INIT/lte_init.c
+80
-1
openair1/PHY/LTE_ESTIMATION/lte_est_freq_offset.c
openair1/PHY/LTE_ESTIMATION/lte_est_freq_offset.c
+8
-7
openair1/PHY/LTE_TRANSPORT/dci.c
openair1/PHY/LTE_TRANSPORT/dci.c
+5
-5
openair1/PHY/LTE_TRANSPORT/dci_tools.c
openair1/PHY/LTE_TRANSPORT/dci_tools.c
+116
-14
openair1/PHY/LTE_TRANSPORT/defs.h
openair1/PHY/LTE_TRANSPORT/defs.h
+9
-0
openair1/PHY/LTE_TRANSPORT/dlsch_decoding.c
openair1/PHY/LTE_TRANSPORT/dlsch_decoding.c
+20
-3
openair1/PHY/LTE_TRANSPORT/group_hopping.c
openair1/PHY/LTE_TRANSPORT/group_hopping.c
+6
-0
openair1/PHY/LTE_TRANSPORT/initial_sync.c
openair1/PHY/LTE_TRANSPORT/initial_sync.c
+7
-0
openair1/PHY/LTE_TRANSPORT/phich.c
openair1/PHY/LTE_TRANSPORT/phich.c
+48
-8
openair1/PHY/LTE_TRANSPORT/proto.h
openair1/PHY/LTE_TRANSPORT/proto.h
+17
-0
openair1/PHY/LTE_TRANSPORT/pucch.c
openair1/PHY/LTE_TRANSPORT/pucch.c
+66
-48
openair1/PHY/LTE_TRANSPORT/srs_modulation.c
openair1/PHY/LTE_TRANSPORT/srs_modulation.c
+29
-41
openair1/PHY/LTE_TRANSPORT/uci_tools.c
openair1/PHY/LTE_TRANSPORT/uci_tools.c
+2
-0
openair1/PHY/LTE_TRANSPORT/ulsch_coding.c
openair1/PHY/LTE_TRANSPORT/ulsch_coding.c
+17
-0
openair1/PHY/LTE_TRANSPORT/ulsch_modulation.c
openair1/PHY/LTE_TRANSPORT/ulsch_modulation.c
+3
-2
openair1/PHY/defs.h
openair1/PHY/defs.h
+1
-1
openair1/PHY/extern.h
openair1/PHY/extern.h
+12
-0
openair1/PHY/impl_defs_lte.h
openair1/PHY/impl_defs_lte.h
+20
-5
openair1/SCHED/Makefile.inc
openair1/SCHED/Makefile.inc
+1
-0
openair1/SCHED/defs.h
openair1/SCHED/defs.h
+13
-0
openair1/SCHED/phy_procedures_lte_ue.c
openair1/SCHED/phy_procedures_lte_ue.c
+633
-26
openair1/SCHED/pucch_pc.c
openair1/SCHED/pucch_pc.c
+2
-2
openair1/SCHED/srs_pc.c
openair1/SCHED/srs_pc.c
+100
-0
openair2/COMMON/as_message.h
openair2/COMMON/as_message.h
+8
-0
openair2/COMMON/rrc_messages_def.h
openair2/COMMON/rrc_messages_def.h
+1
-0
openair2/COMMON/rrc_messages_types.h
openair2/COMMON/rrc_messages_types.h
+2
-0
openair2/LAYER2/MAC/config.c
openair2/LAYER2/MAC/config.c
+38
-5
openair2/LAYER2/MAC/defs.h
openair2/LAYER2/MAC/defs.h
+39
-9
openair2/LAYER2/MAC/eNB_scheduler_RA.c
openair2/LAYER2/MAC/eNB_scheduler_RA.c
+1
-1
openair2/LAYER2/MAC/eNB_scheduler_bch.c
openair2/LAYER2/MAC/eNB_scheduler_bch.c
+1
-0
openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
+1
-1
openair2/LAYER2/MAC/eNB_scheduler_mch.c
openair2/LAYER2/MAC/eNB_scheduler_mch.c
+1
-1
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
+1
-1
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
+1
-1
openair2/LAYER2/MAC/extern.h
openair2/LAYER2/MAC/extern.h
+2
-0
openair2/LAYER2/MAC/main.c
openair2/LAYER2/MAC/main.c
+1
-0
openair2/LAYER2/MAC/proto.h
openair2/LAYER2/MAC/proto.h
+4
-20
openair2/LAYER2/MAC/ra_procedures.c
openair2/LAYER2/MAC/ra_procedures.c
+9
-4
openair2/LAYER2/MAC/rar_tools.c
openair2/LAYER2/MAC/rar_tools.c
+1
-1
openair2/LAYER2/MAC/ue_procedures.c
openair2/LAYER2/MAC/ue_procedures.c
+831
-369
openair2/LAYER2/MAC/vars.h
openair2/LAYER2/MAC/vars.h
+9
-0
openair2/LAYER2/PDCP_v10.1.0/pdcp.c
openair2/LAYER2/PDCP_v10.1.0/pdcp.c
+46
-4
openair2/LAYER2/PDCP_v10.1.0/pdcp.h
openair2/LAYER2/PDCP_v10.1.0/pdcp.h
+16
-1
openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c
openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c
+19
-4
openair2/LAYER2/RLC/AM_v9.3.0/rlc_am.c
openair2/LAYER2/RLC/AM_v9.3.0/rlc_am.c
+9
-5
openair2/LAYER2/RLC/AM_v9.3.0/rlc_am.h
openair2/LAYER2/RLC/AM_v9.3.0/rlc_am.h
+8
-4
openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_init.c
openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_init.c
+3
-2
openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_init.h
openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_init.h
+3
-1
openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_receiver.c
openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_receiver.c
+2
-1
openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_test.c
openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_test.c
+2
-2
openair2/LAYER2/RLC/TM_v9.3.0/rlc_tm_init.c
openair2/LAYER2/RLC/TM_v9.3.0/rlc_tm_init.c
+7
-4
openair2/LAYER2/RLC/TM_v9.3.0/rlc_tm_init.h
openair2/LAYER2/RLC/TM_v9.3.0/rlc_tm_init.h
+7
-3
openair2/LAYER2/RLC/UM_v9.3.0/rlc_um.c
openair2/LAYER2/RLC/UM_v9.3.0/rlc_um.c
+16
-2
openair2/LAYER2/RLC/UM_v9.3.0/rlc_um.h
openair2/LAYER2/RLC/UM_v9.3.0/rlc_um.h
+1
-1
openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_control_primitives.c
openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_control_primitives.c
+11
-7
openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_control_primitives.h
openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_control_primitives.h
+10
-4
openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_test.c
openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_test.c
+14
-14
openair2/LAYER2/RLC/rlc.h
openair2/LAYER2/RLC/rlc.h
+12
-1
openair2/LAYER2/RLC/rlc_mac.c
openair2/LAYER2/RLC/rlc_mac.c
+5
-26
openair2/LAYER2/RLC/rlc_rrc.c
openair2/LAYER2/RLC/rlc_rrc.c
+71
-28
openair2/NETWORK_DRIVER/UE_IP/common.c
openair2/NETWORK_DRIVER/UE_IP/common.c
+3
-2
openair2/PHY_INTERFACE/defs.h
openair2/PHY_INTERFACE/defs.h
+3
-0
openair2/RRC/LITE/MESSAGES/asn1_msg.c
openair2/RRC/LITE/MESSAGES/asn1_msg.c
+38
-15
openair2/RRC/LITE/MESSAGES/asn1_msg.h
openair2/RRC/LITE/MESSAGES/asn1_msg.h
+2
-0
openair2/RRC/LITE/defs.h
openair2/RRC/LITE/defs.h
+2
-1
openair2/RRC/LITE/rrc_UE.c
openair2/RRC/LITE/rrc_UE.c
+332
-19
openair2/RRC/LITE/rrc_eNB.c
openair2/RRC/LITE/rrc_eNB.c
+6
-5
openair2/UTIL/LOG/vcd_signal_dumper.c
openair2/UTIL/LOG/vcd_signal_dumper.c
+4
-0
openair2/UTIL/LOG/vcd_signal_dumper.h
openair2/UTIL/LOG/vcd_signal_dumper.h
+4
-0
openair2/UTIL/OPT/opt.h
openair2/UTIL/OPT/opt.h
+1
-1
openair2/UTIL/OPT/probe.c
openair2/UTIL/OPT/probe.c
+7
-7
openair3/NAS/COMMON/API/NETWORK/l2_message.h
openair3/NAS/COMMON/API/NETWORK/l2_message.h
+8
-0
openair3/NAS/COMMON/EMM/MSG/AttachAccept.c
openair3/NAS/COMMON/EMM/MSG/AttachAccept.c
+2
-1
openair3/NAS/COMMON/EMM/MSG/AuthenticationRequest.c
openair3/NAS/COMMON/EMM/MSG/AuthenticationRequest.c
+1
-1
openair3/NAS/COMMON/EMM/MSG/SecurityModeCommand.c
openair3/NAS/COMMON/EMM/MSG/SecurityModeCommand.c
+2
-0
openair3/NAS/COMMON/EMM/MSG/SecurityModeComplete.c
openair3/NAS/COMMON/EMM/MSG/SecurityModeComplete.c
+4
-1
openair3/NAS/COMMON/IES/EmergencyNumberList.c
openair3/NAS/COMMON/IES/EmergencyNumberList.c
+42
-12
openair3/NAS/COMMON/IES/EmergencyNumberList.h
openair3/NAS/COMMON/IES/EmergencyNumberList.h
+8
-2
openair3/NAS/COMMON/IES/MobileIdentity.c
openair3/NAS/COMMON/IES/MobileIdentity.c
+10
-5
openair3/NAS/COMMON/IES/MobileIdentity.h
openair3/NAS/COMMON/IES/MobileIdentity.h
+56
-1
openair3/NAS/TOOLS/usim_data.c
openair3/NAS/TOOLS/usim_data.c
+1
-0
openair3/NAS/UE/API/USIM/usim_api.c
openair3/NAS/UE/API/USIM/usim_api.c
+192
-1
openair3/NAS/UE/API/USIM/usim_api.h
openair3/NAS/UE/API/USIM/usim_api.h
+5
-0
openair3/NAS/UE/EMM/Authentication.c
openair3/NAS/UE/EMM/Authentication.c
+10
-1
openair3/NAS/UE/EMM/SAP/EmmDeregisteredNormalService.c
openair3/NAS/UE/EMM/SAP/EmmDeregisteredNormalService.c
+9
-1
openair3/NAS/UE/EMM/SAP/emm_asDef.h
openair3/NAS/UE/EMM/SAP/emm_asDef.h
+1
-0
openair3/NAS/UE/EMM/SAP/emm_recv.c
openair3/NAS/UE/EMM/SAP/emm_recv.c
+12
-3
openair3/NAS/UE/EMM/SAP/emm_send.c
openair3/NAS/UE/EMM/SAP/emm_send.c
+28
-0
openair3/NAS/UE/EMM/SecurityModeControl.c
openair3/NAS/UE/EMM/SecurityModeControl.c
+9
-2
openair3/NAS/UE/EMM/emm_main.c
openair3/NAS/UE/EMM/emm_main.c
+4
-1
openair3/NAS/UE/EMM/emm_proc.h
openair3/NAS/UE/EMM/emm_proc.h
+1
-1
openair3/NAS/UE/UEprocess.c
openair3/NAS/UE/UEprocess.c
+2
-0
openair3/NAS/UE/nas_itti_messaging.c
openair3/NAS/UE/nas_itti_messaging.c
+33
-0
openair3/NAS/UE/nas_itti_messaging.h
openair3/NAS/UE/nas_itti_messaging.h
+3
-0
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.generic.oaisim.local_no_mme.conf
...E-EPC/CONF/enb.band7.tm1.generic.oaisim.local_no_mme.conf
+5
-5
targets/RT/USER/lte-softmodem.c
targets/RT/USER/lte-softmodem.c
+7
-0
targets/RT/USER/lte-ue.c
targets/RT/USER/lte-ue.c
+7
-2
targets/SIMU/USER/oaisim.c
targets/SIMU/USER/oaisim.c
+2
-0
targets/SIMU/USER/oaisim_functions.c
targets/SIMU/USER/oaisim_functions.c
+2
-2
targets/TEST/PDCP/with_rlc/test_pdcp_rlc.c
targets/TEST/PDCP/with_rlc/test_pdcp_rlc.c
+2
-2
No files found.
.gitlab-ci.yml
View file @
8f6746be
...
...
@@ -34,4 +34,5 @@ job1:
-
sshpass -p "$OAI_PASS" rsync -az -e "ssh -o StrictHostKeyChecking=no " --rsync-path="mkdir -p $NFS_TEST_RESULTS_DIR && rsync" $OPENAIR_DIR/cmake_targets/autotests/log $OAI_USER@localhost:$NFS_TEST_RESULTS_DIR
-
sshpass -p "$OAI_PASS" rsync -az -e "ssh -o StrictHostKeyChecking=no " --rsync-path="mkdir -p $EXTERNAL_SHARE_DIR && rsync" $OPENAIR_DIR/cmake_targets/autotests/log $OAI_USER@localhost:$EXTERNAL_SHARE_DIR
-
cat $OPENAIR_DIR/cmake_targets/autotests/log/results_autotests.xml
when
:
manual
only
:
-
triggers
cmake_targets/CMakeLists.txt
View file @
8f6746be
...
...
@@ -1020,6 +1020,7 @@ set(SCHED_SRC
${
OPENAIR1_DIR
}
/SCHED/phy_mac_stub.c
${
OPENAIR1_DIR
}
/SCHED/pucch_pc.c
${
OPENAIR1_DIR
}
/SCHED/pusch_pc.c
${
OPENAIR1_DIR
}
/SCHED/srs_pc.c
)
add_library
(
SCHED_LIB
${
SCHED_SRC
}
)
...
...
openair1/PHY/CODING/lte_segmentation.c
View file @
8f6746be
...
...
@@ -60,7 +60,7 @@ int lte_segmentation(unsigned char *input_buffer,
}
if
((
*
C
)
>
MAX_NUM_DLSCH_SEGMENTS
)
{
msg
(
"lte_segmentation.c: too many segments %d
\n
"
,
*
C
);
LOG_E
(
PHY
,
"lte_segmentation.c: too many segments %d
, B %d, L %d, Bprime %d
\n
"
,
*
C
,
B
,
L
,
Bprime
);
return
(
-
1
);
}
...
...
openair1/PHY/INIT/defs.h
View file @
8f6746be
...
...
@@ -206,7 +206,19 @@ void phy_config_dedicated_ue(module_id_t Mod_id,
uint8_t
CH_index
,
struct
PhysicalConfigDedicated
*
physicalConfigDedicated
);
/*!
\fn void phy_config_harq_ue(module_id_t Mod_id,uint8_t CC_id,uint8_t CH_index,
uint16_t max_harq_tx)
\brief Configure UE UL max harq Tx.
\details Invoked upon reception of RRCConnectionSetup or RRCConnectionReconfiguration from eNB.
@param Mod_id Instance ID for eNB
@param CC_id Component Carrier index
@param CH_index Index of eNB for this configuration
@param max_harq_tx max harq tx information
*/
void
phy_config_harq_ue
(
module_id_t
Mod_id
,
int
CC_id
,
uint8_t
CH_index
,
uint16_t
max_harq_tx
);
/**
\brief Configure UE MBSFN common parameters.
\details Invoked upon reception of SIB13 from eNB.
...
...
openair1/PHY/INIT/lte_init.c
View file @
8f6746be
...
...
@@ -482,6 +482,26 @@ void phy_config_dedicated_eNB_step2(PHY_VARS_eNB *eNB)
}
if
(
physicalConfigDedicated
->
soundingRS_UL_ConfigDedicated
)
{
if
(
physicalConfigDedicated
->
soundingRS_UL_ConfigDedicated
->
present
==
SoundingRS_UL_ConfigDedicated_PR_setup
)
{
eNB
->
soundingrs_ul_config_dedicated
[
UE_id
].
duration
=
physicalConfigDedicated
->
soundingRS_UL_ConfigDedicated
->
choice
.
setup
.
duration
;
eNB
->
soundingrs_ul_config_dedicated
[
UE_id
].
cyclicShift
=
physicalConfigDedicated
->
soundingRS_UL_ConfigDedicated
->
choice
.
setup
.
cyclicShift
;
eNB
->
soundingrs_ul_config_dedicated
[
UE_id
].
freqDomainPosition
=
physicalConfigDedicated
->
soundingRS_UL_ConfigDedicated
->
choice
.
setup
.
freqDomainPosition
;
eNB
->
soundingrs_ul_config_dedicated
[
UE_id
].
srs_Bandwidth
=
physicalConfigDedicated
->
soundingRS_UL_ConfigDedicated
->
choice
.
setup
.
srs_Bandwidth
;
eNB
->
soundingrs_ul_config_dedicated
[
UE_id
].
srs_ConfigIndex
=
physicalConfigDedicated
->
soundingRS_UL_ConfigDedicated
->
choice
.
setup
.
srs_ConfigIndex
;
eNB
->
soundingrs_ul_config_dedicated
[
UE_id
].
srs_HoppingBandwidth
=
physicalConfigDedicated
->
soundingRS_UL_ConfigDedicated
->
choice
.
setup
.
srs_HoppingBandwidth
;
eNB
->
soundingrs_ul_config_dedicated
[
UE_id
].
transmissionComb
=
physicalConfigDedicated
->
soundingRS_UL_ConfigDedicated
->
choice
.
setup
.
transmissionComb
;
LOG_D
(
PHY
,
"soundingrs_ul_config_dedicated.srs_ConfigIndex %d
\n
"
,
eNB
->
soundingrs_ul_config_dedicated
[
UE_id
].
srs_ConfigIndex
);
}
LOG_D
(
PHY
,
"------------------------------------------------------------
\n
"
);
}
eNB
->
physicalConfigDedicated
[
UE_id
]
=
NULL
;
}
}
...
...
@@ -726,6 +746,14 @@ void phy_config_dedicated_scell_eNB(uint8_t Mod_id,
}
#endif
void
phy_config_harq_ue
(
uint8_t
Mod_id
,
int
CC_id
,
uint8_t
eNB_id
,
uint16_t
max_harq_tx
)
{
PHY_VARS_UE
*
phy_vars_ue
=
PHY_vars_UE_g
[
Mod_id
][
CC_id
];
phy_vars_ue
->
ulsch
[
eNB_id
]
->
Mlimit
=
max_harq_tx
;
}
void
phy_config_dedicated_ue
(
uint8_t
Mod_id
,
int
CC_id
,
uint8_t
eNB_id
,
struct
PhysicalConfigDedicated
*
physicalConfigDedicated
)
{
...
...
@@ -742,7 +770,8 @@ void phy_config_dedicated_ue(uint8_t Mod_id,int CC_id,uint8_t eNB_id,
phy_vars_ue
->
dlsch_received_last
[
eNB_id
]
=
0
;
phy_vars_ue
->
dlsch_fer
[
eNB_id
]
=
0
;
phy_vars_ue
->
cqi_report_config
[
eNB_id
].
CQI_ReportPeriodic
.
ri_ConfigIndex
=
-
1
;
phy_vars_ue
->
cqi_report_config
[
eNB_id
].
CQI_ReportPeriodic
.
cqi_PMI_ConfigIndex
=
-
1
;
if
(
physicalConfigDedicated
)
{
LOG_D
(
PHY
,
"[UE %d] Received physicalConfigDedicated from eNB %d
\n
"
,
Mod_id
,
eNB_id
);
...
...
@@ -852,6 +881,53 @@ void phy_config_dedicated_ue(uint8_t Mod_id,int CC_id,uint8_t eNB_id,
}
if
(
physicalConfigDedicated
->
soundingRS_UL_ConfigDedicated
)
{
phy_vars_ue
->
soundingrs_ul_config_dedicated
[
eNB_id
].
srsConfigDedicatedSetup
=
0
;
if
(
physicalConfigDedicated
->
soundingRS_UL_ConfigDedicated
->
present
==
SoundingRS_UL_ConfigDedicated_PR_setup
)
{
phy_vars_ue
->
soundingrs_ul_config_dedicated
[
eNB_id
].
srsConfigDedicatedSetup
=
1
;
phy_vars_ue
->
soundingrs_ul_config_dedicated
[
eNB_id
].
duration
=
physicalConfigDedicated
->
soundingRS_UL_ConfigDedicated
->
choice
.
setup
.
duration
;
phy_vars_ue
->
soundingrs_ul_config_dedicated
[
eNB_id
].
cyclicShift
=
physicalConfigDedicated
->
soundingRS_UL_ConfigDedicated
->
choice
.
setup
.
cyclicShift
;
phy_vars_ue
->
soundingrs_ul_config_dedicated
[
eNB_id
].
freqDomainPosition
=
physicalConfigDedicated
->
soundingRS_UL_ConfigDedicated
->
choice
.
setup
.
freqDomainPosition
;
phy_vars_ue
->
soundingrs_ul_config_dedicated
[
eNB_id
].
srs_Bandwidth
=
physicalConfigDedicated
->
soundingRS_UL_ConfigDedicated
->
choice
.
setup
.
srs_Bandwidth
;
phy_vars_ue
->
soundingrs_ul_config_dedicated
[
eNB_id
].
srs_ConfigIndex
=
physicalConfigDedicated
->
soundingRS_UL_ConfigDedicated
->
choice
.
setup
.
srs_ConfigIndex
;
phy_vars_ue
->
soundingrs_ul_config_dedicated
[
eNB_id
].
srs_HoppingBandwidth
=
physicalConfigDedicated
->
soundingRS_UL_ConfigDedicated
->
choice
.
setup
.
srs_HoppingBandwidth
;
phy_vars_ue
->
soundingrs_ul_config_dedicated
[
eNB_id
].
transmissionComb
=
physicalConfigDedicated
->
soundingRS_UL_ConfigDedicated
->
choice
.
setup
.
transmissionComb
;
LOG_D
(
PHY
,
"soundingrs_ul_config_dedicated.srs_ConfigIndex %d
\n
"
,
phy_vars_ue
->
soundingrs_ul_config_dedicated
[
eNB_id
].
srs_ConfigIndex
);
}
LOG_D
(
PHY
,
"------------------------------------------------------------
\n
"
);
}
if
(
physicalConfigDedicated
->
cqi_ReportConfig
)
{
if
(
physicalConfigDedicated
->
cqi_ReportConfig
->
cqi_ReportModeAperiodic
)
{
// configure PUSCH CQI reporting
phy_vars_ue
->
cqi_report_config
[
eNB_id
].
cqi_ReportModeAperiodic
=
*
physicalConfigDedicated
->
cqi_ReportConfig
->
cqi_ReportModeAperiodic
;
if
((
phy_vars_ue
->
cqi_report_config
[
eNB_id
].
cqi_ReportModeAperiodic
!=
rm12
)
&&
(
phy_vars_ue
->
cqi_report_config
[
eNB_id
].
cqi_ReportModeAperiodic
!=
rm30
)
&&
(
phy_vars_ue
->
cqi_report_config
[
eNB_id
].
cqi_ReportModeAperiodic
!=
rm31
))
LOG_E
(
PHY
,
"Unsupported Aperiodic CQI Feedback Mode : %d
\n
"
,
phy_vars_ue
->
cqi_report_config
[
eNB_id
].
cqi_ReportModeAperiodic
);
}
if
(
physicalConfigDedicated
->
cqi_ReportConfig
->
cqi_ReportPeriodic
)
{
if
(
physicalConfigDedicated
->
cqi_ReportConfig
->
cqi_ReportPeriodic
->
present
==
CQI_ReportPeriodic_PR_setup
)
{
// configure PUCCH CQI reporting
phy_vars_ue
->
cqi_report_config
[
eNB_id
].
CQI_ReportPeriodic
.
cqi_PUCCH_ResourceIndex
=
physicalConfigDedicated
->
cqi_ReportConfig
->
cqi_ReportPeriodic
->
choice
.
setup
.
cqi_PUCCH_ResourceIndex
;
phy_vars_ue
->
cqi_report_config
[
eNB_id
].
CQI_ReportPeriodic
.
cqi_PMI_ConfigIndex
=
physicalConfigDedicated
->
cqi_ReportConfig
->
cqi_ReportPeriodic
->
choice
.
setup
.
cqi_pmi_ConfigIndex
;
if
(
physicalConfigDedicated
->
cqi_ReportConfig
->
cqi_ReportPeriodic
->
choice
.
setup
.
ri_ConfigIndex
)
phy_vars_ue
->
cqi_report_config
[
eNB_id
].
CQI_ReportPeriodic
.
ri_ConfigIndex
=
*
physicalConfigDedicated
->
cqi_ReportConfig
->
cqi_ReportPeriodic
->
choice
.
setup
.
ri_ConfigIndex
;
}
else
if
(
physicalConfigDedicated
->
cqi_ReportConfig
->
cqi_ReportPeriodic
->
present
==
CQI_ReportPeriodic_PR_release
)
{
// handle release
phy_vars_ue
->
cqi_report_config
[
eNB_id
].
CQI_ReportPeriodic
.
ri_ConfigIndex
=
-
1
;
phy_vars_ue
->
cqi_report_config
[
eNB_id
].
CQI_ReportPeriodic
.
cqi_PMI_ConfigIndex
=
-
1
;
}
}
}
#ifdef CBA
if
(
physicalConfigDedicated
->
pusch_CBAConfigDedicated_vlola
)
{
...
...
@@ -868,6 +944,9 @@ void phy_config_dedicated_ue(uint8_t Mod_id,int CC_id,uint8_t eNB_id,
return
;
}
// fill cqi parameters for periodic CQI reporting
get_cqipmiri_params
(
phy_vars_ue
,
eNB_id
);
}
void
phy_config_cba_rnti
(
module_id_t
Mod_id
,
int
CC_id
,
eNB_flag_t
eNB_flag
,
uint8_t
index
,
rnti_t
cba_rnti
,
uint8_t
cba_group_id
,
uint8_t
num_active_cba_groups
)
...
...
openair1/PHY/LTE_ESTIMATION/lte_est_freq_offset.c
View file @
8f6746be
...
...
@@ -102,7 +102,7 @@ int lte_est_freq_offset(int **dl_ch_estimates,
{
int
ch_offset
,
omega
,
dl_ch_shift
;
struct
complex16
*
omega_cpx
;
struct
complex16
omega_cpx
;
double
phase_offset
;
int
freq_offset_est
;
unsigned
char
aa
;
...
...
@@ -142,9 +142,8 @@ int lte_est_freq_offset(int **dl_ch_estimates,
// printf("Computing freq_offset\n");
omega
=
dot_product
(
dl_ch
,
dl_ch_prev
,(
frame_parms
->
N_RB_DL
/
2
-
1
)
*
12
,
dl_ch_shift
);
//omega = dot_product(dl_ch,dl_ch_prev,frame_parms->ofdm_symbol_size,15);
omega_cpx
=
(
struct
complex16
*
)
&
omega
;
// printf("omega (%d,%d)\n",omega_cpx->r,omega_cpx->i);
omega_cpx
.
r
=
((
struct
complex16
*
)
&
omega
)
->
r
;
omega_cpx
.
i
=
((
struct
complex16
*
)
&
omega
)
->
i
;
dl_ch
=
(
int16_t
*
)
&
dl_ch_estimates
[
aa
][(((
frame_parms
->
N_RB_DL
/
2
)
+
1
)
*
12
)
+
ch_offset
];
...
...
@@ -155,10 +154,12 @@ int lte_est_freq_offset(int **dl_ch_estimates,
// calculate omega = angle(conj(dl_ch)*dl_ch_prev))
omega
=
dot_product
(
dl_ch
,
dl_ch_prev
,((
frame_parms
->
N_RB_DL
/
2
)
-
1
)
*
12
,
dl_ch_shift
);
omega_cpx
->
r
+=
((
struct
complex16
*
)
&
omega
)
->
r
;
omega_cpx
->
i
+=
((
struct
complex16
*
)
&
omega
)
->
i
;
omega_cpx
.
r
+=
((
struct
complex16
*
)
&
omega
)
->
r
;
omega_cpx
.
i
+=
((
struct
complex16
*
)
&
omega
)
->
i
;
// phase_offset += atan2((double)omega_cpx->i,(double)omega_cpx->r);
phase_offset
+=
atan2
((
double
)
omega_cpx
->
i
,(
double
)
omega_cpx
->
r
);
phase_offset
+=
atan2
((
double
)
omega_cpx
.
i
,(
double
)
omega_cpx
.
r
);
// LOG_I(PHY,"omega (%d,%d) -> %f\n",omega_cpx->r,omega_cpx->i,phase_offset);
}
...
...
openair1/PHY/LTE_TRANSPORT/dci.c
View file @
8f6746be
...
...
@@ -2857,7 +2857,7 @@ void dci_decoding_procedure0(LTE_UE_PDCCH **pdcch_vars,
}
}
LOG_D
(
PHY
,
"DCI decoding CRNTI [format
_c
: %d, nCCE[subframe: %d]: %d ]
\n
"
,
format_c
,
subframe
,
pdcch_vars
[
eNB_id
]
->
nCCE
[
subframe
]);
LOG_D
(
PHY
,
"DCI decoding CRNTI [format: %d, nCCE[subframe: %d]: %d ]
, AggregationLevel %d
\n
"
,
format_c
,
subframe
,
pdcch_vars
[
eNB_id
]
->
nCCE
[
subframe
]
,
L2
);
// memcpy(&dci_alloc[*dci_cnt].dci_pdu[0],dci_decoded_output,sizeof_bytes);
...
...
@@ -3248,7 +3248,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
SI_RNTI
,
ra_rnti
,
P_RNTI
,
3
,
0
,
format1A
,
format1A
,
format1A
,
...
...
@@ -3277,7 +3277,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
SI_RNTI
,
ra_rnti
,
P_RNTI
,
2
,
1
,
format1A
,
format1A
,
format1A
,
...
...
@@ -3310,7 +3310,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
SI_RNTI
,
ra_rnti
,
P_RNTI
,
1
,
2
,
format1A
,
format1A
,
format1A
,
...
...
@@ -3339,7 +3339,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
SI_RNTI
,
ra_rnti
,
P_RNTI
,
0
,
3
,
format1A
,
format1A
,
format1A
,
...
...
openair1/PHY/LTE_TRANSPORT/dci_tools.c
View file @
8f6746be
...
...
@@ -36,7 +36,10 @@
#include "PHY/vars.h"
#endif
#include "assertions.h"
#include "LAYER2/MAC/extern.h"
#include "LAYER2/MAC/defs.h"
//#define DEBUG_DCI
uint32_t
localRIV2alloc_LUT6
[
32
];
...
...
@@ -1260,6 +1263,11 @@ int generate_eNB_dlsch_params_from_dci(int frame,
dlsch0_harq
->
TBS
=
TBStable
[
get_I_TBS
(
dlsch0_harq
->
mcs
)][
NPRB
-
1
];
}
else
{
LOG_E
(
PHY
,
"DL Received HarqReTx round=%d mcs=%d rballoc=%d rv=%d
\n
"
,
dlsch0_harq
->
round
,
mcs
,
rballoc
,
rv
);
}
dlsch
[
0
]
->
current_harq_pid
=
harq_pid
;
...
...
@@ -3917,10 +3925,10 @@ int generate_ue_dlsch_params_from_dci(int frame,
dlsch0_harq
=
dlsch
[
0
]
->
harq_processes
[
harq_pid
];
}
else
{
if
(
harq_pid
>
1
)
{
LOG_E
(
PHY
,
"Format 1A: harq_pid > 1
\n
"
);
return
(
-
1
);
}
//
if (harq_pid>1) {
//
LOG_E(PHY,"Format 1A: harq_pid > 1\n");
//
return(-1);
//
}
dlsch0_harq
=
dlsch
[
0
]
->
harq_processes
[
harq_pid
];
NPRB
=
RIV2nb_rb_LUT25
[
rballoc
];
...
...
@@ -4143,6 +4151,20 @@ int generate_ue_dlsch_params_from_dci(int frame,
dlsch0_harq
->
DCINdi
=
ndi
;
// this a retransmission
if
(
dlsch0_harq
->
round
)
{
// compare old TBS to new TBS
if
(
dlsch0_harq
->
TBS
!=
TBStable
[
get_I_TBS
(
mcs
)][
NPRB
-
1
])
{
// this is an eNB issue
// retransmisison but old and new TBS are different !!!
// work around, consider it as a new transmission
LOG_E
(
PHY
,
"Format1A Retransmission but TBS are different: consider it as new transmission !!!
\n
"
);
dlsch0_harq
->
round
=
0
;
}
}
dlsch0_harq
->
mcs
=
mcs
;
if
((
rnti
==
si_rnti
)
||
(
rnti
==
p_rnti
)
||
(
rnti
==
ra_rnti
))
{
dlsch0_harq
->
TBS
=
TBStable
[
mcs
][
NPRB
-
1
];
...
...
@@ -4434,6 +4456,7 @@ int generate_ue_dlsch_params_from_dci(int frame,
dlsch0_harq
->
status
=
ACTIVE
;
dlsch0_harq
->
DCINdi
=
ndi
;
dlsch
[
0
]
->
harq_ack
[
subframe
].
send_harq_status
=
1
;
if
(
dlsch0_harq
->
first_tx
==
1
)
{
LOG_D
(
PHY
,
"[PDSCH %x/%d] Format 1 DCI First TX: Clearing flag
\n
"
);
dlsch0_harq
->
first_tx
=
0
;
...
...
@@ -4452,6 +4475,20 @@ int generate_ue_dlsch_params_from_dci(int frame,
dlsch0_harq
->
mcs
=
mcs
;
// this a retransmission
if
(
dlsch0_harq
->
round
)
{
// compare old TBS to new TBS
if
(
dlsch0_harq
->
TBS
!=
TBStable
[
get_I_TBS
(
mcs
)][
NPRB
-
1
])
{
// this is an eNB issue
// retransmisison but old and new TBS are different !!!
// work around, consider it as a new transmission
LOG_E
(
PHY
,
"Format1 Retransmission but TBS are different: consider it as new transmission !!!
\n
"
);
dlsch0_harq
->
round
=
0
;
}
}
dlsch0_harq
->
TBS
=
TBStable
[
get_I_TBS
(
mcs
)][
NPRB
-
1
];
if
(
mcs
<=
28
)
dlsch0_harq
->
Qm
=
get_Qm
(
mcs
);
...
...
@@ -5519,7 +5556,8 @@ int generate_ue_dlsch_params_from_dci(int frame,
#ifdef DEBUG_DCI
if
(
dlsch
[
0
])
{
if
(
dlsch
[
0
]
&&
(
dlsch
[
0
]
->
rnti
!=
0xffff
))
{
printf
(
"dci_format:%d Abssubframe: %d.%d
\n
"
,
dci_format
,
frame
,
subframe
);
printf
(
"PDSCH dlsch0 UE: rnti %x
\n
"
,
dlsch
[
0
]
->
rnti
);
printf
(
"PDSCH dlsch0 UE: NBRB %d
\n
"
,
dlsch0_harq
->
nb_rb
);
printf
(
"PDSCH dlsch0 UE: rballoc %x
\n
"
,
dlsch0_harq
->
rb_alloc_even
[
0
]);
...
...
@@ -6194,13 +6232,22 @@ int generate_ue_ulsch_params_from_dci(void *dci_pdu,
uint8_t
harq_pid
;
uint8_t
transmission_mode
=
ue
->
transmission_mode
[
eNB_id
];
ANFBmode_t
AckNackFBMode
=
ue
->
pucch_config_dedicated
[
eNB_id
].
tdd_AckNackFeedbackMode
;
ANFBmode_t
AckNackFBMode
;
LTE_UE_ULSCH_t
*
ulsch
=
ue
->
ulsch
[
eNB_id
];
// LTE_UE_DLSCH_t **dlsch = ue->dlsch[0];
PHY_MEASUREMENTS
*
meas
=
&
ue
->
measurements
;
LTE_DL_FRAME_PARMS
*
frame_parms
=
&
ue
->
frame_parms
;
// uint32_t current_dlsch_cqi = ue->current_dlsch_cqi[eNB_id];
if
(
frame_parms
->
frame_type
==
TDD
)
{
AckNackFBMode
=
ue
->
pucch_config_dedicated
[
eNB_id
].
tdd_AckNackFeedbackMode
;
}
else
{
AckNackFBMode
=
1
;
// 1: multiplexing for FDD
}
uint32_t
cqi_req
;
uint32_t
dai
=
0
;
uint32_t
cshift
;
...
...
@@ -6351,8 +6398,10 @@ int generate_ue_ulsch_params_from_dci(void *dci_pdu,
if
(
rballoc
>
RIV_max
)
{
LOG_E
(
PHY
,
"frame %d, subframe %d, rnti %x, format %d: FATAL ERROR: generate_ue_ulsch_params_from_dci, rb_alloc > RIV_max
\n
"
,
proc
->
frame_rx
,
subframe
,
rnti
,
dci_format
);
LOG_E
(
PHY
,
"frame %d, subframe %d, rnti %x, format %d: FATAL ERROR: generate_ue_ulsch_params_from_dci, rb_alloc[%d] > RIV_max[%d]
\n
"
,
proc
->
frame_rx
,
subframe
,
rnti
,
dci_format
,
rballoc
,
RIV_max
);
LOG_E
(
PHY
,
"Wrong DCI0 detection, do not transmit PUSCH for HARQID: %d
\n
"
,
harq_pid
);
ulsch
->
harq_processes
[
harq_pid
]
->
subframe_scheduling_flag
=
0
;
return
(
-
1
);
}
...
...
@@ -6361,7 +6410,11 @@ int generate_ue_ulsch_params_from_dci(void *dci_pdu,
if
((
rnti
>=
cba_rnti
)
&&
(
rnti
<
p_rnti
))
ulsch
->
harq_processes
[
harq_pid
]
->
subframe_cba_scheduling_flag
=
1
;
//+=1 this indicates the number of dci / cba group: not supported in the data struct
else
ulsch
->
harq_processes
[
harq_pid
]
->
subframe_scheduling_flag
=
1
;
{
ulsch
->
harq_processes
[
harq_pid
]
->
subframe_scheduling_flag
=
1
;
//LOG_I(PHY,"[HARQ-UL harqId: %d] DCI0 ==> subframe_scheduling_flag = %d round: %d\n", harq_pid, ulsch->harq_processes[harq_pid]->subframe_scheduling_flag, ulsch->harq_processes[harq_pid]->round);
}
ulsch
->
harq_processes
[
harq_pid
]
->
TPC
=
TPC
;
...
...
@@ -6391,7 +6444,42 @@ int generate_ue_ulsch_params_from_dci(void *dci_pdu,
ulsch
->
harq_processes
[
harq_pid
]
->
round
=
0
;
}
else
{
// ulsch->harq_processes[harq_pid]->Ndi = 0;
// ulsch->harq_processes[harq_pid]->round++; // This is done in phich RX
//ulsch->harq_processes[harq_pid]->round++; // This is done in phich RX
//#ifdef DEBUG_PHICH
//LOG_I(PHY,"[UE %d][PUSCH %d] Frame %d subframe %d Adaptative Retrans, NDI not toggled => Nack. maxHARQ_Tx %d \n",
// ue->Mod_id,harq_pid,
// proc->frame_rx,
// subframe,
// ulsch->Mlimit);
//#endif
/*
if (ulsch->harq_processes[harq_pid]->round > 0) // NACK detected on phich
{
// ulsch->harq_processes[harq_pid]->round++; already done on phich_rx
// ulsch->harq_processes[harq_pid] = ulsch->harq_processes[8];
// LOG_I(PHY," Adaptative retransmission - copy temporary harq Process to current harq process. [harqId %d round %d] \n",harq_pid, ulsch->harq_processes[8]->round);
if (ulsch->harq_processes[harq_pid]->round >= ulsch->Mlimit) //UE_mac_inst[eNB_id].scheduling_info.maxHARQ_Tx)
{
ulsch->harq_processes[harq_pid]->subframe_scheduling_flag = 0;
ulsch->harq_processes[harq_pid]->round = 0;
ulsch->harq_processes[harq_pid]->status = IDLE;
//LOG_I(PHY," PUSCH MAX Retransmission acheived ==> flush harq buff (%d) \n",harq_pid);
//LOG_I(PHY," [HARQ-UL harqId: %d] Adaptative retransmission NACK MAX RETRANS(%d) ==> subframe_scheduling_flag = %d round: %d\n", harq_pid, UE_mac_inst[eNB_id].scheduling_info.maxHARQ_Tx, ulsch->harq_processes[harq_pid]->subframe_scheduling_flag, ulsch->harq_processes[harq_pid]->round);
}
else
{
// ulsch->harq_processes[harq_pid]->subframe_scheduling_flag = 1;
uint8_t rv_table[4] = {0, 2, 3, 1};
ulsch->harq_processes[harq_pid]->rvidx = rv_table[ulsch->harq_processes[harq_pid]->round&3];
ulsch->O_RI = 0;
ulsch->O = 0;
ulsch->uci_format = HLC_subband_cqi_nopmi;
//LOG_I(PHY," [HARQ-UL harqId: %d] Adaptative retransmission NACK ==> subframe_scheduling_flag = %d round: %d\n", harq_pid, ulsch->harq_processes[harq_pid]->subframe_scheduling_flag,ulsch->harq_processes[harq_pid]->round);
}
}
*/
}
}
...
...
@@ -6441,7 +6529,16 @@ int generate_ue_ulsch_params_from_dci(void *dci_pdu,
if
(
cqi_req
==
1
)
{
ulsch
->
O_RI
=
1
;
//we only support 2 antenna ports, so this is always 1 according to 3GPP 36.213 Table
if
(
(
AntennaInfoDedicated__transmissionMode_tm3
==
transmission_mode
)
||
(
AntennaInfoDedicated__transmissionMode_tm4
==
transmission_mode
)
)
{
ulsch
->
O_RI
=
1
;
}
else
{
ulsch
->
O_RI
=
0
;
}
//ulsch->O_RI = 0; //we only support 2 antenna ports, so this is always 1 according to 3GPP 36.213 Table
switch
(
transmission_mode
)
{
// The aperiodic CQI reporting mode is fixed for every transmission mode instead of being configured by higher layer signaling
...
...
@@ -7001,15 +7098,19 @@ int generate_ue_ulsch_params_from_dci(void *dci_pdu,
// ulsch->n_DMRS2 = ((DCI0_5MHz_TDD_1_6_t *)dci_pdu)->cshift;
#ifdef DEBUG_DCI
#ifdef DEBUG_DCI
printf
(
"Format 0 DCI : ulsch (ue): AbsSubframe %d.%d
\n
"
,
proc
->
frame_rx
,
subframe
);
printf
(
"Format 0 DCI : ulsch (ue): NBRB %d
\n
"
,
ulsch
->
harq_processes
[
harq_pid
]
->
nb_rb
);
printf
(
"Format 0 DCI :ulsch (ue): first_rb %d
\n
"
,
ulsch
->
harq_processes
[
harq_pid
]
->
first_rb
);
printf
(
"Format 0 DCI :ulsch (ue): rballoc %d
\n
"
,
rballoc
);
printf
(
"Format 0 DCI :ulsch (ue): harq_pid %d
\n
"
,
harq_pid
);
printf
(
"Format 0 DCI :ulsch (ue): first_tx %d
\n
"
,
ulsch
->
harq_processes
[
harq_pid
]
->
first_tx
);
printf
(
"Format 0 DCI :ulsch (ue): DCINdi %d
\n
"
,
ulsch
->
harq_processes
[
harq_pid
]
->
DCINdi
);
printf
(
"Format 0 DCI :ulsch (ue): round %d
\n
"
,
ulsch
->
harq_processes
[
harq_pid
]
->
round
);
printf
(
"Format 0 DCI :ulsch (ue): TBS %d
\n
"
,
ulsch
->
harq_processes
[
harq_pid
]
->
TBS
);
printf
(
"Format 0 DCI :ulsch (ue): mcs %d
\n
"
,
ulsch
->
harq_processes
[
harq_pid
]
->
mcs
);
printf
(
"Format 0 DCI :ulsch (ue): O %d
\n
"
,
ulsch
->
O
);
printf
(
"Format 0 DCI :ulsch (ue): cqiReq %d
\n
"
,
cqi_req
);
if
(
frame_parms
->
frame_type
==
TDD
)
printf
(
"Format 0 DCI :ulsch (ue): O_ACK/DAI %d/%d
\n
"
,
ulsch
->
harq_processes
[
harq_pid
]
->
O_ACK
,
dai
);
else
...
...
@@ -7017,6 +7118,7 @@ int generate_ue_ulsch_params_from_dci(void *dci_pdu,
printf
(
"Format 0 DCI :ulsch (ue): Nsymb_pusch %d
\n
"
,
ulsch
->
Nsymb_pusch
);
printf
(
"Format 0 DCI :ulsch (ue): cshift %d
\n
"
,
ulsch
->
harq_processes
[
harq_pid
]
->
n_DMRS2
);
printf
(
"Format 0 DCI :ulsch (ue): phich status %d
\n
"
,
ulsch
->
harq_processes
[
harq_pid
]
->
status
);
#else
UNUSED_VARIABLE
(
dai
);
#endif
...
...
openair1/PHY/LTE_TRANSPORT/defs.h
View file @
8f6746be
...
...
@@ -227,6 +227,11 @@ typedef struct {
uint8_t
control_only
;
/// Flag to indicate that this is a calibration ULSCH (i.e. no MAC SDU and filled with TDD calibration information)
// int calibration_flag;
/// Number of soft channel bits
uint32_t
G
;
// decode phich
uint8_t
decode_phich
;
}
LTE_UL_UE_HARQ_t
;
typedef
struct
{
...
...
@@ -333,12 +338,16 @@ typedef struct {
int16_t
Po_PUSCH
;
/// PHR - current power headroom (based on last PUSCH transmission)
int16_t
PHR
;
/// Po_SRS - target output power for SRS
int16_t
Po_SRS
;
/// num active cba group
uint8_t
num_active_cba_groups
;
/// num dci found for cba
uint8_t
num_cba_dci
[
10
];
/// allocated CBA RNTI
uint16_t
cba_rnti
[
4
];
//NUM_MAX_CBA_GROUP];
/// UL max-harq-retransmission
uint8_t
Mlimit
;
}
LTE_UE_ULSCH_t
;
typedef
struct
{
...
...
openair1/PHY/LTE_TRANSPORT/dlsch_decoding.c
View file @
8f6746be
...
...
@@ -249,7 +249,12 @@ uint32_t dlsch_decoding(PHY_VARS_UE *phy_vars_ue,
tc
=
phy_threegpplte_turbo_decoder16
;
}
else
tc
=
phy_threegpplte_turbo_decoder8
;
{
AssertFatal
(
harq_process
->
TBS
>=
256
,
"Mismatch flag nbRB=%d TBS=%d mcs=%d Qm=%d RIV=%d round=%d
\n
"
,
harq_process
->
nb_rb
,
harq_process
->
TBS
,
harq_process
->
mcs
,
harq_process
->
Qm
,
harq_process
->
rvidx
,
harq_process
->
round
);
tc
=
phy_threegpplte_turbo_decoder8
;
}
// nb_rb = dlsch->nb_rb;
...
...
@@ -448,6 +453,11 @@ uint32_t dlsch_decoding(PHY_VARS_UE *phy_vars_ue,
#if 1
if
(
err_flag
==
0
)
{
if
(
llr8_flag
)
{
AssertFatal
(
Kr
>=
256
,
"turbo algo issue Kr=%d cb_cnt=%d C=%d nbRB=%d TBSInput=%d TBSHarq=%d TBSplus24=%d mcs=%d Qm=%d RIV=%d round=%d
\n
"
,
Kr
,
r
,
harq_process
->
C
,
harq_process
->
nb_rb
,
A
,
harq_process
->
TBS
,
harq_process
->
B
,
harq_process
->
mcs
,
harq_process
->
Qm
,
harq_process
->
rvidx
,
harq_process
->
round
);
}
start_meas
(
dlsch_turbo_decoding_stats
);
ret
=
tc
(
&
harq_process
->
d
[
r
][
96
],
...
...
@@ -609,7 +619,11 @@ uint32_t dlsch_decoding(PHY_VARS_UE *phy_vars_ue,
harq_process
->
errors
[
harq_process
->
round
]
++
;
harq_process
->
round
++
;
// LOG_D(PHY,"[UE %d] DLSCH: Setting NACK for subframe %d (pid %d, round %d)\n",phy_vars_ue->Mod_id,subframe,harq_pid,harq_process->round);
if
(
is_crnti
)
{
LOG_D
(
PHY
,
"[UE %d] DLSCH: Setting NACK for subframe %d (pid %d, round %d, TBS %d)
\n
"
,
phy_vars_ue
->
Mod_id
,
subframe
,
harq_pid
,
harq_process
->
round
,
harq_process
->
TBS
);
}
// printf("Rate: [UE %d] DLSCH: Setting NACK for subframe %d (pid %d, round %d)\n",phy_vars_ue->Mod_id,subframe,harq_pid,harq_process->round);
if
(
harq_process
->
round
>=
dlsch
->
Mdlharq
)
{
harq_process
->
status
=
SCH_IDLE
;
...
...
@@ -622,7 +636,10 @@ uint32_t dlsch_decoding(PHY_VARS_UE *phy_vars_ue,
dlsch
->
harq_ack
[
subframe
].
ack
=
1
;
dlsch
->
harq_ack
[
subframe
].
harq_id
=
harq_pid
;
dlsch
->
harq_ack
[
subframe
].
send_harq_status
=
1
;
LOG_D
(
PHY
,
"[UE %d] DLSCH: Setting ACK for subframe %d (pid %d, round %d)
\n
"
,
phy_vars_ue
->
Mod_id
,
subframe
,
harq_pid
,
harq_process
->
round
);
if
(
is_crnti
)
{
LOG_D
(
PHY
,
"[UE %d] DLSCH: Setting ACK for subframe %d (pid %d, round %d, TBS %d)
\n
"
,
phy_vars_ue
->
Mod_id
,
subframe
,
harq_pid
,
harq_process
->
round
,
harq_process
->
TBS
);
}
}
...
...
openair1/PHY/LTE_TRANSPORT/group_hopping.c
View file @
8f6746be
...
...
@@ -42,6 +42,8 @@ void generate_grouphop(LTE_DL_FRAME_PARMS *frame_parms)
// This is from Section 5.5.1.3
uint32_t
fss_pusch
=
frame_parms
->
Nid_cell
+
frame_parms
->
pusch_config_common
.
ul_ReferenceSignalsPUSCH
.
groupAssignmentPUSCH
;
uint32_t
fss_pucch
=
frame_parms
->
Nid_cell
;
x2
=
frame_parms
->
Nid_cell
/
30
;