Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG UE
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
OpenXG
OpenXG UE
Commits
4969fbac
Commit
4969fbac
authored
Jun 21, 2017
by
Gabriel
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ue fixes slot parallelisation
parent
8959e7f4
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 @
4969fbac
...
...
@@ -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 @
4969fbac
...
...
@@ -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