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
8dcf0d01
Commit
8dcf0d01
authored
Feb 07, 2022
by
francescomani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
two bugfixes: local pdcch_pdu in ul and wrong initialization place in find_candidate
parent
2408f82a
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
24 additions
and
19 deletions
+24
-19
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
+1
-0
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
+9
-10
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
+7
-2
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
+7
-7
No files found.
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
View file @
8dcf0d01
...
@@ -1163,6 +1163,7 @@ void nr_schedule_ue_spec(module_id_t module_id,
...
@@ -1163,6 +1163,7 @@ void nr_schedule_ue_spec(module_id_t module_id,
pdsch_pdu
->
pduBitmap
|=
0x1
;
// Bit 0: pdschPtrs - Indicates PTRS included (FR2)
pdsch_pdu
->
pduBitmap
|=
0x1
;
// Bit 0: pdschPtrs - Indicates PTRS included (FR2)
}
}
LOG_D
(
NR_MAC
,
"Configuring DCI/PDCCH in %d.%d at CCE %d, rnti %x
\n
"
,
frame
,
slot
,
sched_ctrl
->
cce_index
,
rnti
);
/* Fill PDCCH DL DCI PDU */
/* Fill PDCCH DL DCI PDU */
nfapi_nr_dl_dci_pdu_t
*
dci_pdu
=
&
pdcch_pdu
->
dci_pdu
[
pdcch_pdu
->
numDlDci
];
nfapi_nr_dl_dci_pdu_t
*
dci_pdu
=
&
pdcch_pdu
->
dci_pdu
[
pdcch_pdu
->
numDlDci
];
pdcch_pdu
->
numDlDci
++
;
pdcch_pdu
->
numDlDci
++
;
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
View file @
8dcf0d01
...
@@ -306,13 +306,13 @@ int cce_to_reg_interleaving(const int R, int k, int n_shift, const int C, int L,
...
@@ -306,13 +306,13 @@ int cce_to_reg_interleaving(const int R, int k, int n_shift, const int C, int L,
return
f
;
return
f
;
}
}
uint8_
t
find_pdcch_candidate
(
gNB_MAC_INST
*
mac
,
in
t
find_pdcch_candidate
(
gNB_MAC_INST
*
mac
,
int
cc_id
,
int
cc_id
,
int
aggregation
,
int
aggregation
,
int
nr_of_candidates
,
int
nr_of_candidates
,
NR_sched_pdcch_t
*
pdcch
,
NR_sched_pdcch_t
*
pdcch
,
NR_ControlResourceSet_t
*
coreset
,
NR_ControlResourceSet_t
*
coreset
,
uint16_t
Y
){
uint16_t
Y
){
uint16_t
*
vrb_map
=
mac
->
common_channels
[
cc_id
].
vrb_map
;
uint16_t
*
vrb_map
=
mac
->
common_channels
[
cc_id
].
vrb_map
;
const
int
next_cand
=
mac
->
pdcch_cand
[
coreset
->
controlResourceSetId
];
const
int
next_cand
=
mac
->
pdcch_cand
[
coreset
->
controlResourceSetId
];
...
@@ -332,12 +332,11 @@ uint8_t find_pdcch_candidate(gNB_MAC_INST *mac,
...
@@ -332,12 +332,11 @@ uint8_t find_pdcch_candidate(gNB_MAC_INST *mac,
const
int
C
=
R
>
0
?
N_regs
/
(
L
*
R
)
:
0
;
const
int
C
=
R
>
0
?
N_regs
/
(
L
*
R
)
:
0
;
const
int
B_rb
=
L
/
N_symb
;
// nb of RBs occupied by each REG bundle
const
int
B_rb
=
L
/
N_symb
;
// nb of RBs occupied by each REG bundle
int
first_cce
;
bool
taken
=
false
;
// flag if the resource for a given candidate are taken
// loop over all the available candidates
// loop over all the available candidates
// this implements TS 38.211 Sec. 7.3.2.2
// this implements TS 38.211 Sec. 7.3.2.2
for
(
int
m
=
next_cand
;
m
<
nr_of_candidates
;
m
++
)
{
// loop over candidates
for
(
int
m
=
next_cand
;
m
<
nr_of_candidates
;
m
++
)
{
// loop over candidates
first_cce
=
aggregation
*
((
Y
+
CEILIDIV
((
m
*
N_cces
),(
aggregation
*
nr_of_candidates
))
+
N_ci
)
%
CEILIDIV
(
N_cces
,
aggregation
));
bool
taken
=
false
;
// flag if the resource for a given candidate are taken
int
first_cce
=
aggregation
*
((
Y
+
CEILIDIV
((
m
*
N_cces
),(
aggregation
*
nr_of_candidates
))
+
N_ci
)
%
CEILIDIV
(
N_cces
,
aggregation
));
for
(
int
j
=
first_cce
;
(
j
<
first_cce
+
aggregation
)
&&
!
taken
;
j
++
)
{
// loop over CCEs
for
(
int
j
=
first_cce
;
(
j
<
first_cce
+
aggregation
)
&&
!
taken
;
j
++
)
{
// loop over CCEs
for
(
int
k
=
6
*
j
/
L
;
(
k
<
(
6
*
j
/
L
+
6
/
L
))
&&
!
taken
;
k
++
)
{
// loop over REG bundles
for
(
int
k
=
6
*
j
/
L
;
(
k
<
(
6
*
j
/
L
+
6
/
L
))
&&
!
taken
;
k
++
)
{
// loop over REG bundles
int
f
=
cce_to_reg_interleaving
(
R
,
k
,
pdcch
->
ShiftIndex
,
C
,
L
,
N_regs
);
int
f
=
cce_to_reg_interleaving
(
R
,
k
,
pdcch
->
ShiftIndex
,
C
,
L
,
N_regs
);
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
View file @
8dcf0d01
...
@@ -1512,6 +1512,11 @@ void nr_schedule_ulsch(module_id_t module_id, frame_t frame, sub_frame_t slot)
...
@@ -1512,6 +1512,11 @@ void nr_schedule_ulsch(module_id_t module_id, frame_t frame, sub_frame_t slot)
nfapi_nr_ul_dci_request_t
*
ul_dci_req
=
&
RC
.
nrmac
[
module_id
]
->
UL_dci_req
[
CC_id
];
nfapi_nr_ul_dci_request_t
*
ul_dci_req
=
&
RC
.
nrmac
[
module_id
]
->
UL_dci_req
[
CC_id
];
ul_dci_req
->
SFN
=
frame
;
ul_dci_req
->
SFN
=
frame
;
ul_dci_req
->
Slot
=
slot
;
ul_dci_req
->
Slot
=
slot
;
/* a PDCCH PDU groups DCIs per BWP and CORESET. Save a pointer to each
* allocated PDCCH so we can easily allocate UE's DCIs independent of any
* CORESET order */
nfapi_nr_dl_tti_pdcch_pdu_rel15_t
*
pdcch_pdu_coreset
[
MAX_NUM_CORESET
]
=
{
0
};
NR_ServingCellConfigCommon_t
*
scc
=
RC
.
nrmac
[
module_id
]
->
common_channels
[
0
].
ServingCellConfigCommon
;
NR_ServingCellConfigCommon_t
*
scc
=
RC
.
nrmac
[
module_id
]
->
common_channels
[
0
].
ServingCellConfigCommon
;
NR_UE_info_t
*
UE_info
=
&
RC
.
nrmac
[
module_id
]
->
UE_info
;
NR_UE_info_t
*
UE_info
=
&
RC
.
nrmac
[
module_id
]
->
UE_info
;
...
@@ -1750,7 +1755,7 @@ void nr_schedule_ulsch(module_id_t module_id, frame_t frame, sub_frame_t slot)
...
@@ -1750,7 +1755,7 @@ void nr_schedule_ulsch(module_id_t module_id, frame_t frame, sub_frame_t slot)
NR_SearchSpace_t
*
ss
=
(
sched_ctrl
->
active_bwp
||
ubwpd
)
?
sched_ctrl
->
search_space
:
RC
.
nrmac
[
module_id
]
->
sched_ctrlCommon
->
search_space
;
NR_SearchSpace_t
*
ss
=
(
sched_ctrl
->
active_bwp
||
ubwpd
)
?
sched_ctrl
->
search_space
:
RC
.
nrmac
[
module_id
]
->
sched_ctrlCommon
->
search_space
;
NR_ControlResourceSet_t
*
coreset
=
(
sched_ctrl
->
active_bwp
||
ubwpd
)
?
sched_ctrl
->
coreset
:
RC
.
nrmac
[
module_id
]
->
sched_ctrlCommon
->
coreset
;
NR_ControlResourceSet_t
*
coreset
=
(
sched_ctrl
->
active_bwp
||
ubwpd
)
?
sched_ctrl
->
coreset
:
RC
.
nrmac
[
module_id
]
->
sched_ctrlCommon
->
coreset
;
const
int
coresetid
=
coreset
->
controlResourceSetId
;
const
int
coresetid
=
coreset
->
controlResourceSetId
;
nfapi_nr_dl_tti_pdcch_pdu_rel15_t
*
pdcch_pdu
=
nr_mac
->
pdcch_pdu_idx
[
CC_id
]
[
coresetid
];
nfapi_nr_dl_tti_pdcch_pdu_rel15_t
*
pdcch_pdu
=
pdcch_pdu_coreset
[
coresetid
];
if
(
!
pdcch_pdu
)
{
if
(
!
pdcch_pdu
)
{
nfapi_nr_ul_dci_request_pdus_t
*
ul_dci_request_pdu
=
&
ul_dci_req
->
ul_dci_pdu_list
[
ul_dci_req
->
numPdus
];
nfapi_nr_ul_dci_request_pdus_t
*
ul_dci_request_pdu
=
&
ul_dci_req
->
ul_dci_pdu_list
[
ul_dci_req
->
numPdus
];
memset
(
ul_dci_request_pdu
,
0
,
sizeof
(
nfapi_nr_ul_dci_request_pdus_t
));
memset
(
ul_dci_request_pdu
,
0
,
sizeof
(
nfapi_nr_ul_dci_request_pdus_t
));
...
@@ -1759,7 +1764,7 @@ void nr_schedule_ulsch(module_id_t module_id, frame_t frame, sub_frame_t slot)
...
@@ -1759,7 +1764,7 @@ void nr_schedule_ulsch(module_id_t module_id, frame_t frame, sub_frame_t slot)
pdcch_pdu
=
&
ul_dci_request_pdu
->
pdcch_pdu
.
pdcch_pdu_rel15
;
pdcch_pdu
=
&
ul_dci_request_pdu
->
pdcch_pdu
.
pdcch_pdu_rel15
;
ul_dci_req
->
numPdus
+=
1
;
ul_dci_req
->
numPdus
+=
1
;
nr_configure_pdcch
(
pdcch_pdu
,
coreset
,
genericParameters
,
&
sched_ctrl
->
sched_pdcch
);
nr_configure_pdcch
(
pdcch_pdu
,
coreset
,
genericParameters
,
&
sched_ctrl
->
sched_pdcch
);
nr_mac
->
pdcch_pdu_idx
[
CC_id
]
[
coresetid
]
=
pdcch_pdu
;
pdcch_pdu_coreset
[
coresetid
]
=
pdcch_pdu
;
}
}
LOG_D
(
NR_MAC
,
"Configuring ULDCI/PDCCH in %d.%d at CCE %d, rnti %x
\n
"
,
frame
,
slot
,
sched_ctrl
->
cce_index
,
rnti
);
LOG_D
(
NR_MAC
,
"Configuring ULDCI/PDCCH in %d.%d at CCE %d, rnti %x
\n
"
,
frame
,
slot
,
sched_ctrl
->
cce_index
,
rnti
);
...
...
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
View file @
8dcf0d01
...
@@ -260,13 +260,13 @@ NR_sched_pdcch_t set_pdcch_structure(gNB_MAC_INST *gNB_mac,
...
@@ -260,13 +260,13 @@ NR_sched_pdcch_t set_pdcch_structure(gNB_MAC_INST *gNB_mac,
NR_BWP_t
*
bwp
,
NR_BWP_t
*
bwp
,
NR_Type0_PDCCH_CSS_config_t
*
type0_PDCCH_CSS_config
);
NR_Type0_PDCCH_CSS_config_t
*
type0_PDCCH_CSS_config
);
uint8_
t
find_pdcch_candidate
(
gNB_MAC_INST
*
mac
,
in
t
find_pdcch_candidate
(
gNB_MAC_INST
*
mac
,
int
cc_id
,
int
cc_id
,
int
aggregation
,
int
aggregation
,
int
nr_of_candidates
,
int
nr_of_candidates
,
NR_sched_pdcch_t
*
pdcch
,
NR_sched_pdcch_t
*
pdcch
,
NR_ControlResourceSet_t
*
coreset
,
NR_ControlResourceSet_t
*
coreset
,
uint16_t
Y
);
uint16_t
Y
);
void
fill_pdcch_vrb_map
(
gNB_MAC_INST
*
mac
,
void
fill_pdcch_vrb_map
(
gNB_MAC_INST
*
mac
,
int
CC_id
,
int
CC_id
,
...
...
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