Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG UE
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
Michael Black
OpenXG UE
Commits
b123c51a
Commit
b123c51a
authored
Apr 09, 2021
by
francescomani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
modifications in aggregation level for sib1 and decoding of dci at ue for sib1
parent
6e102242
Changes
10
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
151 additions
and
116 deletions
+151
-116
openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c
openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c
+0
-1
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
+0
-1
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
+18
-9
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h
+1
-1
openair2/LAYER2/NR_MAC_UE/mac_defs.h
openair2/LAYER2/NR_MAC_UE/mac_defs.h
+1
-0
openair2/LAYER2/NR_MAC_UE/mac_proto.h
openair2/LAYER2/NR_MAC_UE/mac_proto.h
+5
-5
openair2/LAYER2/NR_MAC_UE/nr_ue_dci_configuration.c
openair2/LAYER2/NR_MAC_UE/nr_ue_dci_configuration.c
+2
-1
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
+80
-68
openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c
openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c
+35
-28
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c
+9
-2
No files found.
openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c
View file @
b123c51a
...
...
@@ -509,7 +509,6 @@ int nr_initial_sync(UE_nr_rxtx_proc_t *proc, PHY_VARS_NR_UE *ue, int n_frames, i
}
int
dci_cnt
=
nr_ue_pdcch_procedures
(
0
,
ue
,
proc
);
//gNB_id set to 0
}
// exit_fun("debug exit");
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_NR_INITIAL_UE_SYNC
,
VCD_FUNCTION_OUT
);
return
ret
;
...
...
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
View file @
b123c51a
...
...
@@ -114,7 +114,6 @@ void nr_fill_dl_indication(nr_downlink_indication_t *dl_ind,
dl_ind
->
dci_ind
=
NULL
;
}
}
void
nr_fill_rx_indication
(
fapi_nr_rx_indication_t
*
rx_ind
,
...
...
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
View file @
b123c51a
...
...
@@ -3523,7 +3523,7 @@ void fill_coresetZero(NR_ControlResourceSet_t *coreset0, NR_Type0_PDCCH_CSS_conf
}
void
fill_searchSpaceZero
(
NR_SearchSpace_t
*
ss0
,
NR_Type0_PDCCH_CSS_config_t
*
type0_PDCCH_CSS_config
)
{
uint8_t
fill_searchSpaceZero
(
NR_SearchSpace_t
*
ss0
,
NR_Type0_PDCCH_CSS_config_t
*
type0_PDCCH_CSS_config
,
int
L
)
{
if
(
ss0
==
NULL
)
ss0
=
calloc
(
1
,
sizeof
(
*
ss0
));
if
(
ss0
->
controlResourceSetId
==
NULL
)
ss0
->
controlResourceSetId
=
calloc
(
1
,
sizeof
(
*
ss0
->
controlResourceSetId
));
...
...
@@ -3536,11 +3536,13 @@ void fill_searchSpaceZero(NR_SearchSpace_t *ss0, NR_Type0_PDCCH_CSS_config_t *ty
ss0
->
searchSpaceType
->
choice
.
common
->
dci_Format0_0_AndFormat1_0
=
calloc
(
1
,
sizeof
(
*
ss0
->
searchSpaceType
->
choice
.
common
->
dci_Format0_0_AndFormat1_0
));
uint32_t
duration
,
periodicity
,
offset
;
uint16_t
symbols
,
n_cces
;
uint16_t
symbols
,
max_agg
;
AssertFatal
(
type0_PDCCH_CSS_config
!=
NULL
,
"No type0 CSS configuration
\n
"
);
n_cces
=
(
type0_PDCCH_CSS_config
->
num_symbols
*
type0_PDCCH_CSS_config
->
num_rbs
)
/
6
;
max_agg
=
(
type0_PDCCH_CSS_config
->
num_symbols
*
type0_PDCCH_CSS_config
->
num_rbs
)
/
6
;
if
(
L
>
max_agg
)
return
0
;
symbols
=
(
1
-
(
1
<<
type0_PDCCH_CSS_config
->
num_symbols
))
<<
type0_PDCCH_CSS_config
->
first_symbol_index
;
duration
=
type0_PDCCH_CSS_config
->
search_space_duration
;
periodicity
=
type0_PDCCH_CSS_config
->
search_space_frame_period
;
...
...
@@ -3569,24 +3571,31 @@ void fill_searchSpaceZero(NR_SearchSpace_t *ss0, NR_Type0_PDCCH_CSS_config_t *ty
ss0
->
monitoringSymbolsWithinSlot
->
buf
[
0
]
|=
((
symbols
>>
i
)
&
0x01
)
<<
(
7
-
i
);
}
//
values
according to TS38.213 Section 10.1 Table 10.1-1
//
max values are set
according to TS38.213 Section 10.1 Table 10.1-1
ss0
->
nrofCandidates
->
aggregationLevel1
=
NR_SearchSpace__nrofCandidates__aggregationLevel1_n0
;
ss0
->
nrofCandidates
->
aggregationLevel2
=
NR_SearchSpace__nrofCandidates__aggregationLevel2_n0
;
switch
(
n_cces
){
switch
(
L
){
case
4
:
ss0
->
nrofCandidates
->
aggregationLevel4
=
NR_SearchSpace__nrofCandidates__aggregationLevel4_n4
;
ss0
->
nrofCandidates
->
aggregationLevel4
=
(((
max_agg
>>
2
)
>
4
)
?
4
:
max_agg
>>
2
);
ss0
->
nrofCandidates
->
aggregationLevel8
=
NR_SearchSpace__nrofCandidates__aggregationLevel8_n0
;
ss0
->
nrofCandidates
->
aggregationLevel8
=
NR_SearchSpace__nrofCandidates__aggregationLevel16_n0
;
break
;
case
8
:
ss0
->
nrofCandidates
->
aggregationLevel8
=
NR_SearchSpace__nrofCandidates__aggregationLevel8_n2
;
ss0
->
nrofCandidates
->
aggregationLevel8
=
NR_SearchSpace__nrofCandidates__aggregationLevel4_n0
;
ss0
->
nrofCandidates
->
aggregationLevel8
=
(((
max_agg
>>
3
)
>
2
)
?
2
:
max_agg
>>
3
);
ss0
->
nrofCandidates
->
aggregationLevel8
=
NR_SearchSpace__nrofCandidates__aggregationLevel16_n0
;
break
;
case
16
:
ss0
->
nrofCandidates
->
aggregationLevel16
=
NR_SearchSpace__nrofCandidates__aggregationLevel16_n1
;
ss0
->
nrofCandidates
->
aggregationLevel8
=
NR_SearchSpace__nrofCandidates__aggregationLevel4_n0
;
ss0
->
nrofCandidates
->
aggregationLevel8
=
NR_SearchSpace__nrofCandidates__aggregationLevel8_n0
;
ss0
->
nrofCandidates
->
aggregationLevel16
=
(((
max_agg
>>
4
)
>
1
)
?
1
:
max_agg
>>
4
);
break
;
default:
AssertFatal
(
1
==
0
,
"Invalid
number of CCEs %d for SS0
\n
"
,
n_cces
);
AssertFatal
(
1
==
0
,
"Invalid
aggregation level %d for SS0
\n
"
,
L
);
}
ss0
->
searchSpaceType
->
present
=
NR_SearchSpace__searchSpaceType_PR_common
;
return
1
;
}
...
...
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h
View file @
b123c51a
...
...
@@ -141,7 +141,7 @@ void get_type0_PDCCH_CSS_config_parameters(NR_Type0_PDCCH_CSS_config_t *type0_PD
uint16_t
get_ssb_start_symbol
(
const
long
band
,
NR_SubcarrierSpacing_t
scs
,
int
i_ssb
);
void
fill_coresetZero
(
NR_ControlResourceSet_t
*
coreset0
,
NR_Type0_PDCCH_CSS_config_t
*
type0_PDCCH_CSS_config
);
void
fill_searchSpaceZero
(
NR_SearchSpace_t
*
ss0
,
NR_Type0_PDCCH_CSS_config_t
*
type0_PDCCH_CSS_config
);
uint8_t
fill_searchSpaceZero
(
NR_SearchSpace_t
*
ss0
,
NR_Type0_PDCCH_CSS_config_t
*
type0_PDCCH_CSS_config
,
int
L
);
int16_t
get_N_RA_RB
(
int
delta_f_RA_PRACH
,
int
delta_f_PUSCH
);
...
...
openair2/LAYER2/NR_MAC_UE/mac_defs.h
View file @
b123c51a
...
...
@@ -308,6 +308,7 @@ typedef struct {
typedef
struct
{
NR_ServingCellConfigCommon_t
*
scc
;
NR_ServingCellConfigCommonSIB_t
*
scc_SIB
;
NR_CellGroupConfig_t
*
scg
;
int
servCellIndex
;
NR_CSI_ReportConfig_t
*
csirc
;
...
...
openair2/LAYER2/NR_MAC_UE/mac_proto.h
View file @
b123c51a
...
...
@@ -179,12 +179,12 @@ uint8_t nr_extract_dci_info(NR_UE_MAC_INST_t *mac,
int8_t
nr_ue_process_dci_time_dom_resource_assignment
(
NR_UE_MAC_INST_t
*
mac
,
nfapi_nr_ue_pusch_pdu_t
*
pusch_config_pdu
,
fapi_nr_dl_config_dlsch_pdu_rel15_t
*
dlsch_config_pdu
,
uint8_t
time_domain_ind
);
uint8_t
time_domain_ind
,
bool
use_default
);
uint8_t
nr_ue_get_sdu
(
module_id_t
module_idP
,
int
CC_id
,
frame_t
frameP
,
sub_frame_t
subframe
,
uint8_t
eNB_index
,
uint8_t
*
ulsch_buffer
,
uint16_t
buflen
,
uint8_t
*
access_mode
)
;
uint8_t
nr_ue_get_sdu
(
module_id_t
module_idP
,
int
CC_id
,
frame_t
frameP
,
sub_frame_t
subframe
,
uint8_t
eNB_index
,
uint8_t
*
ulsch_buffer
,
uint16_t
buflen
,
uint8_t
*
access_mode
);
int
set_tdd_config_nr_ue
(
fapi_nr_config_request_t
*
cfg
,
int
mu
,
int
nrofDownlinkSlots
,
int
nrofDownlinkSymbols
,
...
...
openair2/LAYER2/NR_MAC_UE/nr_ue_dci_configuration.c
View file @
b123c51a
...
...
@@ -97,7 +97,8 @@ void config_dci_pdu(NR_UE_MAC_INST_t *mac, fapi_nr_dl_config_dci_dl_pdu_rel15_t
for
(
int
i
=
0
;
i
<
6
;
i
++
)
rel15
->
coreset
.
frequency_domain_resource
[
i
]
=
coreset
->
frequencyDomainResources
.
buf
[
i
];
rel15
->
coreset
.
CceRegMappingType
=
coreset
->
cce_REG_MappingType
.
present
==
NR_ControlResourceSet__cce_REG_MappingType_PR_interleaved
?
FAPI_NR_CCE_REG_MAPPING_TYPE_INTERLEAVED
:
FAPI_NR_CCE_REG_MAPPING_TYPE_NON_INTERLEAVED
;
rel15
->
coreset
.
CceRegMappingType
=
coreset
->
cce_REG_MappingType
.
present
==
NR_ControlResourceSet__cce_REG_MappingType_PR_interleaved
?
FAPI_NR_CCE_REG_MAPPING_TYPE_INTERLEAVED
:
FAPI_NR_CCE_REG_MAPPING_TYPE_NON_INTERLEAVED
;
if
(
rel15
->
coreset
.
CceRegMappingType
==
FAPI_NR_CCE_REG_MAPPING_TYPE_INTERLEAVED
)
{
struct
NR_ControlResourceSet__cce_REG_MappingType__interleaved
*
interleaved
=
coreset
->
cce_REG_MappingType
.
choice
.
interleaved
;
rel15
->
coreset
.
RegBundleSize
=
(
interleaved
->
reg_BundleSize
==
NR_ControlResourceSet__cce_REG_MappingType__interleaved__reg_BundleSize_n6
)
?
6
:
(
2
+
interleaved
->
reg_BundleSize
);
...
...
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
View file @
b123c51a
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c
View file @
b123c51a
...
...
@@ -665,7 +665,7 @@ int nr_config_pusch_pdu(NR_UE_MAC_INST_t *mac,
return
-
1
;
}
/* TIME_DOM_RESOURCE_ASSIGNMENT */
if
(
nr_ue_process_dci_time_dom_resource_assignment
(
mac
,
pusch_config_pdu
,
NULL
,
dci
->
time_domain_assignment
.
val
)
<
0
)
{
if
(
nr_ue_process_dci_time_dom_resource_assignment
(
mac
,
pusch_config_pdu
,
NULL
,
dci
->
time_domain_assignment
.
val
,
false
)
<
0
)
{
return
-
1
;
}
...
...
@@ -1749,7 +1749,9 @@ void nr_ue_sib1_scheduler(module_id_t module_idP,
NR_UE_MAC_INST_t
*
mac
=
get_mac_inst
(
module_idP
);
nr_scheduled_response_t
scheduled_response
;
int
frame_s
,
slot_s
;
int
frame_s
,
slot_s
,
ret
;
fapi_nr_dl_config_request_t
*
dl_config
=
&
mac
->
dl_config_request
;
fapi_nr_dl_config_dci_dl_pdu_rel15_t
*
rel15
;
uint8_t
scs_ssb
=
get_softmodem_params
()
->
numerology
;
uint16_t
ssb_offset_point_a
=
(
ssb_start_subcarrier
-
ssb_subcarrier_offset
)
/
12
;
...
...
@@ -1769,34 +1771,39 @@ void nr_ue_sib1_scheduler(module_id_t module_idP,
if
(
mac
->
search_space_zero
==
NULL
)
mac
->
search_space_zero
=
calloc
(
1
,
sizeof
(
*
mac
->
search_space_zero
));
if
(
mac
->
coreset0
==
NULL
)
mac
->
coreset0
=
calloc
(
1
,
sizeof
(
*
mac
->
coreset0
));
fill_coresetZero
(
mac
->
coreset0
,
&
mac
->
type0_PDCCH_CSS_config
);
fill_searchSpaceZero
(
mac
->
search_space_zero
,
&
mac
->
type0_PDCCH_CSS_config
);
fapi_nr_dl_config_request_t
*
dl_config
=
&
mac
->
dl_config_request
;
fapi_nr_dl_config_dci_dl_pdu_rel15_t
*
rel15
=
&
dl_config
->
dl_config_list
[
dl_config
->
number_pdus
].
dci_config_pdu
.
dci_config_rel15
;
rel15
->
num_dci_options
=
1
;
rel15
->
dci_format_options
[
0
]
=
NR_DL_DCI_FORMAT_1_0
;
config_dci_pdu
(
mac
,
rel15
,
dl_config
,
NR_RNTI_SI
,
-
1
);
fill_dci_search_candidates
(
mac
->
search_space_zero
,
rel15
);
if
(
mac
->
type0_PDCCH_CSS_config
.
type0_pdcch_ss_mux_pattern
==
1
){
// same frame as ssb
if
((
mac
->
type0_PDCCH_CSS_config
.
frame
&
0x1
)
==
mac
->
type0_PDCCH_CSS_config
.
sfn_c
)
frame_s
=
0
;
else
frame_s
=
1
;
slot_s
=
mac
->
type0_PDCCH_CSS_config
.
n_0
;
for
(
int
i
=
0
;
i
<
3
;
i
++
)
{
// loop over possible aggregation levels
fill_coresetZero
(
mac
->
coreset0
,
&
mac
->
type0_PDCCH_CSS_config
);
ret
=
fill_searchSpaceZero
(
mac
->
search_space_zero
,
&
mac
->
type0_PDCCH_CSS_config
,
4
<<
i
);
if
(
ret
)
{
rel15
=
&
dl_config
->
dl_config_list
[
dl_config
->
number_pdus
].
dci_config_pdu
.
dci_config_rel15
;
rel15
->
num_dci_options
=
1
;
rel15
->
dci_format_options
[
0
]
=
NR_DL_DCI_FORMAT_1_0
;
config_dci_pdu
(
mac
,
rel15
,
dl_config
,
NR_RNTI_SI
,
-
1
);
fill_dci_search_candidates
(
mac
->
search_space_zero
,
rel15
);
if
(
mac
->
type0_PDCCH_CSS_config
.
type0_pdcch_ss_mux_pattern
==
1
){
// same frame as ssb
if
((
mac
->
type0_PDCCH_CSS_config
.
frame
&
0x1
)
==
mac
->
type0_PDCCH_CSS_config
.
sfn_c
)
frame_s
=
0
;
else
frame_s
=
1
;
slot_s
=
mac
->
type0_PDCCH_CSS_config
.
n_0
;
}
else
{
frame_s
=
0
;
// same frame as ssb
slot_s
=
mac
->
type0_PDCCH_CSS_config
.
n_c
;
}
LOG_I
(
MAC
,
"Calling fill_scheduled_response, type0_pdcch, num_pdus %d
\n
"
,
dl_config
->
number_pdus
);
fill_scheduled_response
(
&
scheduled_response
,
dl_config
,
NULL
,
NULL
,
module_idP
,
cc_id
,
frame_s
,
slot_s
,
0
);
// TODO fix thread_id, for now assumed 0
}
}
else
{
frame_s
=
0
;
// same frame as ssb
slot_s
=
mac
->
type0_PDCCH_CSS_config
.
n_c
;
if
(
dl_config
->
number_pdus
)
{
if
(
mac
->
if_module
!=
NULL
&&
mac
->
if_module
->
scheduled_response
!=
NULL
)
mac
->
if_module
->
scheduled_response
(
&
scheduled_response
)
;
}
LOG_I
(
MAC
,
"Calling fill_scheduled_response, type0_pdcch, num_pdus %d
\n
"
,
dl_config
->
number_pdus
);
fill_scheduled_response
(
&
scheduled_response
,
dl_config
,
NULL
,
NULL
,
module_idP
,
cc_id
,
frame_s
,
slot_s
,
0
);
// TODO fix thread_id, for now assumed 0
if
(
mac
->
if_module
!=
NULL
&&
mac
->
if_module
->
scheduled_response
!=
NULL
)
mac
->
if_module
->
scheduled_response
(
&
scheduled_response
);
else
AssertFatal
(
1
==
0
,
"Unable to find aggregation level for type0 CSS
\n
"
);
}
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c
View file @
b123c51a
...
...
@@ -321,13 +321,18 @@ void schedule_control_sib1(module_id_t module_id,
gNB_MAC_INST
*
gNB_mac
=
RC
.
nrmac
[
module_id
];
NR_ServingCellConfigCommon_t
*
servingcellconfigcommon
=
gNB_mac
->
common_channels
[
CC_id
].
ServingCellConfigCommon
;
uint16_t
*
vrb_map
=
RC
.
nrmac
[
module_id
]
->
common_channels
[
CC_id
].
vrb_map
;
int
ret
;
if
(
gNB_mac
->
sched_ctrlCommon
==
NULL
){
gNB_mac
->
sched_ctrlCommon
=
calloc
(
1
,
sizeof
(
*
gNB_mac
->
sched_ctrlCommon
));
gNB_mac
->
sched_ctrlCommon
->
search_space
=
calloc
(
1
,
sizeof
(
*
gNB_mac
->
sched_ctrlCommon
->
search_space
));
gNB_mac
->
sched_ctrlCommon
->
coreset
=
calloc
(
1
,
sizeof
(
*
gNB_mac
->
sched_ctrlCommon
->
coreset
));
gNB_mac
->
sched_ctrlCommon
->
active_bwp
=
calloc
(
1
,
sizeof
(
*
gNB_mac
->
sched_ctrlCommon
->
active_bwp
));
fill_searchSpaceZero
(
gNB_mac
->
sched_ctrlCommon
->
search_space
,
type0_PDCCH_CSS_config
);
for
(
int
i
=
0
;
i
<
3
;
i
++
){
// loop over possible aggregation levels
ret
=
fill_searchSpaceZero
(
gNB_mac
->
sched_ctrlCommon
->
search_space
,
type0_PDCCH_CSS_config
,
4
<<
i
);
if
(
ret
==
1
)
break
;
}
AssertFatal
(
ret
==
1
,
"No aggregation level for type0_PDCCH_CSS found
\n
"
);
fill_coresetZero
(
gNB_mac
->
sched_ctrlCommon
->
coreset
,
type0_PDCCH_CSS_config
);
fill_default_initialDownlinkBWP
(
gNB_mac
->
sched_ctrlCommon
->
active_bwp
,
servingcellconfigcommon
);
}
...
...
@@ -368,7 +373,9 @@ void schedule_control_sib1(module_id_t module_id,
// Calculate number of PRB_DMRS
uint8_t
N_PRB_DMRS
=
gNB_mac
->
sched_ctrlCommon
->
numDmrsCdmGrpsNoData
*
6
;
uint16_t
dlDmrsSymbPos
=
fill_dmrs_mask
(
gNB_mac
->
sched_ctrlCommon
->
active_bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
,
gNB_mac
->
common_channels
->
ServingCellConfigCommon
->
dmrs_TypeA_Position
,
startSymbolIndex
+
nrOfSymbols
);
uint16_t
dlDmrsSymbPos
=
fill_dmrs_mask
(
gNB_mac
->
sched_ctrlCommon
->
active_bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
,
gNB_mac
->
common_channels
->
ServingCellConfigCommon
->
dmrs_TypeA_Position
,
startSymbolIndex
+
nrOfSymbols
);
uint16_t
dmrs_length
=
get_num_dmrs
(
dlDmrsSymbPos
);
int
rbSize
=
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