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
lizhongxiao
OpenXG UE
Commits
0039e87a
Commit
0039e87a
authored
Jan 11, 2021
by
hardy
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/NR_FR2_RA' into integration_2021_wk02
parents
d2d9ccbf
b95d8c33
Changes
21
Show whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
141 additions
and
139 deletions
+141
-139
openair1/PHY/INIT/nr_init.c
openair1/PHY/INIT/nr_init.c
+1
-0
openair1/PHY/INIT/nr_init_ue.c
openair1/PHY/INIT/nr_init_ue.c
+34
-0
openair1/PHY/NR_REFSIG/nr_gold_ue.c
openair1/PHY/NR_REFSIG/nr_gold_ue.c
+29
-69
openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
+2
-2
openair1/PHY/defs_nr_UE.h
openair1/PHY/defs_nr_UE.h
+3
-3
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
+27
-0
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h
+4
-0
openair2/LAYER2/NR_MAC_UE/config_ue.c
openair2/LAYER2/NR_MAC_UE/config_ue.c
+2
-0
openair2/LAYER2/NR_MAC_UE/mac_defs.h
openair2/LAYER2/NR_MAC_UE/mac_defs.h
+4
-2
openair2/LAYER2/NR_MAC_UE/main_ue_nr.c
openair2/LAYER2/NR_MAC_UE/main_ue_nr.c
+0
-1
openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c
openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c
+1
-1
openair2/LAYER2/NR_MAC_UE/nr_ue_dci_configuration.c
openair2/LAYER2/NR_MAC_UE/nr_ue_dci_configuration.c
+9
-10
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
+9
-8
openair2/LAYER2/NR_MAC_UE/rar_tools_nrUE.c
openair2/LAYER2/NR_MAC_UE/rar_tools_nrUE.c
+3
-1
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c
+1
-1
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
+1
-2
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c
+6
-2
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
+3
-32
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
+0
-3
targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band257.tm1.32PRB.usrpx300.conf
.../GENERIC-LTE-EPC/CONF/gnb.band257.tm1.32PRB.usrpx300.conf
+1
-1
targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band261.tm1.32PRB.usrpn300.conf
.../GENERIC-LTE-EPC/CONF/gnb.band261.tm1.32PRB.usrpn300.conf
+1
-1
No files found.
openair1/PHY/INIT/nr_init.c
View file @
0039e87a
...
@@ -134,6 +134,7 @@ int phy_init_nr_gNB(PHY_VARS_gNB *gNB,
...
@@ -134,6 +134,7 @@ int phy_init_nr_gNB(PHY_VARS_gNB *gNB,
nr_generate_modulation_table
();
nr_generate_modulation_table
();
nr_init_pdcch_dmrs
(
gNB
,
cfg
->
cell_config
.
phy_cell_id
.
value
);
nr_init_pdcch_dmrs
(
gNB
,
cfg
->
cell_config
.
phy_cell_id
.
value
);
nr_init_pbch_interleaver
(
gNB
->
nr_pbch_interleaver
);
nr_init_pbch_interleaver
(
gNB
->
nr_pbch_interleaver
);
//PDSCH DMRS init
//PDSCH DMRS init
gNB
->
nr_gold_pdsch_dmrs
=
(
uint32_t
****
)
malloc16
(
fp
->
slots_per_frame
*
sizeof
(
uint32_t
***
));
gNB
->
nr_gold_pdsch_dmrs
=
(
uint32_t
****
)
malloc16
(
fp
->
slots_per_frame
*
sizeof
(
uint32_t
***
));
uint32_t
****
pdsch_dmrs
=
gNB
->
nr_gold_pdsch_dmrs
;
uint32_t
****
pdsch_dmrs
=
gNB
->
nr_gold_pdsch_dmrs
;
...
...
openair1/PHY/INIT/nr_init_ue.c
View file @
0039e87a
...
@@ -586,6 +586,40 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue,
...
@@ -586,6 +586,40 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue,
}
}
}
}
//PDCCH DMRS init (eNB offset = 0)
ue
->
nr_gold_pdcch
[
0
]
=
(
uint32_t
***
)
malloc16
(
fp
->
slots_per_frame
*
sizeof
(
uint32_t
**
));
uint32_t
***
pdcch_dmrs
=
ue
->
nr_gold_pdcch
[
0
];
AssertFatal
(
pdcch_dmrs
!=
NULL
,
"NR init: pdcch_dmrs malloc failed
\n
"
);
for
(
int
slot
=
0
;
slot
<
fp
->
slots_per_frame
;
slot
++
)
{
pdcch_dmrs
[
slot
]
=
(
uint32_t
**
)
malloc16
(
fp
->
symbols_per_slot
*
sizeof
(
uint32_t
*
));
AssertFatal
(
pdcch_dmrs
[
slot
]
!=
NULL
,
"NR init: pdcch_dmrs for slot %d - malloc failed
\n
"
,
slot
);
for
(
int
symb
=
0
;
symb
<
fp
->
symbols_per_slot
;
symb
++
)
{
pdcch_dmrs
[
slot
][
symb
]
=
(
uint32_t
*
)
malloc16
(
NR_MAX_PDCCH_DMRS_INIT_LENGTH_DWORD
*
sizeof
(
uint32_t
));
AssertFatal
(
pdcch_dmrs
[
slot
][
symb
]
!=
NULL
,
"NR init: pdcch_dmrs for slot %d symbol %d - malloc failed
\n
"
,
slot
,
symb
);
}
}
//PDSCH DMRS init (eNB offset = 0)
ue
->
nr_gold_pdsch
[
0
]
=
(
uint32_t
****
)
malloc16
(
fp
->
slots_per_frame
*
sizeof
(
uint32_t
***
));
uint32_t
****
pdsch_dmrs
=
ue
->
nr_gold_pdsch
[
0
];
for
(
int
slot
=
0
;
slot
<
fp
->
slots_per_frame
;
slot
++
)
{
pdsch_dmrs
[
slot
]
=
(
uint32_t
***
)
malloc16
(
fp
->
symbols_per_slot
*
sizeof
(
uint32_t
**
));
AssertFatal
(
pdsch_dmrs
[
slot
]
!=
NULL
,
"NR init: pdsch_dmrs for slot %d - malloc failed
\n
"
,
slot
);
for
(
int
symb
=
0
;
symb
<
fp
->
symbols_per_slot
;
symb
++
)
{
pdsch_dmrs
[
slot
][
symb
]
=
(
uint32_t
**
)
malloc16
(
NR_MAX_NB_CODEWORDS
*
sizeof
(
uint32_t
*
));
AssertFatal
(
pdsch_dmrs
[
slot
][
symb
]
!=
NULL
,
"NR init: pdsch_dmrs for slot %d symbol %d - malloc failed
\n
"
,
slot
,
symb
);
for
(
int
q
=
0
;
q
<
NR_MAX_NB_CODEWORDS
;
q
++
)
{
pdsch_dmrs
[
slot
][
symb
][
q
]
=
(
uint32_t
*
)
malloc16
(
NR_MAX_PDSCH_DMRS_INIT_LENGTH_DWORD
*
sizeof
(
uint32_t
));
AssertFatal
(
pdsch_dmrs
[
slot
][
symb
][
q
]
!=
NULL
,
"NR init: pdsch_dmrs for slot %d symbol %d codeword %d - malloc failed
\n
"
,
slot
,
symb
,
q
);
}
}
}
// DLSCH
// DLSCH
for
(
eNB_id
=
0
;
eNB_id
<
ue
->
n_connected_eNB
;
eNB_id
++
)
{
for
(
eNB_id
=
0
;
eNB_id
<
ue
->
n_connected_eNB
;
eNB_id
++
)
{
for
(
th_id
=
0
;
th_id
<
RX_NB_TH_MAX
;
th_id
++
)
{
for
(
th_id
=
0
;
th_id
<
RX_NB_TH_MAX
;
th_id
++
)
{
...
...
openair1/PHY/NR_REFSIG/nr_gold_ue.c
View file @
0039e87a
...
@@ -26,6 +26,7 @@ void nr_gold_pbch(PHY_VARS_NR_UE* ue)
...
@@ -26,6 +26,7 @@ void nr_gold_pbch(PHY_VARS_NR_UE* ue)
unsigned
int
n
,
x1
,
x2
;
unsigned
int
n
,
x1
,
x2
;
unsigned
int
Nid
,
i_ssb
,
i_ssb2
;
unsigned
int
Nid
,
i_ssb
,
i_ssb2
;
unsigned
char
Lmax
,
l
,
n_hf
,
N_hf
;
unsigned
char
Lmax
,
l
,
n_hf
,
N_hf
;
uint8_t
reset
;
Nid
=
ue
->
frame_parms
.
Nid_cell
;
Nid
=
ue
->
frame_parms
.
Nid_cell
;
Lmax
=
ue
->
frame_parms
.
Lmax
;
Lmax
=
ue
->
frame_parms
.
Lmax
;
...
@@ -37,24 +38,12 @@ void nr_gold_pbch(PHY_VARS_NR_UE* ue)
...
@@ -37,24 +38,12 @@ void nr_gold_pbch(PHY_VARS_NR_UE* ue)
i_ssb
=
l
&
(
Lmax
-
1
);
i_ssb
=
l
&
(
Lmax
-
1
);
i_ssb2
=
i_ssb
+
(
n_hf
<<
2
);
i_ssb2
=
i_ssb
+
(
n_hf
<<
2
);
x1
=
1
+
(
1
<<
31
)
;
reset
=
1
;
x2
=
(
1
<<
11
)
*
(
i_ssb2
+
1
)
*
((
Nid
>>
2
)
+
1
)
+
(
1
<<
6
)
*
(
i_ssb2
+
1
)
+
(
Nid
&
3
);
x2
=
(
1
<<
11
)
*
(
i_ssb2
+
1
)
*
((
Nid
>>
2
)
+
1
)
+
(
1
<<
6
)
*
(
i_ssb2
+
1
)
+
(
Nid
&
3
);
x2
=
x2
^
((
x2
^
(
x2
>>
1
)
^
(
x2
>>
2
)
^
(
x2
>>
3
))
<<
31
);
// skip first 50 double words (1600 bits)
for
(
n
=
1
;
n
<
50
;
n
++
)
{
x1
=
(
x1
>>
1
)
^
(
x1
>>
4
);
x1
=
x1
^
(
x1
<<
31
)
^
(
x1
<<
28
);
x2
=
(
x2
>>
1
)
^
(
x2
>>
2
)
^
(
x2
>>
3
)
^
(
x2
>>
4
);
x2
=
x2
^
(
x2
<<
31
)
^
(
x2
<<
30
)
^
(
x2
<<
29
)
^
(
x2
<<
28
);
}
for
(
n
=
0
;
n
<
NR_PBCH_DMRS_LENGTH_DWORD
;
n
++
)
{
for
(
n
=
0
;
n
<
NR_PBCH_DMRS_LENGTH_DWORD
;
n
++
)
{
x1
=
(
x1
>>
1
)
^
(
x1
>>
4
);
ue
->
nr_gold_pbch
[
n_hf
][
l
][
n
]
=
lte_gold_generic
(
&
x1
,
&
x2
,
reset
);
x1
=
x1
^
(
x1
<<
31
)
^
(
x1
<<
28
);
reset
=
0
;
x2
=
(
x2
>>
1
)
^
(
x2
>>
2
)
^
(
x2
>>
3
)
^
(
x2
>>
4
);
x2
=
x2
^
(
x2
<<
31
)
^
(
x2
<<
30
)
^
(
x2
<<
29
)
^
(
x2
<<
28
);
ue
->
nr_gold_pbch
[
n_hf
][
l
][
n
]
=
x1
^
x2
;
}
}
}
}
...
@@ -69,38 +58,24 @@ void nr_gold_pdcch(PHY_VARS_NR_UE* ue,
...
@@ -69,38 +58,24 @@ void nr_gold_pdcch(PHY_VARS_NR_UE* ue,
unsigned
char
ns
,
l
;
unsigned
char
ns
,
l
;
unsigned
int
n
,
x1
,
x2
,
x2tmp0
;
unsigned
int
n
,
x1
,
x2
,
x2tmp0
;
unsigned
int
nid
;
unsigned
int
nid
;
uint8_t
reset
;
if
(
n_idDMRS
)
if
(
n_idDMRS
)
nid
=
n_idDMRS
;
nid
=
n_idDMRS
;
else
else
nid
=
ue
->
frame_parms
.
Nid_cell
;
nid
=
ue
->
frame_parms
.
Nid_cell
;
for
(
ns
=
0
;
ns
<
20
;
ns
++
)
{
for
(
ns
=
0
;
ns
<
ue
->
frame_parms
.
slots_per_frame
;
ns
++
)
{
for
(
l
=
0
;
l
<
length_dmrs
;
l
++
)
{
for
(
l
=
0
;
l
<
length_dmrs
;
l
++
)
{
x2tmp0
=
((
14
*
ns
+
l
+
1
)
*
((
nid
<<
1
)
+
1
))
<<
17
;
reset
=
1
;
x2tmp0
=
((
ue
->
frame_parms
.
symbols_per_slot
*
ns
+
l
+
1
)
*
((
nid
<<
1
)
+
1
))
<<
17
;
x2
=
(
x2tmp0
+
(
nid
<<
1
))
%
(
1
<<
31
);
//cinit
x2
=
(
x2tmp0
+
(
nid
<<
1
))
%
(
1
<<
31
);
//cinit
x1
=
1
+
(
1
<<
31
);
for
(
n
=
0
;
n
<
NR_MAX_PDCCH_DMRS_INIT_LENGTH_DWORD
;
n
++
)
{
x2
=
x2
^
((
x2
^
(
x2
>>
1
)
^
(
x2
>>
2
)
^
(
x2
>>
3
))
<<
31
);
ue
->
nr_gold_pdcch
[
0
][
ns
][
l
][
n
]
=
lte_gold_generic
(
&
x1
,
&
x2
,
reset
);
reset
=
0
;
// skip first 50 double words (1600 bits)
for
(
n
=
1
;
n
<
50
;
n
++
)
{
x1
=
(
x1
>>
1
)
^
(
x1
>>
4
);
x1
=
x1
^
(
x1
<<
31
)
^
(
x1
<<
28
);
x2
=
(
x2
>>
1
)
^
(
x2
>>
2
)
^
(
x2
>>
3
)
^
(
x2
>>
4
);
x2
=
x2
^
(
x2
<<
31
)
^
(
x2
<<
30
)
^
(
x2
<<
29
)
^
(
x2
<<
28
);
//printf("x1 : %x, x2 : %x\n",x1,x2);
}
for
(
n
=
0
;
n
<
52
;
n
++
)
{
x1
=
(
x1
>>
1
)
^
(
x1
>>
4
);
x1
=
x1
^
(
x1
<<
31
)
^
(
x1
<<
28
);
x2
=
(
x2
>>
1
)
^
(
x2
>>
2
)
^
(
x2
>>
3
)
^
(
x2
>>
4
);
x2
=
x2
^
(
x2
<<
31
)
^
(
x2
<<
30
)
^
(
x2
<<
29
)
^
(
x2
<<
28
);
ue
->
nr_gold_pdcch
[
0
][
ns
][
l
][
n
]
=
x1
^
x2
;
// if (ns==1 && l==0) printf("n=%d : c %x\n",n,x1^x2);
}
}
}
}
}
}
...
@@ -114,6 +89,7 @@ void nr_gold_pdsch(PHY_VARS_NR_UE* ue,
...
@@ -114,6 +89,7 @@ void nr_gold_pdsch(PHY_VARS_NR_UE* ue,
unsigned
int
n
,
x1
,
x2
,
x2tmp0
;
unsigned
int
n
,
x1
,
x2
,
x2tmp0
;
int
nscid
;
int
nscid
;
unsigned
int
nid
;
unsigned
int
nid
;
uint8_t
reset
;
/// to be updated from higher layer
/// to be updated from higher layer
//unsigned short lbar = 0;
//unsigned short lbar = 0;
...
@@ -126,32 +102,16 @@ void nr_gold_pdsch(PHY_VARS_NR_UE* ue,
...
@@ -126,32 +102,16 @@ void nr_gold_pdsch(PHY_VARS_NR_UE* ue,
//printf("gold pdsch nid %d lbar %d\n",nid,lbar);
//printf("gold pdsch nid %d lbar %d\n",nid,lbar);
for
(
l
=
0
;
l
<
14
;
l
++
)
{
for
(
l
=
0
;
l
<
ue
->
frame_parms
.
symbols_per_slot
;
l
++
)
{
x2tmp0
=
((
14
*
ns
+
l
+
1
)
*
((
nid
<<
1
)
+
1
))
<<
17
;
reset
=
1
;
x2tmp0
=
((
ue
->
frame_parms
.
symbols_per_slot
*
ns
+
l
+
1
)
*
((
nid
<<
1
)
+
1
))
<<
17
;
x2
=
(
x2tmp0
+
(
nid
<<
1
)
+
nscid
)
%
(
1
<<
31
);
//cinit
x2
=
(
x2tmp0
+
(
nid
<<
1
)
+
nscid
)
%
(
1
<<
31
);
//cinit
LOG_D
(
PHY
,
"UE DMRS slot %d, symb %d, x2 %x, nscid %d
\n
"
,
ns
,
l
,
x2
,
nscid
);
LOG_D
(
PHY
,
"UE DMRS slot %d, symb %d, x2 %x, nscid %d
\n
"
,
ns
,
l
,
x2
,
nscid
);
//printf("ns %d gold pdsch x2 %d\n",ns,x2);
x1
=
1
+
(
1
<<
31
);
x2
=
x2
^
((
x2
^
(
x2
>>
1
)
^
(
x2
>>
2
)
^
(
x2
>>
3
))
<<
31
);
// skip first 50 double words (1600 bits)
for
(
n
=
1
;
n
<
50
;
n
++
)
{
x1
=
(
x1
>>
1
)
^
(
x1
>>
4
);
x1
=
x1
^
(
x1
<<
31
)
^
(
x1
<<
28
);
x2
=
(
x2
>>
1
)
^
(
x2
>>
2
)
^
(
x2
>>
3
)
^
(
x2
>>
4
);
x2
=
x2
^
(
x2
<<
31
)
^
(
x2
<<
30
)
^
(
x2
<<
29
)
^
(
x2
<<
28
);
//printf("x1 : %x, x2 : %x\n",x1,x2);
}
for
(
n
=
0
;
n
<
NR_MAX_PDSCH_DMRS_INIT_LENGTH_DWORD
;
n
++
)
{
for
(
n
=
0
;
n
<
NR_MAX_PDSCH_DMRS_INIT_LENGTH_DWORD
;
n
++
)
{
x1
=
(
x1
>>
1
)
^
(
x1
>>
4
);
ue
->
nr_gold_pdsch
[
0
][
ns
][
l
][
nscid
][
n
]
=
lte_gold_generic
(
&
x1
,
&
x2
,
reset
);
x1
=
x1
^
(
x1
<<
31
)
^
(
x1
<<
28
);
reset
=
0
;
x2
=
(
x2
>>
1
)
^
(
x2
>>
2
)
^
(
x2
>>
3
)
^
(
x2
>>
4
);
x2
=
x2
^
(
x2
<<
31
)
^
(
x2
<<
30
)
^
(
x2
<<
29
)
^
(
x2
<<
28
);
ue
->
nr_gold_pdsch
[
nscid
][
ns
][
l
][
n
]
=
x1
^
x2
;
// if ((ns==2)&&(l==0))
//printf("n=%d : c %x\n",n,x1^x2);
}
}
}
}
}
}
...
...
openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
View file @
0039e87a
...
@@ -689,7 +689,7 @@ int nr_pdsch_channel_estimation(PHY_VARS_NR_UE *ue,
...
@@ -689,7 +689,7 @@ int nr_pdsch_channel_estimation(PHY_VARS_NR_UE *ue,
uint16_t
rb_offset
=
(
bwp_start_subcarrier
-
ue
->
frame_parms
.
first_carrier_offset
)
/
12
;
uint16_t
rb_offset
=
(
bwp_start_subcarrier
-
ue
->
frame_parms
.
first_carrier_offset
)
/
12
;
uint8_t
config_type
=
ue
->
dmrs_DownlinkConfig
.
pdsch_dmrs_type
;
uint8_t
config_type
=
ue
->
dmrs_DownlinkConfig
.
pdsch_dmrs_type
;
int8_t
delta
=
get_delta
(
p
,
config_type
);
int8_t
delta
=
get_delta
(
p
,
config_type
);
nr_pdsch_dmrs_rx
(
ue
,
Ns
,
ue
->
nr_gold_pdsch
[
eNB_offset
][
Ns
][
symbol
],
&
pilot
[
0
],
1000
,
0
,
nb_rb_pdsch
+
rb_offset
);
nr_pdsch_dmrs_rx
(
ue
,
Ns
,
ue
->
nr_gold_pdsch
[
eNB_offset
][
Ns
][
symbol
]
[
0
]
,
&
pilot
[
0
],
1000
,
0
,
nb_rb_pdsch
+
rb_offset
);
if
(
config_type
==
pdsch_dmrs_type1
){
if
(
config_type
==
pdsch_dmrs_type1
){
nushift
=
(
p
>>
1
)
&
1
;
nushift
=
(
p
>>
1
)
&
1
;
...
@@ -1321,7 +1321,7 @@ void nr_pdsch_ptrs_processing(PHY_VARS_NR_UE *ue,
...
@@ -1321,7 +1321,7 @@ void nr_pdsch_ptrs_processing(PHY_VARS_NR_UE *ue,
nr_slot_rx
,
nr_slot_rx
,
symbol
,
frame_parms
->
ofdm_symbol_size
,
symbol
,
frame_parms
->
ofdm_symbol_size
,
(
int16_t
*
)
&
pdsch_vars
[
eNB_id
]
->
rxdataF_comp0
[
aarx
][(
symbol
*
nb_re_pdsch
)],
(
int16_t
*
)
&
pdsch_vars
[
eNB_id
]
->
rxdataF_comp0
[
aarx
][(
symbol
*
nb_re_pdsch
)],
ue
->
nr_gold_pdsch
[
eNB_id
][
nr_slot_rx
][
symbol
],
ue
->
nr_gold_pdsch
[
eNB_id
][
nr_slot_rx
][
symbol
]
[
0
]
,
&
phase_per_symbol
[
2
*
symbol
],
&
phase_per_symbol
[
2
*
symbol
],
&
ptrs_re_symbol
[
symbol
]);
&
ptrs_re_symbol
[
symbol
]);
}
}
...
...
openair1/PHY/defs_nr_UE.h
View file @
0039e87a
...
@@ -889,7 +889,7 @@ typedef struct {
...
@@ -889,7 +889,7 @@ typedef struct {
UE_MODE_t
UE_mode
[
NUMBER_OF_CONNECTED_gNB_MAX
];
UE_MODE_t
UE_mode
[
NUMBER_OF_CONNECTED_gNB_MAX
];
/// cell-specific reference symbols
/// cell-specific reference symbols
uint32_t
lte_gold_table
[
7
][
20
][
2
][
14
];
//
uint32_t lte_gold_table[7][20][2][14];
#if defined(UPGRADE_RAT_NR)
#if defined(UPGRADE_RAT_NR)
...
@@ -903,10 +903,10 @@ typedef struct {
...
@@ -903,10 +903,10 @@ typedef struct {
uint32_t
nr_gold_pbch
[
2
][
64
][
NR_PBCH_DMRS_LENGTH_DWORD
];
uint32_t
nr_gold_pbch
[
2
][
64
][
NR_PBCH_DMRS_LENGTH_DWORD
];
/// PDSCH DMRS
/// PDSCH DMRS
uint32_t
nr_gold_pdsch
[
2
][
20
][
14
][
NR_MAX_PDSCH_DMRS_INIT_LENGTH_DWORD
];
uint32_t
****
nr_gold_pdsch
[
NUMBER_OF_CONNECTED_eNB_MAX
];
/// PDCCH DMRS
/// PDCCH DMRS
uint32_t
nr_gold_pdcch
[
7
][
20
][
3
][
52
];
uint32_t
***
nr_gold_pdcch
[
NUMBER_OF_CONNECTED_eNB_MAX
];
/// PUSCH DMRS sequence
/// PUSCH DMRS sequence
uint32_t
****
nr_gold_pusch_dmrs
;
uint32_t
****
nr_gold_pusch_dmrs
;
...
...
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
View file @
0039e87a
...
@@ -974,6 +974,33 @@ int64_t *get_prach_config_info(uint32_t pointa,
...
@@ -974,6 +974,33 @@ int64_t *get_prach_config_info(uint32_t pointa,
return
prach_config_info_p
;
return
prach_config_info_p
;
}
}
void
find_aggregation_candidates
(
uint8_t
*
aggregation_level
,
uint8_t
*
nr_of_candidates
,
NR_SearchSpace_t
*
ss
)
{
if
(
ss
->
nrofCandidates
->
aggregationLevel1
!=
NR_SearchSpace__nrofCandidates__aggregationLevel1_n0
)
{
*
aggregation_level
=
1
;
*
nr_of_candidates
=
ss
->
nrofCandidates
->
aggregationLevel1
;
}
if
(
ss
->
nrofCandidates
->
aggregationLevel2
!=
NR_SearchSpace__nrofCandidates__aggregationLevel2_n0
)
{
*
aggregation_level
=
2
;
*
nr_of_candidates
=
ss
->
nrofCandidates
->
aggregationLevel2
;
}
if
(
ss
->
nrofCandidates
->
aggregationLevel4
!=
NR_SearchSpace__nrofCandidates__aggregationLevel4_n0
)
{
*
aggregation_level
=
4
;
*
nr_of_candidates
=
ss
->
nrofCandidates
->
aggregationLevel4
;
}
if
(
ss
->
nrofCandidates
->
aggregationLevel8
!=
NR_SearchSpace__nrofCandidates__aggregationLevel8_n0
)
{
*
aggregation_level
=
8
;
*
nr_of_candidates
=
ss
->
nrofCandidates
->
aggregationLevel8
;
}
if
(
ss
->
nrofCandidates
->
aggregationLevel16
!=
NR_SearchSpace__nrofCandidates__aggregationLevel16_n0
)
{
*
aggregation_level
=
16
;
*
nr_of_candidates
=
ss
->
nrofCandidates
->
aggregationLevel16
;
}
}
void
find_monitoring_periodicity_offset_common
(
NR_SearchSpace_t
*
ss
,
void
find_monitoring_periodicity_offset_common
(
NR_SearchSpace_t
*
ss
,
uint16_t
*
slot_period
,
uint16_t
*
slot_period
,
uint16_t
*
offset
)
{
uint16_t
*
offset
)
{
...
...
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h
View file @
0039e87a
...
@@ -123,6 +123,10 @@ uint16_t nr_dci_size(NR_ServingCellConfigCommon_t *scc,
...
@@ -123,6 +123,10 @@ uint16_t nr_dci_size(NR_ServingCellConfigCommon_t *scc,
uint16_t
N_RB
,
uint16_t
N_RB
,
int
bwp_id
);
int
bwp_id
);
void
find_aggregation_candidates
(
uint8_t
*
aggregation_level
,
uint8_t
*
nr_of_candidates
,
NR_SearchSpace_t
*
ss
);
void
find_monitoring_periodicity_offset_common
(
NR_SearchSpace_t
*
ss
,
void
find_monitoring_periodicity_offset_common
(
NR_SearchSpace_t
*
ss
,
uint16_t
*
slot_period
,
uint16_t
*
slot_period
,
uint16_t
*
offset
);
uint16_t
*
offset
);
...
...
openair2/LAYER2/NR_MAC_UE/config_ue.c
View file @
0039e87a
...
@@ -421,6 +421,8 @@ int nr_rrc_mac_config_req_ue(
...
@@ -421,6 +421,8 @@ int nr_rrc_mac_config_req_ue(
mac
->
scg
=
cell_group_config
;
mac
->
scg
=
cell_group_config
;
mac
->
servCellIndex
=
*
cell_group_config
->
spCellConfig
->
servCellIndex
;
mac
->
servCellIndex
=
*
cell_group_config
->
spCellConfig
->
servCellIndex
;
config_control_ue
(
mac
);
config_control_ue
(
mac
);
mac
->
msg3_frame
=
-
1
;
// initialize to an invalid value
mac
->
msg3_slot
=
-
1
;
if
(
cell_group_config
->
spCellConfig
->
reconfigurationWithSync
)
{
if
(
cell_group_config
->
spCellConfig
->
reconfigurationWithSync
)
{
mac
->
rach_ConfigDedicated
=
cell_group_config
->
spCellConfig
->
reconfigurationWithSync
->
rach_ConfigDedicated
->
choice
.
uplink
;
mac
->
rach_ConfigDedicated
=
cell_group_config
->
spCellConfig
->
reconfigurationWithSync
->
rach_ConfigDedicated
->
choice
.
uplink
;
mac
->
scc
=
cell_group_config
->
spCellConfig
->
reconfigurationWithSync
->
spCellConfigCommon
;
mac
->
scc
=
cell_group_config
->
spCellConfig
->
reconfigurationWithSync
->
spCellConfigCommon
;
...
...
openair2/LAYER2/NR_MAC_UE/mac_defs.h
View file @
0039e87a
...
@@ -227,9 +227,9 @@ typedef struct {
...
@@ -227,9 +227,9 @@ typedef struct {
/// Random-access variable for window calculation (subframe of last change in window counter)
/// Random-access variable for window calculation (subframe of last change in window counter)
uint8_t
RA_tx_subframe
;
uint8_t
RA_tx_subframe
;
/// Scheduled TX frame for RA Msg3
/// Scheduled TX frame for RA Msg3
frame
_t
msg3_frame
;
int16
_t
msg3_frame
;
/// Scheduled TX slot for RA Msg3
/// Scheduled TX slot for RA Msg3
slot
_t
msg3_slot
;
int16
_t
msg3_slot
;
/// Random-access variable for backoff (frame of last change in backoff counter)
/// Random-access variable for backoff (frame of last change in backoff counter)
uint32_t
RA_backoff_frame
;
uint32_t
RA_backoff_frame
;
/// Random-access variable for backoff (subframe of last change in backoff counter)
/// Random-access variable for backoff (subframe of last change in backoff counter)
...
@@ -250,6 +250,8 @@ typedef struct {
...
@@ -250,6 +250,8 @@ typedef struct {
uint8_t
RA_BI_found
;
uint8_t
RA_BI_found
;
/// Flag for the Msg1 generation: enabled at every occurrence of nr prach slot
/// Flag for the Msg1 generation: enabled at every occurrence of nr prach slot
uint8_t
generate_nr_prach
;
uint8_t
generate_nr_prach
;
/// SSB index from MIB decoding
uint8_t
mib_ssb
;
//// FAPI-like interface message
//// FAPI-like interface message
fapi_nr_ul_config_request_t
*
ul_config_request
;
fapi_nr_ul_config_request_t
*
ul_config_request
;
...
...
openair2/LAYER2/NR_MAC_UE/main_ue_nr.c
View file @
0039e87a
...
@@ -52,7 +52,6 @@ NR_UE_MAC_INST_t * nr_l2_init_ue(NR_UE_RRC_INST_t* rrc_inst)
...
@@ -52,7 +52,6 @@ NR_UE_MAC_INST_t * nr_l2_init_ue(NR_UE_RRC_INST_t* rrc_inst)
nr_ue_mac_inst
=
(
NR_UE_MAC_INST_t
*
)
calloc
(
sizeof
(
NR_UE_MAC_INST_t
),
NB_NR_UE_MAC_INST
);
nr_ue_mac_inst
=
(
NR_UE_MAC_INST_t
*
)
calloc
(
sizeof
(
NR_UE_MAC_INST_t
),
NB_NR_UE_MAC_INST
);
if
(
rrc_inst
)
{
if
(
rrc_inst
)
{
nr_rrc_mac_config_req_ue
(
0
,
0
,
0
,
NULL
,
rrc_inst
->
cell_group_config
);
nr_rrc_mac_config_req_ue
(
0
,
0
,
0
,
NULL
,
rrc_inst
->
cell_group_config
);
if
(
IS_SOFTMODEM_NOS1
){
if
(
IS_SOFTMODEM_NOS1
){
AssertFatal
(
rlc_module_init
(
0
)
==
0
,
"%s: Could not initialize RLC layer
\n
"
,
__FUNCTION__
);
AssertFatal
(
rlc_module_init
(
0
)
==
0
,
"%s: Could not initialize RLC layer
\n
"
,
__FUNCTION__
);
pdcp_layer_init
();
pdcp_layer_init
();
...
...
openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c
View file @
0039e87a
...
@@ -559,7 +559,7 @@ uint8_t nr_ue_get_rach(NR_PRACH_RESOURCES_t *prach_resources,
...
@@ -559,7 +559,7 @@ uint8_t nr_ue_get_rach(NR_PRACH_RESOURCES_t *prach_resources,
mac
->
RA_window_cnt
=
-
1
;
mac
->
RA_window_cnt
=
-
1
;
mac
->
ra_state
=
RA_SUCCEEDED
;
mac
->
ra_state
=
RA_SUCCEEDED
;
mac
->
generate_nr_prach
=
2
;
mac
->
generate_nr_prach
=
2
;
LOG_I
(
MAC
,
"[MAC][UE %d][RAPROC]:
RAR successfully received
\n
"
,
mod_id
);
LOG_I
(
MAC
,
"[MAC][UE %d][RAPROC]:
frame %d slot %d RAR successfully received
\n
"
,
mod_id
,
frame
,
nr_slot_tx
);
}
else
if
(
mac
->
RA_window_cnt
==
0
&&
!
mac
->
RA_RAPID_found
)
{
}
else
if
(
mac
->
RA_window_cnt
==
0
&&
!
mac
->
RA_RAPID_found
)
{
...
...
openair2/LAYER2/NR_MAC_UE/nr_ue_dci_configuration.c
View file @
0039e87a
...
@@ -54,16 +54,15 @@ void fill_dci_search_candidates(NR_SearchSpace_t *ss,fapi_nr_dl_config_dci_dl_pd
...
@@ -54,16 +54,15 @@ void fill_dci_search_candidates(NR_SearchSpace_t *ss,fapi_nr_dl_config_dci_dl_pd
LOG_D
(
MAC
,
"Filling search candidates for DCI
\n
"
);
LOG_D
(
MAC
,
"Filling search candidates for DCI
\n
"
);
rel15
->
number_of_candidates
=
4
;
uint8_t
aggregation
;
rel15
->
CCE
[
0
]
=
0
;
find_aggregation_candidates
(
&
aggregation
,
rel15
->
L
[
0
]
=
4
;
&
rel15
->
number_of_candidates
,
rel15
->
CCE
[
1
]
=
4
;
ss
);
rel15
->
L
[
1
]
=
4
;
rel15
->
CCE
[
2
]
=
8
;
rel15
->
L
[
2
]
=
4
;
rel15
->
CCE
[
3
]
=
12
;
rel15
->
L
[
3
]
=
4
;
for
(
int
i
=
0
;
i
<
rel15
->
number_of_candidates
;
i
++
)
{
rel15
->
CCE
[
i
]
=
i
*
aggregation
;
rel15
->
L
[
i
]
=
aggregation
;
}
}
}
void
config_dci_pdu
(
NR_UE_MAC_INST_t
*
mac
,
fapi_nr_dl_config_dci_dl_pdu_rel15_t
*
rel15
,
fapi_nr_dl_config_request_t
*
dl_config
,
int
rnti_type
,
int
ss_id
){
void
config_dci_pdu
(
NR_UE_MAC_INST_t
*
mac
,
fapi_nr_dl_config_dci_dl_pdu_rel15_t
*
rel15
,
fapi_nr_dl_config_request_t
*
dl_config
,
int
rnti_type
,
int
ss_id
){
...
...
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
View file @
0039e87a
...
@@ -993,7 +993,10 @@ int8_t nr_ue_decode_mib(module_id_t module_id,
...
@@ -993,7 +993,10 @@ int8_t nr_ue_decode_mib(module_id_t module_id,
LOG_D
(
MAC
,
"cell barred (0=barred,1=notBarred): %d
\n
"
,
(
int
)
mac
->
mib
->
cellBarred
);
LOG_D
(
MAC
,
"cell barred (0=barred,1=notBarred): %d
\n
"
,
(
int
)
mac
->
mib
->
cellBarred
);
LOG_D
(
MAC
,
"intra frequency reselection (0=allowed,1=notAllowed): %d
\n
"
,
(
int
)
mac
->
mib
->
intraFreqReselection
);
LOG_D
(
MAC
,
"intra frequency reselection (0=allowed,1=notAllowed): %d
\n
"
,
(
int
)
mac
->
mib
->
intraFreqReselection
);
LOG_D
(
MAC
,
"half frame bit(extra bits): %d
\n
"
,
(
int
)
half_frame_bit
);
LOG_D
(
MAC
,
"half frame bit(extra bits): %d
\n
"
,
(
int
)
half_frame_bit
);
LOG_D
(
MAC
,
"ssb index(extra bits): %d
\n
"
,
(
int
)
ssb_index
);
LOG_I
(
MAC
,
"ssb index(extra bits): %d
\n
"
,
(
int
)
ssb_index
);
//storing ssb index in the mac structure
mac
->
mib_ssb
=
ssb_index
;
subcarrier_spacing_t
scs_ssb
=
scs_30kHz
;
// default for
subcarrier_spacing_t
scs_ssb
=
scs_30kHz
;
// default for
//const uint32_t scs_index = 0;
//const uint32_t scs_index = 0;
...
@@ -1661,7 +1664,7 @@ NR_UE_L2_STATE_t nr_ue_scheduler(nr_downlink_indication_t *dl_info, nr_uplink_in
...
@@ -1661,7 +1664,7 @@ NR_UE_L2_STATE_t nr_ue_scheduler(nr_downlink_indication_t *dl_info, nr_uplink_in
NR_UE_MAC_INST_t
*
mac
=
get_mac_inst
(
ul_info
->
module_id
);
NR_UE_MAC_INST_t
*
mac
=
get_mac_inst
(
ul_info
->
module_id
);
if
(
mac
->
RA_active
&&
ul_info
->
slot_tx
==
mac
->
msg3_slot
&&
ul_info
->
frame_tx
==
mac
->
msg3_frame
){
if
(
ul_info
->
slot_tx
==
mac
->
msg3_slot
&&
ul_info
->
frame_tx
==
mac
->
msg3_frame
){
uint8_t
ulsch_input_buffer
[
MAX_ULSCH_PAYLOAD_BYTES
];
uint8_t
ulsch_input_buffer
[
MAX_ULSCH_PAYLOAD_BYTES
];
nr_scheduled_response_t
scheduled_response
;
nr_scheduled_response_t
scheduled_response
;
...
@@ -1698,7 +1701,7 @@ NR_UE_L2_STATE_t nr_ue_scheduler(nr_downlink_indication_t *dl_info, nr_uplink_in
...
@@ -1698,7 +1701,7 @@ NR_UE_L2_STATE_t nr_ue_scheduler(nr_downlink_indication_t *dl_info, nr_uplink_in
}
}
//}
//}
LOG_
D
(
MAC
,
"[UE %d] Frame %d, Subframe %d Adding Msg3 UL Config Request for rnti: %x
\n
"
,
LOG_
I
(
MAC
,
"[UE %d] Frame %d, Subframe %d Adding Msg3 UL Config Request for rnti: %x
\n
"
,
ul_info
->
module_id
,
ul_info
->
module_id
,
ul_info
->
frame_tx
,
ul_info
->
frame_tx
,
ul_info
->
slot_tx
,
ul_info
->
slot_tx
,
...
@@ -1718,6 +1721,8 @@ NR_UE_L2_STATE_t nr_ue_scheduler(nr_downlink_indication_t *dl_info, nr_uplink_in
...
@@ -1718,6 +1721,8 @@ NR_UE_L2_STATE_t nr_ue_scheduler(nr_downlink_indication_t *dl_info, nr_uplink_in
if
(
mac
->
if_module
!=
NULL
&&
mac
->
if_module
->
scheduled_response
!=
NULL
){
if
(
mac
->
if_module
!=
NULL
&&
mac
->
if_module
->
scheduled_response
!=
NULL
){
mac
->
if_module
->
scheduled_response
(
&
scheduled_response
);
mac
->
if_module
->
scheduled_response
(
&
scheduled_response
);
}
}
mac
->
msg3_frame
=
-
1
;
// re-initialize to an invalid value after scheduling
mac
->
msg3_slot
=
-
1
;
}
}
}
}
}
}
...
@@ -1760,9 +1765,7 @@ void nr_ue_msg3_scheduler(NR_UE_MAC_INST_t *mac,
...
@@ -1760,9 +1765,7 @@ void nr_ue_msg3_scheduler(NR_UE_MAC_INST_t *mac,
else
else
mac
->
msg3_frame
=
current_frame
;
mac
->
msg3_frame
=
current_frame
;
#ifdef DEBUG_MSG3
LOG_D
(
MAC
,
"[DEBUG_MSG3] current_slot %d k2 %d delta %d temp_slot %d mac->msg3_frame %d mac->msg3_slot %d
\n
"
,
current_slot
,
k2
,
delta
,
current_slot
+
k2
+
delta
,
mac
->
msg3_frame
,
mac
->
msg3_slot
);
LOG_D
(
MAC
,
"[DEBUG_MSG3] current_slot %d k2 %d delta %d temp_slot %d mac->msg3_frame %d mac->msg3_slot %d
\n
"
,
current_slot
,
k2
,
delta
,
current_slot
+
k2
+
delta
,
mac
->
msg3_frame
,
mac
->
msg3_slot
);
#endif
}
}
// This function schedules the PRACH according to prach_ConfigurationIndex and TS 38.211, tables 6.3.3.2.x
// This function schedules the PRACH according to prach_ConfigurationIndex and TS 38.211, tables 6.3.3.2.x
...
@@ -1793,9 +1796,7 @@ void nr_ue_prach_scheduler(module_id_t module_idP, frame_t frameP, sub_frame_t s
...
@@ -1793,9 +1796,7 @@ void nr_ue_prach_scheduler(module_id_t module_idP, frame_t frameP, sub_frame_t s
if
(
is_nr_UL_slot
(
scc
,
slotP
))
{
if
(
is_nr_UL_slot
(
scc
,
slotP
))
{
// WIP Need to get the proper selected ssb_idx
uint8_t
selected_gnb_ssb_idx
=
mac
->
mib_ssb
;
// Initial beam selection functionality is not available yet
uint8_t
selected_gnb_ssb_idx
=
0
;
// Get any valid PRACH occasion in the current slot for the selected SSB index
// Get any valid PRACH occasion in the current slot for the selected SSB index
is_nr_prach_slot
=
get_nr_prach_info_from_ssb_index
(
selected_gnb_ssb_idx
,
is_nr_prach_slot
=
get_nr_prach_info_from_ssb_index
(
selected_gnb_ssb_idx
,
...
...
openair2/LAYER2/NR_MAC_UE/rar_tools_nrUE.c
View file @
0039e87a
...
@@ -116,6 +116,7 @@ void nr_config_Msg3_pdu(NR_UE_MAC_INST_t *mac,
...
@@ -116,6 +116,7 @@ void nr_config_Msg3_pdu(NR_UE_MAC_INST_t *mac,
mask
=
(
1
<<
((
int
)
ceil
(
log2
((
ibwp_size
*
(
ibwp_size
+
1
))
>>
1
))))
-
1
;
mask
=
(
1
<<
((
int
)
ceil
(
log2
((
ibwp_size
*
(
ibwp_size
+
1
))
>>
1
))))
-
1
;
else
else
mask
=
(
1
<<
(
28
-
(
int
)(
ceil
(
log2
((
ibwp_size
*
(
ibwp_size
+
1
))
>>
1
)))))
-
1
;
mask
=
(
1
<<
(
28
-
(
int
)(
ceil
(
log2
((
ibwp_size
*
(
ibwp_size
+
1
))
>>
1
)))))
-
1
;
f_alloc
=
Msg3_f_alloc
&
mask
;
f_alloc
=
Msg3_f_alloc
&
mask
;
nr_ue_process_dci_freq_dom_resource_assignment
(
pusch_config_pdu
,
NULL
,
ibwp_size
,
0
,
f_alloc
);
nr_ue_process_dci_freq_dom_resource_assignment
(
pusch_config_pdu
,
NULL
,
ibwp_size
,
0
,
f_alloc
);
...
@@ -273,7 +274,8 @@ uint16_t nr_ue_process_rar(module_id_t mod_id,
...
@@ -273,7 +274,8 @@ uint16_t nr_ue_process_rar(module_id_t mod_id,
if
(
ue_mac
->
RA_RAPID_found
)
{
if
(
ue_mac
->
RA_RAPID_found
)
{
uint8_t
freq_hopping
,
mcs
,
Msg3_t_alloc
,
Msg3_f_alloc
;
uint8_t
freq_hopping
,
mcs
,
Msg3_t_alloc
;
uint16_t
Msg3_f_alloc
;
unsigned
char
tpc_command
;
unsigned
char
tpc_command
;
#ifdef DEBUG_RAR
#ifdef DEBUG_RAR
unsigned
char
csi_req
;
unsigned
char
csi_req
;
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c
View file @
0039e87a
...
@@ -360,7 +360,7 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP,
...
@@ -360,7 +360,7 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP,
nr_rrc_trigger
(
&
ctxt
,
0
/*CC_id*/
,
frame
,
slot
>>
*
scc
->
ssbSubcarrierSpacing
);
nr_rrc_trigger
(
&
ctxt
,
0
/*CC_id*/
,
frame
,
slot
>>
*
scc
->
ssbSubcarrierSpacing
);
}
}
const
uint64_t
dlsch_in_slot_bitmap
=
(
1
<<
1
)
|
(
1
<<
2
);
const
uint64_t
dlsch_in_slot_bitmap
=
(
1
<<
1
)
|
(
1
<<
3
);
const
uint64_t
ulsch_in_slot_bitmap
=
(
1
<<
8
);
const
uint64_t
ulsch_in_slot_bitmap
=
(
1
<<
8
);
memset
(
RC
.
nrmac
[
module_idP
]
->
cce_list
[
bwp_id
][
0
],
0
,
MAX_NUM_CCE
*
sizeof
(
int
));
// coreset0
memset
(
RC
.
nrmac
[
module_idP
]
->
cce_list
[
bwp_id
][
0
],
0
,
MAX_NUM_CCE
*
sizeof
(
int
));
// coreset0
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
View file @
0039e87a
...
@@ -424,8 +424,7 @@ void nr_simple_dlsch_preprocessor(module_id_t module_id,
...
@@ -424,8 +424,7 @@ void nr_simple_dlsch_preprocessor(module_id_t module_id,
find_aggregation_candidates
(
&
sched_ctrl
->
aggregation_level
,
find_aggregation_candidates
(
&
sched_ctrl
->
aggregation_level
,
&
nr_of_candidates
,
&
nr_of_candidates
,
sched_ctrl
->
search_space
);
sched_ctrl
->
search_space
);
sched_ctrl
->
coreset
=
get_coreset
(
sched_ctrl
->
coreset
=
get_coreset
(
sched_ctrl
->
active_bwp
,
sched_ctrl
->
search_space
,
1
/*dedicated*/
);
sched_ctrl
->
active_bwp
,
sched_ctrl
->
search_space
,
1
/* dedicated */
);
int
cid
=
sched_ctrl
->
coreset
->
controlResourceSetId
;
int
cid
=
sched_ctrl
->
coreset
->
controlResourceSetId
;
const
uint16_t
Y
=
UE_info
->
Y
[
UE_id
][
cid
][
slot
];
const
uint16_t
Y
=
UE_info
->
Y
[
UE_id
][
cid
][
slot
];
const
int
m
=
UE_info
->
num_pdcch_cand
[
UE_id
][
cid
];
const
int
m
=
UE_info
->
num_pdcch_cand
[
UE_id
][
cid
];
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c
View file @
0039e87a
...
@@ -395,8 +395,12 @@ void nr_ul_preprocessor_phytest(module_id_t module_id,
...
@@ -395,8 +395,12 @@ void nr_ul_preprocessor_phytest(module_id_t module_id,
if
(
!
(
is_xlsch_in_slot
(
ulsch_in_slot_bitmap
,
sched_slot
)
&&
sched_slot
==
8
))
if
(
!
(
is_xlsch_in_slot
(
ulsch_in_slot_bitmap
,
sched_slot
)
&&
sched_slot
==
8
))
return
;
return
;
const
uint16_t
rbStart
=
0
;
const
int
bw
=
NRRIV2BW
(
sched_ctrl
->
active_ubwp
->
bwp_Common
->
genericParameters
.
locationAndBandwidth
,
275
);
const
uint16_t
rbSize
=
50
;
/* due to OAI UE limitations */
uint16_t
rbStart
=
0
;
uint16_t
rbSize
=
50
;
/* due to OAI UE limitations */
if
(
rbSize
>
bw
)
rbSize
=
bw
;
uint16_t
*
vrb_map_UL
=
uint16_t
*
vrb_map_UL
=
&
RC
.
nrmac
[
module_id
]
->
common_channels
[
CC_id
].
vrb_map_UL
[
sched_slot
*
275
];
&
RC
.
nrmac
[
module_id
]
->
common_channels
[
CC_id
].
vrb_map_UL
[
sched_slot
*
275
];
for
(
int
i
=
rbStart
;
i
<
rbStart
+
rbSize
;
++
i
)
{
for
(
int
i
=
rbStart
;
i
<
rbStart
+
rbSize
;
++
i
)
{
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
View file @
0039e87a
...
@@ -191,12 +191,9 @@ int allocate_nr_CCEs(gNB_MAC_INST *nr_mac,
...
@@ -191,12 +191,9 @@ int allocate_nr_CCEs(gNB_MAC_INST *nr_mac,
const
uint16_t
N_cce
=
N_reg
/
NR_NB_REG_PER_CCE
;
const
uint16_t
N_cce
=
N_reg
/
NR_NB_REG_PER_CCE
;
const
uint16_t
M_s_max
=
nr_of_candidates
;
const
uint16_t
M_s_max
=
nr_of_candidates
;
AssertFatal
(
m
<
nr_of_candidates
,
//PDCCH candidate index m in CORESET exceeds the maximum number of PDCCH candidates
"PDCCH candidate index %d in CORESET %d exceeds the maximum "
if
(
m
>=
nr_of_candidates
)
"number of PDCCH candidates (%d)
\n
"
,
return
-
1
;
m
,
coreset_id
,
nr_of_candidates
);
int
first_cce
=
aggregation
*
((
Y
+
CEILIDIV
((
m
*
N_cce
),(
aggregation
*
M_s_max
))
+
n_CI
)
%
CEILIDIV
(
N_cce
,
aggregation
));
int
first_cce
=
aggregation
*
((
Y
+
CEILIDIV
((
m
*
N_cce
),(
aggregation
*
M_s_max
))
+
n_CI
)
%
CEILIDIV
(
N_cce
,
aggregation
));
...
@@ -1994,32 +1991,6 @@ void get_pdsch_to_harq_feedback(int Mod_idP,
...
@@ -1994,32 +1991,6 @@ void get_pdsch_to_harq_feedback(int Mod_idP,
}
}
void
find_aggregation_candidates
(
uint8_t
*
aggregation_level
,
uint8_t
*
nr_of_candidates
,
NR_SearchSpace_t
*
ss
)
{
if
(
ss
->
nrofCandidates
->
aggregationLevel1
!=
NR_SearchSpace__nrofCandidates__aggregationLevel1_n0
)
{
*
aggregation_level
=
1
;
*
nr_of_candidates
=
ss
->
nrofCandidates
->
aggregationLevel1
;
}
if
(
ss
->
nrofCandidates
->
aggregationLevel2
!=
NR_SearchSpace__nrofCandidates__aggregationLevel2_n0
)
{
*
aggregation_level
=
2
;
*
nr_of_candidates
=
ss
->
nrofCandidates
->
aggregationLevel2
;
}
if
(
ss
->
nrofCandidates
->
aggregationLevel4
!=
NR_SearchSpace__nrofCandidates__aggregationLevel4_n0
)
{
*
aggregation_level
=
4
;
*
nr_of_candidates
=
ss
->
nrofCandidates
->
aggregationLevel4
;
}
if
(
ss
->
nrofCandidates
->
aggregationLevel8
!=
NR_SearchSpace__nrofCandidates__aggregationLevel8_n0
)
{
*
aggregation_level
=
8
;
*
nr_of_candidates
=
ss
->
nrofCandidates
->
aggregationLevel8
;
}
if
(
ss
->
nrofCandidates
->
aggregationLevel16
!=
NR_SearchSpace__nrofCandidates__aggregationLevel16_n0
)
{
*
aggregation_level
=
16
;
*
nr_of_candidates
=
ss
->
nrofCandidates
->
aggregationLevel16
;
}
}
/*void fill_nfapi_coresets_and_searchspaces(NR_CellGroupConfig_t *cg,
/*void fill_nfapi_coresets_and_searchspaces(NR_CellGroupConfig_t *cg,
nfapi_nr_coreset_t *coreset,
nfapi_nr_coreset_t *coreset,
...
...
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
View file @
0039e87a
...
@@ -296,9 +296,6 @@ NR_SearchSpace_t *get_searchspace(
...
@@ -296,9 +296,6 @@ NR_SearchSpace_t *get_searchspace(
NR_BWP_Downlink_t
*
bwp
,
NR_BWP_Downlink_t
*
bwp
,
NR_SearchSpace__searchSpaceType_PR
target_ss
);
NR_SearchSpace__searchSpaceType_PR
target_ss
);
void
find_aggregation_candidates
(
uint8_t
*
aggregation_level
,
uint8_t
*
nr_of_candidates
,
NR_SearchSpace_t
*
ss
);
long
get_K2
(
NR_BWP_Uplink_t
*
ubwp
,
int
time_domain_assignment
,
int
mu
);
long
get_K2
(
NR_BWP_Uplink_t
*
ubwp
,
int
time_domain_assignment
,
int
mu
);
...
...
targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band257.tm1.32PRB.usrpx300.conf
View file @
0039e87a
...
@@ -140,7 +140,7 @@ gNBs =
...
@@ -140,7 +140,7 @@ gNBs =
# this is SS=0 L=12
# this is SS=0 L=12
initialULBWPstartSymbolAndLength_1
=
69
;
initialULBWPstartSymbolAndLength_1
=
69
;
initialULBWPk2_2
=
7
;
initialULBWPk2_2
=
14
;
initialULBWPmappingType_2
=
1
;
initialULBWPmappingType_2
=
1
;
# this is SS=10 L=4
# this is SS=10 L=4
initialULBWPstartSymbolAndLength_2
=
52
;
initialULBWPstartSymbolAndLength_2
=
52
;
...
...
targets/PROJECTS/GENERIC-LTE-EPC/CONF/gnb.band261.tm1.32PRB.usrpn300.conf
View file @
0039e87a
...
@@ -142,7 +142,7 @@ gNBs =
...
@@ -142,7 +142,7 @@ gNBs =
# this is SS=0 L=12
# this is SS=0 L=12
initialULBWPstartSymbolAndLength_1
=
69
;
initialULBWPstartSymbolAndLength_1
=
69
;
initialULBWPk2_2
=
7
;
initialULBWPk2_2
=
14
;
initialULBWPmappingType_2
=
1
;
initialULBWPmappingType_2
=
1
;
# this is SS=10 L=4
# this is SS=10 L=4
initialULBWPstartSymbolAndLength_2
=
52
;
initialULBWPstartSymbolAndLength_2
=
52
;
...
...
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