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
wangjie
OpenXG-RAN
Commits
aae302f1
Commit
aae302f1
authored
Jul 17, 2017
by
gabrielC
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'pdcch_optim' into develop_integration_w30
Conflicts: targets/RT/USER/lte-softmodem.c
parents
b5eec87e
a2cf0a22
Changes
8
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
510 additions
and
117 deletions
+510
-117
openair1/PHY/INIT/lte_init.c
openair1/PHY/INIT/lte_init.c
+8
-3
openair1/PHY/LTE_TRANSPORT/dci.c
openair1/PHY/LTE_TRANSPORT/dci.c
+433
-100
openair1/PHY/LTE_TRANSPORT/dci_tools.c
openair1/PHY/LTE_TRANSPORT/dci_tools.c
+6
-7
openair1/PHY/LTE_TRANSPORT/proto.h
openair1/PHY/LTE_TRANSPORT/proto.h
+6
-0
openair1/PHY/defs.h
openair1/PHY/defs.h
+3
-0
openair1/PHY/vars.h
openair1/PHY/vars.h
+3
-0
openair1/SCHED/phy_procedures_lte_ue.c
openair1/SCHED/phy_procedures_lte_ue.c
+31
-7
targets/RT/USER/lte-softmodem.c
targets/RT/USER/lte-softmodem.c
+20
-0
No files found.
openair1/PHY/INIT/lte_init.c
View file @
aae302f1
...
...
@@ -764,6 +764,7 @@ void phy_config_dedicated_ue(uint8_t Mod_id,int CC_id,uint8_t eNB_id,
struct
PhysicalConfigDedicated
*
physicalConfigDedicated
)
{
static
uint8_t
first_dedicated_configuration
=
0
;
PHY_VARS_UE
*
phy_vars_ue
=
PHY_vars_UE_g
[
Mod_id
][
CC_id
];
phy_vars_ue
->
total_TBS
[
eNB_id
]
=
0
;
...
...
@@ -954,9 +955,13 @@ void phy_config_dedicated_ue(uint8_t Mod_id,int CC_id,uint8_t 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
;
first_dedicated_configuration
++
;
if
(
first_dedicated_configuration
>
1
)
{
LOG_I
(
PHY
,
"Disable SIB MIB decoding
\n
"
);
phy_vars_ue
->
decode_SIB
=
0
;
phy_vars_ue
->
decode_MIB
=
0
;
}
//phy_vars_ue->pdcch_vars[1][eNB_id]->crnti = phy_vars_ue->pdcch_vars[0][eNB_id]->crnti;
if
(
phy_vars_ue
->
pdcch_vars
[
0
][
eNB_id
]
->
crnti
==
0x1234
)
phy_vars_ue
->
pdcch_vars
[
0
][
eNB_id
]
->
crnti
=
phy_vars_ue
->
pdcch_vars
[
1
][
eNB_id
]
->
crnti
;
...
...
openair1/PHY/LTE_TRANSPORT/dci.c
View file @
aae302f1
This diff is collapsed.
Click to expand it.
openair1/PHY/LTE_TRANSPORT/dci_tools.c
View file @
aae302f1
...
...
@@ -4781,18 +4781,17 @@ int check_dci_format1_1a_coherency(DCI_format_t dci_format,
uint8_t
NPRB
=
0
;
long
long
int
RIV_max
=
0
;
#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
);
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] mcs1 %d
\n
"
,
mcs1
);
#ifdef DEBUG_DCI
LOG_I
(
PHY
,
"[DCI-FORMAT-1-1A] rv1 %d
\n
"
,
rv1
);
LOG_I
(
PHY
,
"[DCI-FORMAT-1-1A] ndi1 %d
\n
"
,
ndi1
);
#endif
LOG_I
(
PHY
,
"[DCI-FORMAT-1-1A] TPC %d
\n
"
,
TPC
);
#endif
// I- check dci content minimum coherency
...
...
@@ -6120,9 +6119,9 @@ int generate_ue_dlsch_params_from_dci(int frame,
}
// dci is correct ==> update internal structure and prepare dl decoding
//
#ifdef DEBUG_DCI
#ifdef DEBUG_DCI
LOG_I
(
PHY
,
"[DCI-FORMAT-1A] AbsSubframe %d.%d prepare dl decoding
\n
"
,
frame
,
subframe
);
//
#endif
#endif
prepare_dl_decoding_format1_1A
(
format1A
,
frame_parms
->
N_RB_DL
,
&
dci_info_extarcted
,
...
...
@@ -6229,9 +6228,9 @@ int generate_ue_dlsch_params_from_dci(int frame,
// dci is correct ==> update internal structure and prepare dl decoding
//
#ifdef DEBUG_DCI
#ifdef DEBUG_DCI
LOG_I
(
PHY
,
"[DCI-FORMAT-1] AbsSubframe %d.%d prepare dl decoding
\n
"
,
frame
,
subframe
);
//
#endif
#endif
prepare_dl_decoding_format1_1A
(
format1
,
frame_parms
->
N_RB_DL
,
&
dci_info_extarcted
,
...
...
openair1/PHY/LTE_TRANSPORT/proto.h
View file @
aae302f1
...
...
@@ -1524,6 +1524,12 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *phy_vars_ue,
int16_t
eNB_id
,
uint8_t
subframe
);
uint16_t
dci_CRNTI_decoding_procedure
(
PHY_VARS_UE
*
ue
,
DCI_ALLOC_t
*
dci_alloc
,
uint8_t
DCIFormat
,
uint8_t
agregationLevel
,
int16_t
eNB_id
,
uint8_t
subframe
);
uint16_t
dci_decoding_procedure_emul
(
LTE_UE_PDCCH
**
lte_ue_pdcch_vars
,
uint8_t
num_ue_spec_dci
,
...
...
openair1/PHY/defs.h
View file @
aae302f1
...
...
@@ -75,6 +75,9 @@
#define RX_NB_TH_MAX 2
#define RX_NB_TH 2
extern
uint8_t
dciFormat
;
extern
uint8_t
agregationLevel
;
//#ifdef SHRLIBDEV
//extern int rxrescale;
...
...
openair1/PHY/vars.h
View file @
aae302f1
...
...
@@ -78,6 +78,9 @@ unsigned char NB_INST=0;
unsigned
int
ULSCH_max_consecutive_errors
=
20
;
int
number_of_cards
;
uint8_t
dciFormat
;
uint8_t
agregationLevel
;
int
flag_LA
=
0
;
int
flagMag
;
...
...
openair1/SCHED/phy_procedures_lte_ue.c
View file @
aae302f1
...
...
@@ -3084,14 +3084,34 @@ int ue_pdcch_procedures(uint8_t eNB_id,PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint
ue
->
high_speed_flag
,
ue
->
is_secondary_ue
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_RX_PDCCH
,
VCD_FUNCTION_OUT
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_DCI_DECODING
,
VCD_FUNCTION_IN
);
dci_cnt
=
dci_decoding_procedure
(
ue
,
dci_alloc_rx
,
(
ue
->
UE_mode
[
eNB_id
]
<
PUSCH
)
?
1
:
0
,
// if we're in PUSCH don't listen to common search space,
// later when we need paging or RA during connection, update this ...
eNB_id
,
subframe_rx
);
//printf("Decode SIB frame param agregation + DCI %d %d \n",agregationLevel,dciFormat);
//agregation level == FF means no configuration on
if
(
agregationLevel
==
0xFF
||
ue
->
decode_SIB
)
{
// search all possible dcis
dci_cnt
=
dci_decoding_procedure
(
ue
,
dci_alloc_rx
,
(
ue
->
UE_mode
[
eNB_id
]
<
PUSCH
)
?
1
:
0
,
// if we're in PUSCH don't listen to common search space,
// later when we need paging or RA during connection, update this ...
eNB_id
,
subframe_rx
);
}
else
{
// search only preconfigured dcis
// search C RNTI dci
dci_cnt
=
dci_CRNTI_decoding_procedure
(
ue
,
dci_alloc_rx
,
dciFormat
,
agregationLevel
,
eNB_id
,
subframe_rx
);
}
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_DCI_DECODING
,
VCD_FUNCTION_OUT
);
//LOG_D(PHY,"[UE %d][PUSCH] Frame %d subframe %d PHICH RX\n",ue->Mod_id,frame_rx,subframe_rx);
...
...
@@ -3721,7 +3741,6 @@ void ue_pdsch_procedures(PHY_VARS_UE *ue, UE_rxtx_proc_t *proc, int eNB_id, PDSC
if
(
first_symbol_flag
)
{
proc
->
first_symbol_available
=
1
;
printf
(
"Set first_symbol_available to 1
\n
"
);
}
}
// CRNTI active
}
...
...
@@ -5125,10 +5144,15 @@ int phy_procedures_UE_RX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,
((
pmch_flag
==
1
)
&
(
l
==
l2
)))
{
LOG_D
(
PHY
,
"[UE %d] Frame %d: Calling pdcch procedures (eNB %d)
\n
"
,
ue
->
Mod_id
,
frame_rx
,
eNB_id
);
//start_meas(&ue->rx_pdcch_stats[subframe_rx%RX_NB_TH]);
if
(
ue_pdcch_procedures
(
eNB_id
,
ue
,
proc
,
abstraction_flag
)
==
-
1
)
{
LOG_E
(
PHY
,
"[UE %d] Frame %d, subframe %d: Error in pdcch procedures
\n
"
,
ue
->
Mod_id
,
frame_rx
,
subframe_rx
);
return
(
-
1
);
}
//stop_meas(&ue->rx_pdcch_stats[subframe_rx%RX_NB_TH]);
//printf("subframe %d n_pdcch_sym %d pdcch procedures %5.3f \n",
// subframe_rx, ue->pdcch_vars[subframe_rx%RX_NB_TH][eNB_id]->num_pdcch_symbols,
// (ue->rx_pdcch_stats[subframe_rx%RX_NB_TH].p_time)/(cpuf*1000.0));
LOG_D
(
PHY
,
"num_pdcch_symbols %d
\n
"
,
ue
->
pdcch_vars
[
subframe_rx
%
RX_NB_TH
][
eNB_id
]
->
num_pdcch_symbols
);
}
}
...
...
targets/RT/USER/lte-softmodem.c
View file @
aae302f1
...
...
@@ -150,6 +150,9 @@ int chain_offset=0;
int
phy_test
=
0
;
uint8_t
usim_test
=
0
;
uint8_t
dci_Format
=
0
;
uint8_t
agregation_Level
=
0xFF
;
uint8_t
nb_antenna_tx
=
1
;
uint8_t
nb_antenna_rx
=
1
;
...
...
@@ -329,6 +332,8 @@ void help (void) {
printf
(
" --external-clock tells hardware to use an external clock reference
\n
"
);
printf
(
" --usim-test use XOR autentication algo in case of test usim mode
\n
"
);
printf
(
" --single-thread-disable. Disables single-thread mode in lte-softmodem
\n
"
);
printf
(
" --AgregationLevel Choose the agregation level used by tghe eNB for the OAI use 1, it will save some time of processing the pdcch
\n
"
);
printf
(
" --DCIformat choose the DCI format, be careful when using this option(for the moment only valid for SISO DCI format 1)
\n
"
);
printf
(
" -A Set timing_advance
\n
"
);
printf
(
" -C Set the downlink frequency for all component carriers
\n
"
);
printf
(
" -d Enable soft scope and L1 and L2 stats (Xforms)
\n
"
);
...
...
@@ -643,6 +648,8 @@ static void get_options (int argc, char **argv) {
LONG_OPTION_THREADSLOT1PROCONE
,
LONG_OPTION_THREADSLOT1PROCTWO
,
LONG_OPTION_THREADSLOT1PROCTHREE
,
LONG_OPTION_DCIFORMAT
,
LONG_OPTION_AGREGATIONLEVEL
,
LONG_OPTION_DEMOD_SHIFT
,
#if T_TRACER
LONG_OPTION_T_PORT
,
...
...
@@ -683,6 +690,8 @@ static void get_options (int argc, char **argv) {
{
"threadSlot1ProcOne"
,
required_argument
,
NULL
,
LONG_OPTION_THREADSLOT1PROCONE
},
{
"threadSlot1ProcTwo"
,
required_argument
,
NULL
,
LONG_OPTION_THREADSLOT1PROCTWO
},
{
"threadSlot1ProcThree"
,
required_argument
,
NULL
,
LONG_OPTION_THREADSLOT1PROCTHREE
},
{
"DCIformat"
,
required_argument
,
NULL
,
LONG_OPTION_DCIFORMAT
},
{
"AgregationLevel"
,
required_argument
,
NULL
,
LONG_OPTION_AGREGATIONLEVEL
},
{
"dlsch-demod-shift"
,
required_argument
,
NULL
,
LONG_OPTION_DEMOD_SHIFT
},
#if T_TRACER
{
"T_port"
,
required_argument
,
0
,
LONG_OPTION_T_PORT
},
...
...
@@ -826,6 +835,12 @@ static void get_options (int argc, char **argv) {
case
LONG_OPTION_THREADSLOT1PROCTHREE
:
threads
.
slot1_proc_three
=
atoi
(
optarg
);
break
;
case
LONG_OPTION_DCIFORMAT
:
dci_Format
=
atoi
(
optarg
);
break
;
case
LONG_OPTION_AGREGATIONLEVEL
:
agregation_Level
=
atoi
(
optarg
);
break
;
case
LONG_OPTION_DEMOD_SHIFT
:
{
extern
int16_t
dlsch_demod_shift
;
dlsch_demod_shift
=
atof
(
optarg
);
...
...
@@ -1575,6 +1590,11 @@ int main( int argc, char **argv ) {
NB_UE_INST
=
1
;
NB_INST
=
1
;
dciFormat
=
dci_Format
;
agregationLevel
=
agregation_Level
;
LOG_I
(
PHY
,
"Set dciFormat %d , agregationLevel %d
\n
"
,
dciFormat
,
agregationLevel
);
PHY_vars_UE_g
=
malloc
(
sizeof
(
PHY_VARS_UE
**
));
PHY_vars_UE_g
[
0
]
=
malloc
(
sizeof
(
PHY_VARS_UE
*
)
*
MAX_NUM_CCs
);
...
...
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