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
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
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
OpenXG
OpenXG-RAN
Commits
74e7b44b
Commit
74e7b44b
authored
May 29, 2024
by
hsum
Committed by
dong881
Jun 03, 2024
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Accessing TDD_table causes segmentation fault issue : 1/2
Accessing TDD_table causes segmentation fault issue : 2/2
parent
98b3f4d4
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
27 additions
and
7 deletions
+27
-7
executables/nr-ru.c
executables/nr-ru.c
+9
-2
openair1/SCHED_NR/phy_procedures_nr_gNB.c
openair1/SCHED_NR/phy_procedures_nr_gNB.c
+18
-5
No files found.
executables/nr-ru.c
View file @
74e7b44b
...
@@ -769,12 +769,19 @@ void tx_rf(RU_t *ru,int frame,int slot, uint64_t timestamp) {
...
@@ -769,12 +769,19 @@ void tx_rf(RU_t *ru,int frame,int slot, uint64_t timestamp) {
radio_tx_gpio_flag_t
flags_gpio
=
0
;
radio_tx_gpio_flag_t
flags_gpio
=
0
;
if
(
cfg
->
cell_config
.
frame_duplex_type
.
value
==
TDD
&&
!
get_softmodem_params
()
->
continuous_tx
)
{
if
(
cfg
->
cell_config
.
frame_duplex_type
.
value
==
TDD
&&
!
get_softmodem_params
()
->
continuous_tx
)
{
int
slot_type
=
nr_slot_select
(
cfg
,
frame
,
slot
%
fp
->
slots_per_frame
);
int
max_tdd_periodicity_num
=
get_nb_max_tdd_periodicity
(
cfg
->
ssb_config
.
scs_common
.
value
,
cfg
->
tdd_table
.
tdd_period
.
value
);
int
slot_type
=
nr_slot_select
(
cfg
,
frame
,
slot
);
if
(
slot_type
==
NR_MIXED_SLOT
)
{
if
(
slot_type
==
NR_MIXED_SLOT
)
{
int
txsymb
=
0
;
int
txsymb
=
0
;
for
(
int
symbol_count
=
0
;
symbol_count
<
NR_NUMBER_OF_SYMBOLS_PER_SLOT
;
symbol_count
++
)
{
for
(
int
symbol_count
=
0
;
symbol_count
<
NR_NUMBER_OF_SYMBOLS_PER_SLOT
;
symbol_count
++
)
{
if
(
cfg
->
tdd_table
.
max_tdd_periodicity_list
[
slot
].
max_num_of_symbol_per_slot_list
[
symbol_count
].
slot_config
.
value
==
0
)
if
(
cfg
->
tdd_table
.
max_tdd_periodicity_list
[
slot
%
max_tdd_periodicity_num
]
.
max_num_of_symbol_per_slot_list
[
symbol_count
]
.
slot_config
.
value
==
0
)
txsymb
++
;
txsymb
++
;
}
}
...
...
openair1/SCHED_NR/phy_procedures_nr_gNB.c
View file @
74e7b44b
...
@@ -567,9 +567,15 @@ void fill_ul_rb_mask(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx) {
...
@@ -567,9 +567,15 @@ void fill_ul_rb_mask(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx) {
(
pucch
->
slot
==
slot_rx
)
)
{
(
pucch
->
slot
==
slot_rx
)
)
{
nfapi_nr_pucch_pdu_t
*
pucch_pdu
=
&
pucch
->
pucch_pdu
;
nfapi_nr_pucch_pdu_t
*
pucch_pdu
=
&
pucch
->
pucch_pdu
;
LOG_D
(
PHY
,
"%d.%d pucch %d : start_symbol %d, nb_symbols %d, prb_size %d
\n
"
,
frame_rx
,
slot_rx
,
i
,
pucch_pdu
->
start_symbol_index
,
pucch_pdu
->
nr_of_symbols
,
pucch_pdu
->
prb_size
);
LOG_D
(
PHY
,
"%d.%d pucch %d : start_symbol %d, nb_symbols %d, prb_size %d
\n
"
,
frame_rx
,
slot_rx
,
i
,
pucch_pdu
->
start_symbol_index
,
pucch_pdu
->
nr_of_symbols
,
pucch_pdu
->
prb_size
);
int
max_tdd_periodicity_num
=
get_nb_max_tdd_periodicity
(
gNB
->
gNB_config
.
ssb_config
.
scs_common
.
value
,
gNB
->
gNB_config
.
tdd_table
.
tdd_period
.
value
);
for
(
int
symbol
=
pucch_pdu
->
start_symbol_index
;
symbol
<
(
pucch_pdu
->
start_symbol_index
+
pucch_pdu
->
nr_of_symbols
);
symbol
++
)
{
for
(
int
symbol
=
pucch_pdu
->
start_symbol_index
;
symbol
<
(
pucch_pdu
->
start_symbol_index
+
pucch_pdu
->
nr_of_symbols
);
symbol
++
)
{
if
(
gNB
->
frame_parms
.
frame_type
==
FDD
||
if
(
gNB
->
frame_parms
.
frame_type
==
FDD
(
gNB
->
frame_parms
.
frame_type
==
TDD
&&
gNB
->
gNB_config
.
tdd_table
.
max_tdd_periodicity_list
[
slot_rx
].
max_num_of_symbol_per_slot_list
[
symbol
].
slot_config
.
value
==
1
))
{
||
(
gNB
->
frame_parms
.
frame_type
==
TDD
&&
gNB
->
gNB_config
.
tdd_table
.
max_tdd_periodicity_list
[
slot_rx
%
max_tdd_periodicity_num
]
.
max_num_of_symbol_per_slot_list
[
symbol
]
.
slot_config
.
value
==
1
))
{
for
(
rb
=
0
;
rb
<
pucch_pdu
->
prb_size
;
rb
++
)
{
for
(
rb
=
0
;
rb
<
pucch_pdu
->
prb_size
;
rb
++
)
{
rb2
=
rb
+
pucch_pdu
->
bwp_start
+
rb2
=
rb
+
pucch_pdu
->
bwp_start
+
((
symbol
<
pucch_pdu
->
start_symbol_index
+
(
pucch_pdu
->
nr_of_symbols
>>
1
))
||
(
pucch_pdu
->
freq_hop_flag
==
0
)
?
((
symbol
<
pucch_pdu
->
start_symbol_index
+
(
pucch_pdu
->
nr_of_symbols
>>
1
))
||
(
pucch_pdu
->
freq_hop_flag
==
0
)
?
...
@@ -589,10 +595,14 @@ void fill_ul_rb_mask(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx) {
...
@@ -589,10 +595,14 @@ void fill_ul_rb_mask(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx) {
if
((
ulsch
->
active
==
true
)
&&
(
ulsch
->
frame
==
frame_rx
)
&&
(
ulsch
->
slot
==
slot_rx
)
&&
(
ulsch
->
handled
==
0
))
{
if
((
ulsch
->
active
==
true
)
&&
(
ulsch
->
frame
==
frame_rx
)
&&
(
ulsch
->
slot
==
slot_rx
)
&&
(
ulsch
->
handled
==
0
))
{
uint8_t
symbol_start
=
ulsch_harq
->
ulsch_pdu
.
start_symbol_index
;
uint8_t
symbol_start
=
ulsch_harq
->
ulsch_pdu
.
start_symbol_index
;
uint8_t
symbol_end
=
symbol_start
+
ulsch_harq
->
ulsch_pdu
.
nr_of_symbols
;
uint8_t
symbol_end
=
symbol_start
+
ulsch_harq
->
ulsch_pdu
.
nr_of_symbols
;
int
max_tdd_periodicity_num
=
get_nb_max_tdd_periodicity
(
gNB
->
gNB_config
.
ssb_config
.
scs_common
.
value
,
gNB
->
gNB_config
.
tdd_table
.
tdd_period
.
value
);
for
(
int
symbol
=
symbol_start
;
symbol
<
symbol_end
;
symbol
++
)
{
for
(
int
symbol
=
symbol_start
;
symbol
<
symbol_end
;
symbol
++
)
{
if
(
gNB
->
frame_parms
.
frame_type
==
FDD
if
(
gNB
->
frame_parms
.
frame_type
==
FDD
||
(
gNB
->
frame_parms
.
frame_type
==
TDD
||
(
gNB
->
frame_parms
.
frame_type
==
TDD
&&
gNB
->
gNB_config
.
tdd_table
.
max_tdd_periodicity_list
[
slot_rx
]
&&
gNB
->
gNB_config
.
tdd_table
.
max_tdd_periodicity_list
[
slot_rx
%
max_tdd_periodicity_num
]
.
max_num_of_symbol_per_slot_list
[
symbol
]
.
max_num_of_symbol_per_slot_list
[
symbol
]
.
slot_config
.
value
.
slot_config
.
value
==
1
))
{
==
1
))
{
...
@@ -720,11 +730,14 @@ int phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx)
...
@@ -720,11 +730,14 @@ int phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx)
LOG_D
(
PHY
,
"phy_procedures_gNB_uespec_RX frame %d, slot %d
\n
"
,
frame_rx
,
slot_rx
);
LOG_D
(
PHY
,
"phy_procedures_gNB_uespec_RX frame %d, slot %d
\n
"
,
frame_rx
,
slot_rx
);
fill_ul_rb_mask
(
gNB
,
frame_rx
,
slot_rx
);
fill_ul_rb_mask
(
gNB
,
frame_rx
,
slot_rx
);
int
max_tdd_periodicity_num
=
get_nb_max_tdd_periodicity
(
gNB
->
gNB_config
.
ssb_config
.
scs_common
.
value
,
gNB
->
gNB_config
.
tdd_table
.
tdd_period
.
value
);
int
first_symb
=
0
,
num_symb
=
0
;
int
first_symb
=
0
,
num_symb
=
0
;
if
(
gNB
->
frame_parms
.
frame_type
==
TDD
)
if
(
gNB
->
frame_parms
.
frame_type
==
TDD
)
for
(
int
symbol_count
=
0
;
symbol_count
<
NR_NUMBER_OF_SYMBOLS_PER_SLOT
;
symbol_count
++
)
{
for
(
int
symbol_count
=
0
;
symbol_count
<
NR_NUMBER_OF_SYMBOLS_PER_SLOT
;
symbol_count
++
)
{
if
(
gNB
->
gNB_config
.
tdd_table
.
max_tdd_periodicity_list
[
slot_rx
].
max_num_of_symbol_per_slot_list
[
symbol_count
].
slot_config
.
value
==
1
)
{
if
(
gNB
->
gNB_config
.
tdd_table
.
max_tdd_periodicity_list
[
slot_rx
%
max_tdd_periodicity_num
].
max_num_of_symbol_per_slot_list
[
symbol_count
].
slot_config
.
value
==
1
)
{
if
(
num_symb
==
0
)
first_symb
=
symbol_count
;
if
(
num_symb
==
0
)
first_symb
=
symbol_count
;
num_symb
++
;
num_symb
++
;
}
}
...
...
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