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
alex037yang
OpenXG-RAN
Commits
ed145f57
Commit
ed145f57
authored
Jul 17, 2017
by
tct-labo4
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[OAI-UE] slot0/1 parallelization part2
parent
bf7eb25c
Changes
10
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
564 additions
and
561 deletions
+564
-561
openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
+89
-10
openair1/PHY/LTE_TRANSPORT/initial_sync.c
openair1/PHY/LTE_TRANSPORT/initial_sync.c
+8
-10
openair1/PHY/defs.h
openair1/PHY/defs.h
+13
-5
openair1/SCHED/defs.h
openair1/SCHED/defs.h
+4
-2
openair1/SCHED/phy_procedures_lte_ue.c
openair1/SCHED/phy_procedures_lte_ue.c
+416
-270
targets/COMMON/threads_t.h
targets/COMMON/threads_t.h
+3
-0
targets/RT/USER/lte-softmodem.c
targets/RT/USER/lte-softmodem.c
+16
-1
targets/RT/USER/lte-softmodem.h
targets/RT/USER/lte-softmodem.h
+1
-0
targets/RT/USER/lte-ue.c
targets/RT/USER/lte-ue.c
+13
-262
targets/SIMU/USER/oaisim.c
targets/SIMU/USER/oaisim.c
+1
-1
No files found.
openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
View file @
ed145f57
...
@@ -112,10 +112,12 @@ int rx_pdsch(PHY_VARS_UE *ue,
...
@@ -112,10 +112,12 @@ int rx_pdsch(PHY_VARS_UE *ue,
int
avg_0
[
2
];
int
avg_0
[
2
];
int
avg_1
[
2
];
int
avg_1
[
2
];
uint8_t
slot
=
0
;
unsigned
char
aatx
,
aarx
;
unsigned
char
aatx
,
aarx
;
unsigned
short
nb_rb
=
0
,
round
;
unsigned
short
nb_rb
=
0
,
round
;
int
avgs
,
rb
;
int
avgs
=
0
,
rb
;
LTE_DL_UE_HARQ_t
*
dlsch0_harq
,
*
dlsch1_harq
=
0
;
LTE_DL_UE_HARQ_t
*
dlsch0_harq
,
*
dlsch1_harq
=
0
;
uint8_t
beamforming_mode
;
uint8_t
beamforming_mode
;
...
@@ -248,6 +250,11 @@ int rx_pdsch(PHY_VARS_UE *ue,
...
@@ -248,6 +250,11 @@ int rx_pdsch(PHY_VARS_UE *ue,
return
(
-
1
);
return
(
-
1
);
}
}
}
}
if
(
symbol
>
ue
->
frame_parms
.
symbols_per_tti
>>
1
)
{
slot
=
1
;
}
#ifdef DEBUG_HARQ
#ifdef DEBUG_HARQ
printf
(
"Demod dlsch0_harq->pmi_alloc %d
\n
"
,
dlsch0_harq
->
pmi_alloc
);
printf
(
"Demod dlsch0_harq->pmi_alloc %d
\n
"
,
dlsch0_harq
->
pmi_alloc
);
#endif
#endif
...
@@ -257,6 +264,9 @@ int rx_pdsch(PHY_VARS_UE *ue,
...
@@ -257,6 +264,9 @@ int rx_pdsch(PHY_VARS_UE *ue,
LOG_I
(
PHY
,
"dlsch: using pmi %x (%p), rb_alloc %x
\n
"
,
pmi2hex_2Ar1
(
dlsch0_harq
->
pmi_alloc
),
dlsch
[
0
],
dlsch0_harq
->
rb_alloc_even
[
0
]);
LOG_I
(
PHY
,
"dlsch: using pmi %x (%p), rb_alloc %x
\n
"
,
pmi2hex_2Ar1
(
dlsch0_harq
->
pmi_alloc
),
dlsch
[
0
],
dlsch0_harq
->
rb_alloc_even
[
0
]);
#endif
#endif
#if UE_TIMING_TRACE
start_meas
(
&
ue
->
generic_stat_bis
[
subframe
%
RX_NB_TH
][
slot
]);
#endif
nb_rb
=
dlsch_extract_rbs_dual
(
common_vars
->
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
rxdataF
,
nb_rb
=
dlsch_extract_rbs_dual
(
common_vars
->
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
rxdataF
,
common_vars
->
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
dl_ch_estimates
[
eNB_id
],
common_vars
->
common_vars_rx_data_per_thread
[
subframe
%
RX_NB_TH
].
dl_ch_estimates
[
eNB_id
],
pdsch_vars
[
eNB_id
]
->
rxdataF_ext
,
pdsch_vars
[
eNB_id
]
->
rxdataF_ext
,
...
@@ -364,12 +374,20 @@ int rx_pdsch(PHY_VARS_UE *ue,
...
@@ -364,12 +374,20 @@ int rx_pdsch(PHY_VARS_UE *ue,
return
(
-
1
);
return
(
-
1
);
}
}
#if UE_TIMING_TRACE
#ifdef DEBUG_PHY
stop_meas
(
&
ue
->
generic_stat_bis
[
subframe
%
RX_NB_TH
][
slot
]);
LOG_D
(
PHY
,
"[DLSCH] nb_rb %d log2_maxh = %d (%d,%d)
\n
"
,
nb_rb
,
pdsch_vars
[
eNB_id
]
->
log2_maxh
,
avg
[
0
],
avgs
);
#if DISABLE_LOG_X
LOG_D
(
PHY
,
"[DLSCH] mimo_mode = %d
\n
"
,
dlsch0_harq
->
mimo_mode
);
printf
(
"[AbsSFN %d.%d] Slot%d Symbol %d Flag %d type %d: Pilot/Data extraction %5.2f
\n
"
,
frame
,
subframe
,
slot
,
symbol
,
ue
->
high_speed_flag
,
type
,
symbol
,
ue
->
generic_stat_bis
[
subframe
%
RX_NB_TH
][
slot
].
p_time
/
(
cpuf
*
1000
.
0
));
#else
LOG_I
(
PHY
,
"[AbsSFN %d.%d] Slot%d Symbol %d Flag %d type %d: Pilot/Data extraction %5.2f
\n
"
,
frame
,
subframe
,
slot
,
symbol
,
ue
->
high_speed_flag
,
type
,
ue
->
generic_stat_bis
[
subframe
%
RX_NB_TH
][
slot
].
p_time
/
(
cpuf
*
1000
.
0
));
#endif
#endif
#endif
#if UE_TIMING_TRACE
start_meas
(
&
ue
->
generic_stat_bis
[
subframe
%
RX_NB_TH
][
slot
]);
#endif
aatx
=
frame_parms
->
nb_antenna_ports_eNB
;
aatx
=
frame_parms
->
nb_antenna_ports_eNB
;
aarx
=
frame_parms
->
nb_antennas_rx
;
aarx
=
frame_parms
->
nb_antennas_rx
;
...
@@ -392,6 +410,18 @@ int rx_pdsch(PHY_VARS_UE *ue,
...
@@ -392,6 +410,18 @@ int rx_pdsch(PHY_VARS_UE *ue,
nb_rb
);
nb_rb
);
}
}
#if UE_TIMING_TRACE
stop_meas
(
&
ue
->
generic_stat_bis
[
subframe
%
RX_NB_TH
][
slot
]);
#if DISABLE_LOG_X
printf
(
"[AbsSFN %d.%d] Slot%d Symbol %d: Channel Scale %5.2f
\n
"
,
frame
,
subframe
,
slot
,
symbol
,
ue
->
generic_stat_bis
[
subframe
%
RX_NB_TH
][
slot
].
p_time
/
(
cpuf
*
1000
.
0
));
#else
LOG_I
(
PHY
,
"[AbsSFN %d.%d] Slot%d Symbol %d: Channel Scale %5.2f
\n
"
,
frame
,
subframe
,
slot
,
symbol
,
ue
->
generic_stat_bis
[
subframe
%
RX_NB_TH
][
slot
].
p_time
/
(
cpuf
*
1000
.
0
));
#endif
#endif
#if UE_TIMING_TRACE
start_meas
(
&
ue
->
generic_stat_bis
[
subframe
%
RX_NB_TH
][
slot
]);
#endif
if
(
first_symbol_flag
==
1
)
{
if
(
first_symbol_flag
==
1
)
{
if
(
beamforming_mode
==
0
){
if
(
beamforming_mode
==
0
){
if
(
dlsch0_harq
->
mimo_mode
<
LARGE_CDD
)
{
if
(
dlsch0_harq
->
mimo_mode
<
LARGE_CDD
)
{
...
@@ -482,6 +512,16 @@ int rx_pdsch(PHY_VARS_UE *ue,
...
@@ -482,6 +512,16 @@ int rx_pdsch(PHY_VARS_UE *ue,
avg
[
0
],
avgs
);
avg
[
0
],
avgs
);
//LOG_D(PHY,"[DLSCH] mimo_mode = %d\n", dlsch0_harq->mimo_mode);
//LOG_D(PHY,"[DLSCH] mimo_mode = %d\n", dlsch0_harq->mimo_mode);
#endif
#endif
//wait until pdcch is decoded
proc
->
channel_level
=
1
;
}
uint32_t
wait
=
0
;
while
(
proc
->
channel_level
==
0
)
{
usleep
(
1
);
wait
++
;
}
}
#if T_TRACER
#if T_TRACER
...
@@ -492,6 +532,19 @@ int rx_pdsch(PHY_VARS_UE *ue,
...
@@ -492,6 +532,19 @@ int rx_pdsch(PHY_VARS_UE *ue,
}
}
#endif
#endif
#if UE_TIMING_TRACE
stop_meas
(
&
ue
->
generic_stat_bis
[
subframe
%
RX_NB_TH
][
slot
]);
#if DISABLE_LOG_X
printf
(
"[AbsSFN %d.%d] Slot%d Symbol %d first_symbol_flag %d: Channel Level %5.2f
\n
"
,
frame
,
subframe
,
slot
,
symbol
,
first_symbol_flag
,
ue
->
generic_stat_bis
[
subframe
%
RX_NB_TH
][
slot
].
p_time
/
(
cpuf
*
1000
.
0
));
#else
LOG_I
(
PHY
,
"[AbsSFN %d.%d] Slot%d Symbol %d first_symbol_flag %d: Channel Level %5.2f
\n
"
,
frame
,
subframe
,
slot
,
symbol
,
first_symbol_flag
,
ue
->
generic_stat_bis
[
subframe
%
RX_NB_TH
][
slot
].
p_time
/
(
cpuf
*
1000
.
0
));
#endif
#endif
#if UE_TIMING_TRACE
start_meas
(
&
ue
->
generic_stat_bis
[
subframe
%
RX_NB_TH
][
slot
]);
#endif
// Now channel compensation
// Now channel compensation
if
(
dlsch0_harq
->
mimo_mode
<
LARGE_CDD
)
{
if
(
dlsch0_harq
->
mimo_mode
<
LARGE_CDD
)
{
dlsch_channel_compensation
(
pdsch_vars
[
eNB_id
]
->
rxdataF_ext
,
dlsch_channel_compensation
(
pdsch_vars
[
eNB_id
]
->
rxdataF_ext
,
...
@@ -686,8 +739,18 @@ int rx_pdsch(PHY_VARS_UE *ue,
...
@@ -686,8 +739,18 @@ int rx_pdsch(PHY_VARS_UE *ue,
measurements
);
// log2_maxh+I0_shift
measurements
);
// log2_maxh+I0_shift
}
}
#if UE_TIMING_TRACE
stop_meas
(
&
ue
->
generic_stat_bis
[
subframe
%
RX_NB_TH
][
slot
]);
#if DISABLE_LOG_X
printf
(
"[AbsSFN %d.%d] Slot%d Symbol %d log2_maxh %d channel_level %d: Channel Comp %5.2f
\n
"
,
frame
,
subframe
,
slot
,
symbol
,
pdsch_vars
[
eNB_id
]
->
log2_maxh
,
proc
->
channel_level
,
ue
->
generic_stat_bis
[
subframe
%
RX_NB_TH
][
slot
].
p_time
/
(
cpuf
*
1000
.
0
));
#else
LOG_I
(
PHY
,
"[AbsSFN %d.%d] Slot%d Symbol %d log2_maxh %d channel_level %d: Channel Comp %5.2f
\n
"
,
frame
,
subframe
,
slot
,
symbol
,
pdsch_vars
[
eNB_id
]
->
log2_maxh
,
proc
->
channel_level
,
ue
->
generic_stat_bis
[
subframe
%
RX_NB_TH
][
slot
].
p_time
/
(
cpuf
*
1000
.
0
));
#endif
#endif
// MRC
// MRC
#if UE_TIMING_TRACE
start_meas
(
&
ue
->
generic_stat_bis
[
subframe
%
RX_NB_TH
][
slot
]);
#endif
if
(
frame_parms
->
nb_antennas_rx
>
1
)
{
if
(
frame_parms
->
nb_antennas_rx
>
1
)
{
if
((
dlsch0_harq
->
mimo_mode
==
LARGE_CDD
)
||
if
((
dlsch0_harq
->
mimo_mode
==
LARGE_CDD
)
||
...
@@ -755,6 +818,18 @@ int rx_pdsch(PHY_VARS_UE *ue,
...
@@ -755,6 +818,18 @@ int rx_pdsch(PHY_VARS_UE *ue,
//i_mod should have been passed as a parameter
//i_mod should have been passed as a parameter
}
}
#if UE_TIMING_TRACE
stop_meas
(
&
ue
->
generic_stat_bis
[
subframe
%
RX_NB_TH
][
slot
]);
#if DISABLE_LOG_X
printf
(
"[AbsSFN %d.%d] Slot%d Symbol %d: Channel Combine %5.2f
\n
"
,
frame
,
subframe
,
slot
,
symbol
,
ue
->
generic_stat_bis
[
subframe
%
RX_NB_TH
][
slot
].
p_time
/
(
cpuf
*
1000
.
0
));
#else
LOG_I
(
PHY
,
"[AbsSFN %d.%d] Slot%d Symbol %d: Channel Combine %5.2f
\n
"
,
frame
,
subframe
,
slot
,
symbol
,
ue
->
generic_stat_bis
[
subframe
%
RX_NB_TH
][
slot
].
p_time
/
(
cpuf
*
1000
.
0
));
#endif
#endif
#if UE_TIMING_TRACE
start_meas
(
&
ue
->
generic_stat_bis
[
subframe
%
RX_NB_TH
][
slot
]);
#endif
//printf("LLR dlsch0_harq->Qm %d rx_type %d cw0 %d cw1 %d symbol %d \n",dlsch0_harq->Qm,rx_type,codeword_TB0,codeword_TB1,symbol);
//printf("LLR dlsch0_harq->Qm %d rx_type %d cw0 %d cw1 %d symbol %d \n",dlsch0_harq->Qm,rx_type,codeword_TB0,codeword_TB1,symbol);
// compute LLRs
// compute LLRs
// -> // compute @pointer where llrs should filled for this ofdm-symbol
// -> // compute @pointer where llrs should filled for this ofdm-symbol
...
@@ -1102,6 +1177,14 @@ int rx_pdsch(PHY_VARS_UE *ue,
...
@@ -1102,6 +1177,14 @@ int rx_pdsch(PHY_VARS_UE *ue,
}
}
}
}
#if UE_TIMING_TRACE
stop_meas
(
&
ue
->
generic_stat_bis
[
subframe
%
RX_NB_TH
][
slot
]);
#if DISABLE_LOG_X
printf
(
"[AbsSFN %d.%d] Slot%d Symbol %d: LLR Computation %5.2f
\n
"
,
frame
,
subframe
,
slot
,
symbol
,
ue
->
generic_stat_bis
[
subframe
%
RX_NB_TH
][
slot
].
p_time
/
(
cpuf
*
1000
.
0
));
#else
LOG_I
(
PHY
,
"[AbsSFN %d.%d] Slot%d Symbol %d: LLR Computation %5.2f
\n
"
,
frame
,
subframe
,
slot
,
symbol
,
ue
->
generic_stat_bis
[
subframe
%
RX_NB_TH
][
slot
].
p_time
/
(
cpuf
*
1000
.
0
));
#endif
#endif
// Please keep it: useful for debugging
// Please keep it: useful for debugging
#if 0
#if 0
if( (symbol == 13) && (subframe==0) && (dlsch0_harq->Qm == 6) /*&& (nb_rb==25)*/)
if( (symbol == 13) && (subframe==0) && (dlsch0_harq->Qm == 6) /*&& (nb_rb==25)*/)
...
@@ -1148,10 +1231,6 @@ int rx_pdsch(PHY_VARS_UE *ue,
...
@@ -1148,10 +1231,6 @@ int rx_pdsch(PHY_VARS_UE *ue,
T_BUFFER
(
&
pdsch_vars
[
eNB_id
]
->
rxdataF_comp0
[
eNB_id
][
0
],
T_BUFFER
(
&
pdsch_vars
[
eNB_id
]
->
rxdataF_comp0
[
eNB_id
][
0
],
2
*
/* ulsch[UE_id]->harq_processes[harq_pid]->nb_rb */
frame_parms
->
N_RB_UL
*
12
*
frame_parms
->
symbols_per_tti
*
2
));
2
*
/* ulsch[UE_id]->harq_processes[harq_pid]->nb_rb */
frame_parms
->
N_RB_UL
*
12
*
frame_parms
->
symbols_per_tti
*
2
));
#endif
#endif
if
(
symbol
==
(
ue
->
frame_parms
.
symbols_per_tti
>>
1
))
//(first_symbol_flag)
proc
->
first_symbol_available
=
1
;
return
(
0
);
return
(
0
);
}
}
...
...
openair1/PHY/LTE_TRANSPORT/initial_sync.c
View file @
ed145f57
...
@@ -233,19 +233,17 @@ int pbch_detection(PHY_VARS_UE *ue, runmode_t mode)
...
@@ -233,19 +233,17 @@ int pbch_detection(PHY_VARS_UE *ue, runmode_t mode)
break
;
break
;
}
}
ue
->
proc
.
proc_rxtx
[
0
].
frame_rx
=
(((
ue
->
pbch_vars
[
0
]
->
decoded_output
[
2
]
&
3
)
<<
6
)
+
(
ue
->
pbch_vars
[
0
]
->
decoded_output
[
1
]
>>
2
))
<<
2
;
for
(
int
i
=
0
;
i
<
RX_NB_TH
;
i
++
)
ue
->
proc
.
proc_rxtx
[
0
].
frame_rx
+=
frame_mod4
;
{
ue
->
proc
.
proc_rxtx
[
i
].
frame_rx
=
(((
ue
->
pbch_vars
[
0
]
->
decoded_output
[
2
]
&
3
)
<<
6
)
+
(
ue
->
pbch_vars
[
0
]
->
decoded_output
[
1
]
>>
2
))
<<
2
;
ue
->
proc
.
proc_rxtx
[
1
].
frame_rx
=
(((
ue
->
pbch_vars
[
0
]
->
decoded_output
[
2
]
&
3
)
<<
6
)
+
(
ue
->
pbch_vars
[
0
]
->
decoded_output
[
1
]
>>
2
))
<<
2
;
ue
->
proc
.
proc_rxtx
[
i
].
frame_rx
=
(((
ue
->
pbch_vars
[
0
]
->
decoded_output
[
2
]
&
3
)
<<
6
)
+
(
ue
->
pbch_vars
[
0
]
->
decoded_output
[
1
]
>>
2
))
<<
2
;
ue
->
proc
.
proc_rxtx
[
1
].
frame_rx
+=
frame_mod4
;
#ifndef USER_MODE
#ifndef USER_MODE
// one frame delay
// one frame delay
ue
->
proc
.
proc_rxtx
[
0
].
frame_rx
++
;
ue
->
proc
.
proc_rxtx
[
i
].
frame_rx
++
;
ue
->
proc
.
proc_rxtx
[
1
].
frame_rx
++
;
#endif
#endif
ue
->
proc
.
proc_rxtx
[
0
].
frame_tx
=
ue
->
proc
.
proc_rxtx
[
0
].
frame_rx
;
ue
->
proc
.
proc_rxtx
[
i
].
frame_tx
=
ue
->
proc
.
proc_rxtx
[
0
].
frame_rx
;
ue
->
proc
.
proc_rxtx
[
1
].
frame_tx
=
ue
->
proc
.
proc_rxtx
[
1
].
frame_rx
;
}
#ifdef DEBUG_INITIAL_SYNCH
#ifdef DEBUG_INITIAL_SYNCH
LOG_I
(
PHY
,
"[UE%d] Initial sync: pbch decoded sucessfully mode1_flag %d, tx_ant %d, frame %d, N_RB_DL %d, phich_duration %d, phich_resource %s!
\n
"
,
LOG_I
(
PHY
,
"[UE%d] Initial sync: pbch decoded sucessfully mode1_flag %d, tx_ant %d, frame %d, N_RB_DL %d, phich_duration %d, phich_resource %s!
\n
"
,
ue
->
Mod_id
,
ue
->
Mod_id
,
...
...
openair1/PHY/defs.h
View file @
ed145f57
...
@@ -397,20 +397,27 @@ typedef struct {
...
@@ -397,20 +397,27 @@ typedef struct {
struct
sched_param
sched_param_rxtx
;
struct
sched_param
sched_param_rxtx
;
/// internal This variable is protected by ref mutex_fep_slot1.
/// internal This variable is protected by ref mutex_fep_slot1.
int
instance_cnt_fep_slot1
;
//int instance_cnt_slot0_dl_processing;
int
instance_cnt_slot1_dl_processing
;
/// pthread descriptor fep_slot1 thread
/// pthread descriptor fep_slot1 thread
pthread_t
pthread_fep_slot1
;
//pthread_t pthread_slot0_dl_processing;
pthread_t
pthread_slot1_dl_processing
;
/// pthread attributes for fep_slot1 processing thread
/// pthread attributes for fep_slot1 processing thread
pthread_attr_t
attr_fep_slot1
;
// pthread_attr_t attr_slot0_dl_processing;
pthread_attr_t
attr_slot1_dl_processing
;
/// condition variable for UE fep_slot1 thread;
/// condition variable for UE fep_slot1 thread;
pthread_cond_t
cond_fep_slot1
;
//pthread_cond_t cond_slot0_dl_processing;
pthread_cond_t
cond_slot1_dl_processing
;
/// mutex for UE synch thread
/// mutex for UE synch thread
pthread_mutex_t
mutex_fep_slot1
;
//pthread_mutex_t mutex_slot0_dl_processing;
pthread_mutex_t
mutex_slot1_dl_processing
;
//
//
uint8_t
chan_est_pilot0_slot1_available
;
uint8_t
chan_est_pilot0_slot1_available
;
uint8_t
chan_est_slot1_available
;
uint8_t
llr_slot1_available
;
uint8_t
llr_slot1_available
;
uint8_t
dci_slot0_available
;
uint8_t
dci_slot0_available
;
uint8_t
first_symbol_available
;
uint8_t
first_symbol_available
;
uint8_t
channel_level
;
/// scheduling parameters for fep_slot1 thread
/// scheduling parameters for fep_slot1 thread
struct
sched_param
sched_param_fep_slot1
;
struct
sched_param
sched_param_fep_slot1
;
...
@@ -910,6 +917,7 @@ typedef struct {
...
@@ -910,6 +917,7 @@ typedef struct {
time_stats_t
ulsch_multiplexing_stats
;
time_stats_t
ulsch_multiplexing_stats
;
time_stats_t
generic_stat
;
time_stats_t
generic_stat
;
time_stats_t
generic_stat_bis
[
RX_NB_TH
][
LTE_SLOTS_PER_SUBFRAME
];
time_stats_t
ue_front_end_stat
[
RX_NB_TH
];
time_stats_t
ue_front_end_stat
[
RX_NB_TH
];
time_stats_t
ue_front_end_per_slot_stat
[
RX_NB_TH
][
LTE_SLOTS_PER_SUBFRAME
];
time_stats_t
ue_front_end_per_slot_stat
[
RX_NB_TH
][
LTE_SLOTS_PER_SUBFRAME
];
time_stats_t
pdcch_procedures_stat
[
RX_NB_TH
];
time_stats_t
pdcch_procedures_stat
[
RX_NB_TH
];
...
...
openair1/SCHED/defs.h
View file @
ed145f57
...
@@ -140,9 +140,11 @@ void phy_procedures_UE_TX(PHY_VARS_UE *phy_vars_ue,UE_rxtx_proc_t *proc,uint8_t
...
@@ -140,9 +140,11 @@ void phy_procedures_UE_TX(PHY_VARS_UE *phy_vars_ue,UE_rxtx_proc_t *proc,uint8_t
@param phy_vars_rn pointer to RN variables
@param phy_vars_rn pointer to RN variables
*/
*/
int
phy_procedures_UE_RX
(
PHY_VARS_UE
*
phy_vars_ue
,
UE_rxtx_proc_t
*
proc
,
uint8_t
eNB_id
,
uint8_t
abstraction_flag
,
uint8_t
do_pdcch_flag
,
runmode_t
mode
,
relaying_type_t
r_type
,
PHY_VARS_RN
*
phy_vars_rn
);
int
phy_procedures_UE_RX
(
PHY_VARS_UE
*
phy_vars_ue
,
UE_rxtx_proc_t
*
proc
,
uint8_t
eNB_id
,
uint8_t
abstraction_flag
,
uint8_t
do_pdcch_flag
,
runmode_t
mode
,
relaying_type_t
r_type
,
PHY_VARS_RN
*
phy_vars_rn
);
int
phy_procedures_slot_parallelization_UE_RX
(
PHY_VARS_UE
*
ue
,
UE_rxtx_proc_t
*
proc
,
uint8_t
eNB_id
,
uint8_t
abstraction_flag
,
uint8_t
do_pdcch_flag
,
runmode_t
mode
,
relaying_type_t
r_type
,
PHY_VARS_RN
*
phy_vars_rn
);
#ifdef UE_SLOT_PARALLELISATION
#ifdef UE_SLOT_PARALLELISATION
void
*
UE_thread_
fep_slot1
(
void
*
arg
);
void
*
UE_thread_
slot1_dl_processing
(
void
*
arg
);
#endif
#endif
/*! \brief Scheduling for UE TX procedures in TDD S-subframes.
/*! \brief Scheduling for UE TX procedures in TDD S-subframes.
...
...
openair1/SCHED/phy_procedures_lte_ue.c
View file @
ed145f57
This diff is collapsed.
Click to expand it.
targets/COMMON/threads_t.h
View file @
ed145f57
...
@@ -6,6 +6,9 @@ typedef struct threads_s {
...
@@ -6,6 +6,9 @@ typedef struct threads_s {
int
one
;
int
one
;
int
two
;
int
two
;
int
three
;
int
three
;
int
slot1_proc_one
;
int
slot1_proc_two
;
int
slot1_proc_three
;
}
threads_t
;
}
threads_t
;
#endif
/* _THREADS_T_H_ */
#endif
/* _THREADS_T_H_ */
targets/RT/USER/lte-softmodem.c
View file @
ed145f57
...
@@ -222,7 +222,7 @@ double cpuf;
...
@@ -222,7 +222,7 @@ double cpuf;
char
uecap_xer
[
1024
],
uecap_xer_in
=
0
;
char
uecap_xer
[
1024
],
uecap_xer_in
=
0
;
int
oaisim_flag
=
0
;
int
oaisim_flag
=
0
;
threads_t
threads
=
{
-
1
,
-
1
,
-
1
,
-
1
};
threads_t
threads
=
{
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
};
/* see file openair2/LAYER2/MAC/main.c for why abstraction_flag is needed
/* see file openair2/LAYER2/MAC/main.c for why abstraction_flag is needed
* this is very hackish - find a proper solution
* this is very hackish - find a proper solution
...
@@ -640,6 +640,9 @@ static void get_options (int argc, char **argv) {
...
@@ -640,6 +640,9 @@ static void get_options (int argc, char **argv) {
LONG_OPTION_THREADONESUBFRAME
,
LONG_OPTION_THREADONESUBFRAME
,
LONG_OPTION_THREADTWOSUBFRAME
,
LONG_OPTION_THREADTWOSUBFRAME
,
LONG_OPTION_THREADTHREESUBFRAME
,
LONG_OPTION_THREADTHREESUBFRAME
,
LONG_OPTION_THREADSLOT1PROCONE
,
LONG_OPTION_THREADSLOT1PROCTWO
,
LONG_OPTION_THREADSLOT1PROCTHREE
,
LONG_OPTION_DEMOD_SHIFT
,
LONG_OPTION_DEMOD_SHIFT
,
#if T_TRACER
#if T_TRACER
LONG_OPTION_T_PORT
,
LONG_OPTION_T_PORT
,
...
@@ -677,6 +680,9 @@ static void get_options (int argc, char **argv) {
...
@@ -677,6 +680,9 @@ static void get_options (int argc, char **argv) {
{
"threadOneSubframe"
,
required_argument
,
NULL
,
LONG_OPTION_THREADONESUBFRAME
},
{
"threadOneSubframe"
,
required_argument
,
NULL
,
LONG_OPTION_THREADONESUBFRAME
},
{
"threadTwoSubframe"
,
required_argument
,
NULL
,
LONG_OPTION_THREADTWOSUBFRAME
},
{
"threadTwoSubframe"
,
required_argument
,
NULL
,
LONG_OPTION_THREADTWOSUBFRAME
},
{
"threadThreeSubframe"
,
required_argument
,
NULL
,
LONG_OPTION_THREADTHREESUBFRAME
},
{
"threadThreeSubframe"
,
required_argument
,
NULL
,
LONG_OPTION_THREADTHREESUBFRAME
},
{
"threadSlot1ProcOne"
,
required_argument
,
NULL
,
LONG_OPTION_THREADSLOT1PROCONE
},
{
"threadSlot1ProcTwo"
,
required_argument
,
NULL
,
LONG_OPTION_THREADSLOT1PROCTWO
},
{
"threadSlot1ProcThree"
,
required_argument
,
NULL
,
LONG_OPTION_THREADSLOT1PROCTHREE
},
{
"dlsch-demod-shift"
,
required_argument
,
NULL
,
LONG_OPTION_DEMOD_SHIFT
},
{
"dlsch-demod-shift"
,
required_argument
,
NULL
,
LONG_OPTION_DEMOD_SHIFT
},
#if T_TRACER
#if T_TRACER
{
"T_port"
,
required_argument
,
0
,
LONG_OPTION_T_PORT
},
{
"T_port"
,
required_argument
,
0
,
LONG_OPTION_T_PORT
},
...
@@ -811,6 +817,15 @@ static void get_options (int argc, char **argv) {
...
@@ -811,6 +817,15 @@ static void get_options (int argc, char **argv) {
case
LONG_OPTION_THREADTHREESUBFRAME
:
case
LONG_OPTION_THREADTHREESUBFRAME
:
threads
.
three
=
atoi
(
optarg
);
threads
.
three
=
atoi
(
optarg
);
break
;
break
;
case
LONG_OPTION_THREADSLOT1PROCONE
:
threads
.
slot1_proc_one
=
atoi
(
optarg
);
break
;
case
LONG_OPTION_THREADSLOT1PROCTWO
:
threads
.
slot1_proc_two
=
atoi
(
optarg
);
break
;
case
LONG_OPTION_THREADSLOT1PROCTHREE
:
threads
.
slot1_proc_three
=
atoi
(
optarg
);
break
;
case
LONG_OPTION_DEMOD_SHIFT
:
{
case
LONG_OPTION_DEMOD_SHIFT
:
{
extern
int16_t
dlsch_demod_shift
;
extern
int16_t
dlsch_demod_shift
;
dlsch_demod_shift
=
atof
(
optarg
);
dlsch_demod_shift
=
atof
(
optarg
);
...
...
targets/RT/USER/lte-softmodem.h
View file @
ed145f57
...
@@ -81,6 +81,7 @@ extern void kill_eNB_proc(int inst);
...
@@ -81,6 +81,7 @@ extern void kill_eNB_proc(int inst);
extern
int
setup_ue_buffers
(
PHY_VARS_UE
**
phy_vars_ue
,
openair0_config_t
*
openair0_cfg
);
extern
int
setup_ue_buffers
(
PHY_VARS_UE
**
phy_vars_ue
,
openair0_config_t
*
openair0_cfg
);
extern
void
fill_ue_band_info
(
void
);
extern
void
fill_ue_band_info
(
void
);
extern
void
init_UE
(
int
);
extern
void
init_UE
(
int
);
extern
void
init_thread
(
int
sched_runtime
,
int
sched_deadline
,
int
sched_fifo
,
cpu_set_t
*
cpuset
,
char
*
name
);
extern
void
reset_opp_meas
(
void
);
extern
void
reset_opp_meas
(
void
);
extern
void
print_opp_meas
(
void
);
extern
void
print_opp_meas
(
void
);
...
...
targets/RT/USER/lte-ue.c
View file @
ed145f57
This diff is collapsed.
Click to expand it.
targets/SIMU/USER/oaisim.c
View file @
ed145f57
...
@@ -184,7 +184,7 @@ extern LTE_DL_FRAME_PARMS *frame_parms[MAX_NUM_CCs];
...
@@ -184,7 +184,7 @@ extern LTE_DL_FRAME_PARMS *frame_parms[MAX_NUM_CCs];
double
cpuf
;
double
cpuf
;
#include "threads_t.h"
#include "threads_t.h"
threads_t
threads
=
{
-
1
,
-
1
,
-
1
};
threads_t
threads
=
{
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
};
//#ifdef XFORMS
//#ifdef XFORMS
int
otg_enabled
;
int
otg_enabled
;
...
...
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