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
lizhongxiao
OpenXG-RAN
Commits
5143133d
Commit
5143133d
authored
Apr 03, 2023
by
rakesh mundlamuri
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ssb offset to point A bugfix
parent
6022fe5a
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
24 additions
and
42 deletions
+24
-42
openair1/SCHED_NR/phy_procedures_nr_gNB.c
openair1/SCHED_NR/phy_procedures_nr_gNB.c
+2
-1
openair2/LAYER2/NR_MAC_gNB/config.c
openair2/LAYER2/NR_MAC_gNB/config.c
+11
-8
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c
+1
-1
openair2/RRC/NR/nr_rrc_config.c
openair2/RRC/NR/nr_rrc_config.c
+10
-32
No files found.
openair1/SCHED_NR/phy_procedures_nr_gNB.c
View file @
5143133d
...
...
@@ -75,7 +75,8 @@ void nr_common_signal_procedures (PHY_VARS_gNB *gNB,int frame,int slot,nfapi_nr_
// setting the first subcarrier
const
int
scs
=
cfg
->
ssb_config
.
scs_common
.
value
;
const
int
prb_offset
=
(
fp
->
freq_range
==
nr_FR1
)
?
ssb_pdu
.
ssb_pdu_rel15
.
ssbOffsetPointA
>>
scs
:
ssb_pdu
.
ssb_pdu_rel15
.
ssbOffsetPointA
>>
(
scs
-
2
);
const
int
sc_offset
=
(
fp
->
freq_range
==
nr_FR1
)
?
ssb_pdu
.
ssb_pdu_rel15
.
SsbSubcarrierOffset
>>
scs
:
ssb_pdu
.
ssb_pdu_rel15
.
SsbSubcarrierOffset
;
const
int
sc_offset
=
(
fp
->
freq_range
==
nr_FR1
)
?
ssb_pdu
.
ssb_pdu_rel15
.
SsbSubcarrierOffset
>>
scs
:
ssb_pdu
.
ssb_pdu_rel15
.
SsbSubcarrierOffset
>>
(
scs
-
2
);
fp
->
ssb_start_subcarrier
=
(
12
*
prb_offset
+
sc_offset
);
LOG_D
(
PHY
,
"SSB first subcarrier %d (%d,%d)
\n
"
,
fp
->
ssb_start_subcarrier
,
prb_offset
,
sc_offset
);
...
...
openair2/LAYER2/NR_MAC_gNB/config.c
View file @
5143133d
...
...
@@ -351,24 +351,27 @@ void config_common(gNB_MAC_INST *nrmac, int pdsch_AntennaPorts, int pusch_Antenn
cfg
->
num_tlv
++
;
// SSB Table Configuration
uint32_t
absolute_diff
=
(
*
frequencyInfoDL
->
absoluteFrequencySSB
-
frequencyInfoDL
->
absoluteFrequencyPointA
);
const
int
scaling_5khz
=
frequencyInfoDL
->
absoluteFrequencyPointA
<
600000
?
3
:
1
;
int
sco
=
(
absolute_diff
/
scaling_5khz
)
%
24
;
if
(
frequency_range
==
FR2
)
sco
>>=
1
;
// this assumes 120kHz SCS for SSB and subCarrierSpacingCommon (only option supported by OAI for
const
int
scs_scaling
=
frequency_range
==
FR2
?
1
<<
(
*
scc
->
ssbSubcarrierSpacing
-
2
)
:
1
<<
*
scc
->
ssbSubcarrierSpacing
;
cfg
->
ssb_table
.
ssb_offset_point_a
.
value
=
absolute_diff
/
(
12
*
scaling_5khz
)
-
10
*
scs_scaling
;
//absoluteFrequencySSB is the central frequency of SSB which is made by 20RBs in total
cfg
->
ssb_table
.
ssb_offset_point_a
.
value
=
get_ssb_offset_to_pointA
(
*
scc
->
downlinkConfigCommon
->
frequencyInfoDL
->
absoluteFrequencySSB
,
scc
->
downlinkConfigCommon
->
frequencyInfoDL
->
absoluteFrequencyPointA
,
*
scc
->
ssbSubcarrierSpacing
,
frequency_range
);
cfg
->
ssb_table
.
ssb_offset_point_a
.
tl
.
tag
=
NFAPI_NR_CONFIG_SSB_OFFSET_POINT_A_TAG
;
cfg
->
num_tlv
++
;
cfg
->
ssb_table
.
ssb_period
.
value
=
*
scc
->
ssb_periodicityServingCell
;
cfg
->
ssb_table
.
ssb_period
.
tl
.
tag
=
NFAPI_NR_CONFIG_SSB_PERIOD_TAG
;
cfg
->
num_tlv
++
;
cfg
->
ssb_table
.
ssb_subcarrier_offset
.
value
=
sco
;
cfg
->
ssb_table
.
ssb_subcarrier_offset
.
value
=
get_ssb_subcarrier_offset
(
*
scc
->
downlinkConfigCommon
->
frequencyInfoDL
->
absoluteFrequencySSB
,
scc
->
downlinkConfigCommon
->
frequencyInfoDL
->
absoluteFrequencyPointA
);
cfg
->
ssb_table
.
ssb_subcarrier_offset
.
tl
.
tag
=
NFAPI_NR_CONFIG_SSB_SUBCARRIER_OFFSET_TAG
;
cfg
->
num_tlv
++
;
nrmac
->
ssb_SubcarrierOffset
=
cfg
->
ssb_table
.
ssb_subcarrier_offset
.
value
;
nrmac
->
ssb_OffsetPointA
=
cfg
->
ssb_table
.
ssb_offset_point_a
.
value
;
LOG_I
(
NR_MAC
,
"ssb_OffsetPointA %d, ssb_SubcarrierOffset %d
\n
"
,
cfg
->
ssb_table
.
ssb_offset_point_a
.
value
,
cfg
->
ssb_table
.
ssb_subcarrier_offset
.
value
);
switch
(
scc
->
ssb_PositionsInBurst
->
present
)
{
case
1
:
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c
View file @
5143133d
...
...
@@ -218,7 +218,7 @@ void schedule_nr_mib(module_id_t module_idP, frame_t frameP, sub_frame_t slotP,
if
((
ssb_start_symbol
/
14
)
==
rel_slot
){
const
int
prb_offset
=
offset_pointa
>>
(
scs
-
2
);
// reference 60kHz
schedule_ssb
(
frameP
,
slotP
,
scc
,
dl_req
,
i_ssb
,
ssbSubcarrierOffset
,
offset_pointa
,
(
*
(
uint32_t
*
)
cc
->
MIB_pdu
.
payload
)
&
((
1
<<
24
)
-
1
));
fill_ssb_vrb_map
(
cc
,
prb_offset
,
ssbSubcarrierOffset
,
ssb_start_symbol
,
CC_id
);
fill_ssb_vrb_map
(
cc
,
prb_offset
,
ssbSubcarrierOffset
>>
(
scs
-
2
)
,
ssb_start_symbol
,
CC_id
);
const
NR_TDD_UL_DL_Pattern_t
*
tdd
=
&
scc
->
tdd_UL_DL_ConfigurationCommon
->
pattern1
;
const
int
n_slots_frame
=
nr_slots_per_frame
[
*
scc
->
ssbSubcarrierSpacing
];
// FR2 is only TDD, to be fixed for flexible TDD
...
...
openair2/RRC/NR/nr_rrc_config.c
View file @
5143133d
...
...
@@ -1646,15 +1646,8 @@ NR_BCCH_BCH_Message_t *get_new_MIB_NR(const NR_ServingCellConfigCommon_t *scc)
frequency_range_t
frequency_range
=
band
<
100
?
FR1
:
FR2
;
int
ssb_subcarrier_offset
=
31
;
// default value for NSA
if
(
get_softmodem_params
()
->
sa
)
{
uint32_t
absolute_diff
=
(
*
scc
->
downlinkConfigCommon
->
frequencyInfoDL
->
absoluteFrequencySSB
-
scc
->
downlinkConfigCommon
->
frequencyInfoDL
->
absoluteFrequencyPointA
);
int
scs_scaling
=
scc
->
downlinkConfigCommon
->
frequencyInfoDL
->
absoluteFrequencyPointA
<
600000
?
3
:
1
;
ssb_subcarrier_offset
=
(
absolute_diff
/
scs_scaling
)
%
24
;
if
(
frequency_range
==
FR2
)
{
// this assumes 120kHz SCS for SSB and subCarrierSpacingCommon (only
// option supported by OAI for now)
ssb_subcarrier_offset
>>=
1
;
}
ssb_subcarrier_offset
=
get_ssb_subcarrier_offset
(
*
scc
->
downlinkConfigCommon
->
frequencyInfoDL
->
absoluteFrequencySSB
,
scc
->
downlinkConfigCommon
->
frequencyInfoDL
->
absoluteFrequencyPointA
);
}
mib
->
message
.
choice
.
mib
->
ssb_SubcarrierOffset
=
ssb_subcarrier_offset
&
15
;
...
...
@@ -1839,32 +1832,17 @@ NR_BCCH_DL_SCH_Message_t *get_SIB1_NR(const gNB_RrcConfigurationReq *configurati
frequencyInfoDL
->
frequencyBandList
.
list
.
array
[
i
];
}
int
scs_scaling0
=
1
<<
(
configuration
->
scc
->
downlinkConfigCommon
->
initialDownlinkBWP
->
genericParameters
.
subcarrierSpacing
);
int
scs_scaling
=
scs_scaling0
;
int
scs_scaling2
=
scs_scaling0
;
if
(
frequencyInfoDL
->
absoluteFrequencyPointA
<
600000
)
{
scs_scaling
=
scs_scaling0
*
3
;
}
if
(
frequencyInfoDL
->
absoluteFrequencyPointA
>
2016666
)
{
scs_scaling
=
scs_scaling0
>>
2
;
scs_scaling2
=
scs_scaling0
>>
2
;
}
uint32_t
absolute_diff
=
(
*
frequencyInfoDL
->
absoluteFrequencySSB
-
frequencyInfoDL
->
absoluteFrequencyPointA
);
sib1
->
servingCellConfigCommon
->
downlinkConfigCommon
.
frequencyInfoDL
.
offsetToPointA
=
scs_scaling2
*
(
absolute_diff
/
(
12
*
scs_scaling
)
-
10
);
const
NR_FreqBandIndicatorNR_t
band
=
*
configuration
->
scc
->
downlinkConfigCommon
->
frequencyInfoDL
->
frequencyBandList
.
list
.
array
[
0
];
frequency_range_t
frequency_range
=
band
<
100
?
FR1
:
FR2
;
sib1
->
servingCellConfigCommon
->
downlinkConfigCommon
.
frequencyInfoDL
.
offsetToPointA
=
get_ssb_offset_to_pointA
(
*
configuration
->
scc
->
downlinkConfigCommon
->
frequencyInfoDL
->
absoluteFrequencySSB
,
configuration
->
scc
->
downlinkConfigCommon
->
frequencyInfoDL
->
absoluteFrequencyPointA
,
configuration
->
scc
->
downlinkConfigCommon
->
initialDownlinkBWP
->
genericParameters
.
subcarrierSpacing
,
frequency_range
);
LOG_I
(
NR_RRC
,
"SIB1 freq: absoluteFrequencySSB %ld, absoluteFrequencyPointA %ld
\n
"
,
*
frequencyInfoDL
->
absoluteFrequencySSB
,
frequencyInfoDL
->
absoluteFrequencyPointA
);
LOG_I
(
NR_RRC
,
"SIB1 freq: absolute_diff %d, %d*(absolute_diff/(12*%d) - 10) %d
\n
"
,
absolute_diff
,
scs_scaling2
,
scs_scaling
,
"SIB1 freq: offsetToPointA %d
\n
"
,
(
int
)
sib1
->
servingCellConfigCommon
->
downlinkConfigCommon
.
frequencyInfoDL
.
offsetToPointA
);
for
(
int
i
=
0
;
i
<
frequencyInfoDL
->
scs_SpecificCarrierList
.
list
.
count
;
i
++
)
{
asn1cSeqAdd
(
&
ServCellCom
->
downlinkConfigCommon
.
frequencyInfoDL
.
scs_SpecificCarrierList
.
list
,
frequencyInfoDL
->
scs_SpecificCarrierList
.
list
.
array
[
i
]);
...
...
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