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
Michael Black
OpenXG-RAN
Commits
a5580844
Commit
a5580844
authored
Aug 03, 2020
by
kn.raju
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
added for assoc period more than 1
parent
e56a085a
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
26 additions
and
12 deletions
+26
-12
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
+4
-1
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h
+2
-1
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
+15
-9
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
+4
-0
openair2/RRC/NR/rrc_gNB_reconfig.c
openair2/RRC/NR/rrc_gNB_reconfig.c
+1
-1
No files found.
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
View file @
a5580844
...
...
@@ -1131,7 +1131,8 @@ int get_nr_prach_info_from_index(uint8_t index,
uint8_t
*
N_t_slot
,
uint8_t
*
N_dur
,
uint16_t
*
RA_sfn_index
,
uint8_t
*
N_RA_slot
)
{
uint8_t
*
N_RA_slot
,
uint8_t
*
config_period
)
{
int
x
,
y
;
int64_t
s_map
;
...
...
@@ -1161,6 +1162,7 @@ int get_nr_prach_info_from_index(uint8_t index,
return
0
;
// no prach in even slots @ 120kHz for 1 prach per 60khz slot
}
if
(
start_symbol
!=
NULL
&&
N_t_slot
!=
NULL
&&
N_dur
!=
NULL
&&
format
!=
NULL
){
*
config_period
=
x
;
*
start_symbol
=
table_6_3_3_2_4_prachConfig_Index
[
index
][
6
];
*
N_t_slot
=
table_6_3_3_2_4_prachConfig_Index
[
index
][
8
];
*
N_dur
=
table_6_3_3_2_4_prachConfig_Index
[
index
][
9
];
...
...
@@ -1209,6 +1211,7 @@ int get_nr_prach_info_from_index(uint8_t index,
return
0
;
// no prach in even slots @ 30kHz for 1 prach per subframe
}
if
(
start_symbol
!=
NULL
&&
N_t_slot
!=
NULL
&&
N_dur
!=
NULL
&&
format
!=
NULL
){
*
config_period
=
x
;
*
start_symbol
=
table_6_3_3_2_3_prachConfig_Index
[
index
][
5
];
*
N_t_slot
=
table_6_3_3_2_3_prachConfig_Index
[
index
][
7
];
*
N_dur
=
table_6_3_3_2_3_prachConfig_Index
[
index
][
8
];
...
...
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h
View file @
a5580844
...
...
@@ -100,7 +100,8 @@ int get_nr_prach_info_from_index(uint8_t index,
uint8_t
*
N_t_slot
,
uint8_t
*
N_dur
,
uint16_t
*
RA_sfn_index
,
uint8_t
*
N_RA_slot
);
uint8_t
*
N_RA_slot
,
uint8_t
*
config_period
);
int
get_nr_prach_occasion_info_from_index
(
uint8_t
index
,
uint32_t
pointa
,
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
View file @
a5580844
...
...
@@ -73,6 +73,7 @@ int16_t ssb_index_from_prach(module_id_t module_idP,
uint16_t
start_symbol_index
=
0
;
uint8_t
mu
,
N_dur
,
N_t_slot
,
start_symbol
=
0
,
temp_start_symbol
=
0
,
N_RA_slot
;
uint16_t
format
,
RA_sfn_index
=
-
1
;
uint8_t
config_period
=
0
;
uint16_t
prach_occasion_id
=
-
1
;
uint8_t
num_active_ssb
=
cc
->
num_active_ssb
;
...
...
@@ -92,7 +93,8 @@ int16_t ssb_index_from_prach(module_id_t module_idP,
&
N_t_slot
,
&
N_dur
,
&
RA_sfn_index
,
&
N_RA_slot
);
&
N_RA_slot
,
&
config_period
);
uint8_t
index
=
0
,
slot_index
=
0
;
for
(
slot_index
=
0
;
slot_index
<
N_RA_slot
;
slot_index
++
)
{
if
(
N_RA_slot
<=
1
)
{
//1 PRACH slot in a subframe
...
...
@@ -113,7 +115,7 @@ int16_t ssb_index_from_prach(module_id_t module_idP,
}
// prach_occasion_id = subframe_index * N_t_slot * N_RA_slot * fdm + N_RA_slot_index * N_t_slot * fdm + freq_index + fdm * start_symbol_index;
prach_occasion_id
=
(
RA_sfn_index
+
slot_index
)
*
N_t_slot
*
fdm
+
start_symbol_index
*
fdm
+
freq_index
;
prach_occasion_id
=
(
((
frameP
%
(
cc
->
max_association_period
*
config_period
))
/
config_period
)
*
cc
->
total_prach_occasions_per_config_period
)
+
(
RA_sfn_index
+
slot_index
)
*
N_t_slot
*
fdm
+
start_symbol_index
*
fdm
+
freq_index
;
//one RO is shared by one or more SSB
if
(
num_ssb_per_RO
<=
1
)
index
=
(
int
)
(
prach_occasion_id
/
(
int
)(
1
/
num_ssb_per_RO
))
%
num_active_ssb
;
...
...
@@ -173,13 +175,15 @@ void find_SSB_and_RO_available(module_id_t module_idP) {
}
}
for
(
int
i
=
0
;
(
1
<<
i
)
<
max_association_period
;
i
++
)
{
for
(
int
i
=
1
;
(
1
<<
(
i
-
1
))
<=
max_association_period
;
i
++
)
{
if
(
total_RA_occasions
>=
(
int
)
(
num_active_ssb
/
num_ssb_per_RO
))
{
repetition
=
(
uint16_t
)((
total_RA_occasions
*
num_ssb_per_RO
)
/
num_active_ssb
);
break
;
repetition
=
(
uint16_t
)((
total_RA_occasions
*
num_ssb_per_RO
)
/
num_active_ssb
);
break
;
}
else
{
total_RA_occasions
=
total_RA_occasions
*
i
;
cc
->
max_association_period
=
i
;
}
else
total_RA_occasions
=
total_RA_occasions
*
i
;
}
unused_RA_occasion
=
total_RA_occasions
-
(
int
)((
num_active_ssb
*
repetition
)
/
num_ssb_per_RO
);
...
...
@@ -201,6 +205,7 @@ void schedule_nr_prach(module_id_t module_idP, frame_t frameP, sub_frame_t slotP
uint8_t
config_index
=
scc
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
rach_ConfigGeneric
.
prach_ConfigurationIndex
;
uint8_t
mu
,
N_dur
,
N_t_slot
,
start_symbol
=
0
,
temp_start_symbol
=
0
,
N_RA_slot
;
uint16_t
RA_sfn_index
=
-
1
;
uint8_t
config_period
=
0
;
uint16_t
format
;
int
slot_index
=
0
;
uint16_t
prach_occasion_id
=
-
1
;
...
...
@@ -223,7 +228,8 @@ void schedule_nr_prach(module_id_t module_idP, frame_t frameP, sub_frame_t slotP
&
N_t_slot
,
&
N_dur
,
&
RA_sfn_index
,
&
N_RA_slot
)
)
{
&
N_RA_slot
,
&
config_period
)
)
{
uint16_t
format0
=
format
&
0xff
;
// first column of format from table
uint16_t
format1
=
(
format
>>
8
)
&
0xff
;
// second column of format from table
...
...
@@ -251,7 +257,7 @@ void schedule_nr_prach(module_id_t module_idP, frame_t frameP, sub_frame_t slotP
UL_tti_req
->
Slot
=
slotP
;
for
(
int
n
=
0
;
n
<
fdm
;
n
++
)
{
// one structure per frequency domain occasion
prach_occasion_id
=
(
RA_sfn_index
+
slot_index
)
*
N_t_slot
*
fdm
+
index
*
fdm
+
n
;
prach_occasion_id
=
(
((
frameP
%
(
cc
->
max_association_period
*
config_period
))
/
config_period
)
*
cc
->
total_prach_occasions_per_config_period
)
+
(
RA_sfn_index
+
slot_index
)
*
N_t_slot
*
fdm
+
index
*
fdm
+
n
;
if
(
prach_occasion_id
<
cc
->
total_prach_occasions
){
UL_tti_req
->
pdus_list
[
UL_tti_req
->
n_pdus
].
pdu_type
=
NFAPI_NR_UL_CONFIG_PRACH_PDU_TYPE
;
...
...
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
View file @
a5580844
...
...
@@ -181,8 +181,12 @@ typedef struct {
uint8_t
num_sf_allocation_pattern
;
///Number of active SSBs
uint8_t
num_active_ssb
;
//Total available prach occasions per configuration period
uint32_t
total_prach_occasions_per_config_period
;
//Total available prach occasions
uint32_t
total_prach_occasions
;
//Max Association period
uint8_t
max_association_period
;
}
NR_COMMON_channels_t
;
...
...
openair2/RRC/NR/rrc_gNB_reconfig.c
View file @
a5580844
...
...
@@ -157,7 +157,7 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
secondaryCellGroup
->
spCellConfig
->
reconfigurationWithSync
->
rach_ConfigDedicated
->
choice
.
uplink
->
cfra
->
resources
.
choice
.
ssb
=
calloc
(
1
,
sizeof
(
struct
NR_CFRA__resources__ssb
));
secondaryCellGroup
->
spCellConfig
->
reconfigurationWithSync
->
rach_ConfigDedicated
->
choice
.
uplink
->
cfra
->
resources
.
choice
.
ssb
->
ra_ssb_OccasionMaskIndex
=
0
;
struct
NR_CFRA_SSB_Resource
*
ssbElem
[
8
];
for
(
int
i
=
0
;
i
<
8
;
i
++
)
{
for
(
int
i
=
0
;
i
<
1
;
i
++
)
{
ssbElem
[
i
]
=
calloc
(
1
,
sizeof
(
struct
NR_CFRA_SSB_Resource
));
ssbElem
[
i
]
->
ssb
=
i
;
ssbElem
[
i
]
->
ra_PreambleIndex
=
63
;
...
...
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