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
spbro
OpenXG-RAN
Commits
4f5b7fcb
Commit
4f5b7fcb
authored
11 months ago
by
Robert Schmidt
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/fix-msg2-gnb' into integration_2024_w14
parents
171d9950
e3747ab5
Changes
22
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
679 additions
and
783 deletions
+679
-783
ci-scripts/conf_files/gnb.sa.band78.106prb.rfsim.2x2.conf
ci-scripts/conf_files/gnb.sa.band78.106prb.rfsim.2x2.conf
+1
-1
ci-scripts/conf_files/gnb.sa.band78.106prb.rfsim.conf
ci-scripts/conf_files/gnb.sa.band78.106prb.rfsim.conf
+1
-1
ci-scripts/conf_files/gnb.sa.band78.24prb.rfsim.conf
ci-scripts/conf_files/gnb.sa.band78.24prb.rfsim.conf
+1
-1
executables/nr-ue.c
executables/nr-ue.c
+0
-4
nfapi/oai_integration/aerial/fapi_vnf_p7.c
nfapi/oai_integration/aerial/fapi_vnf_p7.c
+0
-3
nfapi/oai_integration/nfapi_vnf.c
nfapi/oai_integration/nfapi_vnf.c
+0
-5
nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface_scf.h
nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface_scf.h
+1
-1
nfapi/open-nFAPI/nfapi/src/nfapi_p7.c
nfapi/open-nFAPI/nfapi/src/nfapi_p7.c
+5
-8
openair1/PHY/defs_gNB.h
openair1/PHY/defs_gNB.h
+0
-3
openair1/SCHED_NR/nr_prach_procedures.c
openair1/SCHED_NR/nr_prach_procedures.c
+37
-32
openair1/SCHED_NR_UE/fapi_nr_ue_l1.c
openair1/SCHED_NR_UE/fapi_nr_ue_l1.c
+2
-4
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
+0
-71
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h
+0
-4
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
+3
-2
openair2/LAYER2/NR_MAC_gNB/config.c
openair2/LAYER2/NR_MAC_gNB/config.c
+8
-5
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
+605
-602
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
+0
-14
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
+7
-7
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
+1
-3
openair2/LAYER2/NR_MAC_gNB/mac_rrc_dl_handler.c
openair2/LAYER2/NR_MAC_gNB/mac_rrc_dl_handler.c
+1
-1
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
+6
-6
openair2/NR_PHY_INTERFACE/NR_IF_Module.c
openair2/NR_PHY_INTERFACE/NR_IF_Module.c
+0
-5
No files found.
ci-scripts/conf_files/gnb.sa.band78.106prb.rfsim.2x2.conf
View file @
4f5b7fcb
...
...
@@ -85,7 +85,7 @@ gNBs =
powerRampingStep
=
1
;
#ra_ReponseWindow
#1,2,4,8,10,20,40,80
ra_ResponseWindow
=
4
;
ra_ResponseWindow
=
5
;
#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
=
3
;
...
...
This diff is collapsed.
Click to expand it.
ci-scripts/conf_files/gnb.sa.band78.106prb.rfsim.conf
View file @
4f5b7fcb
...
...
@@ -88,7 +88,7 @@ gNBs =
powerRampingStep
=
1
;
#ra_ReponseWindow
#1,2,4,8,10,20,40,80
ra_ResponseWindow
=
4
;
ra_ResponseWindow
=
5
;
#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
=
3
;
...
...
This diff is collapsed.
Click to expand it.
ci-scripts/conf_files/gnb.sa.band78.24prb.rfsim.conf
View file @
4f5b7fcb
...
...
@@ -82,7 +82,7 @@ gNBs =
powerRampingStep
=
1
;
#ra_ReponseWindow
#1,2,4,8,10,20,40,80
ra_ResponseWindow
=
4
;
ra_ResponseWindow
=
5
;
#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
=
4
;
...
...
This diff is collapsed.
Click to expand it.
executables/nr-ue.c
View file @
4f5b7fcb
...
...
@@ -209,10 +209,6 @@ static void process_queued_nr_nfapi_msgs(NR_UE_MAC_INST_t *mac, int sfn_slot)
.
rach_ind
=
*
rach_ind
,
};
send_nsa_standalone_msg
(
&
UL_INFO
,
rach_ind
->
header
.
message_id
);
for
(
int
i
=
0
;
i
<
rach_ind
->
number_of_pdus
;
i
++
)
{
free_and_zero
(
rach_ind
->
pdu_list
[
i
].
preamble_list
);
}
free_and_zero
(
rach_ind
->
pdu_list
);
free_and_zero
(
rach_ind
);
}
...
...
This diff is collapsed.
Click to expand it.
nfapi/oai_integration/aerial/fapi_vnf_p7.c
View file @
4f5b7fcb
...
...
@@ -397,9 +397,6 @@ int aerial_phy_nr_rach_indication(nfapi_nr_rach_indication_t *ind)
rach_ind
->
pdu_list
[
i
].
avg_rssi
=
ind
->
pdu_list
[
i
].
avg_rssi
;
rach_ind
->
pdu_list
[
i
].
avg_snr
=
ind
->
pdu_list
[
i
].
avg_snr
;
rach_ind
->
pdu_list
[
i
].
num_preamble
=
ind
->
pdu_list
[
i
].
num_preamble
;
rach_ind
->
pdu_list
[
i
].
preamble_list
=
CALLOC
(
ind
->
pdu_list
[
i
].
num_preamble
,
sizeof
(
nfapi_nr_prach_indication_preamble_t
));
AssertFatal
(
rach_ind
->
pdu_list
[
i
].
preamble_list
!=
NULL
,
"Memory not allocated for rach_ind->pdu_list[i].preamble_list in phy_nr_rach_indication."
);
for
(
int
j
=
0
;
j
<
ind
->
pdu_list
[
i
].
num_preamble
;
j
++
)
{
rach_ind
->
pdu_list
[
i
].
preamble_list
[
j
].
preamble_index
=
ind
->
pdu_list
[
i
].
preamble_list
[
j
].
preamble_index
;
rach_ind
->
pdu_list
[
i
].
preamble_list
[
j
].
timing_advance
=
ind
->
pdu_list
[
i
].
preamble_list
[
j
].
timing_advance
;
...
...
This diff is collapsed.
Click to expand it.
nfapi/oai_integration/nfapi_vnf.c
View file @
4f5b7fcb
...
...
@@ -731,7 +731,6 @@ int phy_nr_rach_indication(nfapi_nr_rach_indication_t *ind)
rach_ind
->
pdu_list
[
i
].
num_preamble
=
ind
->
pdu_list
[
i
].
num_preamble
;
rach_ind
->
pdu_list
[
i
].
freq_index
=
ind
->
pdu_list
[
i
].
freq_index
;
rach_ind
->
pdu_list
[
i
].
symbol_index
=
ind
->
pdu_list
[
i
].
symbol_index
;
rach_ind
->
pdu_list
[
i
].
preamble_list
=
CALLOC
(
ind
->
pdu_list
[
i
].
num_preamble
,
sizeof
(
nfapi_nr_prach_indication_preamble_t
));
AssertFatal
(
rach_ind
->
pdu_list
[
i
].
preamble_list
!=
NULL
,
"Memory not allocated for rach_ind->pdu_list[i].preamble_list in phy_nr_rach_indication."
);
for
(
int
j
=
0
;
j
<
ind
->
number_of_pdus
;
j
++
)
{
...
...
@@ -742,10 +741,6 @@ int phy_nr_rach_indication(nfapi_nr_rach_indication_t *ind)
if
(
!
put_queue
(
&
gnb_rach_ind_queue
,
rach_ind
))
{
LOG_E
(
NR_MAC
,
"Put_queue failed for rach_ind
\n
"
);
for
(
int
i
=
0
;
i
<
ind
->
number_of_pdus
;
i
++
)
{
free
(
rach_ind
->
pdu_list
[
i
].
preamble_list
);
}
free
(
rach_ind
->
pdu_list
);
free
(
rach_ind
);
}
...
...
This diff is collapsed.
Click to expand it.
nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface_scf.h
View file @
4f5b7fcb
...
...
@@ -1759,7 +1759,7 @@ typedef struct{
uint8_t
avg_rssi
;
uint8_t
avg_snr
;
uint8_t
num_preamble
;
nfapi_nr_prach_indication_preamble_t
*
preamble_list
;
nfapi_nr_prach_indication_preamble_t
preamble_list
[
64
]
;
}
nfapi_nr_prach_indication_pdu_t
;
...
...
This diff is collapsed.
Click to expand it.
nfapi/open-nFAPI/nfapi/src/nfapi_p7.c
View file @
4f5b7fcb
...
...
@@ -6302,14 +6302,11 @@ static uint8_t unpack_nr_rach_indication_body(nfapi_nr_prach_indication_pdu_t *v
return
0
;
}
if
(
value
->
num_preamble
>
0
)
{
value
->
preamble_list
=
nfapi_p7_allocate
(
sizeof
(
*
value
->
preamble_list
)
*
value
->
num_preamble
,
config
);
for
(
int
i
=
0
;
i
<
value
->
num_preamble
;
i
++
)
{
nfapi_nr_prach_indication_preamble_t
*
preamble
=
&
(
value
->
preamble_list
[
i
]);
if
(
!
(
pull8
(
ppReadPackedMsg
,
&
preamble
->
preamble_index
,
end
)
&&
pull16
(
ppReadPackedMsg
,
&
preamble
->
timing_advance
,
end
)
&&
pull32
(
ppReadPackedMsg
,
&
preamble
->
preamble_pwr
,
end
)))
{
return
0
;
}
for
(
int
i
=
0
;
i
<
value
->
num_preamble
;
i
++
)
{
nfapi_nr_prach_indication_preamble_t
*
preamble
=
&
(
value
->
preamble_list
[
i
]);
if
(
!
(
pull8
(
ppReadPackedMsg
,
&
preamble
->
preamble_index
,
end
)
&&
pull16
(
ppReadPackedMsg
,
&
preamble
->
timing_advance
,
end
)
&&
pull32
(
ppReadPackedMsg
,
&
preamble
->
preamble_pwr
,
end
)))
{
return
0
;
}
}
return
1
;
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/defs_gNB.h
View file @
4f5b7fcb
...
...
@@ -531,7 +531,6 @@ typedef struct {
#define MAX_NUM_NR_RX_RACH_PDUS 4
#define MAX_NUM_NR_RX_PRACH_PREAMBLES 4
#define MAX_UL_PDUS_PER_SLOT 8
#define MAX_NUM_NR_SRS_PDUS 8
// the current RRC resource allocation is that each UE gets its
...
...
@@ -573,8 +572,6 @@ typedef struct PHY_VARS_gNB_s {
nfapi_nr_uci_t
uci_pdu_list
[
MAX_NUM_NR_UCI_PDUS
];
/// NFAPI PRACH information
nfapi_nr_prach_indication_pdu_t
prach_pdu_indication_list
[
MAX_NUM_NR_RX_RACH_PDUS
];
/// NFAPI PRACH information
nfapi_nr_prach_indication_preamble_t
preamble_list
[
MAX_NUM_NR_RX_PRACH_PREAMBLES
];
nfapi_nr_ul_tti_request_t
UL_tti_req
;
nfapi_nr_uci_indication_t
uci_indication
;
...
...
This diff is collapsed.
Click to expand it.
openair1/SCHED_NR/nr_prach_procedures.c
View file @
4f5b7fcb
...
...
@@ -152,38 +152,43 @@ void L1_nr_prach_procedures(PHY_VARS_gNB *gNB,int frame,int slot) {
gNB
->
prach_energy_counter
);
if
((
gNB
->
prach_energy_counter
==
100
)
&&
(
max_preamble_energy
[
0
]
>
gNB
->
measurements
.
prach_I0
+
gNB
->
prach_thres
))
{
LOG_I
(
NR_PHY
,
"[gNB %d][RAPROC] Frame %d, slot %d Initiating RA procedure with preamble %d, energy %d.%d dB (I0 %d, thres %d), delay %d start symbol %u freq index %u
\n
"
,
gNB
->
Mod_id
,
frame
,
slot
,
max_preamble
[
0
],
max_preamble_energy
[
0
]
/
10
,
max_preamble_energy
[
0
]
%
10
,
gNB
->
measurements
.
prach_I0
,
gNB
->
prach_thres
,
max_preamble_delay
[
0
],
prachStartSymbol
,
prach_pdu
->
num_ra
);
T
(
T_ENB_PHY_INITIATE_RA_PROCEDURE
,
T_INT
(
gNB
->
Mod_id
),
T_INT
(
frame
),
T_INT
(
slot
),
T_INT
(
max_preamble
[
0
]),
T_INT
(
max_preamble_energy
[
0
]),
T_INT
(
max_preamble_delay
[
0
]));
gNB
->
UL_INFO
.
rach_ind
.
number_of_pdus
+=
1
;
gNB
->
prach_pdu_indication_list
[
pdu_index
].
phy_cell_id
=
gNB
->
gNB_config
.
cell_config
.
phy_cell_id
.
value
;
gNB
->
prach_pdu_indication_list
[
pdu_index
].
symbol_index
=
prachStartSymbol
;
gNB
->
prach_pdu_indication_list
[
pdu_index
].
slot_index
=
slot
;
gNB
->
prach_pdu_indication_list
[
pdu_index
].
freq_index
=
prach_pdu
->
num_ra
;
gNB
->
prach_pdu_indication_list
[
pdu_index
].
avg_rssi
=
(
max_preamble_energy
[
0
]
<
631
)
?
(
128
+
(
max_preamble_energy
[
0
]
/
5
))
:
254
;
gNB
->
prach_pdu_indication_list
[
pdu_index
].
avg_snr
=
0xff
;
// invalid for now
gNB
->
prach_pdu_indication_list
[
pdu_index
].
num_preamble
=
1
;
gNB
->
prach_pdu_indication_list
[
pdu_index
].
preamble_list
=
gNB
->
preamble_list
;
gNB
->
prach_pdu_indication_list
[
pdu_index
].
preamble_list
[
0
].
preamble_index
=
max_preamble
[
0
];
gNB
->
prach_pdu_indication_list
[
pdu_index
].
preamble_list
[
0
].
timing_advance
=
max_preamble_delay
[
0
];
gNB
->
prach_pdu_indication_list
[
pdu_index
].
preamble_list
[
0
].
preamble_pwr
=
0xffffffff
;
pdu_index
++
;
LOG_I
(
NR_PHY
,
"[RAPROC] %d.%d Initiating RA procedure with preamble %d, energy %d.%d dB (I0 %d, thres %d), delay %d start symbol "
"%u freq index %u
\n
"
,
frame
,
slot
,
max_preamble
[
0
],
max_preamble_energy
[
0
]
/
10
,
max_preamble_energy
[
0
]
%
10
,
gNB
->
measurements
.
prach_I0
,
gNB
->
prach_thres
,
max_preamble_delay
[
0
],
prachStartSymbol
,
prach_pdu
->
num_ra
);
T
(
T_ENB_PHY_INITIATE_RA_PROCEDURE
,
T_INT
(
gNB
->
Mod_id
),
T_INT
(
frame
),
T_INT
(
slot
),
T_INT
(
max_preamble
[
0
]),
T_INT
(
max_preamble_energy
[
0
]),
T_INT
(
max_preamble_delay
[
0
]));
gNB
->
UL_INFO
.
rach_ind
.
number_of_pdus
+=
1
;
nfapi_nr_prach_indication_pdu_t
*
ind
=
&
gNB
->
prach_pdu_indication_list
[
pdu_index
];
ind
->
phy_cell_id
=
gNB
->
gNB_config
.
cell_config
.
phy_cell_id
.
value
;
ind
->
symbol_index
=
prachStartSymbol
;
ind
->
slot_index
=
slot
;
ind
->
freq_index
=
prach_pdu
->
num_ra
;
ind
->
avg_rssi
=
(
max_preamble_energy
[
0
]
<
631
)
?
(
128
+
(
max_preamble_energy
[
0
]
/
5
))
:
254
;
ind
->
avg_snr
=
0xff
;
// invalid for now
ind
->
num_preamble
=
1
;
ind
->
preamble_list
[
0
].
preamble_index
=
max_preamble
[
0
];
ind
->
preamble_list
[
0
].
timing_advance
=
max_preamble_delay
[
0
];
ind
->
preamble_list
[
0
].
preamble_pwr
=
0xffffffff
;
pdu_index
++
;
}
gNB
->
measurements
.
prach_I0
=
((
gNB
->
measurements
.
prach_I0
*
900
)
>>
10
)
+
((
max_preamble_energy
[
0
]
*
124
)
>>
10
);
if
(
frame
==
0
)
LOG_I
(
PHY
,
"prach_I0 = %d.%d dB
\n
"
,
gNB
->
measurements
.
prach_I0
/
10
,
gNB
->
measurements
.
prach_I0
%
10
);
...
...
This diff is collapsed.
Click to expand it.
openair1/SCHED_NR_UE/fapi_nr_ue_l1.c
View file @
4f5b7fcb
...
...
@@ -125,16 +125,14 @@ int8_t nr_ue_scheduled_response_stub(nr_scheduled_response_t *scheduled_response
rach_ind
->
pdu_list
[
pdu_index
].
freq_index
=
prach_pdu
->
num_ra
;
rach_ind
->
pdu_list
[
pdu_index
].
avg_rssi
=
128
;
rach_ind
->
pdu_list
[
pdu_index
].
avg_snr
=
0xff
;
// invalid for now
rach_ind
->
pdu_list
[
pdu_index
].
num_preamble
=
1
;
const
int
num_p
=
rach_ind
->
pdu_list
[
pdu_index
].
num_preamble
;
rach_ind
->
pdu_list
[
pdu_index
].
preamble_list
=
calloc
(
num_p
,
sizeof
(
nfapi_nr_prach_indication_preamble_t
));
AssertFatal
(
num_p
==
1
,
"can handle only one preamble in preamble_list
\n
"
);
rach_ind
->
pdu_list
[
pdu_index
].
num_preamble
=
1
;
rach_ind
->
pdu_list
[
pdu_index
].
preamble_list
[
0
].
preamble_index
=
prach_pdu
->
ra_PreambleIndex
;
rach_ind
->
pdu_list
[
pdu_index
].
preamble_list
[
0
].
timing_advance
=
0
;
rach_ind
->
pdu_list
[
pdu_index
].
preamble_list
[
0
].
preamble_pwr
=
0xffffffff
;
if
(
!
put_queue
(
&
nr_rach_ind_queue
,
rach_ind
))
{
for
(
int
pdu_index
=
0
;
pdu_index
<
rach_ind
->
number_of_pdus
;
pdu_index
++
)
free
(
rach_ind
->
pdu_list
[
pdu_index
].
preamble_list
);
free
(
rach_ind
->
pdu_list
);
free
(
rach_ind
);
}
...
...
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
View file @
4f5b7fcb
...
...
@@ -1676,77 +1676,6 @@ void set_monitoring_periodicity_offset(NR_SearchSpace_t *ss,
}
void
find_monitoring_periodicity_offset_common
(
NR_SearchSpace_t
*
ss
,
uint16_t
*
slot_period
,
uint16_t
*
offset
)
{
switch
(
ss
->
monitoringSlotPeriodicityAndOffset
->
present
)
{
case
NR_SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl1
:
*
slot_period
=
1
;
*
offset
=
0
;
break
;
case
NR_SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl2
:
*
slot_period
=
2
;
*
offset
=
ss
->
monitoringSlotPeriodicityAndOffset
->
choice
.
sl2
;
break
;
case
NR_SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl4
:
*
slot_period
=
4
;
*
offset
=
ss
->
monitoringSlotPeriodicityAndOffset
->
choice
.
sl4
;
break
;
case
NR_SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl5
:
*
slot_period
=
5
;
*
offset
=
ss
->
monitoringSlotPeriodicityAndOffset
->
choice
.
sl5
;
break
;
case
NR_SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl8
:
*
slot_period
=
8
;
*
offset
=
ss
->
monitoringSlotPeriodicityAndOffset
->
choice
.
sl8
;
break
;
case
NR_SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl10
:
*
slot_period
=
10
;
*
offset
=
ss
->
monitoringSlotPeriodicityAndOffset
->
choice
.
sl10
;
break
;
case
NR_SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl16
:
*
slot_period
=
16
;
*
offset
=
ss
->
monitoringSlotPeriodicityAndOffset
->
choice
.
sl16
;
break
;
case
NR_SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl20
:
*
slot_period
=
20
;
*
offset
=
ss
->
monitoringSlotPeriodicityAndOffset
->
choice
.
sl20
;
break
;
case
NR_SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl40
:
*
slot_period
=
40
;
*
offset
=
ss
->
monitoringSlotPeriodicityAndOffset
->
choice
.
sl40
;
break
;
case
NR_SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl80
:
*
slot_period
=
80
;
*
offset
=
ss
->
monitoringSlotPeriodicityAndOffset
->
choice
.
sl80
;
break
;
case
NR_SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl160
:
*
slot_period
=
160
;
*
offset
=
ss
->
monitoringSlotPeriodicityAndOffset
->
choice
.
sl160
;
break
;
case
NR_SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl320
:
*
slot_period
=
320
;
*
offset
=
ss
->
monitoringSlotPeriodicityAndOffset
->
choice
.
sl320
;
break
;
case
NR_SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl640
:
*
slot_period
=
640
;
*
offset
=
ss
->
monitoringSlotPeriodicityAndOffset
->
choice
.
sl640
;
break
;
case
NR_SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl1280
:
*
slot_period
=
1280
;
*
offset
=
ss
->
monitoringSlotPeriodicityAndOffset
->
choice
.
sl1280
;
break
;
case
NR_SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl2560
:
*
slot_period
=
2560
;
*
offset
=
ss
->
monitoringSlotPeriodicityAndOffset
->
choice
.
sl2560
;
break
;
default:
AssertFatal
(
1
==
0
,
"Invalid monitoring slot periodicity and offset value
\n
"
);
break
;
}
}
int
get_nr_prach_occasion_info_from_index
(
uint8_t
index
,
uint32_t
pointa
,
uint8_t
mu
,
...
...
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h
View file @
4f5b7fcb
...
...
@@ -133,10 +133,6 @@ void find_aggregation_candidates(uint8_t *aggregation_level,
const
NR_SearchSpace_t
*
ss
,
int
maxL
);
void
find_monitoring_periodicity_offset_common
(
NR_SearchSpace_t
*
ss
,
uint16_t
*
slot_period
,
uint16_t
*
offset
);
int
get_nr_prach_info_from_index
(
uint8_t
index
,
int
frame
,
int
slot
,
...
...
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
View file @
4f5b7fcb
...
...
@@ -3795,6 +3795,7 @@ static void nr_ue_process_rar(NR_UE_MAC_INST_t *mac, nr_downlink_indication_t *d
NR_RA_HEADER_RAPID
*
rarh
=
(
NR_RA_HEADER_RAPID
*
)
dlsch_buffer
;
// RAR subheader pointer
NR_MAC_RAR
*
rar
=
(
NR_MAC_RAR
*
)
(
dlsch_buffer
+
1
);
// RAR subPDU pointer
uint8_t
preamble_index
=
ra
->
ra_PreambleIndex
;
uint16_t
rnti
=
mac
->
ra
.
ra_rnti
;
LOG_D
(
NR_MAC
,
"[%d.%d]: [UE %d][RAPROC] invoking MAC for received RAR (current preamble %d)
\n
"
,
frame
,
slot
,
mac
->
ue_id
,
preamble_index
);
...
...
@@ -3802,11 +3803,11 @@ static void nr_ue_process_rar(NR_UE_MAC_INST_t *mac, nr_downlink_indication_t *d
n_subheaders
++
;
if
(
rarh
->
T
==
1
)
{
n_subPDUs
++
;
LOG_I
(
NR_MAC
,
"[UE %d][RAPROC]
Got RAPID RAR subPDU
\n
"
,
mac
->
ue_id
);
LOG_I
(
NR_MAC
,
"[UE %d][RAPROC]
[RA-RNTI %04x] Got RAPID RAR subPDU
\n
"
,
mac
->
ue_id
,
rnti
);
}
else
{
ra
->
RA_backoff_indicator
=
table_7_2_1
[((
NR_RA_HEADER_BI
*
)
rarh
)
->
BI
];
ra
->
RA_BI_found
=
1
;
LOG_I
(
NR_MAC
,
"[UE %d][RAPROC]
Got BI RAR subPDU %d ms
\n
"
,
mac
->
ue_id
,
ra
->
RA_backoff_indicator
);
LOG_I
(
NR_MAC
,
"[UE %d][RAPROC]
[RA-RNTI %04x] Got BI RAR subPDU %d ms
\n
"
,
mac
->
ue_id
,
ra
->
RA_backoff_indicator
,
rnti
);
if
(
((
NR_RA_HEADER_BI
*
)
rarh
)
->
E
==
1
)
{
rarh
+=
sizeof
(
NR_RA_HEADER_BI
);
continue
;
...
...
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_gNB/config.c
View file @
4f5b7fcb
...
...
@@ -654,11 +654,14 @@ static void config_common(gNB_MAC_INST *nrmac, nr_pdsch_AntennaPorts_t pdsch_Ant
scc
->
tdd_UL_DL_ConfigurationCommon
->
pattern1
.
nrofUplinkSlots
,
scc
->
tdd_UL_DL_ConfigurationCommon
->
pattern1
.
nrofUplinkSymbols
);
if
(
periods_per_frame
<
0
)
LOG_E
(
NR_MAC
,
"TDD configuration can not be done
\n
"
);
else
{
LOG_I
(
NR_MAC
,
"TDD has been properly configurated
\n
"
);
nrmac
->
tdd_beam_association
=
(
int16_t
*
)
malloc16
(
periods_per_frame
*
sizeof
(
int16_t
));
AssertFatal
(
periods_per_frame
>
0
,
"TDD configuration cannot be configured
\n
"
);
if
(
frequency_range
==
FR2
)
{
LOG_I
(
NR_MAC
,
"Configuring TDD beam association to default
\n
"
);
nrmac
->
tdd_beam_association
=
malloc16
(
periods_per_frame
*
sizeof
(
int16_t
));
for
(
int
i
=
0
;
i
<
periods_per_frame
;
++
i
)
nrmac
->
tdd_beam_association
[
i
]
=
-
1
;
/* default: beams not configured */
}
else
{
nrmac
->
tdd_beam_association
=
NULL
;
/* default: no beams */
}
}
...
...
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
View file @
4f5b7fcb
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
View file @
4f5b7fcb
...
...
@@ -2071,20 +2071,6 @@ NR_UE_info_t *find_nr_UE(NR_UEs_t *UEs, rnti_t rntiP)
return
NULL
;
}
int
find_nr_RA_id
(
module_id_t
mod_idP
,
int
CC_idP
,
rnti_t
rntiP
)
{
NR_RA_t
*
ra
=
RC
.
nrmac
[
mod_idP
]
->
common_channels
[
CC_idP
].
ra
;
for
(
int
RA_id
=
0
;
RA_id
<
NR_NB_RA_PROC_MAX
;
RA_id
++
)
{
LOG_D
(
NR_MAC
,
"Checking RA_id %d for %x : state %s
\n
"
,
RA_id
,
rntiP
,
nrra_text
[
ra
[
RA_id
].
ra_state
]);
if
(
ra
[
RA_id
].
ra_state
!=
nrRA_gNB_IDLE
&&
ra
[
RA_id
].
rnti
==
rntiP
)
return
RA_id
;
}
return
-
1
;
}
int
get_nrofHARQ_ProcessesForPDSCH
(
e_NR_PDSCH_ServingCellConfig__nrofHARQ_ProcessesForPDSCH
n
)
{
switch
(
n
)
{
...
...
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
View file @
4f5b7fcb
...
...
@@ -717,7 +717,7 @@ static void _nr_rx_sdu(const module_id_t gnb_mod_idP,
if
(
no_sig
)
{
LOG_D
(
NR_MAC
,
"Random Access %i failed at state %s (no signal)
\n
"
,
i
,
nrra_text
[
ra
->
ra_state
]);
nr_clear_ra_proc
(
gnb_mod_idP
,
CC_idP
,
frameP
,
ra
);
nr_clear_ra_proc
(
ra
);
continue
;
}
...
...
@@ -732,7 +732,7 @@ static void _nr_rx_sdu(const module_id_t gnb_mod_idP,
nrra_text
[
ra
->
ra_state
],
ra
->
rnti
,
current_rnti
);
nr_clear_ra_proc
(
gnb_mod_idP
,
CC_idP
,
frameP
,
ra
);
nr_clear_ra_proc
(
ra
);
}
continue
;
...
...
@@ -747,7 +747,7 @@ static void _nr_rx_sdu(const module_id_t gnb_mod_idP,
ra
->
rnti
,
current_rnti
);
nr_clear_ra_proc
(
gnb_mod_idP
,
CC_idP
,
frameP
,
ra
);
nr_clear_ra_proc
(
ra
);
return
;
}
...
...
@@ -778,7 +778,7 @@ static void _nr_rx_sdu(const module_id_t gnb_mod_idP,
nr_mac_reset_ul_failure
(
UE_scheduling_control
);
reset_dl_harq_list
(
UE_scheduling_control
);
reset_ul_harq_list
(
UE_scheduling_control
);
nr_clear_ra_proc
(
gnb_mod_idP
,
CC_idP
,
frameP
,
ra
);
nr_clear_ra_proc
(
ra
);
process_CellGroup
(
ra
->
CellGroup
,
UE
);
}
else
{
...
...
@@ -809,7 +809,7 @@ static void _nr_rx_sdu(const module_id_t gnb_mod_idP,
// solution may be implemented
LOG_W
(
NR_MAC
,
"No UE found with C-RNTI %04x, ignoring Msg3 to have UE come back with new RA attempt
\n
"
,
ra
->
rnti
);
mac_remove_nr_ue
(
RC
.
nrmac
[
gnb_mod_idP
],
ra
->
rnti
);
nr_clear_ra_proc
(
gnb_mod_idP
,
CC_idP
,
frameP
,
ra
);
nr_clear_ra_proc
(
ra
);
return
;
}
...
...
@@ -859,13 +859,13 @@ static void _nr_rx_sdu(const module_id_t gnb_mod_idP,
// for CFRA (NSA) do not schedule retransmission of msg3
if
(
ra
->
cfra
)
{
LOG_D
(
NR_MAC
,
"Random Access %i failed at state %s (NSA msg3 reception failed)
\n
"
,
i
,
nrra_text
[
ra
->
ra_state
]);
nr_clear_ra_proc
(
gnb_mod_idP
,
CC_idP
,
frameP
,
ra
);
nr_clear_ra_proc
(
ra
);
return
;
}
if
(
ra
->
msg3_round
>=
gNB_mac
->
ul_bler
.
harq_round_max
-
1
)
{
LOG_W
(
NR_MAC
,
"Random Access %i failed at state %s (Reached msg3 max harq rounds)
\n
"
,
i
,
nrra_text
[
ra
->
ra_state
]);
nr_clear_ra_proc
(
gnb_mod_idP
,
CC_idP
,
frameP
,
ra
);
nr_clear_ra_proc
(
ra
);
return
;
}
...
...
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
View file @
4f5b7fcb
...
...
@@ -115,7 +115,7 @@ void nr_schedule_RA(module_id_t module_idP,
void
nr_initiate_ra_proc
(
module_id_t
module_idP
,
int
CC_id
,
frame_t
frameP
,
sub_frame_t
slotP
,
uint16_t
preamble_index
,
uint8_t
freq_index
,
uint8_t
symbol
,
int16_t
timing_offset
);
void
nr_clear_ra_proc
(
module_id_t
module_idP
,
int
CC_id
,
frame_t
frameP
,
NR_RA_t
*
ra
);
void
nr_clear_ra_proc
(
NR_RA_t
*
ra
);
int
nr_allocate_CCEs
(
int
module_idP
,
int
CC_idP
,
frame_t
frameP
,
sub_frame_t
slotP
,
int
test_only
);
...
...
@@ -302,8 +302,6 @@ void remove_front_nr_list(NR_list_t *listP);
NR_UE_info_t
*
find_nr_UE
(
NR_UEs_t
*
UEs
,
rnti_t
rntiP
);
int
find_nr_RA_id
(
module_id_t
mod_idP
,
int
CC_idP
,
rnti_t
rntiP
);
void
configure_UE_BWP
(
gNB_MAC_INST
*
nr_mac
,
NR_ServingCellConfigCommon_t
*
scc
,
NR_UE_sched_ctrl_t
*
sched_ctrl
,
...
...
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_gNB/mac_rrc_dl_handler.c
View file @
4f5b7fcb
...
...
@@ -612,7 +612,7 @@ void ue_context_modification_refuse(const f1ap_ue_context_modif_refuse_t *refuse
for
(
int
i
=
0
;
i
<
NR_NB_RA_PROC_MAX
;
i
++
)
{
NR_RA_t
*
ra
=
&
cc
->
ra
[
i
];
if
(
ra
->
rnti
==
UE
->
rnti
)
nr_clear_ra_proc
(
0
,
CC_id
,
0
/* frame */
,
ra
);
nr_clear_ra_proc
(
ra
);
}
NR_SCHED_UNLOCK
(
&
mac
->
sched_lock
);
...
...
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
View file @
4f5b7fcb
...
...
@@ -164,8 +164,14 @@ typedef struct {
RA_gNB_state_t
ra_state
;
/// CORESET0 configured flag
int
coreset0_configured
;
/// Frame where preamble was received
int
preamble_frame
;
/// Slot where preamble was received
uint8_t
preamble_slot
;
/// Received preamble_index
uint8_t
preamble_index
;
/// Timing offset indicated by PHY
int16_t
timing_offset
;
/// Subframe where Msg2 is to be sent
uint8_t
Msg2_slot
;
/// Frame where Msg2 is to be sent
...
...
@@ -182,14 +188,8 @@ typedef struct {
rnti_t
rnti
;
/// RA RNTI allocated from received PRACH
uint16_t
RA_rnti
;
/// Received preamble_index
uint8_t
preamble_index
;
/// Received UE Contention Resolution Identifier
uint8_t
cont_res_id
[
6
];
/// Timing offset indicated by PHY
int16_t
timing_offset
;
/// Timeout for RRC connection
int16_t
RRC_timer
;
/// Msg3 first RB
int
msg3_first_rb
;
/// Msg3 number of RB
...
...
This diff is collapsed.
Click to expand it.
openair2/NR_PHY_INTERFACE/NR_IF_Module.c
View file @
4f5b7fcb
...
...
@@ -80,7 +80,6 @@ void handle_nr_rach(NR_UL_IND_t *UL_info)
LOG_D
(
MAC
,
"UL_info[Frame %d, Slot %d] Calling initiate_ra_proc RACH:SFN/SLOT:%d/%d
\n
"
,
UL_info
->
frame
,
UL_info
->
slot
,
UL_info
->
rach_ind
.
sfn
,
UL_info
->
rach_ind
.
slot
);
for
(
int
i
=
0
;
i
<
UL_info
->
rach_ind
.
number_of_pdus
;
i
++
)
{
UL_info
->
rach_ind
.
number_of_pdus
--
;
AssertFatal
(
UL_info
->
rach_ind
.
pdu_list
[
i
].
num_preamble
==
1
,
"More than 1 preamble not supported
\n
"
);
nr_initiate_ra_proc
(
UL_info
->
module_id
,
UL_info
->
CC_id
,
...
...
@@ -256,10 +255,6 @@ static void free_unqueued_nfapi_indications(nfapi_nr_rach_indication_t *rach_ind
nfapi_nr_crc_indication_t
*
crc_ind
)
{
if
(
rach_ind
&&
rach_ind
->
number_of_pdus
>
0
)
{
for
(
int
i
=
0
;
i
<
rach_ind
->
number_of_pdus
;
i
++
)
{
free_and_zero
(
rach_ind
->
pdu_list
[
i
].
preamble_list
);
}
free_and_zero
(
rach_ind
->
pdu_list
);
free_and_zero
(
rach_ind
);
}
...
...
This diff is collapsed.
Click to expand it.
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