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
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
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
zzha zzha
OpenXG-RAN
Commits
bc2a9318
Commit
bc2a9318
authored
Jun 21, 2017
by
Gabriel
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ue fixes slot parallelisation
parent
d951795a
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
31 additions
and
24 deletions
+31
-24
openair1/PHY/LTE_TRANSPORT/dci_tools.c
openair1/PHY/LTE_TRANSPORT/dci_tools.c
+11
-10
openair1/SCHED/phy_procedures_lte_ue.c
openair1/SCHED/phy_procedures_lte_ue.c
+20
-14
No files found.
openair1/PHY/LTE_TRANSPORT/dci_tools.c
View file @
bc2a9318
...
...
@@ -4773,15 +4773,15 @@ int check_dci_format1_1a_coherency(DCI_format_t dci_format,
uint8_t
mcs1
=
pdci_info_extarcted
->
mcs1
;
uint8_t
TPC
=
pdci_info_extarcted
->
TPC
;
uint8_t
rah
=
pdci_info_extarcted
->
rah
;
#ifdef DEBUG_DCI
//
#ifdef DEBUG_DCI
uint8_t
rv1
=
pdci_info_extarcted
->
rv1
;
uint8_t
ndi1
=
pdci_info_extarcted
->
ndi1
;
#endif
//
#endif
uint8_t
NPRB
=
0
;
long
long
int
RIV_max
=
0
;
#ifdef DEBUG_DCI
//
#ifdef DEBUG_DCI
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] harq_pid %d
\n
"
,
harq_pid
);
...
...
@@ -4791,7 +4791,7 @@ int check_dci_format1_1a_coherency(DCI_format_t dci_format,
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] TPC %d
\n
"
,
TPC
);
#endif
//
#endif
// I- check dci content minimum coherency
if
(
((
rnti
==
si_rnti
)
||
(
rnti
==
p_rnti
)
||
(
rnti
==
ra_rnti
))
&&
harq_pid
>
0
)
...
...
@@ -5185,15 +5185,15 @@ void compute_llr_offset(LTE_DL_FRAME_PARMS *frame_parms,
if
(
symbol
<
(
frame_parms
->
symbols_per_tti
-
1
))
pdsch_vars
->
llr_offset
[
symbol
+
1
]
=
pdsch_vars
->
llr_offset
[
symbol
]
+
llr_offset
;
//
LOG_I(PHY,"Granted Re subframe %d / symbol %d => %d (%d RBs)\n", subframe, symbol_mod, granted_re,dlsch0_harq->nb_rb);
//
LOG_I(PHY,"Pbch/PSS/SSS Re subframe %d / symbol %d => %d \n", subframe, symbol_mod, pbch_pss_sss_re);
//
LOG_I(PHY,"CRS Re Per PRB subframe %d / symbol %d => %d \n", subframe, symbol_mod, crs_re);
//
LOG_I(PHY,"Data Re subframe %d / symbol %d => %d \n", subframe, symbol_mod, data_re);
LOG_I
(
PHY
,
"Granted Re subframe %d / symbol %d => %d (%d RBs)
\n
"
,
subframe
,
symbol_mod
,
granted_re
,
dlsch0_harq
->
nb_rb
);
LOG_I
(
PHY
,
"Pbch/PSS/SSS Re subframe %d / symbol %d => %d
\n
"
,
subframe
,
symbol_mod
,
pbch_pss_sss_re
);
LOG_I
(
PHY
,
"CRS Re Per PRB subframe %d / symbol %d => %d
\n
"
,
subframe
,
symbol_mod
,
crs_re
);
LOG_I
(
PHY
,
"Data Re subframe %d / symbol %d => %d
\n
"
,
subframe
,
symbol_mod
,
data_re
);
//
LOG_I(PHY,"Data Re subframe %d-symbol %d => llr length %d, llr offset %d \n", subframe, symbol,
//
pdsch_vars->llr_length[symbol], pdsch_vars->llr_offset[symbol]);
LOG_I
(
PHY
,
"Data Re subframe %d-symbol %d => llr length %d, llr offset %d
\n
"
,
subframe
,
symbol
,
pdsch_vars
->
llr_length
[
symbol
],
pdsch_vars
->
llr_offset
[
symbol
]);
}
}
void
prepare_dl_decoding_format1_1A
(
DCI_format_t
dci_format
,
...
...
@@ -5267,6 +5267,7 @@ void prepare_dl_decoding_format1_1A(DCI_format_t dci_format,
else
// format1
{
NPRB
=
conv_nprb
(
rah
,
rballoc
,
N_RB_DL
);
nb_rb_alloc
=
NPRB
;
}
pdlsch0
->
current_harq_pid
=
harq_pid
;
...
...
openair1/SCHED/phy_procedures_lte_ue.c
View file @
bc2a9318
...
...
@@ -4178,13 +4178,16 @@ void *UE_thread_fep_slot1(void *arg) {
uint8_t
l
;
uint8_t
compute_llrs_slot1
;
#ifdef UE_SLOT_PARALLELISATION
proc
->
instance_cnt_fep_slot1
=-
1
;
#endif
while
(
!
oai_exit
)
{
if
(
pthread_mutex_lock
(
&
proc
->
mutex_fep_slot1
)
!=
0
)
{
LOG_E
(
PHY
,
"[SCHED][UE] error locking mutex for UE FEP Slo1
\n
"
);
exit_fun
(
"nothing to add"
);
}
#ifdef UE_SLOT_PARALLELISATION
while
(
proc
->
instance_cnt_fep_slot1
<
0
)
{
// most of the time, the thread is waiting here
pthread_cond_wait
(
&
proc
->
cond_fep_slot1
,
&
proc
->
mutex_fep_slot1
);
...
...
@@ -4196,6 +4199,8 @@ void *UE_thread_fep_slot1(void *arg) {
// Start Thread Processing
LOG_I
(
PHY
,
" [Th-Slave] ==> execute fep slot1 thread for AbsSubframe %d.%d
\n
"
,
proc
->
frame_rx
,
proc
->
subframe_rx
);
#endif
#if 1
int
frame_rx
=
proc
->
frame_rx
;
int
subframe_rx
=
proc
->
subframe_rx
;
...
...
@@ -4514,7 +4519,7 @@ int phy_procedures_UE_RX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
proc
->
dci_slot0_available
=
0
;
proc
->
first_symbol_available
=
0
;
#ifdef UE_SLOT_PARALLELISATION
//LOG_I(PHY,"fep slot1 thread : instance_cnt %d \n",
// proc->instance_cnt_fep_slot1);
proc
->
instance_cnt_fep_slot1
++
;
...
...
@@ -4531,41 +4536,42 @@ int phy_procedures_UE_RX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
}
AssertFatal
(
pthread_cond_signal
(
&
proc
->
cond_fep_slot1
)
==
0
,
""
);
AssertFatal
(
pthread_mutex_unlock
(
&
proc
->
mutex_fep_slot1
)
==
0
,
""
);
#endif
/**** FFT Slot0 + Slot1 ****/
// I- start main thread for FFT/ChanEst symbol: 0/1 --> 7
// 1- perform FFT for pilot ofdm symbols first (ofdmSym7 ofdmSym4 or (ofdmSym6 ofdmSym3))
//
LOG_I(PHY,"FFT symbol %d slot %d \n",pilot0,slot1);
LOG_I
(
PHY
,
"FFT symbol %d slot %d
\n
"
,
pilot0
,
slot1
);
front_end_fft
(
ue
,
pilot0
,
slot1
,
0
,
0
);
//
LOG_I(PHY,"FFT symbol %d slot %d \n",pilot1,slot0);
LOG_I
(
PHY
,
"FFT symbol %d slot %d
\n
"
,
pilot1
,
slot0
);
front_end_fft
(
ue
,
pilot1
,
slot0
,
0
,
0
);
//
LOG_I(PHY,"ChanEst symbol %d slot %d\n",pilot1,slot0);
LOG_I
(
PHY
,
"ChanEst symbol %d slot %d
\n
"
,
pilot1
,
slot0
);
front_end_chanEst
(
ue
,
pilot1
,
slot0
,
0
);
//
LOG_I(PHY,"ChanEst symbol %d slot %d\n",pilot0,slot1);
LOG_I
(
PHY
,
"ChanEst symbol %d slot %d
\n
"
,
pilot0
,
slot1
);
front_end_chanEst
(
ue
,
pilot0
,
slot1
,
0
);
proc
->
chan_est_pilot0_slot1_available
=
1
;
//
LOG_I(PHY,"Set available channelEst to 1 AbsSubframe %d.%d \n",frame_rx,subframe_rx);
LOG_I
(
PHY
,
"Set available channelEst to 1 AbsSubframe %d.%d
\n
"
,
frame_rx
,
subframe_rx
);
// 2- perform FFT for other ofdm symbols other than pilots
for
(
l
=
first_ofdm_sym
;
l
<=
l2
;
l
++
)
{
if
(
(
l
!=
pilot0
)
&&
(
l
!=
pilot1
))
{
//
LOG_I(PHY,"FFT symbol %d slot %d \n", l, slot0);
LOG_I
(
PHY
,
"FFT symbol %d slot %d
\n
"
,
l
,
slot0
);
start_meas
(
&
ue
->
ofdm_demod_stats
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SLOT_FEP
,
VCD_FUNCTION_IN
);
front_end_fft
(
ue
,
...
...
@@ -4583,7 +4589,7 @@ int phy_procedures_UE_RX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
{
if
(
(
l
!=
pilot0
)
&&
(
l
!=
pilot1
))
{
//
LOG_I(PHY,"ChanEst symbol %d slot %d\n",l,slot0);
LOG_I
(
PHY
,
"ChanEst symbol %d slot %d
\n
"
,
l
,
slot0
);
front_end_chanEst
(
ue
,
l
,
slot0
,
...
...
@@ -4598,7 +4604,7 @@ int phy_procedures_UE_RX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
return
(
-
1
);
}
//
LOG_I(PHY,"num_pdcch_symbols %d\n",ue->pdcch_vars[subframe_rx & 0x1][eNB_id]->num_pdcch_symbols);
LOG_I
(
PHY
,
"num_pdcch_symbols %d
\n
"
,
ue
->
pdcch_vars
[
subframe_rx
&
0x1
][
eNB_id
]
->
num_pdcch_symbols
);
LOG_I
(
PHY
,
"Set available dci slot0 to 1 AbsSubframe %d.%d
\n
"
,
frame_rx
%
1024
,
subframe_rx
);
proc
->
dci_slot0_available
=
1
;
...
...
@@ -4682,7 +4688,7 @@ int phy_procedures_UE_RX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
#endif
stop_meas
(
&
ue
->
generic_stat
);
printf
(
"------Front-End PROC [SFN %d]: %5.2f ------
\n
"
,
subframe_rx
,
ue
->
generic_stat
.
p_time
/
(
cpuf
*
1000
.
0
));
//
printf("------Front-End PROC [SFN %d]: %5.2f ------\n",subframe_rx,ue->generic_stat.p_time/(cpuf*1000.0));
/**** End Subframe FFT-ChannelEst ****/
...
...
@@ -4757,7 +4763,7 @@ int phy_procedures_UE_RX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
}
stop_meas
(
&
ue
->
generic_stat
);
printf
(
"------LLR-Slot0 [SFN %d]: %5.2f ------
\n
"
,
subframe_rx
,
ue
->
generic_stat
.
p_time
/
(
cpuf
*
1000
.
0
));
//
printf("------LLR-Slot0 [SFN %d]: %5.2f ------\n",subframe_rx,ue->generic_stat.p_time/(cpuf*1000.0));
#if 1
// start slave thread for Pdsch Procedure (slot1)
...
...
@@ -4828,7 +4834,7 @@ int phy_procedures_UE_RX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
wait
++
;
}
stop_meas
(
&
ue
->
generic_stat
);
printf
(
"------ Waiting for LLR-Slot1 [SFN %d]: %5.2f ------
\n
"
,
subframe_rx
,
ue
->
generic_stat
.
p_time
/
(
cpuf
*
1000
.
0
));
//
printf("------ Waiting for LLR-Slot1 [SFN %d]: %5.2f ------\n",subframe_rx,ue->generic_stat.p_time/(cpuf*1000.0));
LOG_I
(
PHY
,
"==> Start Turbo Decoder wait %d
\n
"
,
wait
);
// Start Turbo decoder
...
...
@@ -4888,7 +4894,7 @@ int phy_procedures_UE_RX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
abstraction_flag
);
ue
->
dlsch_ra
[
eNB_id
]
->
active
=
0
;
}
printf
(
"------ Turbo Decoding [SFN %d]: %5.2f ------
\n
"
,
subframe_rx
,
ue
->
dlsch_procedures_stat
.
p_time
/
(
cpuf
*
1000
.
0
));
//
printf("------ Turbo Decoding [SFN %d]: %5.2f ------\n",subframe_rx,ue->dlsch_procedures_stat.p_time/(cpuf*1000.0));
/**** End Pdsch processing for this subframe ****/
...
...
@@ -4926,7 +4932,7 @@ int phy_procedures_UE_RX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
stop_meas
(
&
ue
->
phy_proc_rx
[
subframe_rx
&
0x1
]);
printf
(
"------FULL RX PROC [SFN %d]: %5.2f ------
\n
"
,
subframe_rx
,
ue
->
phy_proc_rx
[
subframe_rx
&
0x1
].
p_time
/
(
cpuf
*
1000
.
0
));
//
printf("------FULL RX PROC [SFN %d]: %5.2f ------\n",subframe_rx,ue->phy_proc_rx[subframe_rx&0x1].p_time/(cpuf*1000.0));
LOG_I
(
PHY
,
" ****** end RX-Chain for AbsSubframe %d.%d ******
\n
"
,
frame_rx
%
1024
,
subframe_rx
);
return
(
0
);
...
...
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