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
6b58d357
Commit
6b58d357
authored
Jun 04, 2024
by
francescomani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
moving beamforming matrix to MAC and feeding it to FAPI structures
parent
e15fa14c
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
103 additions
and
63 deletions
+103
-63
executables/nr-ru.c
executables/nr-ru.c
+1
-26
nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface_scf.h
nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface_scf.h
+22
-22
openair2/GNB_APP/gnb_config.c
openair2/GNB_APP/gnb_config.c
+33
-0
openair2/GNB_APP/gnb_paramdef.h
openair2/GNB_APP/gnb_paramdef.h
+18
-13
openair2/LAYER2/NR_MAC_gNB/config.c
openair2/LAYER2/NR_MAC_gNB/config.c
+26
-2
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
+3
-0
No files found.
executables/nr-ru.c
View file @
6b58d357
...
...
@@ -58,8 +58,6 @@ static int DEFBANDS[] = {7};
static
int
DEFENBS
[]
=
{
0
};
static
int
DEFBFW
[]
=
{
0x00007fff
};
static
int
DEFRUTPCORES
[]
=
{
-
1
,
-
1
,
-
1
,
-
1
};
//static int DEFNRBANDS[] = {7};
//static int DEFGNBS[] = {0};
#include "ENB_APP/enb_paramdef.h"
#include "GNB_APP/gnb_paramdef.h"
...
...
@@ -1851,21 +1849,9 @@ void stop_RU(int nb_ru) {
static
void
NRRCconfig_RU
(
configmodule_interface_t
*
cfg
)
{
paramdef_t
RUParams
[]
=
RUPARAMS_DESC
;
paramlist_def_t
RUParamList
=
{
CONFIG_STRING_RU_LIST
,
NULL
,
0
};
paramlist_def_t
RUParamList
=
{
CONFIG_STRING_RU_LIST
,
NULL
,
0
};
config_getlist
(
cfg
,
&
RUParamList
,
RUParams
,
sizeofArray
(
RUParams
),
NULL
);
paramdef_t
GNBSParams
[]
=
GNBSPARAMS_DESC
;
paramdef_t
GNBParams
[]
=
GNBPARAMS_DESC
;
paramlist_def_t
GNBParamList
=
{
GNB_CONFIG_STRING_GNB_LIST
,
NULL
,
0
};
config_get
(
cfg
,
GNBSParams
,
sizeofArray
(
GNBSParams
),
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
(
cfg
,
&
GNBParamList
,
GNBParams
,
sizeofArray
(
GNBParams
),
NULL
);
int
N1
=
*
GNBParamList
.
paramarray
[
0
][
GNB_PDSCH_ANTENNAPORTS_N1_IDX
].
iptr
;
int
N2
=
*
GNBParamList
.
paramarray
[
0
][
GNB_PDSCH_ANTENNAPORTS_N2_IDX
].
iptr
;
int
XP
=
*
GNBParamList
.
paramarray
[
0
][
GNB_PDSCH_ANTENNAPORTS_XP_IDX
].
iptr
;
int
num_logical_antennas
=
N1
*
N2
*
XP
;
if
(
RUParamList
.
numelt
>
0
)
{
RC
.
ru
=
(
RU_t
**
)
malloc
(
RC
.
nb_RU
*
sizeof
(
RU_t
*
));
RC
.
ru_mask
=
(
1
<<
NB_RU
)
-
1
;
...
...
@@ -2032,8 +2018,6 @@ static void NRRCconfig_RU(configmodule_interface_t *cfg)
}
/* strcmp(local_rf, "yes") != 0 */
RC
.
ru
[
j
]
->
nb_tx
=
*
(
RUParamList
.
paramarray
[
j
][
RU_NB_TX_IDX
].
uptr
);
AssertFatal
(
RC
.
ru
[
j
]
->
nb_tx
>=
num_logical_antennas
,
"Number of logical antenna ports (set in config file with pdsch_AntennaPorts) cannot be larger than physical antennas (nb_tx)
\n
"
);
RC
.
ru
[
j
]
->
nb_rx
=
*
(
RUParamList
.
paramarray
[
j
][
RU_NB_RX_IDX
].
uptr
);
RC
.
ru
[
j
]
->
att_tx
=
*
(
RUParamList
.
paramarray
[
j
][
RU_ATT_TX_IDX
].
uptr
);
RC
.
ru
[
j
]
->
att_rx
=
*
(
RUParamList
.
paramarray
[
j
][
RU_ATT_RX_IDX
].
uptr
);
...
...
@@ -2057,15 +2041,6 @@ static void NRRCconfig_RU(configmodule_interface_t *cfg)
AssertFatal
(
RC
.
ru
[
j
]
->
num_tpcores
<=
RUParamList
.
paramarray
[
j
][
RU_TP_CORES
].
numelt
,
"Number of TP cores should be <=16
\n
"
);
for
(
int
i
=
0
;
i
<
RC
.
ru
[
j
]
->
num_tpcores
;
i
++
)
RC
.
ru
[
j
]
->
tpcores
[
i
]
=
RUParamList
.
paramarray
[
j
][
RU_TP_CORES
].
iptr
[
i
];
if
(
config_isparamset
(
RUParamList
.
paramarray
[
j
],
RU_BF_WEIGHTS_LIST_IDX
))
{
RC
.
ru
[
j
]
->
nb_bfw
=
RUParamList
.
paramarray
[
j
][
RU_BF_WEIGHTS_LIST_IDX
].
numelt
;
for
(
int
i
=
0
;
i
<
RC
.
ru
[
j
]
->
num_gNB
;
i
++
)
{
RC
.
ru
[
j
]
->
bw_list
[
i
]
=
(
int32_t
*
)
malloc16_clear
((
RC
.
ru
[
j
]
->
nb_bfw
)
*
sizeof
(
int32_t
));
for
(
int
b
=
0
;
b
<
RC
.
ru
[
j
]
->
nb_bfw
;
b
++
)
RC
.
ru
[
j
]
->
bw_list
[
i
][
b
]
=
RUParamList
.
paramarray
[
j
][
RU_BF_WEIGHTS_LIST_IDX
].
iptr
[
b
];
}
}
}
// j=0..num_rus
}
else
{
RC
.
nb_RU
=
0
;
...
...
nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface_scf.h
View file @
6b58d357
...
...
@@ -443,6 +443,27 @@ typedef struct
}
nfapi_nr_measurement_config_t
;
//-----------------------//
//3.3.6 Storing Precoding and Beamforming Tables
//table 3-32
typedef
struct
{
uint16_t
dig_beam_weight_Re
;
uint16_t
dig_beam_weight_Im
;
}
nfapi_nr_txru_t
;
typedef
struct
{
uint16_t
beam_idx
;
//0~65535
nfapi_nr_txru_t
*
txru_list
;
}
nfapi_nr_dig_beam_t
;
typedef
struct
{
uint16_t
num_dig_beams
;
//0~65535
uint16_t
num_txrus
;
//0~65535
nfapi_nr_dig_beam_t
*
dig_beam_list
;
}
nfapi_nr_dbt_pdu_t
;
// Table 3–62 Precoding matrix (PM) PDU (v.222.10.04)
typedef
struct
{
int16_t
precoder_weight_Re
;
...
...
@@ -575,6 +596,7 @@ typedef struct {
nfapi_nr_measurement_config_t
measurement_config
;
nfapi_nr_nfapi_t
nfapi_config
;
nfapi_nr_pm_list_t
pmi_list
;
nfapi_nr_dbt_pdu_t
dbt_config
;
}
nfapi_nr_config_request_scf_t
;
typedef
enum
{
...
...
@@ -669,28 +691,6 @@ typedef struct {
nfapi_nr_phy_notifications_errors_e
error_code
;
}
nfapi_nr_phy_notifications_error_indicate_t
;
//-----------------------//
//3.3.6 Storing Precoding and Beamforming Tables
//table 3-32
//?
typedef
struct
{
uint16_t
beam_idx
;
//0~65535
}
nfapi_nr_dig_beam_t
;
typedef
struct
{
uint16_t
dig_beam_weight_Re
;
uint16_t
dig_beam_weight_Im
;
}
nfapi_nr_txru_t
;
typedef
struct
{
uint16_t
num_dig_beams
;
//0~65535
uint16_t
num_txrus
;
//0~65535
nfapi_nr_dig_beam_t
*
dig_beam_list
;
nfapi_nr_txru_t
*
txru_list
;
}
nfapi_nr_dbt_pdu_t
;
// Section 3.4
// Section 3.4.1 slot indication
...
...
openair2/GNB_APP/gnb_config.c
View file @
6b58d357
...
...
@@ -49,6 +49,11 @@
#endif
#include "lib/f1ap_interface_management.h"
static
int
DEFBANDS
[]
=
{
7
};
static
int
DEFENBS
[]
=
{
0
};
static
int
DEFBFW
[]
=
{
0x00007fff
};
static
int
DEFRUTPCORES
[]
=
{
-
1
,
-
1
,
-
1
,
-
1
};
/**
* @brief Helper define to allocate and initialize SetupRelease structures
*/
...
...
@@ -1267,6 +1272,21 @@ void RCconfig_nr_macrlc(configmodule_interface_t *cfg)
config
.
pdsch_AntennaPorts
.
XP
,
config
.
pusch_AntennaPorts
);
paramdef_t
RUParams
[]
=
RUPARAMS_DESC
;
paramlist_def_t
RUParamList
=
{
CONFIG_STRING_RU_LIST
,
NULL
,
0
};
config_getlist
(
config_get_if
(),
&
RUParamList
,
RUParams
,
sizeofArray
(
RUParams
),
NULL
);
int
num_tx
=
0
;
if
(
RUParamList
.
numelt
>
0
)
{
for
(
int
i
=
0
;
i
<
RUParamList
.
numelt
;
i
++
)
num_tx
+=
*
(
RUParamList
.
paramarray
[
i
][
RU_NB_TX_IDX
].
uptr
);
AssertFatal
(
num_tx
>=
config
.
pdsch_AntennaPorts
.
XP
*
config
.
pdsch_AntennaPorts
.
N1
*
config
.
pdsch_AntennaPorts
.
N2
,
"Number of logical antenna ports (set in config file with pdsch_AntennaPorts) cannot be larger than physical antennas (nb_tx)
\n
"
);
}
else
{
// TODO temporary solution for 3rd party RU or nFAPI, in which case we don't have RU section present in the config file
num_tx
=
config
.
pdsch_AntennaPorts
.
XP
*
config
.
pdsch_AntennaPorts
.
N1
*
config
.
pdsch_AntennaPorts
.
N2
;
LOG_E
(
GNB_APP
,
"RU information not present in config file. Assuming physical antenna ports equal to logical antenna ports %d
\n
"
,
num_tx
);
}
config
.
minRXTXTIME
=
*
GNBParamList
.
paramarray
[
0
][
GNB_MINRXTXTIME_IDX
].
iptr
;
LOG_I
(
GNB_APP
,
"minTXRXTIME %d
\n
"
,
config
.
minRXTXTIME
);
config
.
sib1_tda
=
*
GNBParamList
.
paramarray
[
0
][
GNB_SIB1_TDA_IDX
].
iptr
;
...
...
@@ -1324,6 +1344,19 @@ void RCconfig_nr_macrlc(configmodule_interface_t *cfg)
config
.
timer_config
.
n311
,
config
.
timer_config
.
t319
);
if
(
config_isparamset
(
GNBParamList
.
paramarray
[
0
],
GNB_BEAMWEIGHTS_IDX
))
{
int
n
=
GNBParamList
.
paramarray
[
0
][
GNB_BEAMWEIGHTS_IDX
].
numelt
;
AssertFatal
(
n
%
num_tx
==
0
,
"Error! Number of beam input needs to be multiple of TX antennas
\n
"
);
// each beam is described by a set of weights (one for each antenna)
// on the other hand in case of analog beamforming an index to the RU beam identifier is provided
config
.
nb_bfw
[
0
]
=
num_tx
;
// number of tx antennas
config
.
nb_bfw
[
1
]
=
n
/
num_tx
;
// number of beams
config
.
bw_list
=
malloc16_clear
(
n
*
sizeof
(
*
config
.
bw_list
));
for
(
int
b
=
0
;
b
<
n
;
b
++
)
{
config
.
bw_list
[
b
]
=
GNBParamList
.
paramarray
[
0
][
GNB_BEAMWEIGHTS_IDX
].
iptr
[
b
];
}
}
NR_ServingCellConfigCommon_t
*
scc
=
get_scc_config
(
cfg
,
config
.
minRXTXTIME
);
//xer_fprint(stdout, &asn_DEF_NR_ServingCellConfigCommon, scc);
NR_ServingCellConfig_t
*
scd
=
get_scd_config
(
cfg
);
...
...
openair2/GNB_APP/gnb_paramdef.h
View file @
6b58d357
...
...
@@ -131,22 +131,23 @@ typedef enum {
#define GNB_CONFIG_STRING_DRBS "drbs"
#define GNB_CONFIG_STRING_USE_DELTA_MCS "use_deltaMCS"
#define GNB_CONFIG_HLP_USE_DELTA_MCS "Use deltaMCS-based power headroom reporting in PUSCH-Config"
#define GNB_CONFIG_HLP_FORCEUL256QAMOFF
"suppress activation of UL 256 QAM despite UE support"
#define GNB_CONFIG_HLP_FORCEUL256QAMOFF "suppress activation of UL 256 QAM despite UE support"
#define GNB_CONFIG_STRING_FORCEUL256QAMOFF "force_UL256qam_off"
#define GNB_CONFIG_STRING_GNB_DU_ID "gNB_DU_ID"
#define GNB_CONFIG_STRING_GNB_CU_UP_ID "gNB_CU_UP_ID"
#define GNB_CONFIG_STRING_NUM_DL_HARQPROCESSES "num_dlharq"
#define GNB_CONFIG_STRING_NUM_UL_HARQPROCESSES "num_ulharq"
#define GNB_CONFIG_STRING_GNB_DU_ID "gNB_DU_ID"
#define GNB_CONFIG_STRING_GNB_CU_UP_ID "gNB_CU_UP_ID"
#define GNB_CONFIG_STRING_NUM_DL_HARQPROCESSES "num_dlharq"
#define GNB_CONFIG_STRING_NUM_UL_HARQPROCESSES "num_ulharq"
#define GNB_CONFIG_STRING_BEAM_WEIGHTS_LIST "beam_weights"
#define GNB_CONFIG_HLP_STRING_ENABLE_SDAP "enable the SDAP layer\n"
#define GNB_CONFIG_HLP_FORCE256QAMOFF "suppress activation of 256 QAM despite UE support"
#define GNB_CONFIG_HLP_MAXMIMOLAYERS "limit on maxMIMO-layers for DL"
#define GNB_CONFIG_HLP_DISABLE_HARQ "disable feedback for all HARQ processes (REL17 feature)"
#define GNB_CONFIG_HLP_STRING_DRBS "Number of total DRBs to establish, including the mandatory for PDU SEssion (default=1)\n"
#define GNB_CONFIG_HLP_GNB_DU_ID "defines the gNB-DU ID (only applicable for DU)"
#define GNB_CONFIG_HLP_GNB_CU_UP_ID "defines the gNB-CU-UP ID (only applicable for CU-UP)"
#define GNB_CONFIG_HLP_NUM_DL_HARQ "Set Num DL harq processes. Valid values 2,4,6,8,10,12,16,32. Default 16"
#define GNB_CONFIG_HLP_NUM_UL_HARQ "Set Num UL harq processes. Valid values 16,32. Default 16"
#define GNB_CONFIG_HLP_GNB_DU_ID
"defines the gNB-DU ID (only applicable for DU)"
#define GNB_CONFIG_HLP_GNB_CU_UP_ID
"defines the gNB-CU-UP ID (only applicable for CU-UP)"
#define GNB_CONFIG_HLP_NUM_DL_HARQ
"Set Num DL harq processes. Valid values 2,4,6,8,10,12,16,32. Default 16"
#define GNB_CONFIG_HLP_NUM_UL_HARQ
"Set Num UL harq processes. Valid values 16,32. Default 16"
/*-----------------------------------------------------------------------------------------------------------------------------------------*/
/* cell configuration parameters */
...
...
@@ -187,8 +188,9 @@ typedef enum {
{GNB_CONFIG_STRING_FORCEUL256QAMOFF, GNB_CONFIG_HLP_FORCEUL256QAMOFF, 0,.iptr=NULL, .defintval=0, TYPE_INT, 0}, \
{GNB_CONFIG_STRING_MAXMIMOLAYERS, GNB_CONFIG_HLP_MAXMIMOLAYERS, 0, .iptr=NULL, .defintval=-1, TYPE_INT, 0}, \
{GNB_CONFIG_STRING_DISABLE_HARQ, GNB_CONFIG_HLP_DISABLE_HARQ, PARAMFLAG_BOOL, .iptr=NULL, .defintval=0, TYPE_INT, 0}, \
{GNB_CONFIG_STRING_NUM_DL_HARQPROCESSES, GNB_CONFIG_HLP_NUM_DL_HARQ, 0, .iptr=NULL, .defintval=16, TYPE_INT, 0}, \
{GNB_CONFIG_STRING_NUM_UL_HARQPROCESSES, GNB_CONFIG_HLP_NUM_UL_HARQ, 0, .iptr=NULL, .defintval=16, TYPE_INT, 0}, \
{GNB_CONFIG_STRING_NUM_DL_HARQPROCESSES, GNB_CONFIG_HLP_NUM_DL_HARQ, 0, .iptr=NULL, .defintval=16, TYPE_INT, 0}, \
{GNB_CONFIG_STRING_NUM_UL_HARQPROCESSES, GNB_CONFIG_HLP_NUM_UL_HARQ, 0, .iptr=NULL, .defintval=16, TYPE_INT, 0}, \
{GNB_CONFIG_STRING_BEAM_WEIGHTS_LIST, NULL, 0, .iptr=NULL, .defintarrayval=0, TYPE_INTARRAY, 0}, \
}
// clang-format on
...
...
@@ -228,6 +230,7 @@ typedef enum {
#define GNB_DISABLE_HARQ_IDX 32
#define GNB_NUM_DL_HARQ_IDX 33
#define GNB_NUM_UL_HARQ_IDX 34
#define GNB_BEAMWEIGHTS_IDX 35
#define TRACKING_AREA_CODE_OKRANGE {0x0001,0xFFFD}
#define NUM_DL_HARQ_OKVALUES {2,4,6,8,10,12,16,32}
...
...
@@ -267,8 +270,9 @@ typedef enum {
{ .s5 = { NULL } }, \
{ .s5 = { NULL } }, \
{ .s5 = { NULL } }, \
{ .s1 = { config_check_intval, NUM_DL_HARQ_OKVALUES,8 } }, \
{ .s1 = { config_check_intval, NUM_UL_HARQ_OKVALUES,2 } }, \
{ .s1 = { config_check_intval, NUM_DL_HARQ_OKVALUES,8 } }, \
{ .s1 = { config_check_intval, NUM_UL_HARQ_OKVALUES,2 } }, \
{ .s5 = { NULL } }, \
}
/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
...
...
@@ -633,3 +637,4 @@ typedef enum {
/*----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
#endif
openair2/LAYER2/NR_MAC_gNB/config.c
View file @
6b58d357
...
...
@@ -272,7 +272,9 @@ nfapi_nr_pm_list_t init_DL_MIMO_codebook(gNB_MAC_INST *gNB, nr_pdsch_AntennaPort
return
mat
;
}
static
void
config_common
(
gNB_MAC_INST
*
nrmac
,
nr_pdsch_AntennaPorts_t
pdsch_AntennaPorts
,
int
pusch_AntennaPorts
,
NR_ServingCellConfigCommon_t
*
scc
)
static
void
config_common
(
gNB_MAC_INST
*
nrmac
,
const
nr_mac_config_t
*
config
,
NR_ServingCellConfigCommon_t
*
scc
)
{
nfapi_nr_config_request_scf_t
*
cfg
=
&
nrmac
->
config
[
0
];
nrmac
->
common_channels
[
0
].
ServingCellConfigCommon
=
scc
;
...
...
@@ -527,6 +529,7 @@ static void config_common(gNB_MAC_INST *nrmac, nr_pdsch_AntennaPorts_t pdsch_Ant
cfg
->
num_tlv
+=
2
;
// logical antenna ports
nr_pdsch_AntennaPorts_t
pdsch_AntennaPorts
=
config
->
pdsch_AntennaPorts
;
int
num_pdsch_antenna_ports
=
pdsch_AntennaPorts
.
N1
*
pdsch_AntennaPorts
.
N2
*
pdsch_AntennaPorts
.
XP
;
cfg
->
carrier_config
.
num_tx_ant
.
value
=
num_pdsch_antenna_ports
;
AssertFatal
(
num_pdsch_antenna_ports
>
0
&&
num_pdsch_antenna_ports
<
33
,
"pdsch_AntennaPorts in 1...32
\n
"
);
...
...
@@ -550,6 +553,7 @@ static void config_common(gNB_MAC_INST *nrmac, nr_pdsch_AntennaPorts_t pdsch_Ant
cfg
->
num_tlv
++
;
}
int
pusch_AntennaPorts
=
config
->
pusch_AntennaPorts
;
cfg
->
carrier_config
.
num_rx_ant
.
value
=
pusch_AntennaPorts
;
AssertFatal
(
pusch_AntennaPorts
>
0
&&
pusch_AntennaPorts
<
13
,
"pusch_AntennaPorts in 1...12
\n
"
);
cfg
->
carrier_config
.
num_rx_ant
.
tl
.
tag
=
NFAPI_NR_CONFIG_NUM_RX_ANT_TAG
;
...
...
@@ -589,8 +593,28 @@ static void config_common(gNB_MAC_INST *nrmac, nr_pdsch_AntennaPorts_t pdsch_Ant
AssertFatal
(
periods_per_frame
>
0
,
"TDD configuration cannot be configured
\n
"
);
}
int
nb_tx
=
config
->
nb_bfw
[
0
];
// number of tx antennas
int
nb_beams
=
config
->
nb_bfw
[
1
];
// number of beams
// precoding matrix configuration (to be improved)
cfg
->
pmi_list
=
init_DL_MIMO_codebook
(
nrmac
,
pdsch_AntennaPorts
);
// beamforming matrix configuration
cfg
->
dbt_config
.
num_dig_beams
=
nb_beams
;
if
(
nb_beams
>
0
)
{
cfg
->
dbt_config
.
num_txrus
=
nb_tx
;
cfg
->
dbt_config
.
dig_beam_list
=
malloc16
(
nb_beams
*
sizeof
(
*
cfg
->
dbt_config
.
dig_beam_list
));
AssertFatal
(
cfg
->
dbt_config
.
dig_beam_list
,
"out of memory
\n
"
);
for
(
int
i
=
0
;
i
<
nb_beams
;
i
++
)
{
nfapi_nr_dig_beam_t
*
beam
=
&
cfg
->
dbt_config
.
dig_beam_list
[
i
];
beam
->
beam_idx
=
i
;
beam
->
txru_list
=
malloc16
(
nb_tx
*
sizeof
(
*
beam
->
txru_list
));
for
(
int
j
=
0
;
j
<
nb_tx
;
j
++
)
{
nfapi_nr_txru_t
*
txru
=
&
beam
->
txru_list
[
j
];
txru
->
dig_beam_weight_Re
=
config
->
bw_list
[
j
+
i
*
nb_tx
]
&
0xffff
;
txru
->
dig_beam_weight_Im
=
(
config
->
bw_list
[
j
+
i
*
nb_tx
]
>>
16
)
&
0xffff
;
LOG_D
(
NR_MAC
,
"Beam %d Tx %d Weight (%d, %d)
\n
"
,
i
,
j
,
txru
->
dig_beam_weight_Re
,
txru
->
dig_beam_weight_Im
);
}
}
}
}
static
void
initialize_beam_information
(
NR_beam_info_t
*
beam_info
,
int
mu
,
int
slots_per_frame
)
...
...
@@ -644,7 +668,7 @@ void nr_mac_config_scc(gNB_MAC_INST *nrmac, NR_ServingCellConfigCommon_t *scc, c
LOG_I
(
NR_MAC
,
"Configuring common parameters from NR ServingCellConfig
\n
"
);
config_common
(
nrmac
,
config
->
pdsch_AntennaPorts
,
config
->
pusch_AntennaPorts
,
scc
);
config_common
(
nrmac
,
config
,
scc
);
if
(
NFAPI_MODE
==
NFAPI_MONOLITHIC
)
{
// nothing to be sent in the other cases
...
...
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
View file @
6b58d357
...
...
@@ -166,6 +166,9 @@ typedef struct nr_mac_config_t {
nr_mac_timers_t
timer_config
;
int
num_dlharq
;
int
num_ulharq
;
/// beamforming weight matrix size
int
nb_bfw
[
2
];
int32_t
*
bw_list
;
}
nr_mac_config_t
;
typedef
struct
NR_preamble_ue
{
...
...
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