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
spbro
OpenXG-RAN
Commits
b05d165c
Commit
b05d165c
authored
Oct 11, 2021
by
Raymond Knopp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
hand cherry-picked PRB blacklisting
parent
210829e9
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
78 additions
and
4 deletions
+78
-4
openair1/PHY/NR_ESTIMATION/nr_measurements_gNB.c
openair1/PHY/NR_ESTIMATION/nr_measurements_gNB.c
+4
-2
openair1/PHY/defs_gNB.h
openair1/PHY/defs_gNB.h
+2
-0
openair1/SCHED_NR/phy_procedures_nr_gNB.c
openair1/SCHED_NR/phy_procedures_nr_gNB.c
+9
-1
openair2/GNB_APP/gnb_config.c
openair2/GNB_APP/gnb_config.c
+56
-0
openair2/GNB_APP/gnb_paramdef.h
openair2/GNB_APP/gnb_paramdef.h
+4
-0
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
+1
-0
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
+2
-1
No files found.
openair1/PHY/NR_ESTIMATION/nr_measurements_gNB.c
View file @
b05d165c
...
@@ -73,8 +73,9 @@ void dump_nr_I0_stats(FILE *fd,PHY_VARS_gNB *gNB) {
...
@@ -73,8 +73,9 @@ void dump_nr_I0_stats(FILE *fd,PHY_VARS_gNB *gNB) {
int
min_I0
=
1000
,
max_I0
=
0
;
int
min_I0
=
1000
,
max_I0
=
0
;
int
amin
=
0
,
amax
=
0
;
int
amin
=
0
,
amax
=
0
;
fprintf
(
fd
,
"Blacklisted PRBs %d/%d
\n
"
,
gNB
->
num_ulprbbl
,
gNB
->
frame_parms
.
N_RB_UL
);
for
(
int
i
=
0
;
i
<
gNB
->
frame_parms
.
N_RB_UL
;
i
++
)
{
for
(
int
i
=
0
;
i
<
gNB
->
frame_parms
.
N_RB_UL
;
i
++
)
{
if
(
i
==
(
gNB
->
frame_parms
.
N_RB_UL
>>
1
)
-
1
)
i
+=
2
;
if
(
gNB
->
ulprbbl
[
i
]
>
0
)
continue
;
if
(
gNB
->
measurements
.
n0_subband_power_tot_dB
[
i
]
<
min_I0
)
{
min_I0
=
gNB
->
measurements
.
n0_subband_power_tot_dB
[
i
];
amin
=
i
;}
if
(
gNB
->
measurements
.
n0_subband_power_tot_dB
[
i
]
<
min_I0
)
{
min_I0
=
gNB
->
measurements
.
n0_subband_power_tot_dB
[
i
];
amin
=
i
;}
...
@@ -82,7 +83,8 @@ void dump_nr_I0_stats(FILE *fd,PHY_VARS_gNB *gNB) {
...
@@ -82,7 +83,8 @@ void dump_nr_I0_stats(FILE *fd,PHY_VARS_gNB *gNB) {
}
}
for
(
int
i
=
0
;
i
<
gNB
->
frame_parms
.
N_RB_UL
;
i
++
)
{
for
(
int
i
=
0
;
i
<
gNB
->
frame_parms
.
N_RB_UL
;
i
++
)
{
fprintf
(
fd
,
"%2d."
,
gNB
->
measurements
.
n0_subband_power_tot_dB
[
i
]
-
gNB
->
measurements
.
n0_subband_power_avg_dB
);
if
(
gNB
->
ulprbbl
[
i
]
==
0
)
fprintf
(
fd
,
"%2d."
,
gNB
->
measurements
.
n0_subband_power_tot_dB
[
i
]
-
gNB
->
measurements
.
n0_subband_power_avg_dB
);
else
fprintf
(
fd
,
" X."
);
if
(
i
%
25
==
24
)
fprintf
(
fd
,
"
\n
"
);
if
(
i
%
25
==
24
)
fprintf
(
fd
,
"
\n
"
);
}
}
...
...
openair1/PHY/defs_gNB.h
View file @
b05d165c
...
@@ -847,6 +847,8 @@ typedef struct PHY_VARS_gNB_s {
...
@@ -847,6 +847,8 @@ typedef struct PHY_VARS_gNB_s {
int
pusch_thres
;
int
pusch_thres
;
int
prach_thres
;
int
prach_thres
;
uint64_t
bad_pucch
;
uint64_t
bad_pucch
;
int
num_ulprbbl
;
int
ulprbbl
[
275
];
/*
/*
time_stats_t phy_proc;
time_stats_t phy_proc;
*/
*/
...
...
openair1/SCHED_NR/phy_procedures_nr_gNB.c
View file @
b05d165c
...
@@ -443,10 +443,18 @@ void nr_ulsch_procedures(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx, int ULSCH
...
@@ -443,10 +443,18 @@ void nr_ulsch_procedures(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx, int ULSCH
void
fill_ul_rb_mask
(
PHY_VARS_gNB
*
gNB
,
int
frame_rx
,
int
slot_rx
)
{
void
fill_ul_rb_mask
(
PHY_VARS_gNB
*
gNB
,
int
frame_rx
,
int
slot_rx
)
{
int
rb2
,
rb
,
nb_rb
;
int
rb2
,
rb
,
nb_rb
;
int
prbpos
;
for
(
int
symbol
=
0
;
symbol
<
14
;
symbol
++
)
{
for
(
int
symbol
=
0
;
symbol
<
14
;
symbol
++
)
{
if
(
gNB
->
gNB_config
.
tdd_table
.
max_tdd_periodicity_list
[
slot_rx
].
max_num_of_symbol_per_slot_list
[
symbol
].
slot_config
.
value
==
1
){
if
(
gNB
->
gNB_config
.
tdd_table
.
max_tdd_periodicity_list
[
slot_rx
].
max_num_of_symbol_per_slot_list
[
symbol
].
slot_config
.
value
==
1
){
nb_rb
=
0
;
nb_rb
=
0
;
for
(
int
m
=
0
;
m
<
9
;
m
++
)
gNB
->
rb_mask_ul
[
m
]
=
0
;
for
(
int
m
=
0
;
m
<
9
;
m
++
)
{
gNB
->
rb_mask_ul
[
m
]
=
0
;
for
(
int
i
=
0
;
i
<
32
;
i
++
)
{
prbpos
=
(
m
*
32
)
+
i
;
if
(
prbpos
>
gNB
->
frame_parms
.
N_RB_UL
)
break
;
gNB
->
rb_mask_ul
[
m
]
|=
(
gNB
->
ulprbbl
[
prbpos
]
>
0
?
1
:
0
)
<<
i
;
}
}
gNB
->
ulmask_symb
=
-
1
;
gNB
->
ulmask_symb
=
-
1
;
for
(
int
i
=
0
;
i
<
NUMBER_OF_NR_PUCCH_MAX
;
i
++
){
for
(
int
i
=
0
;
i
<
NUMBER_OF_NR_PUCCH_MAX
;
i
++
){
...
...
openair2/GNB_APP/gnb_config.c
View file @
b05d165c
...
@@ -549,6 +549,32 @@ void RCconfig_nr_flexran()
...
@@ -549,6 +549,32 @@ void RCconfig_nr_flexran()
void
RCconfig_NR_L1
(
void
)
{
void
RCconfig_NR_L1
(
void
)
{
int
j
;
int
j
;
paramdef_t
GNBSParams
[]
=
GNBSPARAMS_DESC
;
////////// Identification parameters
paramdef_t
GNBParams
[]
=
GNBPARAMS_DESC
;
paramlist_def_t
GNBParamList
=
{
GNB_CONFIG_STRING_GNB_LIST
,
NULL
,
0
};
config_get
(
GNBSParams
,
sizeof
(
GNBSParams
)
/
sizeof
(
paramdef_t
),
NULL
);
int
num_gnbs
=
GNBSParams
[
GNB_ACTIVE_GNBS_IDX
].
numelt
;
AssertFatal
(
num_gnbs
>
0
,
"Failed to parse config file no gnbs %s
\n
"
,
GNB_CONFIG_STRING_ACTIVE_GNBS
);
config_getlist
(
&
GNBParamList
,
GNBParams
,
sizeof
(
GNBParams
)
/
sizeof
(
paramdef_t
),
NULL
);
char
*
ulprbbl
=
*
GNBParamList
.
paramarray
[
0
][
GNB_ULPRBBLACKLIST_IDX
].
strptr
;
if
(
ulprbbl
)
LOG_I
(
NR_PHY
,
"PRB blacklist %s
\n
"
,
ulprbbl
);
char
*
pt
=
strtok
(
ulprbbl
,
","
);
int
prbbl
[
275
];
int
num_prbbl
=
0
;
memset
(
prbbl
,
0
,
275
*
sizeof
(
int
));
while
(
pt
)
{
prbbl
[
atoi
(
pt
)]
=
1
;
LOG_I
(
NR_PHY
,
"Blacklisting prb %d
\n
"
,
atoi
(
pt
));
pt
=
strtok
(
NULL
,
","
);
num_prbbl
++
;
}
paramdef_t
L1_Params
[]
=
L1PARAMS_DESC
;
paramdef_t
L1_Params
[]
=
L1PARAMS_DESC
;
paramlist_def_t
L1_ParamList
=
{
CONFIG_STRING_L1_LIST
,
NULL
,
0
};
paramlist_def_t
L1_ParamList
=
{
CONFIG_STRING_L1_LIST
,
NULL
,
0
};
...
@@ -577,6 +603,9 @@ void RCconfig_NR_L1(void) {
...
@@ -577,6 +603,9 @@ void RCconfig_NR_L1(void) {
RC
.
gNB
[
j
]
->
pucch0_thres
=
*
(
L1_ParamList
.
paramarray
[
j
][
L1_PUCCH0_DTX_THRESHOLD
].
uptr
);
RC
.
gNB
[
j
]
->
pucch0_thres
=
*
(
L1_ParamList
.
paramarray
[
j
][
L1_PUCCH0_DTX_THRESHOLD
].
uptr
);
RC
.
gNB
[
j
]
->
prach_thres
=
*
(
L1_ParamList
.
paramarray
[
j
][
L1_PRACH_DTX_THRESHOLD
].
uptr
);
RC
.
gNB
[
j
]
->
prach_thres
=
*
(
L1_ParamList
.
paramarray
[
j
][
L1_PRACH_DTX_THRESHOLD
].
uptr
);
RC
.
gNB
[
j
]
->
pusch_thres
=
*
(
L1_ParamList
.
paramarray
[
j
][
L1_PUSCH_DTX_THRESHOLD
].
uptr
);
RC
.
gNB
[
j
]
->
pusch_thres
=
*
(
L1_ParamList
.
paramarray
[
j
][
L1_PUSCH_DTX_THRESHOLD
].
uptr
);
RC
.
gNB
[
j
]
->
num_ulprbbl
=
num_prbbl
;
LOG_I
(
NR_PHY
,
"Copying %d blacklisted PRB to L1 context
\n
"
,
num_prbbl
);
memcpy
(
RC
.
gNB
[
j
]
->
ulprbbl
,
prbbl
,
275
*
sizeof
(
int
));
if
(
strcmp
(
*
(
L1_ParamList
.
paramarray
[
j
][
L1_TRANSPORT_N_PREFERENCE_IDX
].
strptr
),
"local_mac"
)
==
0
)
{
if
(
strcmp
(
*
(
L1_ParamList
.
paramarray
[
j
][
L1_TRANSPORT_N_PREFERENCE_IDX
].
strptr
),
"local_mac"
)
==
0
)
{
//sf_ahead = 2; // Need 4 subframe gap between RX and TX
//sf_ahead = 2; // Need 4 subframe gap between RX and TX
}
else
if
(
strcmp
(
*
(
L1_ParamList
.
paramarray
[
j
][
L1_TRANSPORT_N_PREFERENCE_IDX
].
strptr
),
"nfapi"
)
==
0
)
{
}
else
if
(
strcmp
(
*
(
L1_ParamList
.
paramarray
[
j
][
L1_TRANSPORT_N_PREFERENCE_IDX
].
strptr
),
"nfapi"
)
==
0
)
{
...
@@ -633,6 +662,30 @@ void RCconfig_NR_L1(void) {
...
@@ -633,6 +662,30 @@ void RCconfig_NR_L1(void) {
void
RCconfig_nr_macrlc
()
{
void
RCconfig_nr_macrlc
()
{
int
j
;
int
j
;
paramdef_t
GNBSParams
[]
=
GNBSPARAMS_DESC
;
////////// Identification parameters
paramdef_t
GNBParams
[]
=
GNBPARAMS_DESC
;
paramlist_def_t
GNBParamList
=
{
GNB_CONFIG_STRING_GNB_LIST
,
NULL
,
0
};
config_get
(
GNBSParams
,
sizeof
(
GNBSParams
)
/
sizeof
(
paramdef_t
),
NULL
);
int
num_gnbs
=
GNBSParams
[
GNB_ACTIVE_GNBS_IDX
].
numelt
;
AssertFatal
(
num_gnbs
>
0
,
"Failed to parse config file no gnbs %s
\n
"
,
GNB_CONFIG_STRING_ACTIVE_GNBS
);
config_getlist
(
&
GNBParamList
,
GNBParams
,
sizeof
(
GNBParams
)
/
sizeof
(
paramdef_t
),
NULL
);
char
*
ulprbbl
=
*
GNBParamList
.
paramarray
[
0
][
GNB_ULPRBBLACKLIST_IDX
].
strptr
;
char
*
pt
=
strtok
(
ulprbbl
,
","
);
int
prbbl
[
275
];
int
num_prbbl
=
0
;
int
prb
;
memset
(
prbbl
,
0
,
275
*
sizeof
(
int
));
while
(
pt
)
{
prb
=
atoi
(
pt
);
prbbl
[
prb
]
=
1
;
pt
=
strtok
(
NULL
,
","
);
num_prbbl
++
;
}
paramdef_t
MacRLC_Params
[]
=
MACRLCPARAMS_DESC
;
paramdef_t
MacRLC_Params
[]
=
MACRLCPARAMS_DESC
;
paramlist_def_t
MacRLC_ParamList
=
{
CONFIG_STRING_MACRLC_LIST
,
NULL
,
0
};
paramlist_def_t
MacRLC_ParamList
=
{
CONFIG_STRING_MACRLC_LIST
,
NULL
,
0
};
...
@@ -697,6 +750,9 @@ void RCconfig_nr_macrlc() {
...
@@ -697,6 +750,9 @@ void RCconfig_nr_macrlc() {
AssertFatal
(
1
==
0
,
"MACRLC %d: %s unknown southbound midhaul
\n
"
,
j
,
*
(
MacRLC_ParamList
.
paramarray
[
j
][
MACRLC_TRANSPORT_S_PREFERENCE_IDX
].
strptr
));
AssertFatal
(
1
==
0
,
"MACRLC %d: %s unknown southbound midhaul
\n
"
,
j
,
*
(
MacRLC_ParamList
.
paramarray
[
j
][
MACRLC_TRANSPORT_S_PREFERENCE_IDX
].
strptr
));
}
}
RC
.
nrmac
[
j
]
->
ulsch_max_slots_inactivity
=
*
(
MacRLC_ParamList
.
paramarray
[
j
][
MACRLC_ULSCH_MAX_SLOTS_INACTIVITY
].
uptr
);
RC
.
nrmac
[
j
]
->
ulsch_max_slots_inactivity
=
*
(
MacRLC_ParamList
.
paramarray
[
j
][
MACRLC_ULSCH_MAX_SLOTS_INACTIVITY
].
uptr
);
RC
.
nrmac
[
j
]
->
num_ulprbbl
=
num_prbbl
;
memcpy
(
RC
.
nrmac
[
j
]
->
ulprbbl
,
prbbl
,
num_prbbl
*
sizeof
(
prbbl
[
0
]));
}
// for (j=0;j<RC.nb_nr_macrlc_inst;j++)
}
// for (j=0;j<RC.nb_nr_macrlc_inst;j++)
}
else
{
// MacRLC_ParamList.numelt > 0
}
else
{
// MacRLC_ParamList.numelt > 0
LOG_E
(
PHY
,
"No %s configuration found
\n
"
,
CONFIG_STRING_MACRLC_LIST
);
LOG_E
(
PHY
,
"No %s configuration found
\n
"
,
CONFIG_STRING_MACRLC_LIST
);
...
...
openair2/GNB_APP/gnb_paramdef.h
View file @
b05d165c
...
@@ -119,6 +119,8 @@ typedef enum {
...
@@ -119,6 +119,8 @@ typedef enum {
#define GNB_CONFIG_STRING_SIB1TDA "sib1_tda"
#define GNB_CONFIG_STRING_SIB1TDA "sib1_tda"
#define GNB_CONFIG_STRING_DOCSIRS "do_CSIRS"
#define GNB_CONFIG_STRING_DOCSIRS "do_CSIRS"
#define GNB_CONFIG_STRING_NRCELLID "nr_cellid"
#define GNB_CONFIG_STRING_NRCELLID "nr_cellid"
#define GNB_CONFIG_STRING_ULPRBBLACKLIST "ul_prbblacklist"
/*-----------------------------------------------------------------------------------------------------------------------------------------*/
/*-----------------------------------------------------------------------------------------------------------------------------------------*/
/* cell configuration parameters */
/* cell configuration parameters */
...
@@ -145,6 +147,7 @@ typedef enum {
...
@@ -145,6 +147,7 @@ typedef enum {
{GNB_CONFIG_STRING_SIB1TDA, NULL, 0, iptr:NULL, defintval:0, TYPE_INT, 0}, \
{GNB_CONFIG_STRING_SIB1TDA, NULL, 0, iptr:NULL, defintval:0, TYPE_INT, 0}, \
{GNB_CONFIG_STRING_DOCSIRS, NULL, 0, iptr:NULL, defintval:0, TYPE_INT, 0}, \
{GNB_CONFIG_STRING_DOCSIRS, NULL, 0, iptr:NULL, defintval:0, TYPE_INT, 0}, \
{GNB_CONFIG_STRING_NRCELLID, NULL, 0, u64ptr:NULL, defint64val:1, TYPE_UINT64, 0}, \
{GNB_CONFIG_STRING_NRCELLID, NULL, 0, u64ptr:NULL, defint64val:1, TYPE_UINT64, 0}, \
{GNB_CONFIG_STRING_ULPRBBLACKLIST, NULL, 0, strptr:NULL, defstrval:"", TYPE_STRING, 0} \
}
}
#define GNB_GNB_ID_IDX 0
#define GNB_GNB_ID_IDX 0
...
@@ -167,6 +170,7 @@ typedef enum {
...
@@ -167,6 +170,7 @@ typedef enum {
#define GNB_SIB1_TDA_IDX 17
#define GNB_SIB1_TDA_IDX 17
#define GNB_DO_CSIRS_IDX 18
#define GNB_DO_CSIRS_IDX 18
#define GNB_NRCELLID_IDX 19
#define GNB_NRCELLID_IDX 19
#define GNB_ULPRBBLACKLIST_IDX 20
#define TRACKING_AREA_CODE_OKRANGE {0x0001,0xFFFD}
#define TRACKING_AREA_CODE_OKRANGE {0x0001,0xFFFD}
#define GNBPARAMS_CHECK { \
#define GNBPARAMS_CHECK { \
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
View file @
b05d165c
...
@@ -1286,6 +1286,7 @@ bool nr_fr1_ulsch_preprocessor(module_id_t module_id, frame_t frame, sub_frame_t
...
@@ -1286,6 +1286,7 @@ bool nr_fr1_ulsch_preprocessor(module_id_t module_id, frame_t frame, sub_frame_t
int
st
=
0
,
e
=
0
,
len
=
0
;
int
st
=
0
,
e
=
0
,
len
=
0
;
for
(
int
i
=
0
;
i
<
bwpSize
;
i
++
)
{
for
(
int
i
=
0
;
i
<
bwpSize
;
i
++
)
{
if
(
RC
.
nrmac
[
module_id
]
->
ulprbbl
[
i
]
==
1
)
vrb_map_UL
[
i
]
=
1
;
while
((
vrb_map_UL
[
i
]
&
symb
)
!=
0
&&
i
<
bwpSize
)
while
((
vrb_map_UL
[
i
]
&
symb
)
!=
0
&&
i
<
bwpSize
)
i
++
;
i
++
;
st
=
i
;
st
=
i
;
...
...
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
View file @
b05d165c
...
@@ -678,7 +678,8 @@ typedef struct gNB_MAC_INST_s {
...
@@ -678,7 +678,8 @@ typedef struct gNB_MAC_INST_s {
NR_COMMON_channels_t
common_channels
[
NFAPI_CC_MAX
];
NR_COMMON_channels_t
common_channels
[
NFAPI_CC_MAX
];
/// current PDU index (BCH,DLSCH)
/// current PDU index (BCH,DLSCH)
uint16_t
pdu_index
[
NFAPI_CC_MAX
];
uint16_t
pdu_index
[
NFAPI_CC_MAX
];
int
num_ulprbbl
;
int
ulprbbl
[
275
];
/// NFAPI Config Request Structure
/// NFAPI Config Request Structure
nfapi_nr_config_request_scf_t
config
[
NFAPI_CC_MAX
];
nfapi_nr_config_request_scf_t
config
[
NFAPI_CC_MAX
];
/// NFAPI DL Config Request Structure
/// NFAPI DL Config Request Structure
...
...
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