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
ZhouShuya
OpenXG-RAN
Commits
780c7b03
Commit
780c7b03
authored
Apr 25, 2017
by
gabrielC
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
- fix for TDD config 3
parent
5e149161
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
39 additions
and
19 deletions
+39
-19
openair1/PHY/LTE_TRANSPORT/dlsch_decoding.c
openair1/PHY/LTE_TRANSPORT/dlsch_decoding.c
+9
-9
openair1/SCHED/phy_procedures_lte_common.c
openair1/SCHED/phy_procedures_lte_common.c
+5
-3
openair1/SCHED/phy_procedures_lte_ue.c
openair1/SCHED/phy_procedures_lte_ue.c
+25
-7
No files found.
openair1/PHY/LTE_TRANSPORT/dlsch_decoding.c
View file @
780c7b03
...
...
@@ -641,8 +641,8 @@ uint32_t dlsch_decoding(PHY_VARS_UE *phy_vars_ue,
frame_rx_prev
=
frame_rx_prev
%
1024
;
if
(
err_flag
==
1
)
{
LOG_I
(
PHY
,
"[UE %d] DLSCH: Setting NAK for SFN/SF %d/%d (pid %d, status %d, round %d, TBS %d, mcs %d) Kr %d r %d harq_process->round %d
\n
"
,
phy_vars_ue
->
Mod_id
,
frame
,
subframe
,
harq_pid
,
harq_process
->
status
,
harq_process
->
round
,
harq_process
->
TBS
,
harq_process
->
mcs
,
Kr
,
r
,
harq_process
->
round
);
//
LOG_I(PHY,"[UE %d] DLSCH: Setting NAK for SFN/SF %d/%d (pid %d, status %d, round %d, TBS %d, mcs %d) Kr %d r %d harq_process->round %d\n",
//
phy_vars_ue->Mod_id, frame, subframe, harq_pid,harq_process->status, harq_process->round,harq_process->TBS,harq_process->mcs,Kr,r,harq_process->round);
if
(
0
){
// (harq_process->nb_rb==25 && r==3 && harq_process->round==0 ) {
...
...
@@ -671,17 +671,17 @@ uint32_t dlsch_decoding(PHY_VARS_UE *phy_vars_ue,
}
if
(
is_crnti
)
{
LOG_
D
(
PHY
,
"[UE %d] DLSCH: Setting NACK for subframe %d (pid %d, pid status %d, round %d/Max %d, TBS %d)
\n
"
,
LOG_
I
(
PHY
,
"[UE %d] DLSCH: Setting NACK for subframe %d (pid %d, pid status %d, round %d/Max %d, TBS %d)
\n
"
,
phy_vars_ue
->
Mod_id
,
subframe
,
harq_pid
,
harq_process
->
status
,
harq_process
->
round
,
dlsch
->
Mdlharq
,
harq_process
->
TBS
);
}
return
((
1
+
dlsch
->
max_turbo_iterations
));
}
else
{
LOG_I
(
PHY
,
"[UE %d] DLSCH: Setting ACK for subframe %d TBS %d harq_process->mcs %d harq_process->nb_rb %d
\n
"
,
phy_vars_ue
->
Mod_id
,
subframe
,
harq_process
->
TBS
,
harq_process
->
mcs
,
harq_process
->
nb_rb
);
//
LOG_I(PHY,"[UE %d] DLSCH: Setting ACK for subframe %d TBS %d harq_process->mcs %d harq_process->nb_rb %d\n",
//
phy_vars_ue->Mod_id,subframe,harq_process->TBS,harq_process->mcs,harq_process->nb_rb);
if
(
harq_process
->
nb_rb
==
25
&&
harq_process
->
mcs
==
28
)
{
if
(
0
){
// (harq_process->mcs==28 && (subframe ==5 || subframe==0)
) {
write_output
(
"decoder_llr_ok.m"
,
"decllr_ok"
,
dlsch_llr
,
G
,
1
,
0
);
write_output
(
"rxdataF0_ok.m"
,
"rxdataF0_ok"
,
&
phy_vars_ue
->
common_vars
.
common_vars_rx_data_per_thread
[
subframe
&
0x1
].
rxdataF
[
0
][
0
],
14
*
frame_parms
->
ofdm_symbol_size
,
1
,
1
);
write_output
(
"dl_ch_estimates_ext00.m"
,
"dl_ch_estimates_ext00_ok"
,
&
phy_vars_ue
->
pdsch_vars
[
subframe
&
0x1
][
0
]
->
dl_ch_estimates_ext
[
0
][
0
],
14
*
frame_parms
->
N_RB_DL
*
12
,
1
,
1
);
...
...
@@ -696,12 +696,12 @@ uint32_t dlsch_decoding(PHY_VARS_UE *phy_vars_ue,
dlsch
->
harq_ack
[
subframe
].
ack
=
1
;
dlsch
->
harq_ack
[
subframe
].
harq_id
=
harq_pid
;
dlsch
->
harq_ack
[
subframe
].
send_harq_status
=
1
;
LOG_I
(
PHY
,
"[UE %d] DLSCH: Setting ACK for SFN/SF %d/%d (pid %d, status %d, round %d, TBS %d, mcs %d)
\n
"
,
phy_vars_ue
->
Mod_id
,
frame
,
subframe
,
harq_pid
,
harq_process
->
status
,
harq_process
->
round
,
harq_process
->
TBS
,
harq_process
->
mcs
);
//
LOG_I(PHY,"[UE %d] DLSCH: Setting ACK for SFN/SF %d/%d (pid %d, status %d, round %d, TBS %d, mcs %d)\n",
//
phy_vars_ue->Mod_id, frame, subframe, harq_pid, harq_process->status, harq_process->round,harq_process->TBS,harq_process->mcs);
if
(
is_crnti
)
{
LOG_
D
(
PHY
,
"[UE %d] DLSCH: Setting ACK for subframe %d (pid %d, round %d, TBS %d)
\n
"
,
phy_vars_ue
->
Mod_id
,
subframe
,
harq_pid
,
harq_process
->
round
,
harq_process
->
TBS
);
LOG_
I
(
PHY
,
"[UE %d] DLSCH: Setting ACK for subframe %d (pid %d, round %d, TBS %d)
\n
"
,
phy_vars_ue
->
Mod_id
,
subframe
,
harq_pid
,
harq_process
->
round
,
harq_process
->
TBS
);
}
//LOG_D(PHY,"[UE %d] DLSCH: Setting ACK for subframe %d (pid %d, round %d)\n",phy_vars_ue->Mod_id,subframe,harq_pid,harq_process->round);
...
...
openair1/SCHED/phy_procedures_lte_common.c
View file @
780c7b03
...
...
@@ -455,15 +455,17 @@ uint8_t get_reset_ack(LTE_DL_FRAME_PARMS *frame_parms,
// report ACK/NACK status
if
(
harq_ack
[
subframe_dl0
].
send_harq_status
==
1
)
{
o_ACK
[
0
]
=
harq_ack
[
subframe_dl0
].
ack
;
o_ACK
[
cw_idx
]
=
harq_ack
[
subframe_dl0
].
ack
;
if
(
harq_ack
[
subframe_dl1
].
send_harq_status
==
1
)
o_ACK
[
1
]
=
harq_ack
[
subframe_dl1
].
ack
;
o_ACK
[
cw_idx
]
&
=
harq_ack
[
subframe_dl1
].
ack
;
}
else
if
(
harq_ack
[
subframe_dl1
].
send_harq_status
==
1
)
o_ACK
[
0
]
=
harq_ack
[
subframe_dl1
].
ack
;
o_ACK
[
cw_idx
]
=
harq_ack
[
subframe_dl1
].
ack
;
status
=
harq_ack
[
subframe_dl0
].
send_harq_status
+
(
harq_ack
[
subframe_dl1
].
send_harq_status
<<
1
);
LOG_I
(
PHY
,
"TDD Config3 UL Sfn %d, dl Sfn0 %d status %d, dl Sfn1 %d status %d
\n
"
,
subframe
,
subframe_dl0
,
harq_ack
[
subframe_dl0
].
send_harq_status
,
subframe_dl1
,
harq_ack
[
subframe_dl1
].
send_harq_status
);
if
(
do_reset
)
{
// reset ACK/NACK status
harq_ack
[
subframe_dl0
].
ack
=
2
;
...
...
openair1/SCHED/phy_procedures_lte_ue.c
View file @
780c7b03
...
...
@@ -633,13 +633,15 @@ PUCCH_FMT_t get_pucch_format(lte_frame_type_t frame_type,
}
if
(
SR_payload
==
1
)
{
return
pucch_format1
;
/*
if (frame_type == FDD) {
return pucch_format1;
} else if (frame_type == TDD) {
return pucch_format1b;
} else {
AssertFatal(1==0,"Unknown frame_type");
}
}
*/
}
}
else
...
...
@@ -1793,7 +1795,7 @@ void ue_pucch_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
pucch_ack_payload
,
1
);
nb_cw
=
ack_status_cw0
+
ack_status_cw1
;
nb_cw
=
(
(
ack_status_cw0
!=
0
)
?
1
:
0
)
+
(
(
ack_status_cw1
!=
0
)
?
1
:
0
)
;
cqi_status
=
((
ue
->
cqi_report_config
[
eNB_id
].
CQI_ReportPeriodic
.
cqi_PMI_ConfigIndex
>
0
)
&&
(
is_cqi_TXOp
(
ue
,
proc
,
eNB_id
)
==
1
));
...
...
@@ -1830,8 +1832,8 @@ void ue_pucch_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
(
uint8_t
*
)
&
pucch_payload
,
&
len
);
LOG_
D
(
PHY
,
"PUCCH feedback AbsSubframe %d.%d SR %d NbCW %d
AckNack %d.%d CQI %d RI %d format %d pucch_resource %d pucch_payload %d %d
\n
"
,
frame_tx
%
1024
,
subframe_tx
,
SR_payload
,
nb_cw
,
pucch_ack_payload
[
0
],
pucch_ack_payload
[
1
],
cqi_status
,
ri_status
,
format
,
pucch_resource
,
pucch_payload
[
0
],
pucch_payload
[
1
]);
LOG_
I
(
PHY
,
"PUCCH feedback AbsSubframe %d.%d SR %d NbCW %d (%d %d)
AckNack %d.%d CQI %d RI %d format %d pucch_resource %d pucch_payload %d %d
\n
"
,
frame_tx
%
1024
,
subframe_tx
,
SR_payload
,
nb_cw
,
ack_status_cw0
,
ack_status_cw1
,
pucch_ack_payload
[
0
],
pucch_ack_payload
[
1
],
cqi_status
,
ri_status
,
format
,
pucch_resource
,
pucch_payload
[
0
],
pucch_payload
[
1
]);
// Part - IV
...
...
@@ -1866,7 +1868,7 @@ void ue_pucch_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
#endif
if
(
format
==
pucch_format1
)
{
LOG_
D
(
PHY
,
"[UE %d][SR %x] AbsSubframe %d.%d Generating PUCCH 1 (SR for PUSCH), an_srs_simultanous %d, shorten_pucch %d, n1_pucch %d, Po_PUCCH %d
\n
"
,
LOG_
I
(
PHY
,
"[UE %d][SR %x] AbsSubframe %d.%d Generating PUCCH 1 (SR for PUSCH), an_srs_simultanous %d, shorten_pucch %d, n1_pucch %d, Po_PUCCH %d
\n
"
,
Mod_id
,
ue
->
dlsch
[
subframe_DL
(
&
ue
->
frame_parms
,
proc
->
subframe_rx
)
&
0x1
][
eNB_id
][
0
]
->
rnti
,
frame_tx
%
1024
,
subframe_tx
,
...
...
@@ -1878,7 +1880,7 @@ void ue_pucch_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
else
{
if
(
SR_payload
>
0
)
{
LOG_
D
(
PHY
,
"[UE %d][SR %x] AbsSubFrame %d.%d Generating PUCCH %s payload %d,%d (with SR for PUSCH), an_srs_simultanous %d, shorten_pucch %d, n1_pucch %d, Po_PUCCH %d, amp %d
\n
"
,
LOG_
I
(
PHY
,
"[UE %d][SR %x] AbsSubFrame %d.%d Generating PUCCH %s payload %d,%d (with SR for PUSCH), an_srs_simultanous %d, shorten_pucch %d, n1_pucch %d, Po_PUCCH %d, amp %d
\n
"
,
Mod_id
,
ue
->
dlsch
[
subframe_DL
(
&
ue
->
frame_parms
,
proc
->
subframe_rx
)
&
0x1
][
eNB_id
][
0
]
->
rnti
,
frame_tx
%
1024
,
subframe_tx
,
...
...
@@ -1891,7 +1893,7 @@ void ue_pucch_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
Po_PUCCH
,
tx_amp
);
}
else
{
LOG_
D
(
PHY
,
"[UE %d][PDSCH %x] AbsSubFrame %d.%d rx_offset_diff: %d, Generating PUCCH %s, an_srs_simultanous %d, shorten_pucch %d, n1_pucch %d, b[0]=%d,b[1]=%d (SR_Payload %d), Po_PUCCH %d, amp %d
\n
"
,
LOG_
I
(
PHY
,
"[UE %d][PDSCH %x] AbsSubFrame %d.%d rx_offset_diff: %d, Generating PUCCH %s, an_srs_simultanous %d, shorten_pucch %d, n1_pucch %d, b[0]=%d,b[1]=%d (SR_Payload %d), Po_PUCCH %d, amp %d
\n
"
,
Mod_id
,
ue
->
dlsch
[
subframe_DL
(
&
ue
->
frame_parms
,
proc
->
subframe_rx
)
&
0x1
][
eNB_id
][
0
]
->
rnti
,
frame_tx
%
1024
,
subframe_tx
,
ue
->
rx_offset_diff
,
...
...
@@ -3999,6 +4001,22 @@ int phy_procedures_UE_RX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
ue
->
dlsch_ra
[
eNB_id
]
->
active
=
0
;
}
// duplicate harq structure
uint8_t
current_harq_pid
=
ue
->
dlsch
[
subframe_rx
&
0x1
][
eNB_id
][
0
]
->
current_harq_pid
;
LTE_DL_UE_HARQ_t
*
current_harq_processes
=
ue
->
dlsch
[
subframe_rx
&
0x1
][
eNB_id
][
0
]
->
harq_processes
[
current_harq_pid
];
LTE_DL_UE_HARQ_t
*
harq_processes_dest
=
ue
->
dlsch
[(
subframe_rx
+
1
)
&
0x1
][
eNB_id
][
0
]
->
harq_processes
[
current_harq_pid
];
harq_status_t
*
current_harq_ack
=
&
ue
->
dlsch
[
subframe_rx
&
0x1
][
eNB_id
][
0
]
->
harq_ack
[
subframe_rx
];
harq_status_t
*
harq_ack_dest
=
&
ue
->
dlsch
[(
subframe_rx
+
1
)
&
0x1
][
eNB_id
][
0
]
->
harq_ack
[
subframe_rx
];
memcpy
(
harq_processes_dest
,
current_harq_processes
,
sizeof
(
LTE_DL_UE_HARQ_t
));
memcpy
(
harq_ack_dest
,
current_harq_ack
,
sizeof
(
harq_status_t
));
LOG_I
(
PHY
,
"AbsSubframe %d.%d CurrentHarqProcess.status %d DestHarqProcess.status %d
\n
"
,
frame_rx
%
1024
,
subframe_rx
,
current_harq_processes
->
status
,
harq_processes_dest
->
status
);
LOG_I
(
PHY
,
"AbsSubframe %d.%d CurrentHarqProcess.round %d DestHarqProcess.round %d
\n
"
,
frame_rx
%
1024
,
subframe_rx
,
current_harq_processes
->
round
,
harq_processes_dest
->
round
);
LOG_I
(
PHY
,
"AbsSubframe %d.%d CurrentHarqProcess.delta_PUCCH %d DestHarqProcess.delta_PUCCH %d
\n
"
,
frame_rx
%
1024
,
subframe_rx
,
current_harq_processes
->
delta_PUCCH
,
harq_processes_dest
->
delta_PUCCH
);
LOG_I
(
PHY
,
"AbsSubframe %d.%d CurrentHarqProcess.rvidx %d DestHarqProcess.rvidx %d
\n
"
,
frame_rx
%
1024
,
subframe_rx
,
current_harq_processes
->
rvidx
,
harq_processes_dest
->
rvidx
);
if
(
subframe_rx
==
9
)
{
if
(
frame_rx
%
10
==
0
)
{
if
((
ue
->
dlsch_received
[
eNB_id
]
-
ue
->
dlsch_received_last
[
eNB_id
])
!=
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