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
OpenXG
OpenXG UE
Commits
a39b1f29
Commit
a39b1f29
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
72eee7df
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 @
a39b1f29
...
...
@@ -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 @
a39b1f29
...
...
@@ -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 @
a39b1f29
...
...
@@ -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 @
a39b1f29
...
...
@@ -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 @
a39b1f29
...
...
@@ -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