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
d30b8c69
Commit
d30b8c69
authored
3 years ago
by
francescomani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix dlsim crashes (wrong detection of dci for ul)
parent
ee398c76
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
38 additions
and
38 deletions
+38
-38
openair1/SIMULATION/NR_PHY/nr_unitary_defs.h
openair1/SIMULATION/NR_PHY/nr_unitary_defs.h
+3
-3
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
+35
-35
No files found.
openair1/SIMULATION/NR_PHY/nr_unitary_defs.h
View file @
d30b8c69
...
...
@@ -149,13 +149,13 @@ void fill_scc(NR_ServingCellConfigCommon_t *scc,uint64_t *ssb_bitmap,int N_RB_DL
scc
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
prach_RootSequenceIndex
.
present
=
NR_RACH_ConfigCommon__prach_RootSequenceIndex_PR_l139
;
scc
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
prach_RootSequenceIndex
.
choice
.
l139
=
0
;
scc
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
restrictedSetConfig
=
NR_RACH_ConfigCommon__restrictedSetConfig_unrestrictedSet
;
*
scc
->
uplinkConfigCommon
->
initialUplinkBWP
->
pusch_ConfigCommon
->
choice
.
setup
->
pusch_TimeDomainAllocationList
->
list
.
array
[
0
]
->
k2
=
2
;
*
scc
->
uplinkConfigCommon
->
initialUplinkBWP
->
pusch_ConfigCommon
->
choice
.
setup
->
pusch_TimeDomainAllocationList
->
list
.
array
[
0
]
->
k2
=
6
;
scc
->
uplinkConfigCommon
->
initialUplinkBWP
->
pusch_ConfigCommon
->
choice
.
setup
->
pusch_TimeDomainAllocationList
->
list
.
array
[
0
]
->
mappingType
=
NR_PUSCH_TimeDomainResourceAllocation__mappingType_typeB
;
scc
->
uplinkConfigCommon
->
initialUplinkBWP
->
pusch_ConfigCommon
->
choice
.
setup
->
pusch_TimeDomainAllocationList
->
list
.
array
[
0
]
->
startSymbolAndLength
=
55
;
*
scc
->
uplinkConfigCommon
->
initialUplinkBWP
->
pusch_ConfigCommon
->
choice
.
setup
->
pusch_TimeDomainAllocationList
->
list
.
array
[
1
]
->
k2
=
2
;
*
scc
->
uplinkConfigCommon
->
initialUplinkBWP
->
pusch_ConfigCommon
->
choice
.
setup
->
pusch_TimeDomainAllocationList
->
list
.
array
[
1
]
->
k2
=
6
;
scc
->
uplinkConfigCommon
->
initialUplinkBWP
->
pusch_ConfigCommon
->
choice
.
setup
->
pusch_TimeDomainAllocationList
->
list
.
array
[
1
]
->
mappingType
=
NR_PUSCH_TimeDomainResourceAllocation__mappingType_typeB
;
scc
->
uplinkConfigCommon
->
initialUplinkBWP
->
pusch_ConfigCommon
->
choice
.
setup
->
pusch_TimeDomainAllocationList
->
list
.
array
[
1
]
->
startSymbolAndLength
=
69
;
*
scc
->
uplinkConfigCommon
->
initialUplinkBWP
->
pusch_ConfigCommon
->
choice
.
setup
->
pusch_TimeDomainAllocationList
->
list
.
array
[
2
]
->
k2
=
2
;
*
scc
->
uplinkConfigCommon
->
initialUplinkBWP
->
pusch_ConfigCommon
->
choice
.
setup
->
pusch_TimeDomainAllocationList
->
list
.
array
[
2
]
->
k2
=
6
;
scc
->
uplinkConfigCommon
->
initialUplinkBWP
->
pusch_ConfigCommon
->
choice
.
setup
->
pusch_TimeDomainAllocationList
->
list
.
array
[
2
]
->
mappingType
=
NR_PUSCH_TimeDomainResourceAllocation__mappingType_typeB
;
scc
->
uplinkConfigCommon
->
initialUplinkBWP
->
pusch_ConfigCommon
->
choice
.
setup
->
pusch_TimeDomainAllocationList
->
list
.
array
[
2
]
->
startSymbolAndLength
=
55
;
*
scc
->
uplinkConfigCommon
->
initialUplinkBWP
->
pusch_ConfigCommon
->
choice
.
setup
->
pusch_TimeDomainAllocationList
->
list
.
array
[
3
]
->
k2
=
33
;
...
...
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
View file @
d30b8c69
...
...
@@ -449,8 +449,9 @@ int nr_ue_process_dci_indication_pdu(module_id_t module_id,int cc_id, int gNB_in
LOG_D
(
MAC
,
"Received dci indication (rnti %x,dci format %d,n_CCE %d,payloadSize %d,payload %llx)
\n
"
,
dci
->
rnti
,
dci
->
dci_format
,
dci
->
n_CCE
,
dci
->
payloadSize
,
*
(
unsigned
long
long
*
)
dci
->
payloadBits
);
uint32_t
dci_format
=
nr_extract_dci_info
(
mac
,
dci
->
dci_format
,
dci
->
payloadSize
,
dci
->
rnti
,
(
uint64_t
*
)
dci
->
payloadBits
,
def_dci_pdu_rel15
);
return
(
nr_ue_process_dci
(
module_id
,
cc_id
,
gNB_index
,
frame
,
slot
,
def_dci_pdu_rel15
,
dci
->
rnti
,
dci_format
));
if
(
nr_extract_dci_info
(
mac
,
dci
->
dci_format
,
dci
->
payloadSize
,
dci
->
rnti
,
(
uint64_t
*
)
dci
->
payloadBits
,
def_dci_pdu_rel15
))
return
-
1
;
return
(
nr_ue_process_dci
(
module_id
,
cc_id
,
gNB_index
,
frame
,
slot
,
def_dci_pdu_rel15
,
dci
->
rnti
,
dci
->
dci_format
));
}
int8_t
nr_ue_process_dci
(
module_id_t
module_id
,
int
cc_id
,
uint8_t
gNB_index
,
frame_t
frame
,
int
slot
,
dci_pdu_rel15_t
*
dci
,
uint16_t
rnti
,
uint8_t
dci_format
){
...
...
@@ -1129,11 +1130,11 @@ int get_n_rb(NR_UE_MAC_INST_t *mac, int rnti_type){
}
uint8_t
nr_extract_dci_info
(
NR_UE_MAC_INST_t
*
mac
,
uint8_t
dci_format
,
uint8_t
dci_size
,
uint16_t
rnti
,
uint64_t
*
dci_pdu
,
dci_pdu_rel15_t
*
dci_pdu_rel15
)
{
uint8_t
dci_format
,
uint8_t
dci_size
,
uint16_t
rnti
,
uint64_t
*
dci_pdu
,
dci_pdu_rel15_t
*
dci_pdu_rel15
)
{
int
rnti_type
=
get_rnti_type
(
mac
,
rnti
);
...
...
@@ -1147,32 +1148,6 @@ uint8_t nr_extract_dci_info(NR_UE_MAC_INST_t *mac,
int
pos
=
0
;
int
fsize
=
0
;
if
(
rnti_type
==
NR_RNTI_C
)
{
// First find out the DCI format from the first bit (UE performed blind decoding)
pos
++
;
dci_pdu_rel15
->
format_indicator
=
(
*
dci_pdu
>>
(
dci_size
-
pos
))
&
1
;
#ifdef DEBUG_EXTRACT_DCI
LOG_D
(
MAC
,
"Format indicator %d (%d bits) N_RB_BWP %d => %d (0x%lx)
\n
"
,
dci_pdu_rel15
->
format_indicator
,
1
,
N_RB
,
dci_size
-
pos
,
*
dci_pdu
);
#endif
if
(
dci_format
==
NR_UL_DCI_FORMAT_0_0
||
dci_format
==
NR_DL_DCI_FORMAT_1_0
)
{
if
(
dci_pdu_rel15
->
format_indicator
==
0
)
dci_format
=
NR_UL_DCI_FORMAT_0_0
;
else
dci_format
=
NR_DL_DCI_FORMAT_1_0
;
}
else
if
(
dci_format
==
NR_UL_DCI_FORMAT_0_1
||
dci_format
==
NR_DL_DCI_FORMAT_1_1
)
{
// In case the sizes of formats 0_1 and 1_1 happen to be the same
if
(
dci_pdu_rel15
->
format_indicator
==
0
)
dci_format
=
NR_UL_DCI_FORMAT_0_1
;
else
dci_format
=
NR_DL_DCI_FORMAT_1_1
;
}
}
#ifdef DEBUG_EXTRACT_DCI
LOG_D
(
MAC
,
"DCI format is %d
\n
"
,
dci_format
);
#endif
switch
(
dci_format
)
{
case
NR_DL_DCI_FORMAT_1_0
:
...
...
@@ -1213,7 +1188,15 @@ uint8_t nr_extract_dci_info(NR_UE_MAC_INST_t *mac,
break
;
case
NR_RNTI_C
:
//Identifier for DCI formats
pos
++
;
dci_pdu_rel15
->
format_indicator
=
(
*
dci_pdu
>>
(
dci_size
-
pos
))
&
1
;
if
(
dci_pdu_rel15
->
format_indicator
==
0
)
return
1
;
// discard dci, format indicator not corresponding to dci_format
#ifdef DEBUG_EXTRACT_DCI
LOG_D
(
MAC
,
"Format indicator %d (%d bits) N_RB_BWP %d => %d (0x%lx)
\n
"
,
dci_pdu_rel15
->
format_indicator
,
1
,
N_RB
,
dci_size
-
pos
,
*
dci_pdu
);
#endif
// Freq domain assignment (275rb >> fsize = 16)
fsize
=
(
int
)
ceil
(
log2
(
(
N_RB
*
(
N_RB
+
1
))
>>
1
)
);
pos
+=
fsize
;
...
...
@@ -1395,6 +1378,8 @@ uint8_t nr_extract_dci_info(NR_UE_MAC_INST_t *mac,
// indicating a DL DCI format 1bit
pos
++
;
dci_pdu_rel15
->
format_indicator
=
(
*
dci_pdu
>>
(
dci_size
-
pos
))
&
1
;
if
(
dci_pdu_rel15
->
format_indicator
==
0
)
return
1
;
// discard dci, format indicator not corresponding to dci_format
// Freq domain assignment 0-16 bit
fsize
=
(
int
)
ceil
(
log2
(
(
N_RB
*
(
N_RB
+
1
))
>>
1
)
);
pos
+=
fsize
;
...
...
@@ -1433,6 +1418,11 @@ uint8_t nr_extract_dci_info(NR_UE_MAC_INST_t *mac,
switch
(
rnti_type
)
{
case
NR_RNTI_C
:
//Identifier for DCI formats
pos
++
;
dci_pdu_rel15
->
format_indicator
=
(
*
dci_pdu
>>
(
dci_size
-
pos
))
&
1
;
if
(
dci_pdu_rel15
->
format_indicator
==
1
)
return
1
;
// discard dci, format indicator not corresponding to dci_format
fsize
=
(
int
)
ceil
(
log2
(
(
N_RB_UL
*
(
N_RB_UL
+
1
))
>>
1
)
);
pos
+=
fsize
;
dci_pdu_rel15
->
frequency_domain_assignment
.
val
=
(
*
dci_pdu
>>
(
dci_size
-
pos
))
&
((
1
<<
fsize
)
-
1
);
...
...
@@ -1508,6 +1498,11 @@ uint8_t nr_extract_dci_info(NR_UE_MAC_INST_t *mac,
switch
(
rnti_type
)
{
case
NR_RNTI_C
:
//Identifier for DCI formats
pos
++
;
dci_pdu_rel15
->
format_indicator
=
(
*
dci_pdu
>>
(
dci_size
-
pos
))
&
1
;
if
(
dci_pdu_rel15
->
format_indicator
==
0
)
return
1
;
// discard dci, format indicator not corresponding to dci_format
// Carrier indicator
pos
+=
dci_pdu_rel15
->
carrier_indicator
.
nbits
;
dci_pdu_rel15
->
carrier_indicator
.
val
=
(
*
dci_pdu
>>
(
dci_size
-
pos
))
&
((
1
<<
dci_pdu_rel15
->
carrier_indicator
.
nbits
)
-
1
);
...
...
@@ -1593,6 +1588,11 @@ uint8_t nr_extract_dci_info(NR_UE_MAC_INST_t *mac,
switch
(
rnti_type
)
{
case
NR_RNTI_C
:
//Identifier for DCI formats
pos
++
;
dci_pdu_rel15
->
format_indicator
=
(
*
dci_pdu
>>
(
dci_size
-
pos
))
&
1
;
if
(
dci_pdu_rel15
->
format_indicator
==
1
)
return
1
;
// discard dci, format indicator not corresponding to dci_format
// Carrier indicator
pos
+=
dci_pdu_rel15
->
carrier_indicator
.
nbits
;
dci_pdu_rel15
->
carrier_indicator
.
val
=
(
*
dci_pdu
>>
(
dci_size
-
pos
))
&
((
1
<<
dci_pdu_rel15
->
carrier_indicator
.
nbits
)
-
1
);
...
...
@@ -1701,7 +1701,7 @@ uint8_t nr_extract_dci_info(NR_UE_MAC_INST_t *mac,
break
;
}
return
dci_format
;
return
0
;
}
///////////////////////////////////
...
...
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