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
canghaiwuhen
OpenXG-RAN
Commits
3fcdec1a
Commit
3fcdec1a
authored
May 03, 2017
by
gabrielC
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix for FDD
parent
ceb13b8a
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
14 additions
and
498 deletions
+14
-498
openair1/PHY/LTE_TRANSPORT/dci_tools.c
openair1/PHY/LTE_TRANSPORT/dci_tools.c
+8
-1
openair1/SCHED/phy_procedures_lte_common.c
openair1/SCHED/phy_procedures_lte_common.c
+1
-0
openair1/SCHED/phy_procedures_lte_ue.c
openair1/SCHED/phy_procedures_lte_ue.c
+5
-497
No files found.
openair1/PHY/LTE_TRANSPORT/dci_tools.c
View file @
3fcdec1a
...
...
@@ -8013,13 +8013,20 @@ int generate_ue_ulsch_params_from_dci(void *dci_pdu,
ulsch
->
bundling
=
1
-
AckNackFBMode
;
if
(
frame_parms
->
frame_type
==
FDD
)
{
int
dl_subframe
=
(
subframe
<
4
)
?
(
subframe
+
6
)
:
(
subframe
-
4
);
//int dl_subframe = (subframe<4) ? (subframe+6) : (subframe-4);
int
dl_subframe
=
subframe
;
if
(
ue
->
dlsch
[
subframe_DL
(
&
ue
->
frame_parms
,
dl_subframe
)
&
0x1
][
eNB_id
][
0
]
->
harq_ack
[
dl_subframe
].
send_harq_status
>
0
)
{
// we have downlink transmission
ulsch
->
harq_processes
[
harq_pid
]
->
O_ACK
=
1
;
}
else
{
ulsch
->
harq_processes
[
harq_pid
]
->
O_ACK
=
0
;
}
LOG_I
(
PHY
,
"DCI 0 Processing: dl_subframe %d send_harq_status Odd %d send_harq_status Even %d harq_pid %d O_ACK %d
\n
"
,
dl_subframe
,
ue
->
dlsch
[
0
][
eNB_id
][
0
]
->
harq_ack
[
dl_subframe
].
send_harq_status
,
ue
->
dlsch
[
1
][
eNB_id
][
0
]
->
harq_ack
[
dl_subframe
].
send_harq_status
,
harq_pid
,
ulsch
->
harq_processes
[
harq_pid
]
->
O_ACK
);
}
else
{
if
(
ulsch
->
bundling
)
ulsch
->
harq_processes
[
harq_pid
]
->
O_ACK
=
(
dai
==
3
)
?
0
:
1
;
...
...
openair1/SCHED/phy_procedures_lte_common.c
View file @
3fcdec1a
...
...
@@ -343,6 +343,7 @@ uint8_t get_reset_ack(LTE_DL_FRAME_PARMS *frame_parms,
o_ACK
[
cw_idx
]
=
harq_ack
[
subframe_dl0
].
ack
;
status
=
harq_ack
[
subframe_dl0
].
send_harq_status
;
LOG_I
(
PHY
,
"dl subframe %d send_harq_status %d cw_idx %d, reset %d
\n
"
,
subframe_dl0
,
status
,
cw_idx
,
do_reset
);
if
(
do_reset
)
harq_ack
[
subframe_dl0
].
send_harq_status
=
0
;
//printf("get_ack: Getting ACK/NAK for PDSCH (subframe %d) => %d\n",subframe_dl,o_ACK[0]);
...
...
openair1/SCHED/phy_procedures_lte_ue.c
View file @
3fcdec1a
...
...
@@ -457,507 +457,16 @@ void compute_cqi_ri_resources(PHY_VARS_UE *ue,
uint8_t
transmission_mode
=
ue
->
transmission_mode
[
eNB_id
];
LOG_I
(
PHY
,
"compute_cqi_ri_resources O_RI %d O %d uci format %d
\n
"
,
ulsch
->
O_RI
,
ulsch
->
O
,
ulsch
->
uci_format
);
if
(
cqi_status
==
1
||
ri_status
==
1
)
{
if
(
(
AntennaInfoDedicated__transmissionMode_tm3
==
transmission_mode
)
||
(
AntennaInfoDedicated__transmissionMode_tm4
==
transmission_mode
)
)
{
ulsch
->
O_RI
=
1
;
}
else
{
ulsch
->
O_RI
=
0
;
}
//ulsch->O_RI = 0; //we only support 2 antenna ports, so this is always 1 according to 3GPP 36.213 Table
switch
(
transmission_mode
)
{
// The aperiodic CQI reporting mode is fixed for every transmission mode instead of being configured by higher layer signaling
case
1
:
if
((
rnti
>=
cba_rnti
)
&&
(
rnti
<
p_rnti
))
{
switch
(
ue
->
frame_parms
.
N_RB_DL
)
{
case
6
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_mcs_CBA_1_5MHz
;
break
;
case
25
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_mcs_CBA_5MHz
;
break
;
case
50
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_mcs_CBA_10MHz
;
break
;
case
100
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_mcs_CBA_20MHz
;
break
;
}
ulsch
->
uci_format
=
HLC_subband_cqi_mcs_CBA
;
ulsch
->
o_RI
[
0
]
=
0
;
}
else
if
(
meas
->
rank
[
eNB_id
]
==
0
)
{
switch
(
ue
->
frame_parms
.
N_RB_DL
)
{
case
6
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_nopmi_1_5MHz
;
break
;
case
25
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_nopmi_5MHz
;
break
;
case
50
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_nopmi_10MHz
;
break
;
case
100
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_nopmi_20MHz
;
break
;
}
ulsch
->
uci_format
=
HLC_subband_cqi_nopmi
;
ulsch
->
o_RI
[
0
]
=
0
;
}
else
{
switch
(
ue
->
frame_parms
.
N_RB_DL
)
{
case
6
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_nopmi_1_5MHz
;
break
;
case
25
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_nopmi_5MHz
;
break
;
case
50
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_nopmi_10MHz
;
break
;
case
100
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_nopmi_20MHz
;
break
;
}
ulsch
->
uci_format
=
HLC_subband_cqi_nopmi
;
ulsch
->
o_RI
[
0
]
=
1
;
}
break
;
case
2
:
if
((
rnti
>=
cba_rnti
)
&&
(
rnti
<
p_rnti
))
{
switch
(
ue
->
frame_parms
.
N_RB_DL
)
{
case
6
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_mcs_CBA_1_5MHz
;
break
;
case
25
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_mcs_CBA_5MHz
;
break
;
case
50
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_mcs_CBA_10MHz
;
break
;
case
100
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_mcs_CBA_20MHz
;
break
;
}
ulsch
->
uci_format
=
HLC_subband_cqi_mcs_CBA
;
ulsch
->
o_RI
[
0
]
=
0
;
}
else
if
(
meas
->
rank
[
eNB_id
]
==
0
)
{
switch
(
ue
->
frame_parms
.
N_RB_DL
)
{
case
6
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_nopmi_1_5MHz
;
break
;
case
25
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_nopmi_5MHz
;
break
;
case
50
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_nopmi_10MHz
;
break
;
case
100
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_nopmi_20MHz
;
break
;
}
ulsch
->
uci_format
=
HLC_subband_cqi_nopmi
;
ulsch
->
o_RI
[
0
]
=
0
;
}
else
{
switch
(
ue
->
frame_parms
.
N_RB_DL
)
{
case
6
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_nopmi_1_5MHz
;
break
;
case
25
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_nopmi_5MHz
;
break
;
case
50
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_nopmi_10MHz
;
break
;
case
100
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_nopmi_20MHz
;
break
;
}
ulsch
->
uci_format
=
HLC_subband_cqi_nopmi
;
ulsch
->
o_RI
[
0
]
=
1
;
}
break
;
case
3
:
if
((
rnti
>=
cba_rnti
)
&&
(
rnti
<
p_rnti
))
{
switch
(
ue
->
frame_parms
.
N_RB_DL
)
{
case
6
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_mcs_CBA_1_5MHz
;
break
;
case
25
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_mcs_CBA_5MHz
;
break
;
case
50
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_mcs_CBA_10MHz
;
break
;
case
100
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_mcs_CBA_20MHz
;
break
;
}
ulsch
->
uci_format
=
HLC_subband_cqi_mcs_CBA
;
ulsch
->
o_RI
[
0
]
=
0
;
}
else
if
(
meas
->
rank
[
eNB_id
]
==
0
)
{
switch
(
ue
->
frame_parms
.
N_RB_DL
)
{
case
6
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_nopmi_1_5MHz
;
break
;
case
25
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_nopmi_5MHz
;
break
;
case
50
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_nopmi_10MHz
;
break
;
case
100
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_nopmi_20MHz
;
break
;
}
ulsch
->
uci_format
=
HLC_subband_cqi_nopmi
;
ulsch
->
o_RI
[
0
]
=
0
;
}
else
{
switch
(
ue
->
frame_parms
.
N_RB_DL
)
{
case
6
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_nopmi_1_5MHz
;
break
;
case
25
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_nopmi_5MHz
;
break
;
case
50
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_nopmi_10MHz
;
break
;
case
100
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_nopmi_20MHz
;
break
;
}
ulsch
->
uci_format
=
HLC_subband_cqi_nopmi
;
ulsch
->
o_RI
[
0
]
=
1
;
}
break
;
case
4
:
if
((
rnti
>=
cba_rnti
)
&&
(
rnti
<
p_rnti
))
{
switch
(
ue
->
frame_parms
.
N_RB_DL
)
{
case
6
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_mcs_CBA_1_5MHz
;
break
;
case
25
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_mcs_CBA_5MHz
;
break
;
case
50
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_mcs_CBA_10MHz
;
break
;
case
100
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_mcs_CBA_20MHz
;
break
;
}
ulsch
->
uci_format
=
HLC_subband_cqi_mcs_CBA
;
ulsch
->
o_RI
[
0
]
=
0
;
}
else
if
(
meas
->
rank
[
eNB_id
]
==
0
)
{
switch
(
ue
->
frame_parms
.
N_RB_DL
)
{
case
6
:
ulsch
->
O
=
sizeof_wideband_cqi_rank1_2A_1_5MHz
;
break
;
case
25
:
ulsch
->
O
=
sizeof_wideband_cqi_rank1_2A_5MHz
;
break
;
case
50
:
ulsch
->
O
=
sizeof_wideband_cqi_rank1_2A_10MHz
;
break
;
case
100
:
ulsch
->
O
=
sizeof_wideband_cqi_rank1_2A_20MHz
;
break
;
}
ulsch
->
uci_format
=
wideband_cqi_rank1_2A
;
ulsch
->
o_RI
[
0
]
=
0
;
}
else
{
switch
(
ue
->
frame_parms
.
N_RB_DL
)
{
case
6
:
ulsch
->
O
=
sizeof_wideband_cqi_rank2_2A_1_5MHz
;
break
;
case
25
:
ulsch
->
O
=
sizeof_wideband_cqi_rank2_2A_5MHz
;
break
;
case
50
:
ulsch
->
O
=
sizeof_wideband_cqi_rank2_2A_10MHz
;
break
;
case
100
:
ulsch
->
O
=
sizeof_wideband_cqi_rank2_2A_20MHz
;
break
;
}
ulsch
->
uci_format
=
wideband_cqi_rank2_2A
;
ulsch
->
o_RI
[
0
]
=
1
;
}
break
;
case
5
:
if
((
rnti
>=
cba_rnti
)
&&
(
rnti
<
p_rnti
))
{
switch
(
ue
->
frame_parms
.
N_RB_DL
)
{
case
6
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_mcs_CBA_1_5MHz
;
break
;
case
25
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_mcs_CBA_5MHz
;
break
;
case
50
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_mcs_CBA_10MHz
;
break
;
case
100
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_mcs_CBA_20MHz
;
break
;
}
ulsch
->
uci_format
=
HLC_subband_cqi_mcs_CBA
;
ulsch
->
o_RI
[
0
]
=
0
;
}
else
if
(
meas
->
rank
[
eNB_id
]
==
0
)
{
switch
(
ue
->
frame_parms
.
N_RB_DL
)
{
case
6
:
ulsch
->
O
=
sizeof_wideband_cqi_rank1_2A_1_5MHz
;
break
;
case
25
:
ulsch
->
O
=
sizeof_wideband_cqi_rank1_2A_5MHz
;
break
;
case
50
:
ulsch
->
O
=
sizeof_wideband_cqi_rank1_2A_10MHz
;
break
;
case
100
:
ulsch
->
O
=
sizeof_wideband_cqi_rank1_2A_20MHz
;
break
;
}
ulsch
->
uci_format
=
wideband_cqi_rank1_2A
;
ulsch
->
o_RI
[
0
]
=
0
;
}
else
{
switch
(
ue
->
frame_parms
.
N_RB_DL
)
{
case
6
:
ulsch
->
O
=
sizeof_wideband_cqi_rank2_2A_1_5MHz
;
break
;
case
25
:
ulsch
->
O
=
sizeof_wideband_cqi_rank2_2A_5MHz
;
break
;
case
50
:
ulsch
->
O
=
sizeof_wideband_cqi_rank2_2A_10MHz
;
break
;
case
100
:
ulsch
->
O
=
sizeof_wideband_cqi_rank2_2A_20MHz
;
break
;
}
ulsch
->
uci_format
=
wideband_cqi_rank2_2A
;
ulsch
->
o_RI
[
0
]
=
1
;
}
break
;
case
6
:
if
((
rnti
>=
cba_rnti
)
&&
(
rnti
<
p_rnti
))
{
switch
(
ue
->
frame_parms
.
N_RB_DL
)
{
case
6
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_mcs_CBA_1_5MHz
;
break
;
case
25
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_mcs_CBA_5MHz
;
break
;
case
50
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_mcs_CBA_10MHz
;
break
;
case
100
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_mcs_CBA_20MHz
;
break
;
}
ulsch
->
uci_format
=
HLC_subband_cqi_mcs_CBA
;
ulsch
->
o_RI
[
0
]
=
0
;
}
else
if
(
meas
->
rank
[
eNB_id
]
==
0
)
{
switch
(
ue
->
frame_parms
.
N_RB_DL
)
{
case
6
:
ulsch
->
O
=
sizeof_wideband_cqi_rank1_2A_1_5MHz
;
break
;
case
25
:
ulsch
->
O
=
sizeof_wideband_cqi_rank1_2A_5MHz
;
break
;
case
50
:
ulsch
->
O
=
sizeof_wideband_cqi_rank1_2A_10MHz
;
break
;
case
100
:
ulsch
->
O
=
sizeof_wideband_cqi_rank1_2A_20MHz
;
break
;
}
ulsch
->
uci_format
=
wideband_cqi_rank1_2A
;
ulsch
->
o_RI
[
0
]
=
0
;
}
else
{
switch
(
ue
->
frame_parms
.
N_RB_DL
)
{
case
6
:
ulsch
->
O
=
sizeof_wideband_cqi_rank2_2A_1_5MHz
;
break
;
case
25
:
ulsch
->
O
=
sizeof_wideband_cqi_rank2_2A_5MHz
;
break
;
case
50
:
ulsch
->
O
=
sizeof_wideband_cqi_rank2_2A_10MHz
;
break
;
case
100
:
ulsch
->
O
=
sizeof_wideband_cqi_rank2_2A_20MHz
;
break
;
}
ulsch
->
uci_format
=
wideband_cqi_rank2_2A
;
ulsch
->
o_RI
[
0
]
=
1
;
}
break
;
case
7
:
if
((
rnti
>=
cba_rnti
)
&&
(
rnti
<
p_rnti
))
{
switch
(
ue
->
frame_parms
.
N_RB_DL
)
{
case
6
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_mcs_CBA_1_5MHz
;
break
;
case
25
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_mcs_CBA_5MHz
;
break
;
case
50
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_mcs_CBA_10MHz
;
break
;
case
100
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_mcs_CBA_20MHz
;
break
;
}
ulsch
->
uci_format
=
HLC_subband_cqi_mcs_CBA
;
ulsch
->
o_RI
[
0
]
=
0
;
}
else
if
(
meas
->
rank
[
eNB_id
]
==
0
)
{
switch
(
ue
->
frame_parms
.
N_RB_DL
)
{
case
6
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_nopmi_1_5MHz
;
break
;
case
25
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_nopmi_5MHz
;
break
;
case
50
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_nopmi_10MHz
;
break
;
case
100
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_nopmi_20MHz
;
break
;
}
ulsch
->
uci_format
=
HLC_subband_cqi_nopmi
;
ulsch
->
o_RI
[
0
]
=
0
;
}
else
{
switch
(
ue
->
frame_parms
.
N_RB_DL
)
{
case
6
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_nopmi_1_5MHz
;
break
;
case
25
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_nopmi_5MHz
;
break
;
case
50
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_nopmi_10MHz
;
break
;
case
100
:
ulsch
->
O
=
sizeof_HLC_subband_cqi_nopmi_20MHz
;
break
;
}
ulsch
->
uci_format
=
HLC_subband_cqi_nopmi
;
ulsch
->
o_RI
[
0
]
=
1
;
}
break
;
default:
LOG_E
(
PHY
,
"Incorrect Transmission Mode
\n
"
);
break
;
}
ulsch
->
O
=
4
;
}
else
{
ulsch
->
O_RI
=
0
;
ulsch
->
O
=
0
;
ulsch
->
uci_format
=
HLC_subband_cqi_nopmi
;
//
ulsch->O_RI = 0;
//
ulsch->O = 0;
//
ulsch->uci_format = HLC_subband_cqi_nopmi;
}
}
...
...
@@ -1051,7 +560,6 @@ void ue_compute_srs_occasion(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id
}
LOG_D
(
PHY
,
" srsCellSubframe: %d, srsUeSubframe: %d, Nsymb-pusch: %d
\n
"
,
pSoundingrs_ul_config_dedicated
->
srsCellSubframe
,
pSoundingrs_ul_config_dedicated
->
srsUeSubframe
,
ue
->
ulsch
[
eNB_id
]
->
Nsymb_pusch
);
}
}
...
...
@@ -1875,7 +1383,7 @@ void ue_ulsch_uespec_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB
// check if we received a PDSCH at subframe_tx - 4
// ==> send ACK/NACK on PUSCH
//
ue->ulsch[eNB_id]->harq_processes[harq_pid]->O_ACK = ack_status_cw0 + ack_status_cw1;
ue
->
ulsch
[
eNB_id
]
->
harq_processes
[
harq_pid
]
->
O_ACK
=
ack_status_cw0
+
ack_status_cw1
;
#if T_TRACER
if
(
ue
->
ulsch
[
eNB_id
]
->
o_ACK
[
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