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
7d7dd295
Commit
7d7dd295
authored
3 years ago
by
Raymond Knopp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
blacklisting of PRBs in configuration file
parent
35491683
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
78 additions
and
38 deletions
+78
-38
executables/nr-ru.c
executables/nr-ru.c
+0
-1
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
-2
openair2/GNB_APP/gnb_config.c
openair2/GNB_APP/gnb_config.c
+54
-1
openair2/GNB_APP/gnb_paramdef.h
openair2/GNB_APP/gnb_paramdef.h
+4
-2
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
+2
-0
targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp
targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp
+3
-30
No files found.
executables/nr-ru.c
View file @
7d7dd295
...
...
@@ -1390,7 +1390,6 @@ void *ru_thread( void *param ) {
if
(
ru
->
feprx
)
{
ru
->
feprx
(
ru
,
proc
->
tti_rx
);
//LOG_M("rxdata.m","rxs",ru->common.rxdata[0],1228800,1,1);
if
(
initial_wait
==
0
&&
proc
->
frame_rx
==
127
)
{
LOG_M
(
"rxdata.m"
,
"rxs"
,
ru
->
common
.
rxdata
[
0
],
fp
->
samples_per_frame
,
1
,
1
);
LOG_M
(
"rxdataF.m"
,
"rxsF"
,
RC
.
gNB
[
0
]
->
common_vars
.
rxdataF
[
0
],
fp
->
symbols_per_slot
*
fp
->
ofdm_symbol_size
,
1
,
1
);
exit
(
-
1
);}
LOG_D
(
PHY
,
"RU proc: frame_rx = %d, tti_rx = %d
\n
"
,
proc
->
frame_rx
,
proc
->
tti_rx
);
/*
LOG_D(PHY,"Copying rxdataF from RU to gNB\n");
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/NR_ESTIMATION/nr_measurements_gNB.c
View file @
7d7dd295
...
...
@@ -73,8 +73,9 @@ void dump_nr_I0_stats(FILE *fd,PHY_VARS_gNB *gNB) {
int
min_I0
=
1000
,
max_I0
=
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
++
)
{
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
;}
...
...
@@ -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
++
)
{
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
"
);
}
fprintf
(
fd
,
"
\n
"
);
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/defs_gNB.h
View file @
7d7dd295
...
...
@@ -855,6 +855,8 @@ typedef struct PHY_VARS_gNB_s {
int
pusch_thres
;
int
prach_thres
;
uint64_t
bad_pucch
;
int
num_ulprbbl
;
int
ulprbbl
[
275
];
/*
time_stats_t phy_proc;
*/
...
...
This diff is collapsed.
Click to expand it.
openair1/SCHED_NR/phy_procedures_nr_gNB.c
View file @
7d7dd295
...
...
@@ -539,11 +539,18 @@ void nr_fill_indication(PHY_VARS_gNB *gNB, int frame, int slot_rx, int ULSCH_id,
void
fill_ul_rb_mask
(
PHY_VARS_gNB
*
gNB
,
int
frame_rx
,
int
slot_rx
)
{
int
rb2
,
rb
,
nb_rb
;
int
prbpos
=
0
;
if
(
1
/*(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
;
for
(
int
symbol
=
0
;
symbol
<
14
;
symbol
++
)
for
(
int
m
=
0
;
m
<
9
;
m
++
)
gNB
->
rb_mask_ul
[
symbol
][
m
]
=
0
;
for
(
int
m
=
0
;
m
<
9
;
m
++
)
{
gNB
->
rb_mask_ul
[
symbol
][
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
[
symbol
][
m
]
|=
(
gNB
->
ulprbbl
[
prbpos
]
>
0
?
1
:
0
)
<<
i
;
}
}
for
(
int
i
=
0
;
i
<
NUMBER_OF_NR_PUCCH_MAX
;
i
++
){
NR_gNB_PUCCH_t
*
pucch
=
gNB
->
pucch
[
i
];
if
(
pucch
)
{
...
...
This diff is collapsed.
Click to expand it.
openair2/GNB_APP/gnb_config.c
View file @
7d7dd295
...
...
@@ -549,6 +549,31 @@ void RCconfig_nr_flexran()
void
RCconfig_NR_L1
(
void
)
{
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
;
paramlist_def_t
L1_ParamList
=
{
CONFIG_STRING_L1_LIST
,
NULL
,
0
};
...
...
@@ -577,6 +602,9 @@ void RCconfig_NR_L1(void) {
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
]
->
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
)
{
//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
)
{
...
...
@@ -633,9 +661,32 @@ void RCconfig_NR_L1(void) {
void
RCconfig_nr_macrlc
()
{
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
;
paramlist_def_t
MacRLC_ParamList
=
{
CONFIG_STRING_MACRLC_LIST
,
NULL
,
0
};
config_getlist
(
&
MacRLC_ParamList
,
MacRLC_Params
,
sizeof
(
MacRLC_Params
)
/
sizeof
(
paramdef_t
),
NULL
);
if
(
MacRLC_ParamList
.
numelt
>
0
)
{
...
...
@@ -702,6 +753,8 @@ 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
));
}
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++)
}
else
{
// MacRLC_ParamList.numelt > 0
LOG_E
(
PHY
,
"No %s configuration found
\n
"
,
CONFIG_STRING_MACRLC_LIST
);
...
...
This diff is collapsed.
Click to expand it.
openair2/GNB_APP/gnb_paramdef.h
View file @
7d7dd295
...
...
@@ -120,7 +120,7 @@ typedef enum {
#define GNB_CONFIG_STRING_DOCSIRS "do_CSIRS"
#define GNB_CONFIG_STRING_NRCELLID "nr_cellid"
#define GNB_CONFIG_STRING_MINRXTXTIMEPDSCH "min_rxtxtime_pdsch"
#define GNB_CONFIG_STRING_ULPRBBLACKLIST "ul_prbblacklist"
/*-----------------------------------------------------------------------------------------------------------------------------------------*/
/* cell configuration parameters */
/* optname helpstr paramflags XXXptr defXXXval type numelt */
...
...
@@ -146,7 +146,8 @@ typedef enum {
{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_NRCELLID, NULL, 0, u64ptr:NULL, defint64val:1, TYPE_UINT64, 0}, \
{GNB_CONFIG_STRING_MINRXTXTIMEPDSCH, NULL, 0, iptr:NULL, defintval:2, TYPE_INT, 0} \
{GNB_CONFIG_STRING_MINRXTXTIMEPDSCH, NULL, 0, iptr:NULL, defintval:2, TYPE_INT, 0}, \
{GNB_CONFIG_STRING_ULPRBBLACKLIST, NULL, 0, strptr:NULL, defstrval:"", TYPE_STRING, 0} \
}
#define GNB_GNB_ID_IDX 0
...
...
@@ -170,6 +171,7 @@ typedef enum {
#define GNB_DO_CSIRS_IDX 18
#define GNB_NRCELLID_IDX 19
#define GNB_MINRXTXTIMEPDSCH_IDX 20
#define GNB_ULPRBBLACKLIST_IDX 21
#define TRACKING_AREA_CODE_OKRANGE {0x0001,0xFFFD}
#define GNBPARAMS_CHECK { \
...
...
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
View file @
7d7dd295
...
...
@@ -683,6 +683,8 @@ typedef struct gNB_MAC_INST_s {
/// current PDU index (BCH,DLSCH)
uint16_t
pdu_index
[
NFAPI_CC_MAX
];
int
num_ulprbbl
;
int
ulprbbl
[
275
];
/// NFAPI Config Request Structure
nfapi_nr_config_request_scf_t
config
[
NFAPI_CC_MAX
];
/// NFAPI DL Config Request Structure
...
...
This diff is collapsed.
Click to expand it.
targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp
View file @
7d7dd295
...
...
@@ -679,44 +679,17 @@ static int trx_usrp_read(openair0_device *device, openair0_timestamp *ptimestamp
#if defined(__x86_64__) || defined(__i386__)
#ifdef __AVX2__
__m256i
mean
=
_mm256_setzero_si256
();
int16_t
mean16
[
2
];
for
(
int
j
=
0
;
j
<
nsamps2
<<
1
;
j
++
)
{
mean
=
_mm256_add_epi32
(
mean
,
_mm256_cvtepi16_epi32
(((
__m128i
*
)
buff_tmp
[
i
])[
j
]));
}
mean16
[
0
]
=
(
int16_t
)((
_mm256_extract_epi32
(
mean
,
0
)
+
_mm256_extract_epi32
(
mean
,
2
)
+
_mm256_extract_epi32
(
mean
,
4
)
+
_mm256_extract_epi32
(
mean
,
6
))
/
nsamps
);
mean16
[
1
]
=
(
int16_t
)((
_mm256_extract_epi32
(
mean
,
1
)
+
_mm256_extract_epi32
(
mean
,
3
)
+
_mm256_extract_epi32
(
mean
,
5
)
+
_mm256_extract_epi32
(
mean
,
7
))
/
nsamps
);
/*
LOG_I(PHY,"mean16[0] %d mean16[1] %d (%d,%d,%d,%d,%d,%d,%d,%d)\n",mean16[0],mean16[1],
_mm256_extract_epi32(mean,0),
_mm256_extract_epi32(mean,1),
_mm256_extract_epi32(mean,2),
_mm256_extract_epi32(mean,3),
_mm256_extract_epi32(mean,4),
_mm256_extract_epi32(mean,5),
_mm256_extract_epi32(mean,6),
_mm256_extract_epi32(mean,7)); */
if
((((
uintptr_t
)
buff
[
i
])
&
0x1F
)
==
0
)
{
mean
=
_mm256_set1_epi32
(
*
(
uint32_t
*
)
mean16
);
// FK: in some cases the buffer might not be 32 byte aligned, so we cannot use avx2
for
(
int
j
=
0
;
j
<
nsamps2
;
j
++
)
((
__m256i
*
)
buff
[
i
])[
j
]
=
_mm256_srai_epi16
(
_mm256_subs_epi16
(
buff_tmp
[
i
][
j
],
mean
)
,
rxshift
);
((
__m256i
*
)
buff
[
i
])[
j
]
=
_mm256_srai_epi16
(
buff_tmp
[
i
][
j
]
,
rxshift
);
}
else
{
__m128i
mean128
=
_mm_set1_epi32
(
*
(
uint32_t
*
)
mean16
);
for
(
int
j
=
0
;
j
<
(
nsamps2
<<
1
);
j
++
)
((
__m128i
*
)
buff
[
i
])[
j
]
=
_mm_srai_epi16
(
_mm_subs_epi16
(((
__m128i
*
)
buff_tmp
[
i
])[
j
],
mean128
)
,
rxshift
);
((
__m128i
*
)
buff
[
i
])[
j
]
=
_mm_srai_epi16
(
((
__m128i
*
)
buff_tmp
[
i
])[
j
]
,
rxshift
);
}
#else
__m128i
mean
=
mm_setzero_si128
();
for
(
int
j
=
0
;
j
<
nsamps2
<<
1
;
j
++
)
{
mean
=
_mm_adds_epi32
(
mean
,
_mm_cvtepi16_epi32
(((
__m64
*
)
buff_tmp
[
i
])[
j
]));
}
mean16
[
0
]
=
(
int16_t
)((
_mm_extract_epi32
(
mean
,
0
)
+
_mm_extract_epi32
(
mean
,
2
))
/
nsamps
);
mean16
[
1
]
=
(
int16_t
)((
_mm_extract_epi32
(
mean
,
1
)
+
_mm_extract_epi32
(
mean
,
3
))
/
nsamps
);
mean
=
_mm_set1_epi32
(
*
(
uint32_t
*
)
mean16
);
for
(
int
j
=
0
;
j
<
nsamps2
;
j
++
)
((
__m128i
*
)
buff
[
i
])[
j
]
=
_mm_srai_epi16
(
_mm_subs_epi16
(
buff_tmp
[
i
][
j
],
mean
)
,
rxshift
);
((
__m128i
*
)
buff
[
i
])[
j
]
=
_mm_srai_epi16
(
buff_tmp
[
i
][
j
]
,
rxshift
);
#endif
#elif defined(__arm__)
for
(
int
j
=
0
;
j
<
nsamps2
;
j
++
)
...
...
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