Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
OpenXG
OpenXG-RAN
Commits
3dc1963a
Commit
3dc1963a
authored
Mar 08, 2017
by
hbilel
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[OAI-UE] MIMO fixes + disabling MIB/SIB decoding on connected mode
parent
42b834d6
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
114 additions
and
70 deletions
+114
-70
openair1/PHY/INIT/lte_init.c
openair1/PHY/INIT/lte_init.c
+9
-0
openair1/PHY/LTE_TRANSPORT/dci.c
openair1/PHY/LTE_TRANSPORT/dci.c
+24
-24
openair1/PHY/LTE_TRANSPORT/dci_tools.c
openair1/PHY/LTE_TRANSPORT/dci_tools.c
+49
-26
openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
+7
-1
openair1/PHY/LTE_TRANSPORT/dlsch_llr_computation.c
openair1/PHY/LTE_TRANSPORT/dlsch_llr_computation.c
+5
-3
openair1/PHY/defs.h
openair1/PHY/defs.h
+2
-0
openair1/SCHED/phy_procedures_lte_ue.c
openair1/SCHED/phy_procedures_lte_ue.c
+18
-16
No files found.
openair1/PHY/INIT/lte_init.c
View file @
3dc1963a
...
@@ -948,6 +948,11 @@ void phy_config_dedicated_ue(uint8_t Mod_id,int CC_id,uint8_t eNB_id,
...
@@ -948,6 +948,11 @@ void phy_config_dedicated_ue(uint8_t Mod_id,int CC_id,uint8_t eNB_id,
// fill cqi parameters for periodic CQI reporting
// fill cqi parameters for periodic CQI reporting
get_cqipmiri_params
(
phy_vars_ue
,
eNB_id
);
get_cqipmiri_params
(
phy_vars_ue
,
eNB_id
);
// disable MIB SIB decoding once we are on connected mode
LOG_I
(
PHY
,
"Disabling SIB MIB decoding
\n
"
);
phy_vars_ue
->
decode_SIB
=
0
;
phy_vars_ue
->
decode_MIB
=
0
;
}
}
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
)
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
)
...
@@ -1306,6 +1311,10 @@ int phy_init_lte_ue(PHY_VARS_UE *ue,
...
@@ -1306,6 +1311,10 @@ int phy_init_lte_ue(PHY_VARS_UE *ue,
ue
->
high_speed_flag
=
1
;
ue
->
high_speed_flag
=
1
;
ue
->
ch_est_alpha
=
24576
;
ue
->
ch_est_alpha
=
24576
;
// enable MIB/SIB decoding by default
ue
->
decode_MIB
=
1
;
ue
->
decode_SIB
=
1
;
init_prach_tables
(
839
);
init_prach_tables
(
839
);
...
...
openair1/PHY/LTE_TRANSPORT/dci.c
View file @
3dc1963a
...
@@ -3149,7 +3149,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
...
@@ -3149,7 +3149,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
eNB_id
,
eNB_id
,
frame_parms
,
frame_parms
,
mi
,
mi
,
SI_RNTI
,
((
ue
->
decode_SIB
==
1
)
?
SI_RNTI
:
0
)
,
ra_rnti
,
ra_rnti
,
P_RNTI
,
P_RNTI
,
2
,
2
,
...
@@ -3177,7 +3177,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
...
@@ -3177,7 +3177,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
eNB_id
,
eNB_id
,
frame_parms
,
frame_parms
,
mi
,
mi
,
SI_RNTI
,
((
ue
->
decode_SIB
==
1
)
?
SI_RNTI
:
0
)
,
ra_rnti
,
ra_rnti
,
P_RNTI
,
P_RNTI
,
2
,
2
,
...
@@ -3209,7 +3209,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
...
@@ -3209,7 +3209,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
eNB_id
,
eNB_id
,
frame_parms
,
frame_parms
,
mi
,
mi
,
SI_RNTI
,
((
ue
->
decode_SIB
==
1
)
?
SI_RNTI
:
0
)
,
P_RNTI
,
P_RNTI
,
ra_rnti
,
ra_rnti
,
3
,
3
,
...
@@ -3237,7 +3237,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
...
@@ -3237,7 +3237,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
eNB_id
,
eNB_id
,
frame_parms
,
frame_parms
,
mi
,
mi
,
SI_RNTI
,
((
ue
->
decode_SIB
==
1
)
?
SI_RNTI
:
0
)
,
ra_rnti
,
ra_rnti
,
P_RNTI
,
P_RNTI
,
3
,
3
,
...
@@ -3271,7 +3271,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
...
@@ -3271,7 +3271,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
eNB_id
,
eNB_id
,
frame_parms
,
frame_parms
,
mi
,
mi
,
SI_RNTI
,
((
ue
->
decode_SIB
==
1
)
?
SI_RNTI
:
0
)
,
ra_rnti
,
ra_rnti
,
P_RNTI
,
P_RNTI
,
0
,
0
,
...
@@ -3300,7 +3300,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
...
@@ -3300,7 +3300,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
eNB_id
,
eNB_id
,
frame_parms
,
frame_parms
,
mi
,
mi
,
SI_RNTI
,
((
ue
->
decode_SIB
==
1
)
?
SI_RNTI
:
0
)
,
ra_rnti
,
ra_rnti
,
P_RNTI
,
P_RNTI
,
1
,
1
,
...
@@ -3333,7 +3333,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
...
@@ -3333,7 +3333,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
eNB_id
,
eNB_id
,
frame_parms
,
frame_parms
,
mi
,
mi
,
SI_RNTI
,
((
ue
->
decode_SIB
==
1
)
?
SI_RNTI
:
0
)
,
ra_rnti
,
ra_rnti
,
P_RNTI
,
P_RNTI
,
2
,
2
,
...
@@ -3362,7 +3362,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
...
@@ -3362,7 +3362,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
eNB_id
,
eNB_id
,
frame_parms
,
frame_parms
,
mi
,
mi
,
SI_RNTI
,
((
ue
->
decode_SIB
==
1
)
?
SI_RNTI
:
0
)
,
ra_rnti
,
ra_rnti
,
P_RNTI
,
P_RNTI
,
3
,
3
,
...
@@ -3395,7 +3395,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
...
@@ -3395,7 +3395,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
eNB_id
,
eNB_id
,
frame_parms
,
frame_parms
,
mi
,
mi
,
SI_RNTI
,
((
ue
->
decode_SIB
==
1
)
?
SI_RNTI
:
0
)
,
ra_rnti
,
ra_rnti
,
P_RNTI
,
P_RNTI
,
0
,
0
,
...
@@ -3426,7 +3426,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
...
@@ -3426,7 +3426,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
eNB_id
,
eNB_id
,
frame_parms
,
frame_parms
,
mi
,
mi
,
SI_RNTI
,
((
ue
->
decode_SIB
==
1
)
?
SI_RNTI
:
0
)
,
ra_rnti
,
ra_rnti
,
P_RNTI
,
P_RNTI
,
1
,
1
,
...
@@ -3458,7 +3458,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
...
@@ -3458,7 +3458,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
eNB_id
,
eNB_id
,
frame_parms
,
frame_parms
,
mi
,
mi
,
SI_RNTI
,
((
ue
->
decode_SIB
==
1
)
?
SI_RNTI
:
0
)
,
ra_rnti
,
ra_rnti
,
P_RNTI
,
P_RNTI
,
2
,
2
,
...
@@ -3490,7 +3490,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
...
@@ -3490,7 +3490,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
eNB_id
,
eNB_id
,
frame_parms
,
frame_parms
,
mi
,
mi
,
SI_RNTI
,
((
ue
->
decode_SIB
==
1
)
?
SI_RNTI
:
0
)
,
ra_rnti
,
ra_rnti
,
P_RNTI
,
P_RNTI
,
3
,
3
,
...
@@ -3527,7 +3527,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
...
@@ -3527,7 +3527,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
eNB_id
,
eNB_id
,
frame_parms
,
frame_parms
,
mi
,
mi
,
SI_RNTI
,
((
ue
->
decode_SIB
==
1
)
?
SI_RNTI
:
0
)
,
ra_rnti
,
ra_rnti
,
P_RNTI
,
P_RNTI
,
0
,
0
,
...
@@ -3562,7 +3562,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
...
@@ -3562,7 +3562,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
eNB_id
,
eNB_id
,
frame_parms
,
frame_parms
,
mi
,
mi
,
SI_RNTI
,
((
ue
->
decode_SIB
==
1
)
?
SI_RNTI
:
0
)
,
ra_rnti
,
ra_rnti
,
P_RNTI
,
P_RNTI
,
1
,
1
,
...
@@ -3596,7 +3596,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
...
@@ -3596,7 +3596,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
eNB_id
,
eNB_id
,
frame_parms
,
frame_parms
,
mi
,
mi
,
SI_RNTI
,
((
ue
->
decode_SIB
==
1
)
?
SI_RNTI
:
0
)
,
ra_rnti
,
ra_rnti
,
P_RNTI
,
P_RNTI
,
2
,
2
,
...
@@ -3631,7 +3631,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
...
@@ -3631,7 +3631,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
eNB_id
,
eNB_id
,
frame_parms
,
frame_parms
,
mi
,
mi
,
SI_RNTI
,
((
ue
->
decode_SIB
==
1
)
?
SI_RNTI
:
0
)
,
ra_rnti
,
ra_rnti
,
P_RNTI
,
P_RNTI
,
3
,
3
,
...
@@ -3665,7 +3665,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
...
@@ -3665,7 +3665,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
eNB_id
,
eNB_id
,
frame_parms
,
frame_parms
,
mi
,
mi
,
SI_RNTI
,
((
ue
->
decode_SIB
==
1
)
?
SI_RNTI
:
0
)
,
ra_rnti
,
ra_rnti
,
P_RNTI
,
P_RNTI
,
0
,
0
,
...
@@ -3697,7 +3697,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
...
@@ -3697,7 +3697,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
eNB_id
,
eNB_id
,
frame_parms
,
frame_parms
,
mi
,
mi
,
SI_RNTI
,
((
ue
->
decode_SIB
==
1
)
?
SI_RNTI
:
0
)
,
ra_rnti
,
ra_rnti
,
P_RNTI
,
P_RNTI
,
1
,
1
,
...
@@ -3729,7 +3729,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
...
@@ -3729,7 +3729,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
eNB_id
,
eNB_id
,
frame_parms
,
frame_parms
,
mi
,
mi
,
SI_RNTI
,
((
ue
->
decode_SIB
==
1
)
?
SI_RNTI
:
0
)
,
ra_rnti
,
ra_rnti
,
P_RNTI
,
P_RNTI
,
2
,
2
,
...
@@ -3762,7 +3762,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
...
@@ -3762,7 +3762,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
eNB_id
,
eNB_id
,
frame_parms
,
frame_parms
,
mi
,
mi
,
SI_RNTI
,
((
ue
->
decode_SIB
==
1
)
?
SI_RNTI
:
0
)
,
ra_rnti
,
ra_rnti
,
P_RNTI
,
P_RNTI
,
3
,
3
,
...
@@ -3792,7 +3792,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
...
@@ -3792,7 +3792,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
eNB_id
,
eNB_id
,
frame_parms
,
frame_parms
,
mi
,
mi
,
SI_RNTI
,
((
ue
->
decode_SIB
==
1
)
?
SI_RNTI
:
0
)
,
ra_rnti
,
ra_rnti
,
P_RNTI
,
P_RNTI
,
0
,
0
,
...
@@ -3825,7 +3825,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
...
@@ -3825,7 +3825,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
eNB_id
,
eNB_id
,
frame_parms
,
frame_parms
,
mi
,
mi
,
SI_RNTI
,
((
ue
->
decode_SIB
==
1
)
?
SI_RNTI
:
0
)
,
ra_rnti
,
ra_rnti
,
P_RNTI
,
P_RNTI
,
1
,
1
,
...
@@ -3857,7 +3857,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
...
@@ -3857,7 +3857,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
eNB_id
,
eNB_id
,
frame_parms
,
frame_parms
,
mi
,
mi
,
SI_RNTI
,
((
ue
->
decode_SIB
==
1
)
?
SI_RNTI
:
0
)
,
ra_rnti
,
ra_rnti
,
P_RNTI
,
P_RNTI
,
2
,
2
,
...
@@ -3891,7 +3891,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
...
@@ -3891,7 +3891,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
eNB_id
,
eNB_id
,
frame_parms
,
frame_parms
,
mi
,
mi
,
SI_RNTI
,
((
ue
->
decode_SIB
==
1
)
?
SI_RNTI
:
0
)
,
ra_rnti
,
ra_rnti
,
P_RNTI
,
P_RNTI
,
3
,
3
,
...
...
openair1/PHY/LTE_TRANSPORT/dci_tools.c
View file @
3dc1963a
...
@@ -4763,6 +4763,8 @@ int check_dci_format1_1a_coherency(DCI_format_t dci_format,
...
@@ -4763,6 +4763,8 @@ int check_dci_format1_1a_coherency(DCI_format_t dci_format,
uint16_t
si_rnti
,
uint16_t
si_rnti
,
uint16_t
ra_rnti
,
uint16_t
ra_rnti
,
uint16_t
p_rnti
,
uint16_t
p_rnti
,
uint32_t
frame
,
uint8_t
subframe
,
DCI_INFO_EXTRACTED_t
*
pdci_info_extarcted
,
DCI_INFO_EXTRACTED_t
*
pdci_info_extarcted
,
LTE_DL_UE_HARQ_t
*
pdlsch0_harq
)
LTE_DL_UE_HARQ_t
*
pdlsch0_harq
)
{
{
...
@@ -4779,17 +4781,17 @@ int check_dci_format1_1a_coherency(DCI_format_t dci_format,
...
@@ -4779,17 +4781,17 @@ int check_dci_format1_1a_coherency(DCI_format_t dci_format,
uint8_t
NPRB
=
0
;
uint8_t
NPRB
=
0
;
long
long
int
RIV_max
=
0
;
long
long
int
RIV_max
=
0
;
#ifdef DEBUG_DCI
//
#ifdef DEBUG_DCI
LOG_I
(
PHY
,
"[DCI-FORMAT-1-1A]
dci_format %d
\n
"
,
dci_format
);
LOG_I
(
PHY
,
"[DCI-FORMAT-1-1A]
AbsSubframe %d.%d dci_format %d
\n
"
,
frame
,
subframe
,
dci_format
);
LOG_I
(
PHY
,
"[DCI-FORMAT-1-1A] rnti %x
\n
"
,
rnti
);
LOG_I
(
PHY
,
"[DCI-FORMAT-1-1A] rnti %x
\n
"
,
rnti
);
LOG_I
(
PHY
,
"[DCI-FORMAT-1-1A] harq_pid %d
\n
"
,
harq_pid
);
LOG_I
(
PHY
,
"[DCI-FORMAT-1-1A] harq_pid %d
\n
"
,
harq_pid
);
LOG_I
(
PHY
,
"[DCI-FORMAT-1-1A] rah %d
\n
"
,
rah
);
//
LOG_I(PHY,"[DCI-FORMAT-1-1A] rah %d\n", rah);
LOG_I
(
PHY
,
"[DCI-FORMAT-1-1A] rballoc %x
\n
"
,
rballoc
);
//
LOG_I(PHY,"[DCI-FORMAT-1-1A] rballoc %x\n", rballoc);
LOG_I
(
PHY
,
"[DCI-FORMAT-1-1A] mcs1 %d
\n
"
,
mcs1
);
//
LOG_I(PHY,"[DCI-FORMAT-1-1A] mcs1 %d\n", mcs1);
LOG_I
(
PHY
,
"[DCI-FORMAT-1-1A] rv1 %d
\n
"
,
rv1
);
//
LOG_I(PHY,"[DCI-FORMAT-1-1A] rv1 %d\n", rv1);
LOG_I
(
PHY
,
"[DCI-FORMAT-1-1A] ndi1 %d
\n
"
,
ndi1
);
//
LOG_I(PHY,"[DCI-FORMAT-1-1A] ndi1 %d\n", ndi1);
LOG_I
(
PHY
,
"[DCI-FORMAT-1-1A] TPC %d
\n
"
,
TPC
);
//
LOG_I(PHY,"[DCI-FORMAT-1-1A] TPC %d\n", TPC);
#endif
//
#endif
// I- check dci content minimum coherency
// I- check dci content minimum coherency
if
(
((
rnti
==
si_rnti
)
||
(
rnti
==
p_rnti
)
||
(
rnti
==
ra_rnti
))
&&
harq_pid
>
0
)
if
(
((
rnti
==
si_rnti
)
||
(
rnti
==
p_rnti
)
||
(
rnti
==
ra_rnti
))
&&
harq_pid
>
0
)
...
@@ -5002,10 +5004,10 @@ int check_dci_format2_2a_coherency(DCI_format_t dci_format,
...
@@ -5002,10 +5004,10 @@ int check_dci_format2_2a_coherency(DCI_format_t dci_format,
LOG_I
(
PHY
,
"extarcted dci - mcs2 %d
\n
"
,
mcs2
);
LOG_I
(
PHY
,
"extarcted dci - mcs2 %d
\n
"
,
mcs2
);
LOG_I
(
PHY
,
"extarcted dci - rv1 %d
\n
"
,
rv1
);
LOG_I
(
PHY
,
"extarcted dci - rv1 %d
\n
"
,
rv1
);
LOG_I
(
PHY
,
"extarcted dci - rv2 %d
\n
"
,
rv2
);
LOG_I
(
PHY
,
"extarcted dci - rv2 %d
\n
"
,
rv2
);
LOG_I
(
PHY
,
"extarcted dci - ndi1 %d
\n
"
,
ndi1
);
//
LOG_I(PHY, "extarcted dci - ndi1 %d \n", ndi1);
LOG_I
(
PHY
,
"extarcted dci - ndi2 %d
\n
"
,
ndi2
);
//
LOG_I(PHY, "extarcted dci - ndi2 %d \n", ndi2);
LOG_I
(
PHY
,
"extarcted dci - rballoc %x
\n
"
,
rballoc
);
LOG_I
(
PHY
,
"extarcted dci - rballoc %x
\n
"
,
rballoc
);
LOG_I
(
PHY
,
"extarcted dci - harq pi
f
%d
\n
"
,
harq_pid
);
LOG_I
(
PHY
,
"extarcted dci - harq pi
d
%d
\n
"
,
harq_pid
);
LOG_I
(
PHY
,
"extarcted dci - round0 %d
\n
"
,
pdlsch0_harq
->
round
);
LOG_I
(
PHY
,
"extarcted dci - round0 %d
\n
"
,
pdlsch0_harq
->
round
);
LOG_I
(
PHY
,
"extarcted dci - round1 %d
\n
"
,
pdlsch1_harq
->
round
);
LOG_I
(
PHY
,
"extarcted dci - round1 %d
\n
"
,
pdlsch1_harq
->
round
);
#endif
#endif
...
@@ -5818,7 +5820,19 @@ void prepare_dl_decoding_format2_2A(DCI_format_t dci_format,
...
@@ -5818,7 +5820,19 @@ void prepare_dl_decoding_format2_2A(DCI_format_t dci_format,
}
}
}
}
// if Imcs in [29..31] TBS is assumed to be as determined from DCI transported in the latest
// PDCCH for the same trasport block using Imcs in [0 .. 28]
if
(
dlsch0_harq
->
mcs
<=
28
)
{
dlsch0_harq
->
TBS
=
TBStable
[
get_I_TBS
(
dlsch0_harq
->
mcs
)][
dlsch0_harq
->
nb_rb
-
1
];
dlsch0_harq
->
TBS
=
TBStable
[
get_I_TBS
(
dlsch0_harq
->
mcs
)][
dlsch0_harq
->
nb_rb
-
1
];
LOG_D
(
PHY
,
"[UE] DLSCH: New TBS CW0 subframe %d (pid %d, round %d) TBS %d
\n
"
,
subframe
,
harq_pid
,
dlsch0_harq
->
round
,
dlsch0_harq
->
TBS
);
}
else
{
LOG_D
(
PHY
,
"[UE] DLSCH: Keep the same TBS CW0 subframe %d (pid %d, round %d) TBS %d
\n
"
,
subframe
,
harq_pid
,
dlsch0_harq
->
round
,
dlsch0_harq
->
TBS
);
}
//if(dlsch0_harq->Nl == 2)
//if(dlsch0_harq->Nl == 2)
//dlsch0_harq->TBS = TBStable[get_I_TBS(dlsch0_harq->mcs)][(dlsch0_harq->nb_rb<<1)-1];
//dlsch0_harq->TBS = TBStable[get_I_TBS(dlsch0_harq->mcs)][(dlsch0_harq->nb_rb<<1)-1];
if
(
mcs1
<=
28
)
if
(
mcs1
<=
28
)
...
@@ -5849,10 +5863,19 @@ void prepare_dl_decoding_format2_2A(DCI_format_t dci_format,
...
@@ -5849,10 +5863,19 @@ void prepare_dl_decoding_format2_2A(DCI_format_t dci_format,
#endif
#endif
}
}
// if Imcs in [29..31] TBS is assumed to be as determined from DCI transported in the latest
// PDCCH for the same trasport block using Imcs in [0 .. 28]
if
(
dlsch1_harq
->
mcs
<=
28
)
{
dlsch1_harq
->
TBS
=
TBStable
[
get_I_TBS
(
dlsch1_harq
->
mcs
)][
dlsch1_harq
->
nb_rb
-
1
];
dlsch1_harq
->
TBS
=
TBStable
[
get_I_TBS
(
dlsch1_harq
->
mcs
)][
dlsch1_harq
->
nb_rb
-
1
];
//if(dlsch0_harq->Nl == 2)
LOG_D
(
PHY
,
"[UE] DLSCH: New TBS CW1 subframe %d (pid %d, round %d) TBS %d
\n
"
,
//dlsch0_harq->TBS = TBStable[get_I_TBS(dlsch0_harq->mcs)][(dlsch0_harq->nb_rb<<1)-1];
subframe
,
harq_pid
,
dlsch1_harq
->
round
,
dlsch1_harq
->
TBS
);
}
else
{
LOG_D
(
PHY
,
"[UE] DLSCH: Keep the same TBS CW1 subframe %d (pid %d, round %d) TBS %d
\n
"
,
subframe
,
harq_pid
,
dlsch1_harq
->
round
,
dlsch1_harq
->
TBS
);
}
if
(
mcs2
<=
28
)
if
(
mcs2
<=
28
)
dlsch1_harq
->
Qm
=
get_Qm
(
mcs2
);
dlsch1_harq
->
Qm
=
get_Qm
(
mcs2
);
else
if
(
mcs1
<=
31
)
else
if
(
mcs1
<=
31
)
...
@@ -5953,7 +5976,7 @@ int generate_ue_dlsch_params_from_dci(int frame,
...
@@ -5953,7 +5976,7 @@ int generate_ue_dlsch_params_from_dci(int frame,
tc_rnti
,
tc_rnti
,
si_rnti
,
si_rnti
,
ra_rnti
,
ra_rnti
,
p_rnti
,
p_rnti
,
frame
,
subframe
,
&
dci_info_extarcted
,
&
dci_info_extarcted
,
dlsch0_harq
);
dlsch0_harq
);
if
(
status
==
0
)
if
(
status
==
0
)
...
@@ -6053,7 +6076,7 @@ int generate_ue_dlsch_params_from_dci(int frame,
...
@@ -6053,7 +6076,7 @@ int generate_ue_dlsch_params_from_dci(int frame,
tc_rnti
,
tc_rnti
,
si_rnti
,
si_rnti
,
ra_rnti
,
ra_rnti
,
p_rnti
,
p_rnti
,
frame
,
subframe
,
&
dci_info_extarcted
,
&
dci_info_extarcted
,
dlsch0_harq
);
dlsch0_harq
);
if
(
status
==
0
)
if
(
status
==
0
)
...
...
openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
View file @
3dc1963a
...
@@ -364,12 +364,18 @@ int rx_pdsch(PHY_VARS_UE *ue,
...
@@ -364,12 +364,18 @@ int rx_pdsch(PHY_VARS_UE *ue,
symbol
,
symbol
,
nb_rb
);
nb_rb
);
if
((
dlsch0_harq
->
mimo_mode
<
DUALSTREAM_UNIFORM_PRECODING1
)
&&
(
rx_type
==
rx_IC_single_stream
)
&&
(
eNB_id_i
==
ue
->
n_connected_eNB
)
&&
(
dlsch0_harq
->
dl_power_off
==
0
))
// TM5 two-user
if
((
dlsch0_harq
->
mimo_mode
<
DUALSTREAM_UNIFORM_PRECODING1
)
&&
(
rx_type
==
rx_IC_single_stream
)
&&
(
eNB_id_i
==
ue
->
n_connected_eNB
)
&&
(
dlsch0_harq
->
dl_power_off
==
0
)
)
// TM5 two-user
{
dlsch_scale_channel
(
pdsch_vars
[
eNB_id_i
]
->
dl_ch_estimates_ext
,
dlsch_scale_channel
(
pdsch_vars
[
eNB_id_i
]
->
dl_ch_estimates_ext
,
frame_parms
,
frame_parms
,
dlsch
,
dlsch
,
symbol
,
symbol
,
nb_rb
);
nb_rb
);
}
if
(
first_symbol_flag
==
1
)
{
if
(
first_symbol_flag
==
1
)
{
if
(
beamforming_mode
==
0
){
if
(
beamforming_mode
==
0
){
...
...
openair1/PHY/LTE_TRANSPORT/dlsch_llr_computation.c
View file @
3dc1963a
...
@@ -8846,7 +8846,8 @@ int dlsch_64qam_64qam_llr(LTE_DL_FRAME_PARMS *frame_parms,
...
@@ -8846,7 +8846,8 @@ int dlsch_64qam_64qam_llr(LTE_DL_FRAME_PARMS *frame_parms,
memcpy
(
ch_mag_256i
,
ch_mag
,
len
*
4
);
memcpy
(
ch_mag_256i
,
ch_mag
,
len
*
4
);
memcpy
(
ch_mag_i_256i
,
ch_mag_i
,
len
*
4
);
memcpy
(
ch_mag_i_256i
,
ch_mag_i
,
len
*
4
);
memcpy
(
rho_256i
,
rho
,
len
*
4
);
memcpy
(
rho_256i
,
rho
,
len
*
4
);
/*
qam64_qam64_avx2
((
int32_t
*
)
rxF_256i
,
qam64_qam64_avx2
((
int32_t
*
)
rxF_256i
,
(
int32_t
*
)
rxF_i_256i
,
(
int32_t
*
)
rxF_i_256i
,
(
int32_t
*
)
ch_mag_256i
,
(
int32_t
*
)
ch_mag_256i
,
...
@@ -8854,7 +8855,8 @@ int dlsch_64qam_64qam_llr(LTE_DL_FRAME_PARMS *frame_parms,
...
@@ -8854,7 +8855,8 @@ int dlsch_64qam_64qam_llr(LTE_DL_FRAME_PARMS *frame_parms,
(
int16_t
*
)
llr16
,
(
int16_t
*
)
llr16
,
(
int32_t
*
)
rho_256i
,
(
int32_t
*
)
rho_256i
,
len
);
len
);
*/
/*
qam64_qam16_avx2((short *)rxF_256i,
qam64_qam16_avx2((short *)rxF_256i,
(short *)rxF_i_256i,
(short *)rxF_i_256i,
(short *)ch_mag_256i,
(short *)ch_mag_256i,
...
@@ -8862,7 +8864,7 @@ int dlsch_64qam_64qam_llr(LTE_DL_FRAME_PARMS *frame_parms,
...
@@ -8862,7 +8864,7 @@ int dlsch_64qam_64qam_llr(LTE_DL_FRAME_PARMS *frame_parms,
(short *)llr16,
(short *)llr16,
(short *)rho_256i,
(short *)rho_256i,
len);
len);
*/
free16
(
rxF_256i
,
sizeof
(
rxF_256i
));
free16
(
rxF_256i
,
sizeof
(
rxF_256i
));
free16
(
rxF_i_256i
,
sizeof
(
rxF_i_256i
));
free16
(
rxF_i_256i
,
sizeof
(
rxF_i_256i
));
free16
(
ch_mag_256i
,
sizeof
(
ch_mag_256i
));
free16
(
ch_mag_256i
,
sizeof
(
ch_mag_256i
));
...
...
openair1/PHY/defs.h
View file @
3dc1963a
...
@@ -802,6 +802,8 @@ typedef struct {
...
@@ -802,6 +802,8 @@ typedef struct {
uint8_t
prach_cnt
;
uint8_t
prach_cnt
;
uint8_t
prach_PreambleIndex
;
uint8_t
prach_PreambleIndex
;
// uint8_t prach_timer;
// uint8_t prach_timer;
uint8_t
decode_SIB
;
uint8_t
decode_MIB
;
int
rx_offset
;
/// Timing offset
int
rx_offset
;
/// Timing offset
int
rx_offset_diff
;
/// Timing adjustment for ofdm symbol0 on HW USRP
int
rx_offset_diff
;
/// Timing adjustment for ofdm symbol0 on HW USRP
int
timing_advance
;
///timing advance signalled from eNB
int
timing_advance
;
///timing advance signalled from eNB
...
...
openair1/SCHED/phy_procedures_lte_ue.c
View file @
3dc1963a
...
@@ -2082,7 +2082,7 @@ void ue_pucch_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
...
@@ -2082,7 +2082,7 @@ void ue_pucch_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
T_INT
(
tx_amp
),
T_INT
(
ue
->
dlsch
[
proc
->
subframe_rx
&
0x1
][
eNB_id
][
0
]
->
g_pucch
),
T_INT
(
get_PL
(
ue
->
Mod_id
,
ue
->
CC_id
,
eNB_id
)));
T_INT
(
tx_amp
),
T_INT
(
ue
->
dlsch
[
proc
->
subframe_rx
&
0x1
][
eNB_id
][
0
]
->
g_pucch
),
T_INT
(
get_PL
(
ue
->
Mod_id
,
ue
->
CC_id
,
eNB_id
)));
#endif
#endif
LOG_
I
(
PHY
,
"[UE %d][RNTI %x] AbsSubFrame %d.%d Generating PUCCH 2 (RI or CQI), n2_pucch %d, Po_PUCCH %d, isShortenPucch %d, amp %d
\n
"
,
LOG_
D
(
PHY
,
"[UE %d][RNTI %x] AbsSubFrame %d.%d Generating PUCCH 2 (RI or CQI), n2_pucch %d, Po_PUCCH %d, isShortenPucch %d, amp %d
\n
"
,
Mod_id
,
Mod_id
,
ue
->
dlsch
[
proc
->
subframe_rx
&
0x1
][
eNB_id
][
0
]
->
rnti
,
ue
->
dlsch
[
proc
->
subframe_rx
&
0x1
][
eNB_id
][
0
]
->
rnti
,
frame_tx
%
1024
,
subframe_tx
,
frame_tx
%
1024
,
subframe_tx
,
...
@@ -3520,10 +3520,10 @@ void ue_dlsch_procedures(PHY_VARS_UE *ue,
...
@@ -3520,10 +3520,10 @@ void ue_dlsch_procedures(PHY_VARS_UE *ue,
dlsch0
->
harq_processes
[
harq_pid
]
->
TBS
>
256
?
1
:
0
);
dlsch0
->
harq_processes
[
harq_pid
]
->
TBS
>
256
?
1
:
0
);
stop_meas
(
&
ue
->
dlsch_decoding_stats
);
stop_meas
(
&
ue
->
dlsch_decoding_stats
);
printf
(
" --> Unscrambling for CW0 %5.3f
\n
"
,
//
printf(" --> Unscrambling for CW0 %5.3f\n",
(
ue
->
dlsch_unscrambling_stats
.
p_time
)
/
(
cpuf
*
1000
.
0
));
//
(ue->dlsch_unscrambling_stats.p_time)/(cpuf*1000.0));
printf
(
" --> Turbo Decoding for CW0 %5.3f
\n
"
,
//
printf(" --> Turbo Decoding for CW0 %5.3f\n",
(
ue
->
dlsch_decoding_stats
.
p_time
)
/
(
cpuf
*
1000
.
0
));
//
(ue->dlsch_decoding_stats.p_time)/(cpuf*1000.0));
if
(
is_cw1_active
)
if
(
is_cw1_active
)
{
{
...
@@ -3568,10 +3568,10 @@ void ue_dlsch_procedures(PHY_VARS_UE *ue,
...
@@ -3568,10 +3568,10 @@ void ue_dlsch_procedures(PHY_VARS_UE *ue,
dlsch1
->
harq_processes
[
harq_pid
]
->
TBS
>
256
?
1
:
0
);
dlsch1
->
harq_processes
[
harq_pid
]
->
TBS
>
256
?
1
:
0
);
stop_meas
(
&
ue
->
dlsch_decoding_stats
);
stop_meas
(
&
ue
->
dlsch_decoding_stats
);
printf
(
" --> Unscrambling for CW1 %5.3f
\n
"
,
//
printf(" --> Unscrambling for CW1 %5.3f\n",
(
ue
->
dlsch_unscrambling_stats
.
p_time
)
/
(
cpuf
*
1000
.
0
));
//
(ue->dlsch_unscrambling_stats.p_time)/(cpuf*1000.0));
printf
(
" --> Turbo Decoding for CW1 %5.3f
\n
"
,
//
printf(" --> Turbo Decoding for CW1 %5.3f\n",
(
ue
->
dlsch_decoding_stats
.
p_time
)
/
(
cpuf
*
1000
.
0
));
//
(ue->dlsch_decoding_stats.p_time)/(cpuf*1000.0));
}
}
}
}
...
@@ -3591,7 +3591,7 @@ void ue_dlsch_procedures(PHY_VARS_UE *ue,
...
@@ -3591,7 +3591,7 @@ void ue_dlsch_procedures(PHY_VARS_UE *ue,
if
(
dlsch0
->
rnti
!=
0xffff
)
if
(
dlsch0
->
rnti
!=
0xffff
)
{
{
LOG_I
(
PHY
,
"[UE %d][PDSCH %x/%d]
Frame %d subframe %d
DLSCH CW0 in error (rv %d,mcs %d,TBS %d)
\n
"
,
LOG_I
(
PHY
,
"[UE %d][PDSCH %x/%d]
AbsSubframe %d.%d :
DLSCH CW0 in error (rv %d,mcs %d,TBS %d)
\n
"
,
ue
->
Mod_id
,
dlsch0
->
rnti
,
ue
->
Mod_id
,
dlsch0
->
rnti
,
harq_pid
,
frame_rx
,
subframe_rx
,
harq_pid
,
frame_rx
,
subframe_rx
,
dlsch0
->
harq_processes
[
harq_pid
]
->
rvidx
,
dlsch0
->
harq_processes
[
harq_pid
]
->
rvidx
,
...
@@ -3603,7 +3603,7 @@ void ue_dlsch_procedures(PHY_VARS_UE *ue,
...
@@ -3603,7 +3603,7 @@ void ue_dlsch_procedures(PHY_VARS_UE *ue,
}
else
{
}
else
{
if
(
dlsch0
->
rnti
!=
0xffff
)
if
(
dlsch0
->
rnti
!=
0xffff
)
{
{
LOG_I
(
PHY
,
"[UE %d][PDSCH %x/%d]
Frame %d subframe %d
: Received DLSCH CW0 (rv %d,mcs %d,TBS %d)
\n
"
,
LOG_I
(
PHY
,
"[UE %d][PDSCH %x/%d]
AbsSubframe %d.%d
: Received DLSCH CW0 (rv %d,mcs %d,TBS %d)
\n
"
,
ue
->
Mod_id
,
dlsch0
->
rnti
,
ue
->
Mod_id
,
dlsch0
->
rnti
,
harq_pid
,
frame_rx
,
subframe_rx
,
harq_pid
,
frame_rx
,
subframe_rx
,
dlsch0
->
harq_processes
[
harq_pid
]
->
rvidx
,
dlsch0
->
harq_processes
[
harq_pid
]
->
rvidx
,
...
@@ -3857,7 +3857,7 @@ int phy_procedures_UE_RX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
...
@@ -3857,7 +3857,7 @@ int phy_procedures_UE_RX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
// first slot has been processed (FFTs + Channel Estimation, PCFICH/PHICH/PDCCH)
// first slot has been processed (FFTs + Channel Estimation, PCFICH/PHICH/PDCCH)
stop_meas
(
&
ue
->
generic_stat
);
stop_meas
(
&
ue
->
generic_stat
);
printf
(
"[SFN %d] Slot0: FFT + Channel Estimate + PCFICH/PHICH/PDCCH %5.2f
\n
"
,
subframe_rx
,
ue
->
generic_stat
.
p_time
/
(
cpuf
*
1000
.
0
));
//
printf("[SFN %d] Slot0: FFT + Channel Estimate + PCFICH/PHICH/PDCCH %5.2f \n",subframe_rx,ue->generic_stat.p_time/(cpuf*1000.0));
start_meas
(
&
ue
->
generic_stat
);
start_meas
(
&
ue
->
generic_stat
);
// do procedures for C-RNTI
// do procedures for C-RNTI
...
@@ -3952,11 +3952,13 @@ int phy_procedures_UE_RX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
...
@@ -3952,11 +3952,13 @@ int phy_procedures_UE_RX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
}
// not an S-subframe
}
// not an S-subframe
stop_meas
(
&
ue
->
generic_stat
);
stop_meas
(
&
ue
->
generic_stat
);
printf
(
"[SFN %d] Slot1: FFT + Channel Estimate + Pdsch Proc Slot0 %5.2f
\n
"
,
subframe_rx
,
ue
->
generic_stat
.
p_time
/
(
cpuf
*
1000
.
0
));
//
printf("[SFN %d] Slot1: FFT + Channel Estimate + Pdsch Proc Slot0 %5.2f \n",subframe_rx,ue->generic_stat.p_time/(cpuf*1000.0));
// run pbch procedures if subframe is 0
// run pbch procedures if subframe is 0
if
(
subframe_rx
==
0
)
if
(
(
subframe_rx
==
0
)
&&
(
ue
->
decode_MIB
==
1
))
{
ue_pbch_procedures
(
eNB_id
,
ue
,
proc
,
abstraction_flag
);
ue_pbch_procedures
(
eNB_id
,
ue
,
proc
,
abstraction_flag
);
}
// do procedures for C-RNTI
// do procedures for C-RNTI
if
(
ue
->
dlsch
[
subframe_rx
&
0x1
][
eNB_id
][
0
]
->
active
==
1
)
{
if
(
ue
->
dlsch
[
subframe_rx
&
0x1
][
eNB_id
][
0
]
->
active
==
1
)
{
...
@@ -3984,8 +3986,8 @@ int phy_procedures_UE_RX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
...
@@ -3984,8 +3986,8 @@ int phy_procedures_UE_RX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
mode
,
mode
,
abstraction_flag
);
abstraction_flag
);
stop_meas
(
&
ue
->
dlsch_procedures_stat
);
stop_meas
(
&
ue
->
dlsch_procedures_stat
);
printf
(
"[SFN %d] Slot1: Pdsch Proc %5.2f
\n
"
,
subframe_rx
,
ue
->
pdsch_procedures_stat
.
p_time
/
(
cpuf
*
1000
.
0
));
//
printf("[SFN %d] Slot1: Pdsch Proc %5.2f\n",subframe_rx,ue->pdsch_procedures_stat.p_time/(cpuf*1000.0));
printf
(
"[SFN %d] Slot0 Slot1: Dlsch Proc %5.2f
\n
"
,
subframe_rx
,
ue
->
dlsch_procedures_stat
.
p_time
/
(
cpuf
*
1000
.
0
));
//
printf("[SFN %d] Slot0 Slot1: Dlsch Proc %5.2f\n",subframe_rx,ue->dlsch_procedures_stat.p_time/(cpuf*1000.0));
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PDSCH_PROC
,
VCD_FUNCTION_OUT
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PDSCH_PROC
,
VCD_FUNCTION_OUT
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment