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
lizhongxiao
OpenXG-RAN
Commits
f770958d
Commit
f770958d
authored
Jul 08, 2023
by
francescomani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
workaround to make UE decode DLSCH with other SI
parent
924be4ed
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
17 additions
and
15 deletions
+17
-15
nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_interface.h
nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_interface.h
+3
-0
openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
+1
-5
openair1/PHY/NR_UE_ESTIMATION/nr_estimation.h
openair1/PHY/NR_UE_ESTIMATION/nr_estimation.h
+1
-1
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
+3
-4
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
+9
-5
No files found.
nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_interface.h
View file @
f770958d
...
...
@@ -442,6 +442,9 @@ typedef struct {
uint16_t
start_rb
;
uint16_t
number_symbols
;
uint16_t
start_symbol
;
// TODO this is a workaround to make it work
// implementation is also a bunch of workarounds
uint16_t
rb_offset
;
uint16_t
dlDmrsSymbPos
;
uint8_t
dmrsConfigType
;
uint8_t
prb_bundling_size_ind
;
...
...
openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
View file @
f770958d
...
...
@@ -1597,13 +1597,13 @@ void NFAPI_NR_DMRS_TYPE2_average_prb(NR_DL_FRAME_PARMS *frame_parms,
}
int
nr_pdsch_channel_estimation
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
bool
is_SI
,
unsigned
short
p
,
unsigned
char
symbol
,
unsigned
char
nscid
,
unsigned
short
scrambling_id
,
unsigned
short
BWPStart
,
uint8_t
config_type
,
uint16_t
rb_offset
,
unsigned
short
bwp_start_subcarrier
,
unsigned
short
nb_rb_pdsch
,
uint32_t
pdsch_est_size
,
...
...
@@ -1629,10 +1629,6 @@ int nr_pdsch_channel_estimation(PHY_VARS_NR_UE *ue,
#endif
// generate pilot for gNB port number 1000+p
uint16_t
rb_offset
=
(
bwp_start_subcarrier
-
ue
->
frame_parms
.
first_carrier_offset
)
/
12
;
if
(
is_SI
)
{
rb_offset
-=
BWPStart
;
}
int8_t
delta
=
get_delta
(
p
,
config_type
);
// checking if re-initialization of scrambling IDs is needed
...
...
openair1/PHY/NR_UE_ESTIMATION/nr_estimation.h
View file @
f770958d
...
...
@@ -80,13 +80,13 @@ int nr_pbch_channel_estimation(PHY_VARS_NR_UE *ue,
int
nr_pdsch_channel_estimation
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
bool
is_SI
,
unsigned
short
p
,
unsigned
char
symbol
,
unsigned
char
nscid
,
unsigned
short
scrambling_id
,
unsigned
short
BWPStart
,
uint8_t
config_type
,
uint16_t
rb_offset
,
unsigned
short
bwp_start_subcarrier
,
unsigned
short
nb_rb_pdsch
,
uint32_t
pdsch_est_size
,
...
...
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
View file @
f770958d
...
...
@@ -544,10 +544,9 @@ int nr_ue_pdsch_procedures(PHY_VARS_NR_UE *ue,
uint16_t
pdsch_nb_rb
=
dlsch0
->
dlsch_config
.
number_rbs
;
uint16_t
s0
=
dlsch0
->
dlsch_config
.
start_symbol
;
uint16_t
s1
=
dlsch0
->
dlsch_config
.
number_symbols
;
bool
is_SI
=
dlsch0
->
rnti_type
==
_SI_RNTI_
;
LOG_D
(
PHY
,
"[UE %d] nr_slot_rx %d, harq_pid %d (%d), rb_start %d, nb_rb %d, symbol_start %d, nb_symbols %d, DMRS mask %x, Nl %d
\n
"
,
ue
->
Mod_id
,
nr_slot_rx
,
harq_pid
,
dlsch0_harq
->
status
,
pdsch_start_rb
,
pdsch_nb_rb
,
s0
,
s1
,
dlsch0
->
dlsch_config
.
dlDmrsSymbPos
,
dlsch0
->
Nl
);
LOG_D
(
PHY
,
"[UE %d] nr_slot_rx %d, harq_pid %d (%d),
BWP start %d,
rb_start %d, nb_rb %d, symbol_start %d, nb_symbols %d, DMRS mask %x, Nl %d
\n
"
,
ue
->
Mod_id
,
nr_slot_rx
,
harq_pid
,
dlsch0_harq
->
status
,
BWPStart
,
pdsch_start_rb
,
pdsch_nb_rb
,
s0
,
s1
,
dlsch0
->
dlsch_config
.
dlDmrsSymbPos
,
dlsch0
->
Nl
);
const
uint32_t
pdsch_est_size
=
((
ue
->
frame_parms
.
symbols_per_slot
*
ue
->
frame_parms
.
ofdm_symbol_size
+
15
)
/
16
)
*
16
;
__attribute__
((
aligned
(
32
)))
int32_t
pdsch_dl_ch_estimates
[
ue
->
frame_parms
.
nb_antennas_rx
*
dlsch0
->
Nl
][
pdsch_est_size
];
...
...
@@ -569,13 +568,13 @@ int nr_ue_pdsch_procedures(PHY_VARS_NR_UE *ue,
LOG_D
(
PHY
,
"PDSCH Channel estimation gNB id %d, PDSCH antenna port %d, slot %d, symbol %d
\n
"
,
0
,
aatx
,
nr_slot_rx
,
m
);
nr_pdsch_channel_estimation
(
ue
,
proc
,
is_SI
,
get_dmrs_port
(
aatx
,
dlsch0
->
dlsch_config
.
dmrs_ports
),
m
,
dlsch0
->
dlsch_config
.
nscid
,
dlsch0
->
dlsch_config
.
dlDmrsScramblingId
,
BWPStart
,
dlsch0
->
dlsch_config
.
dmrsConfigType
,
dlsch0
->
dlsch_config
.
rb_offset
,
ue
->
frame_parms
.
first_carrier_offset
+
(
BWPStart
+
pdsch_start_rb
)
*
12
,
pdsch_nb_rb
,
pdsch_est_size
,
...
...
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
View file @
f770958d
...
...
@@ -661,7 +661,7 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, fr
dlsch_config_pdu_1_0
->
pduBitmap
=
0
;
NR_PDSCH_Config_t
*
pdsch_config
=
current_DL_BWP
?
current_DL_BWP
->
pdsch_Config
:
NULL
;
NR_PDSCH_Config_t
*
pdsch_config
=
(
current_DL_BWP
||
!
mac
->
get_sib1
)
?
current_DL_BWP
->
pdsch_Config
:
NULL
;
if
(
dci_ind
->
ss_type
==
NR_SearchSpace__searchSpaceType_PR_common
)
{
dlsch_config_pdu_1_0
->
BWPSize
=
mac
->
type0_PDCCH_CSS_config
.
num_rbs
?
mac
->
type0_PDCCH_CSS_config
.
num_rbs
:
current_DL_BWP
->
initial_BWPSize
;
dlsch_config_pdu_1_0
->
BWPStart
=
dci_ind
->
cset_start
;
...
...
@@ -678,7 +678,6 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, fr
dlsch_config_pdu_1_0
->
SubcarrierSpacing
=
mac
->
mib
->
subCarrierSpacingCommon
;
if
(
mac
->
frequency_range
==
FR2
)
dlsch_config_pdu_1_0
->
SubcarrierSpacing
=
mac
->
mib
->
subCarrierSpacingCommon
+
2
;
if
(
pdsch_config
)
pdsch_config
->
dmrs_DownlinkForPDSCH_MappingTypeA
->
choice
.
setup
->
dmrs_AdditionalPosition
=
NULL
;
// For PDSCH with mapping type A, the UE shall assume dmrs-AdditionalPosition='pos2'
}
else
{
dlsch_config_pdu_1_0
->
SubcarrierSpacing
=
current_DL_BWP
->
scs
;
if
(
ra
->
RA_window_cnt
>=
0
&&
rnti
==
ra
->
ra_rnti
){
...
...
@@ -694,19 +693,23 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, fr
LOG_W
(
MAC
,
"[%d.%d] Invalid frequency_domain_assignment. Possibly due to false DCI. Ignoring DCI!
\n
"
,
frame
,
slot
);
return
-
1
;
}
dlsch_config_pdu_1_0
->
rb_offset
=
dlsch_config_pdu_1_0
->
start_rb
+
dlsch_config_pdu_1_0
->
BWPStart
;
if
(
mac
->
get_sib1
)
dlsch_config_pdu_1_0
->
rb_offset
-=
dlsch_config_pdu_1_0
->
BWPStart
;
/* TIME_DOM_RESOURCE_ASSIGNMENT */
int
dmrs_typeA_pos
=
(
mac
->
scc
!=
NULL
)
?
mac
->
scc
->
dmrs_TypeA_Position
:
mac
->
mib
->
dmrs_TypeA_Position
;
// TODO need to differentiate SI_RNTI between SIB1 and other SIB
NR_tda_info_t
tda_info
=
get_dl_tda_info
(
current_DL_BWP
,
dci_ind
->
ss_type
,
dci
->
time_domain_assignment
.
val
,
dmrs_typeA_pos
,
mux_pattern
,
get_rnti_type
(
mac
,
rnti
),
coreset_type
,
rnti
==
SI_RNTI
);
dmrs_typeA_pos
,
mux_pattern
,
get_rnti_type
(
mac
,
rnti
),
coreset_type
,
mac
->
get_sib1
);
dlsch_config_pdu_1_0
->
number_symbols
=
tda_info
.
nrOfSymbols
;
dlsch_config_pdu_1_0
->
start_symbol
=
tda_info
.
startSymbolIndex
;
struct
NR_DMRS_DownlinkConfig
*
dl_dmrs_config
=
NULL
;
if
(
pdsch_config
)
dl_dmrs_config
=
(
tda_info
.
mapping_type
==
typeA
)
?
pdsch_config
->
dmrs_DownlinkForPDSCH_MappingTypeA
->
choice
.
setup
:
pdsch_config
->
dmrs_DownlinkForPDSCH_MappingTypeB
->
choice
.
setup
;
dl_dmrs_config
=
(
tda_info
.
mapping_type
==
typeA
)
?
pdsch_config
->
dmrs_DownlinkForPDSCH_MappingTypeA
->
choice
.
setup
:
pdsch_config
->
dmrs_DownlinkForPDSCH_MappingTypeB
->
choice
.
setup
;
dlsch_config_pdu_1_0
->
nscid
=
0
;
if
(
dl_dmrs_config
&&
dl_dmrs_config
->
scramblingID0
)
...
...
@@ -914,6 +917,7 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, fr
LOG_W
(
MAC
,
"[%d.%d] Invalid frequency_domain_assignment. Possibly due to false DCI. Ignoring DCI!
\n
"
,
frame
,
slot
);
return
-
1
;
}
dlsch_config_pdu_1_1
->
rb_offset
=
dlsch_config_pdu_1_1
->
start_rb
+
dlsch_config_pdu_1_1
->
BWPStart
;
/* TIME_DOM_RESOURCE_ASSIGNMENT */
int
dmrs_typeA_pos
=
(
mac
->
scc
!=
NULL
)
?
mac
->
scc
->
dmrs_TypeA_Position
:
mac
->
mib
->
dmrs_TypeA_Position
;
NR_tda_info_t
tda_info
=
get_dl_tda_info
(
current_DL_BWP
,
dci_ind
->
ss_type
,
dci
->
time_domain_assignment
.
val
,
...
...
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