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
Michael Black
OpenXG UE
Commits
2c24662e
Commit
2c24662e
authored
Sep 23, 2016
by
Raymond Knopp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fixed --single-thread flag (when not set)
parent
c77b6f8b
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
85 additions
and
39 deletions
+85
-39
openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
+6
-7
openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c
openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c
+13
-14
openair1/SCHED/phy_procedures_lte_ue.c
openair1/SCHED/phy_procedures_lte_ue.c
+2
-0
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
+43
-1
openair2/RRC/LITE/L2_interface.c
openair2/RRC/LITE/L2_interface.c
+2
-2
openair2/UTIL/LOG/vcd_signal_dumper.c
openair2/UTIL/LOG/vcd_signal_dumper.c
+1
-0
openair2/UTIL/LOG/vcd_signal_dumper.h
openair2/UTIL/LOG/vcd_signal_dumper.h
+1
-0
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpb210.conf
...S/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpb210.conf
+2
-2
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpb210.conf
...TS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpb210.conf
+1
-1
targets/RT/USER/lte-enb.c
targets/RT/USER/lte-enb.c
+14
-12
No files found.
openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
View file @
2c24662e
...
...
@@ -266,10 +266,7 @@ int dlsch_encoding_2threads0(te_params *tep) {
unsigned
short
m
=
dlsch
->
harq_processes
[
harq_pid
]
->
mcs
;
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_ENCODING
,
VCD_FUNCTION_IN
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_ENCODING_W
,
VCD_FUNCTION_IN
);
if
(
dlsch
->
harq_processes
[
harq_pid
]
->
round
==
0
)
{
// this is a new packet
...
...
@@ -333,7 +330,7 @@ int dlsch_encoding_2threads0(te_params *tep) {
m
);
// r
}
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_ENCODING
,
VCD_FUNCTION_OUT
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_ENCODING
_W
,
VCD_FUNCTION_OUT
);
return
(
0
);
}
...
...
@@ -424,7 +421,8 @@ int dlsch_encoding_2threads(PHY_VARS_eNB *eNB,
pthread_mutex_unlock
(
&
proc
->
mutex_te
);
return
(
-
1
);
}
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_ENCODING
,
VCD_FUNCTION_OUT
);
++
proc
->
instance_cnt_te
;
proc
->
tep
.
eNB
=
eNB
;
...
...
@@ -440,6 +438,7 @@ int dlsch_encoding_2threads(PHY_VARS_eNB *eNB,
pthread_mutex_unlock
(
&
proc
->
mutex_te
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_ENCODING
,
VCD_FUNCTION_IN
);
for
(
r
=
dlsch
->
harq_processes
[
harq_pid
]
->
C
>>
1
;
r
<
dlsch
->
harq_processes
[
harq_pid
]
->
C
;
r
++
)
{
if
(
r
<
dlsch
->
harq_processes
[
harq_pid
]
->
Cminus
)
...
...
@@ -500,7 +499,7 @@ int dlsch_encoding_2threads(PHY_VARS_eNB *eNB,
// Fill in the "e"-sequence from 36-212, V8.6 2009-03, p. 16-17 (for each "e") and concatenate the
// outputs for each code segment, see Section 5.1.5 p.20
for
(
r
=
0
;
r
<
dlsch
->
harq_processes
[
harq_pid
]
->
C
;
r
++
)
{
for
(
r
=
0
,
r_offset
=
0
;
r
<
dlsch
->
harq_processes
[
harq_pid
]
->
C
;
r
++
)
{
// get information for E for the segments that are handled by the worker thread
if
(
r
<
(
dlsch
->
harq_processes
[
harq_pid
]
->
C
>>
1
))
{
...
...
openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c
View file @
2c24662e
...
...
@@ -299,6 +299,12 @@ int ulsch_decoding_data_2thread0(td_params* tdp) {
E
=
Nl
*
Q_m
*
((
GpmodC
==
0
?
0
:
1
)
+
(
Gp
/
C
));
r_offset
+=
E
;
if
(
r
==
0
)
{
offset
=
Kr_bytes
-
(
ulsch_harq
->
F
>>
3
)
-
((
ulsch_harq
->
C
>
1
)
?
3
:
0
);
}
else
{
offset
+=
(
Kr_bytes
-
((
ulsch_harq
->
C
>
1
)
?
3
:
0
));
}
}
// go through second half of segments
...
...
@@ -393,8 +399,7 @@ int ulsch_decoding_data_2thread0(td_params* tdp) {
&
eNB
->
ulsch_tc_intl1_stats
,
&
eNB
->
ulsch_tc_intl2_stats
);
// Reassembly of Transport block here
// Reassembly of Transport block here
if
(
ret
!=
(
1
+
ulsch
->
max_turbo_iterations
))
{
if
(
r
<
ulsch_harq
->
Cminus
)
...
...
@@ -404,17 +409,11 @@ int ulsch_decoding_data_2thread0(td_params* tdp) {
Kr_bytes
=
Kr
>>
3
;
if
(
r
==
0
)
{
memcpy
(
ulsch_harq
->
b
,
&
ulsch_harq
->
c
[
0
][(
ulsch_harq
->
F
>>
3
)],
Kr_bytes
-
(
ulsch_harq
->
F
>>
3
)
-
((
ulsch_harq
->
C
>
1
)
?
3
:
0
));
offset
=
Kr_bytes
-
(
ulsch_harq
->
F
>>
3
)
-
((
ulsch_harq
->
C
>
1
)
?
3
:
0
);
}
else
{
memcpy
(
ulsch_harq
->
b
+
offset
,
ulsch_harq
->
c
[
r
],
Kr_bytes
-
((
ulsch_harq
->
C
>
1
)
?
3
:
0
));
offset
+=
(
Kr_bytes
-
((
ulsch_harq
->
C
>
1
)
?
3
:
0
));
}
memcpy
(
ulsch_harq
->
b
+
offset
,
ulsch_harq
->
c
[
r
],
Kr_bytes
-
((
ulsch_harq
->
C
>
1
)
?
3
:
0
));
offset
+=
(
Kr_bytes
-
((
ulsch_harq
->
C
>
1
)
?
3
:
0
));
}
else
{
break
;
...
...
@@ -621,7 +620,7 @@ int ulsch_decoding_data_2thread(PHY_VARS_eNB *eNB,int UE_id,int harq_pid,int llr
&
eNB
->
ulsch_tc_ext_stats
,
&
eNB
->
ulsch_tc_intl1_stats
,
&
eNB
->
ulsch_tc_intl2_stats
);
// Reassembly of Transport block here
if
(
ret
!=
(
1
+
ulsch
->
max_turbo_iterations
))
{
...
...
openair1/SCHED/phy_procedures_lte_ue.c
View file @
2c24662e
...
...
@@ -713,12 +713,14 @@ void ue_prach_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
if
(
ue
->
mac_enabled
==
1
){
// ask L2 for RACH transport
if
((
mode
!=
rx_calib_ue
)
&&
(
mode
!=
rx_calib_ue_med
)
&&
(
mode
!=
rx_calib_ue_byp
)
&&
(
mode
!=
no_L2_connect
)
)
{
LOG_D
(
PHY
,
"Getting PRACH resources
\n
"
);
ue
->
prach_resources
[
eNB_id
]
=
mac_xface
->
ue_get_rach
(
ue
->
Mod_id
,
ue
->
CC_id
,
frame_tx
,
eNB_id
,
subframe_tx
);
LOG_D
(
PHY
,
"Got prach_resources for eNB %d address %d, RRCCommon %d
\n
"
,
eNB_id
,
ue
->
prach_resources
[
eNB_id
],
UE_mac_inst
[
ue
->
Mod_id
].
radioResourceConfigCommon
);
LOG_D
(
PHY
,
"Prach resources %p
\n
"
,
ue
->
prach_resources
[
eNB_id
]);
}
}
...
...
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
View file @
2c24662e
...
...
@@ -1005,6 +1005,46 @@ int get_nCCE_offset(int *CCE_table,
}
}
void
dump_CCE_table
(
int
*
CCE_table
,
const
int
nCCE
,
const
unsigned
short
rnti
,
const
int
subframe
,
int
L
)
{
int
nb_candidates
=
0
,
i
;
unsigned
int
Yk
;
for
(
i
=
0
;
i
<
nCCE
;
i
++
)
{
printf
(
"%1d."
,
CCE_table
[
i
]);
if
((
i
&
7
)
==
0
)
printf
(
"
\n
"
);
}
Yk
=
(
unsigned
int
)
rnti
;
for
(
i
=
0
;
i
<=
subframe
;
i
++
)
Yk
=
(
Yk
*
39827
)
%
65537
;
Yk
=
Yk
%
(
nCCE
/
L
);
switch
(
L
)
{
case
1
:
case
2
:
nb_candidates
=
6
;
break
;
case
4
:
case
8
:
nb_candidates
=
2
;
break
;
default:
DevParam
(
L
,
nCCE
,
rnti
);
break
;
}
printf
(
"rnti %x, Yk*L = %d, nCCE %d (nCCE/L %d),nb_cand*L %d
\n
"
,
rnti
,
Yk
*
L
,
nCCE
,
nCCE
/
L
,
nb_candidates
*
L
);
}
// Allocate the CCEs
int
allocate_CCEs
(
int
module_idP
,
int
CC_idP
,
...
...
@@ -1056,12 +1096,14 @@ try_again:
subframeP
,
dci_alloc
->
rnti
);
for
(
j
=
0
;
j
<=
i
;
j
++
){
LOG_I
(
MAC
,
"DCI %d/%d (%d,%d) : rnti %x dci format %d, aggreg %d nCCE %d / %d (num_pdcch_symbols %d)
\n
"
,
i
,
DCI_pdu
->
Num_common_dci
+
DCI_pdu
->
Num_ue_spec_dci
,
j
,
DCI_pdu
->
Num_common_dci
+
DCI_pdu
->
Num_ue_spec_dci
,
DCI_pdu
->
Num_common_dci
,
DCI_pdu
->
Num_ue_spec_dci
,
DCI_pdu
->
dci_alloc
[
j
].
rnti
,
DCI_pdu
->
dci_alloc
[
j
].
format
,
1
<<
DCI_pdu
->
dci_alloc
[
j
].
L
,
nCCE
,
nCCE_max
,
DCI_pdu
->
num_pdcch_symbols
);
}
dump_CCE_table
(
CCE_table
,
nCCE_max
,
subframeP
,
dci_alloc
->
rnti
,
dci_alloc
->
L
);
goto
failed
;
}
DCI_pdu
->
num_pdcch_symbols
++
;
...
...
openair2/RRC/LITE/L2_interface.c
View file @
2c24662e
...
...
@@ -291,10 +291,10 @@ mac_rrc_data_req(
#endif //Rel10
}
else
{
//This is an UE
#ifdef DEBUG_RRC
LOG_D
(
RRC
,
"[UE %d] Frame %d Filling CCCH SRB_ID %d
\n
"
,
Mod_idP
,
frameP
,
Srb_id
);
LOG_D
(
RRC
,
"[UE %d] Frame %d buffer_pP status %d,
\n
"
,
Mod_idP
,
frameP
,
UE_rrc_inst
[
Mod_idP
].
Srb0
[
eNB_index
].
Tx_buffer
.
payload_size
);
#endif
if
(
(
UE_rrc_inst
[
Mod_idP
].
Srb0
[
eNB_index
].
Tx_buffer
.
payload_size
>
0
)
)
{
...
...
openair2/UTIL/LOG/vcd_signal_dumper.c
View file @
2c24662e
...
...
@@ -272,6 +272,7 @@ const char* eurecomFunctionsNames[] = {
"phy_ue_ulsch_scrambling"
,
"phy_eNB_dlsch_modulation"
,
"phy_eNB_dlsch_encoding"
,
"phy_eNB_dlsch_encoding_w"
,
"phy_eNB_dlsch_scrambling"
,
/* MAC signals */
...
...
openair2/UTIL/LOG/vcd_signal_dumper.h
View file @
2c24662e
...
...
@@ -246,6 +246,7 @@ typedef enum {
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_ULSCH_SCRAMBLING
,
VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_MODULATION
,
VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_ENCODING
,
VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_ENCODING_W
,
VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_SCRAMBLING
,
/* MAC signals */
...
...
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpb210.conf
View file @
2c24662e
...
...
@@ -50,7 +50,7 @@ eNBs =
pucch_nRB_CQI
=
1
;
pucch_nCS_AN
=
0
;
pucch_n1_AN
=
32
;
pdsch_referenceSignalPower
= -
32
;
pdsch_referenceSignalPower
= -
29
;
pdsch_p_b
=
0
;
pusch_n_SB
=
1
;
pusch_enable64QAM
=
"DISABLE"
;
...
...
@@ -70,7 +70,7 @@ eNBs =
pusch_p0_Nominal
= -
96
;
pusch_alpha
=
"AL1"
;
pucch_p0_Nominal
= -
10
3
;
pucch_p0_Nominal
= -
10
0
;
msg3_delta_Preamble
=
6
;
pucch_deltaF_Format1
=
"deltaF2"
;
pucch_deltaF_Format1b
=
"deltaF3"
;
...
...
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpb210.conf
View file @
2c24662e
...
...
@@ -70,7 +70,7 @@ eNBs =
pusch_p0_Nominal
= -
96
;
pusch_alpha
=
"AL1"
;
pucch_p0_Nominal
= -
10
3
;
pucch_p0_Nominal
= -
10
0
;
msg3_delta_Preamble
=
6
;
pucch_deltaF_Format1
=
"deltaF2"
;
pucch_deltaF_Format1b
=
"deltaF3"
;
...
...
targets/RT/USER/lte-enb.c
View file @
2c24662e
...
...
@@ -237,7 +237,7 @@ static inline void thread_top_init(char *thread_name,
}
memset
(
&
sparam
,
0
,
sizeof
(
sparam
));
sparam
.
sched_priority
=
sched_get_priority_max
(
SCHED_FIFO
)
-
1
;
sparam
.
sched_priority
=
sched_get_priority_max
(
SCHED_FIFO
);
policy
=
SCHED_FIFO
;
s
=
pthread_setschedparam
(
pthread_self
(),
policy
,
&
sparam
);
...
...
@@ -1566,6 +1566,7 @@ int start_rf(PHY_VARS_eNB *eNB) {
extern
void
eNB_fep_rru_if5
(
PHY_VARS_eNB
*
eNB
);
extern
void
eNB_fep_full
(
PHY_VARS_eNB
*
eNB
);
extern
void
eNB_fep_full_2thread
(
PHY_VARS_eNB
*
eNB
);
extern
void
do_prach
(
PHY_VARS_eNB
*
eNB
);
void
init_eNB
(
eNB_func_t
node_function
[],
eNB_timing_t
node_timing
[],
int
nb_inst
,
eth_params_t
*
eth_params
,
int
single_thread_flag
)
{
...
...
@@ -1613,7 +1614,7 @@ void init_eNB(eNB_func_t node_function[], eNB_timing_t node_timing[],int nb_inst
break
;
case
NGFI_RRU_IF4p5
:
eNB
->
do_prach
=
do_prach
;
eNB
->
fep
=
eNB_fep_full
;
eNB
->
fep
=
(
single_thread_flag
==
1
)
?
eNB_fep_full_2thread
:
eNB_fep_full
;
eNB
->
td
=
NULL
;
eNB
->
te
=
NULL
;
eNB
->
proc_uespec_rx
=
NULL
;
...
...
@@ -1642,9 +1643,9 @@ void init_eNB(eNB_func_t node_function[], eNB_timing_t node_timing[],int nb_inst
break
;
case
eNodeB_3GPP
:
eNB
->
do_prach
=
do_prach
;
eNB
->
fep
=
eNB_fep_full
;
eNB
->
td
=
ulsch_decoding_data
_2thread
;
eNB
->
te
=
dlsch_encoding
_2threads
;
eNB
->
fep
=
(
single_thread_flag
==
1
)
?
eNB_fep_full_2thread
:
eNB_fep_full
;
eNB
->
td
=
ulsch_decoding_data
;
//(single_thread_flag==1) ? ulsch_decoding_data_2thread : ulsch_decoding_data
;
eNB
->
te
=
dlsch_encoding
;
//(single_thread_flag==1) ? dlsch_encoding_2threads : dlsch_encoding
;
eNB
->
proc_uespec_rx
=
phy_procedures_eNB_uespec_RX
;
eNB
->
proc_tx
=
proc_tx_full
;
eNB
->
tx_fh
=
NULL
;
...
...
@@ -1662,9 +1663,9 @@ void init_eNB(eNB_func_t node_function[], eNB_timing_t node_timing[],int nb_inst
break
;
case
eNodeB_3GPP_BBU
:
eNB
->
do_prach
=
do_prach
;
eNB
->
fep
=
eNB_fep_full
;
eNB
->
td
=
ulsch_decoding_data_2thread
;
eNB
->
te
=
dlsch_encoding_2threads
;
eNB
->
fep
=
(
single_thread_flag
==
1
)
?
eNB_fep_full_2thread
:
eNB_fep_full
;
eNB
->
td
=
(
single_thread_flag
==
1
)
?
ulsch_decoding_data_2thread
:
ulsch_decoding_data
;
eNB
->
te
=
(
single_thread_flag
==
1
)
?
dlsch_encoding_2threads
:
dlsch_encoding
;
eNB
->
proc_uespec_rx
=
phy_procedures_eNB_uespec_RX
;
eNB
->
proc_tx
=
proc_tx_full
;
eNB
->
tx_fh
=
tx_fh_if5
;
...
...
@@ -1687,8 +1688,8 @@ void init_eNB(eNB_func_t node_function[], eNB_timing_t node_timing[],int nb_inst
case
NGFI_RCC_IF4p5
:
eNB
->
do_prach
=
do_prach
;
eNB
->
fep
=
NULL
;
eNB
->
td
=
ulsch_decoding_data_2thread
;
eNB
->
te
=
dlsch_encoding_2threads
;
eNB
->
td
=
(
single_thread_flag
==
1
)
?
ulsch_decoding_data_2thread
:
ulsch_decoding_data
;
eNB
->
te
=
(
single_thread_flag
==
1
)
?
dlsch_encoding_2threads
:
dlsch_encoding
;
eNB
->
proc_uespec_rx
=
phy_procedures_eNB_uespec_RX
;
eNB
->
proc_tx
=
proc_tx_high
;
eNB
->
tx_fh
=
tx_fh_if4p5
;
...
...
@@ -1710,8 +1711,9 @@ void init_eNB(eNB_func_t node_function[], eNB_timing_t node_timing[],int nb_inst
case
NGFI_RAU_IF4p5
:
eNB
->
do_prach
=
do_prach
;
eNB
->
fep
=
NULL
;
eNB
->
td
=
ulsch_decoding_data_2thread
;
eNB
->
te
=
dlsch_encoding_2threads
;
eNB
->
td
=
(
single_thread_flag
==
1
)
?
ulsch_decoding_data_2thread
:
ulsch_decoding_data
;
eNB
->
te
=
(
single_thread_flag
==
1
)
?
dlsch_encoding_2threads
:
dlsch_encoding
;
eNB
->
proc_uespec_rx
=
phy_procedures_eNB_uespec_RX
;
eNB
->
proc_tx
=
proc_tx_high
;
eNB
->
tx_fh
=
tx_fh_if4p5
;
...
...
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