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
promise
OpenXG-RAN
Commits
0dda7569
Commit
0dda7569
authored
6 years ago
by
Khodr Saaifan
Committed by
Thomas Schlichter
6 years ago
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
enable uci_fromat for TM4 at eNB
parent
4ae259b1
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
108 additions
and
22 deletions
+108
-22
openair1/PHY/LTE_TRANSPORT/dci_tools.c
openair1/PHY/LTE_TRANSPORT/dci_tools.c
+23
-7
openair1/PHY/LTE_TRANSPORT/print_stats.c
openair1/PHY/LTE_TRANSPORT/print_stats.c
+11
-4
openair1/PHY/LTE_TRANSPORT/uci_tools.c
openair1/PHY/LTE_TRANSPORT/uci_tools.c
+6
-1
openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c
openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c
+47
-5
openair1/SCHED/phy_procedures_lte_eNb.c
openair1/SCHED/phy_procedures_lte_eNb.c
+10
-0
openair1/SCHED/phy_procedures_lte_ue.c
openair1/SCHED/phy_procedures_lte_ue.c
+0
-2
targets/RT/USER/lte-softmodem.c
targets/RT/USER/lte-softmodem.c
+11
-3
No files found.
openair1/PHY/LTE_TRANSPORT/dci_tools.c
View file @
0dda7569
...
...
@@ -8486,10 +8486,12 @@ int generate_eNB_ulsch_params_from_dci(PHY_VARS_eNB *eNB,
* TODO: deal with TM 8&9 correctly when they are implemented.
* TODO: deal with periodic reporting if we implement it.
*/
if
(
transmission_mode
==
3
||
transmission_mode
==
4
)
//SFN FIX:
// O_RI: 1 bit for RI
//if (transmission_mode == 3 || transmission_mode == 4)
ulsch
->
harq_processes
[
harq_pid
]
->
O_RI
=
1
;
//we only support 2 antenna ports, so this is always 1 according to 3GPP 36.213 Table
else
ulsch
->
harq_processes
[
harq_pid
]
->
O_RI
=
0
;
//
else
//
ulsch->harq_processes[harq_pid]->O_RI = 0;
switch
(
transmission_mode
)
{
// The aperiodic CQI reporting mode is fixed for every transmission mode instead of being configured by higher layer signaling
...
...
@@ -8566,27 +8568,41 @@ int generate_eNB_ulsch_params_from_dci(PHY_VARS_eNB *eNB,
ulsch
->
harq_processes
[
harq_pid
]
->
uci_format
=
HLC_subband_cqi_mcs_CBA
;
}
else
{
ulsch
->
harq_processes
[
harq_pid
]
->
Or2
=
0
;
switch
(
frame_parms
->
N_RB_DL
)
{
case
6
:
ulsch
->
harq_processes
[
harq_pid
]
->
Or2
=
0
;
ulsch
->
harq_processes
[
harq_pid
]
->
Or1
=
sizeof_HLC_subband_cqi_nopmi_1_5MHz
;
break
;
case
25
:
ulsch
->
harq_processes
[
harq_pid
]
->
Or1
=
sizeof_HLC_subband_cqi_nopmi_5MHz
;
//SFN:
/*To support PMI reporting for transmission mode 2,
* Hardcoded only for 25 RBs to test TM4 feedback
* we add TM4 uci_format as follows:
* */
//ulsch->harq_processes[harq_pid]->Or2 = 0;
//ulsch->harq_processes[harq_pid]->Or1 = sizeof_HLC_subband_cqi_nopmi_5MHz;
ulsch
->
harq_processes
[
harq_pid
]
->
Or2
=
sizeof_wideband_cqi_rank2_2A_5MHz
;
ulsch
->
harq_processes
[
harq_pid
]
->
Or1
=
sizeof_wideband_cqi_rank1_2A_5MHz
;
break
;
case
50
:
ulsch
->
harq_processes
[
harq_pid
]
->
Or2
=
0
;
ulsch
->
harq_processes
[
harq_pid
]
->
Or1
=
sizeof_HLC_subband_cqi_nopmi_10MHz
;
break
;
case
100
:
ulsch
->
harq_processes
[
harq_pid
]
->
Or2
=
0
;
ulsch
->
harq_processes
[
harq_pid
]
->
Or1
=
sizeof_HLC_subband_cqi_nopmi_20MHz
;
break
;
}
ulsch
->
harq_processes
[
harq_pid
]
->
uci_format
=
HLC_subband_cqi_nopmi
;
/*SFN
* add uci_format wideband_cqi_rank1_2A into TM2*/
//ulsch->harq_processes[harq_pid]->uci_format = HLC_subband_cqi_nopmi;
ulsch
->
harq_processes
[
harq_pid
]
->
uci_format
=
wideband_cqi_rank1_2A
;
}
break
;
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/LTE_TRANSPORT/print_stats.c
View file @
0dda7569
...
...
@@ -700,12 +700,19 @@ int dump_eNB_stats(PHY_VARS_eNB *eNB, char* buffer, int length)
len += sprintf(&buffer[len],"\n");
*/
len
+=
sprintf
(
&
buffer
[
len
],
"DL TM %d,DL_cqi %d, DL_pmi_single %jx "
,
len
+=
sprintf
(
&
buffer
[
len
],
"////////////////////////CQI/PMI Reporting /////////////////////////////
\n
"
);
len
+=
sprintf
(
&
buffer
[
len
],
"DL TM %d, DL_cqi %d, Rank Indicator %d, DL_pmi_single %jx
\n
"
,
eNB
->
transmission_mode
[
UE_id
],
eNB
->
UE_stats
[
UE_id
].
DL_cqi
[
0
],
pmi2hex_2Ar1
(
eNB
->
UE_stats
[
UE_id
].
DL_pmi_single
));
eNB
->
UE_stats
[
UE_id
].
rank
,
eNB
->
UE_stats
[
UE_id
].
rank
?
pmi2hex_2Ar2
(
eNB
->
UE_stats
[
UE_id
].
DL_pmi_single
)
:
pmi2hex_2Ar1
(
eNB
->
UE_stats
[
UE_id
].
DL_pmi_single
));
len
+=
sprintf
(
&
buffer
[
len
],
"eNB can schedule TM %d
\n
"
,
eNB
->
UE_stats
[
UE_id
].
rank
?
4
:
2
);
len
+=
sprintf
(
&
buffer
[
len
],
"////////////////////////******************/////////////////////////////
\n
"
);
len
+=
sprintf
(
&
buffer
[
len
],
"Timing advance %d samples (%d 16Ts), update %d "
,
eNB
->
UE_stats
[
UE_id
].
UE_timing_offset
,
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/LTE_TRANSPORT/uci_tools.c
View file @
0dda7569
...
...
@@ -256,9 +256,12 @@ void extract_CQI(void *o,UCI_format_t uci_format,LTE_eNB_UE_stats *stats, uint8_
switch
(
uci_format
)
{
case
wideband_cqi_rank1_2A
:
/*sfn: we are here
*
* */
stats
->
DL_cqi
[
0
]
=
(((
wideband_cqi_rank1_2A_5MHz
*
)
o
)
->
cqi1
);
if
(
stats
->
DL_cqi
[
0
]
>
24
)
if
(
stats
->
DL_cqi
[
0
]
>
24
)
//limit CQI
stats
->
DL_cqi
[
0
]
=
24
;
stats
->
DL_pmi_single
=
((
wideband_cqi_rank1_2A_5MHz
*
)
o
)
->
pmi
;
...
...
@@ -284,6 +287,8 @@ void extract_CQI(void *o,UCI_format_t uci_format,LTE_eNB_UE_stats *stats, uint8_
break
;
case
HLC_subband_cqi_nopmi
:
//sfn debug here
stats
->
DL_cqi
[
0
]
=
(((
HLC_subband_cqi_nopmi_5MHz
*
)
o
)
->
cqi1
);
if
(
stats
->
DL_cqi
[
0
]
>
24
)
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c
View file @
0dda7569
...
...
@@ -51,7 +51,8 @@
#include "UTIL/LOG/vcd_signal_dumper.h"
//#define DEBUG_ULSCH_DECODING
//SFN
#include "sudas_tm4.h"
void
free_eNB_ulsch
(
LTE_eNB_ULSCH_t
*
ulsch
)
{
...
...
@@ -1333,9 +1334,15 @@ unsigned int ulsch_decoding(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,
for
(
i
=
0
;
i
<
Qprime_RI
;
i
++
)
{
r
=
Rmux_prime
-
1
-
(
i
>>
2
);
for
(
q
=
0
;
q
<
Q_m
;
q
++
)
ulsch_harq
->
q_RI
[(
q
+
(
Q_m
*
i
))
%
len_RI
]
+=
y
[
q
+
(
Q_m
*
((
r
*
Cmux
)
+
columnset
[
j
]))];
for
(
q
=
0
;
q
<
Q_m
;
q
++
){
//SFN bug fix here
if
(
i
==
0
)
ulsch_harq
->
q_RI
[(
q
+
(
Q_m
*
i
))
%
len_RI
]
=
y
[
q
+
(
Q_m
*
((
r
*
Cmux
)
+
columnset
[
j
]))];
// sudas_LOG_PHY(debug_sudas_LOG_PHY,"[SFN goo] ulsch_harq->q_RI[0] %d ulsch_harq->q_RI[1] %d len_RI %d\n",ulsch_harq->q_RI[0],ulsch_harq->q_RI[1],len_RI);
// fflush(debug_sudas_LOG_PHY);
}
ytag
[(
r
*
Cmux
)
+
columnset
[
j
]]
=
LTE_NULL
;
j
=
(
j
+
3
)
&
3
;
}
...
...
@@ -1540,17 +1547,52 @@ unsigned int ulsch_decoding(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,
}
// RI
//SFN: fix here
// rank 1
if
((
ulsch_harq
->
O_RI
==
1
)
&&
(
Qprime_RI
>
0
))
{
ulsch_harq
->
o_RI
[
0
]
=
((
ulsch_harq
->
q_RI
[
0
]
+
ulsch_harq
->
q_RI
[
Q_m
/
2
])
>
0
)
?
0
:
1
;
switch
(
Q_m
)
{
case
2
:
ulsch_harq
->
o_RI
[
0
]
=
((
ulsch_harq
->
q_RI
[
0
]
+
ulsch_harq
->
q_RI
[
1
])
>
0
)
?
1
:
0
;
// sudas_LOG_PHY(debug_sudas_LOG_PHY,"[SFN] ulsch_harq->q_RI[0] %d ulsch_harq->q_RI[1] %d Qprime_RI %d\n",ulsch_harq->q_RI[0],ulsch_harq->q_RI[1],Qprime_RI);
//sudas_LOG_PHY(debug_sudas_LOG_PHY,"[SFN] ulsch_harq->q_RI[0] %d ulsch_harq->q_RI[1] %d Qprime_RI %d\n",ulsch_harq->q_RI[0],ulsch_harq->q_RI[1],Qprime_RI);
//fflush(debug_sudas_LOG_PHY);
break
;
case
4
:
ulsch_harq
->
o_RI
[
0
]
=
((
ulsch_harq
->
q_RI
[
0
]
+
ulsch_harq
->
q_RI
[
1
])
>
0
)
?
1
:
0
;
//sudas_LOG_PHY(debug_sudas_LOG_PHY,"[SFN] ulsch_harq->q_RI[0] %d ulsch_harq->q_RI[1] %d Qprime_RI %d\n",ulsch_harq->q_RI[0],ulsch_harq->q_RI[1],Qprime_RI);
//fflush(debug_sudas_LOG_PHY);
break
;
case
6
:
ulsch_harq
->
o_RI
[
0
]
=
((
ulsch_harq
->
q_RI
[
0
]
+
ulsch_harq
->
q_RI
[
1
])
>
0
)
?
1
:
0
;
//sudas_LOG_PHY(debug_sudas_LOG_PHY,"[SFN] ulsch_harq->q_RI[0] %d ulsch_harq->q_RI[1] %d Qprime_RI %d\n",ulsch_harq->q_RI[0],ulsch_harq->q_RI[1],Qprime_RI);
//fflush(debug_sudas_LOG_PHY);
break
;
}
//sudas_LOG_PHY(debug_sudas_LOG_PHY,"[SFN]ulsch_harq->o_RI[0] %d Qprime_RI %d\n",ulsch_harq->o_RI[0],Qprime_RI);
//fflush(debug_sudas_LOG_PHY);
}
//ulsch_harq->o_RI[0] = ulsch_harq->q_RI[0]&1;//((ulsch_harq->q_RI[0] + ulsch_harq->q_RI[Q_m/2]) > 0) ? 0 : 1;
// CQI
static
int
ri_disply_cntr
=
0
;
// printf("before cqi c[%d] = %p\n",0,ulsch_harq->c[0]);
ulsch_harq
->
cqi_crc_status
=
0
;
if
(
Q_CQI
>
0
)
{
ri_disply_cntr
++
;
if
(
ri_disply_cntr
>
10
){
ri_disply_cntr
=
0
;
//show log
LOG_I
(
PHY
,
"Qprime_RI %d [SFN CQI reports %d] O_RI %d o_RI[0]%d
\n
"
,
Qprime_RI
,
ri_disply_cntr
,
ulsch_harq
->
O_RI
,
ulsch_harq
->
o_RI
[
0
]);
}
//sudas_LOG_PHY(debug_sudas_LOG_PHY,"[SFN]ulsch_harq->O_RI %d ulsch_harq->o_RI[0]%d\n",ulsch_harq->O_RI,ulsch_harq->o_RI[0]);
// fflush(debug_sudas_LOG_PHY);
memset
((
void
*
)
&
dummy_w_cc
[
0
],
0
,
3
*
(
ulsch_harq
->
Or1
+
8
+
32
));
O_RCC
=
generate_dummy_w_cc
(
ulsch_harq
->
Or1
+
8
,
...
...
This diff is collapsed.
Click to expand it.
openair1/SCHED/phy_procedures_lte_eNb.c
View file @
0dda7569
...
...
@@ -57,6 +57,11 @@
#include <time.h>
//SFN
#include "sudas_tm4.h"
#if defined(ENABLE_ITTI)
# include "intertask_interface.h"
#endif
...
...
@@ -3115,6 +3120,11 @@ void phy_procedures_eNB_uespec_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,const
#endif
eNB
->
ulsch
[
i
]
->
harq_processes
[
harq_pid
]
->
subframe_scheduling_flag
=
0
;
/* sfn: CQI/PMI Extract
*
*
* */
if
(
eNB
->
ulsch
[
i
]
->
harq_processes
[
harq_pid
]
->
cqi_crc_status
==
1
)
{
#ifdef DEBUG_PHY_PROC
//if (((frame%10) == 0) || (frame < 50))
...
...
This diff is collapsed.
Click to expand it.
openair1/SCHED/phy_procedures_lte_ue.c
View file @
0dda7569
...
...
@@ -1553,8 +1553,6 @@ void ue_ulsch_uespec_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB
uint8_t
ack_status_cw1
=
0
;
uint8_t
cqi_status
=
0
;
uint8_t
ri_status
=
0
;
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX_ULSCH_UESPEC
,
VCD_FUNCTION_IN
);
// get harq_pid from subframe relationship
...
...
This diff is collapsed.
Click to expand it.
targets/RT/USER/lte-softmodem.c
View file @
0dda7569
...
...
@@ -1214,6 +1214,11 @@ static void get_options (int argc, char **argv) {
//this is needed for phy-test option
transmission_mode
=
enb_properties
->
properties
[
0
]
->
ue_TransmissionMode
[
0
]
+
1
;
//SFN: Transmission Mode
//sudas_LOG_PHY(debug_sudas_LOG_PHY,"[get_optrian()]: ue_TransmissionMode %d transmission_mode %d\n",enb_properties->properties[0]->ue_TransmissionMode[0],transmission_mode);
//fflush(debug_sudas_LOG_PHY);
}
else
if
(
UE_flag
==
1
)
{
if
(
conf_config_file_name
!=
NULL
)
{
...
...
@@ -1388,10 +1393,10 @@ int main( int argc, char **argv ) {
int
i
,
j
,
k
,
aa
,
re
;
debug_sudas_LOG_PHY
=
fopen
(
"debug_sudas_LOG_PHY.txt"
,
"w"
);
debug_sudas_LOG_MAC
=
fopen
(
"debug_sudas_LOG_MAC.txt"
,
"w"
);
debug_sudas_LOG_MAC
=
fopen
(
"debug_sudas_LOG_MAC.txt"
,
"w"
);
sudas_LOG_PHY
(
debug_sudas_LOG_PHY
,
"main();
\n
"
);
fflush
(
debug_sudas_LOG_PHY
);
sudas_LOG_PHY
(
debug_sudas_LOG_PHY
,
"main();
\n
"
);
fflush
(
debug_sudas_LOG_PHY
);
...
...
@@ -1671,6 +1676,9 @@ int main( int argc, char **argv ) {
// initialization for phy-test
for
(
k
=
0
;
k
<
NUMBER_OF_UE_MAX
;
k
++
)
{
PHY_vars_eNB_g
[
0
][
CC_id
]
->
transmission_mode
[
k
]
=
transmission_mode
;
//SFN
//sudas_LOG_PHY(debug_sudas_LOG_PHY,"[init eNB]: PHY_vars_eNB_g[0][%d]->transmission_mode[%d]= %d\n",CC_id,k,transmission_mode);
//fflush(debug_sudas_LOG_PHY);
if
(
transmission_mode
==
7
)
lte_gold_ue_spec_port5
(
PHY_vars_eNB_g
[
0
][
CC_id
]
->
lte_gold_uespec_port5_table
[
k
],
frame_parms
[
CC_id
]
->
Nid_cell
,
0x1235
+
k
);
}
...
...
This diff is collapsed.
Click to expand it.
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