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
c288f846
Commit
c288f846
authored
Sep 29, 2025
by
Sakthivel Velumani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
mac: fix fapi beam id
Set MSB of fapi beam ID based on flag for beamforming done in hiPHY or loPHY.
parent
15e59665
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
58 additions
and
58 deletions
+58
-58
common/utils/utils.h
common/utils/utils.h
+2
-2
openair1/SCHED_NR/phy_procedures_nr_gNB.c
openair1/SCHED_NR/phy_procedures_nr_gNB.c
+1
-1
openair2/GNB_APP/gnb_config.c
openair2/GNB_APP/gnb_config.c
+1
-0
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
+13
-20
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c
+7
-19
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
+3
-2
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
+12
-3
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_srs.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_srs.c
+2
-1
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_uci.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_uci.c
+2
-1
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
+7
-4
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
+7
-4
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
+1
-1
No files found.
common/utils/utils.h
View file @
c288f846
...
...
@@ -33,8 +33,8 @@ extern "C" {
__typeof__ (b) _b = (b); \
_a < _b ? _a : _b; })
#define IS_BIT_SET(a, b) ((a >> b) & 1)
#define SET_BIT(a, b) (a | (1 << b))
#ifdef __cplusplus
#ifdef min
...
...
openair1/SCHED_NR/phy_procedures_nr_gNB.c
View file @
c288f846
...
...
@@ -77,7 +77,7 @@ int beam_index_allocation(bool das,
if
(
das
)
return
fapi_beam_index
;
int
ru_beam_idx
=
analog_bf
->
analog_beam_list
[
fapi_beam_index
].
value
;
int
ru_beam_idx
=
analog_bf
->
analog_beam_list
[
fapi_beam_index
].
value
&
0x7fff
;
int
idx
=
-
1
;
for
(
int
j
=
0
;
j
<
common_vars
->
num_beams_period
;
j
++
)
{
// L2 analog beam implementation is slot based, so we need to verify occupancy for the whole slot
...
...
openair2/GNB_APP/gnb_config.c
View file @
c288f846
...
...
@@ -1634,6 +1634,7 @@ void RCconfig_nr_macrlc(configmodule_interface_t *cfg)
beam_info
->
beam_duration
=
*
MacRLC_ParamList
.
paramarray
[
j
][
MACRLC_ANALOG_BEAM_DURATION_IDX
].
u8ptr
;
beam_info
->
beams_per_period
=
beams_per_period
;
beam_info
->
beam_allocation_size
=
-
1
;
// to be initialized once we have information on frame configuration
// TODO: Indicate this to MAC via FAPI TLV 0x0164.
beam_info
->
beam_mode
=
ab
==
1
?
PRECONFIGURED_BEAM_IDX
:
LOPHY_BEAM_IDX
;
}
else
{
RC
.
nrmac
[
j
]
->
beam_info
.
beam_mode
=
NO_BEAM_MODE
;
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
View file @
c288f846
...
...
@@ -516,7 +516,8 @@ void schedule_nr_prach(module_id_t module_idP, frame_t frameP, slot_t slotP)
prach_pdu
->
beamforming
.
num_prgs
=
1
;
prach_pdu
->
beamforming
.
prg_size
=
n_ra_rb
;
prach_pdu
->
beamforming
.
dig_bf_interface
=
num_td_occ
;
prach_pdu
->
beamforming
.
prgs_list
[
0
].
dig_bf_interface_list
[
num_td_occ
-
1
].
beam_idx
=
beam_index
;
const
uint16_t
fapi_beam
=
convert_to_fapi_beam
(
beam_index
,
gNB
->
beam_info
.
beam_mode
);
prach_pdu
->
beamforming
.
prgs_list
[
0
].
dig_bf_interface_list
[
num_td_occ
-
1
].
beam_idx
=
fapi_beam
;
LOG_D
(
NR_MAC
,
"Frame %d, Slot %d: Prach Occasion id = %u fdm index = %u start symbol = %u slot index = %u subframe index = %u
\n
"
,
...
...
@@ -900,7 +901,8 @@ static void nr_generate_Msg3_retransmission(module_id_t module_idP,
0
,
ra
->
msg3_round
,
ul_bwp
->
pusch_Config
&&
ul_bwp
->
pusch_Config
->
frequencyHopping
,
UE
->
rnti
);
UE
->
rnti
,
nr_mac
->
beam_info
.
beam_mode
);
future_ul_tti_req
->
n_pdus
+=
1
;
// generation of DCI 0_0 to schedule msg3 retransmission
...
...
@@ -933,14 +935,9 @@ static void nr_generate_Msg3_retransmission(module_id_t module_idP,
}
// Fill PDCCH DL DCI PDU
nfapi_nr_dl_dci_pdu_t
*
dci_pdu
=
prepare_dci_pdu
(
pdcch_pdu_rel15
,
scc
,
ss
,
coreset
,
aggregation_level
,
CCEIndex
,
UE
->
UE_beam_index
,
UE
->
rnti
);
const
uint16_t
fapi_beam
=
convert_to_fapi_beam
(
UE
->
UE_beam_index
,
nr_mac
->
beam_info
.
beam_mode
);
nfapi_nr_dl_dci_pdu_t
*
dci_pdu
=
prepare_dci_pdu
(
pdcch_pdu_rel15
,
scc
,
ss
,
coreset
,
aggregation_level
,
CCEIndex
,
fapi_beam
,
UE
->
rnti
);
pdcch_pdu_rel15
->
numDlDci
++
;
dci_pdu_rel15_t
uldci_payload
=
{
0
};
...
...
@@ -1204,7 +1201,8 @@ static void nr_add_msg3(module_id_t module_idP, int CC_id, frame_t frameP, slot_
0
,
0
,
ul_bwp
->
pusch_Config
&&
ul_bwp
->
pusch_Config
->
frequencyHopping
,
UE
->
rnti
);
UE
->
rnti
,
mac
->
beam_info
.
beam_mode
);
future_ul_tti_req
->
n_pdus
+=
1
;
// calling function to fill rar message
...
...
@@ -1326,6 +1324,7 @@ static void prepare_dl_pdus(gNB_MAC_INST *nr_mac,
NR_COMMON_channels_t
*
cc
=
&
nr_mac
->
common_channels
[
CC_id
];
NR_ServingCellConfigCommon_t
*
scc
=
cc
->
ServingCellConfigCommon
;
NR_UE_DL_BWP_t
*
dl_bwp
=
&
UE
->
current_DL_BWP
;
const
uint16_t
fapi_beam
=
convert_to_fapi_beam
(
UE
->
UE_beam_index
,
nr_mac
->
beam_info
.
beam_mode
);
nfapi_nr_dl_tti_pdsch_pdu_rel15_t
*
pdsch_pdu_rel15
=
prepare_pdsch_pdu
(
dl_tti_pdsch_pdu
,
nr_mac
,
UE
,
...
...
@@ -1334,19 +1333,13 @@ static void prepare_dl_pdus(gNB_MAC_INST *nr_mac,
false
,
round
,
rnti
,
UE
->
UE_beam_index
,
fapi_beam
,
1
,
pduindex
);
/* Fill PDCCH DL DCI PDU */
nfapi_nr_dl_dci_pdu_t
*
dci_pdu
=
prepare_dci_pdu
(
pdcch_pdu_rel15
,
scc
,
sched_ctrl
->
search_space
,
coreset
,
aggregation_level
,
CCEIndex
,
UE
->
UE_beam_index
,
rnti
);
nfapi_nr_dl_dci_pdu_t
*
dci_pdu
=
prepare_dci_pdu
(
pdcch_pdu_rel15
,
scc
,
sched_ctrl
->
search_space
,
coreset
,
aggregation_level
,
CCEIndex
,
fapi_beam
,
rnti
);
pdcch_pdu_rel15
->
numDlDci
++
;
dci_pdu_rel15_t
dci_payload
=
prepare_dci_dl_payload
(
nr_mac
,
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c
View file @
c288f846
...
...
@@ -139,6 +139,7 @@ static void schedule_one_ssb(gNB_MAC_INST *gNB,
int
beam_index
=
get_fapi_beamforming_index
(
gNB
,
i_ssb
);
NR_beam_alloc_t
beam
=
beam_allocation_procedure
(
&
gNB
->
beam_info
,
frameP
,
slotP
,
beam_index
,
slots_per_frame
);
AssertFatal
(
beam
.
idx
>=
0
,
"Cannot allocate SSB %d in any available beam
\n
"
,
i_ssb
);
beam_index
=
convert_to_fapi_beam
(
beam_index
,
gNB
->
beam_info
.
beam_mode
);
const
int
prb_offset
=
(
FR
==
FR2
)
?
offset_pointa
>>
(
scs
-
2
)
:
offset_pointa
>>
scs
;
schedule_ssb
(
frameP
,
slotP
,
scc
,
dl_req
,
i_ssb
,
beam_index
,
ssbSubcarrierOffset
,
offset_pointa
,
mib_pdu
);
fill_ssb_vrb_map
(
cc
,
...
...
@@ -401,17 +402,9 @@ static void nr_fill_nfapi_dl_SIB_pdu(gNB_MAC_INST *gNB_mac,
dl_tti_pdsch_pdu
->
PDUSize
=
(
uint16_t
)(
4
+
sizeof
(
nfapi_nr_dl_tti_pdsch_pdu
));
dl_req
->
nPDUs
+=
1
;
nfapi_nr_dl_tti_pdsch_pdu_rel15_t
*
pdsch_pdu_rel15
=
prepare_pdsch_pdu
(
dl_tti_pdsch_pdu
,
gNB_mac
,
NULL
,
pdsch
,
NULL
,
is_sib1
,
0
,
SI_RNTI
,
beam_index
,
1
,
pdu_index
);
const
uint16_t
fapi_beam
=
convert_to_fapi_beam
(
beam_index
,
gNB_mac
->
beam_info
.
beam_mode
);
nfapi_nr_dl_tti_pdsch_pdu_rel15_t
*
pdsch_pdu_rel15
=
prepare_pdsch_pdu
(
dl_tti_pdsch_pdu
,
gNB_mac
,
NULL
,
pdsch
,
NULL
,
is_sib1
,
0
,
SI_RNTI
,
fapi_beam
,
1
,
pdu_index
);
LOG_D
(
NR_MAC
,
"OtherSI:bwpStart %d, bwpSize %d, rbStart %d, rbSize %d, dlDmrsSymbPos = 0x%x
\n
"
,
pdsch_pdu_rel15
->
BWPStart
,
...
...
@@ -421,14 +414,8 @@ static void nr_fill_nfapi_dl_SIB_pdu(gNB_MAC_INST *gNB_mac,
pdsch_pdu_rel15
->
dlDmrsSymbPos
);
/* Fill PDCCH DL DCI PDU */
nfapi_nr_dl_dci_pdu_t
*
dci_pdu
=
prepare_dci_pdu
(
pdcch_pdu_rel15
,
scc
,
search_space
,
coreset
,
aggregation_level
,
cce_index
,
beam_index
,
SI_RNTI
);
nfapi_nr_dl_dci_pdu_t
*
dci_pdu
=
prepare_dci_pdu
(
pdcch_pdu_rel15
,
scc
,
search_space
,
coreset
,
aggregation_level
,
cce_index
,
fapi_beam
,
SI_RNTI
);
pdcch_pdu_rel15
->
numDlDci
++
;
/* DCI payload */
...
...
@@ -629,6 +616,7 @@ static void other_sib_sched_control(module_id_t module_idP,
slot
);
NR_ServingCellConfigCommon_t
*
scc
=
gNB_mac
->
common_channels
[
0
].
ServingCellConfigCommon
;
int
n_slots_frame
=
gNB_mac
->
frame_structure
.
numb_slots_frame
;
beam_index
=
get_fapi_beamforming_index
(
gNB_mac
,
beam_index
);
NR_beam_alloc_t
beam
=
beam_allocation_procedure
(
&
gNB_mac
->
beam_info
,
frame
,
slot
,
beam_index
,
n_slots_frame
);
AssertFatal
(
beam
.
idx
>=
0
,
"Cannot allocate otherSIB corresponding for SSB number %d in any available beam
\n
"
,
beam_index
);
LOG_D
(
NR_MAC
,
"(%d.%d) otherSIB payload %d transmission for ssb number %d
\n
"
,
frame
,
slot
,
payload_idx
,
beam_index
);
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
View file @
c288f846
...
...
@@ -1142,6 +1142,7 @@ void post_process_dlsch(gNB_MAC_INST *nr_mac, post_process_pdsch_t *pdsch, NR_UE
maxMIMO_Layers
=
1
;
}
const
int
nl_tbslbrm
=
min
(
maxMIMO_Layers
,
4
);
const
uint16_t
fapi_beam
=
convert_to_fapi_beam
(
UE
->
UE_beam_index
,
nr_mac
->
beam_info
.
beam_mode
);
nfapi_nr_dl_tti_pdsch_pdu_rel15_t
*
pdsch_pdu
=
prepare_pdsch_pdu
(
dl_tti_pdsch_pdu
,
nr_mac
,
UE
,
...
...
@@ -1150,7 +1151,7 @@ void post_process_dlsch(gNB_MAC_INST *nr_mac, post_process_pdsch_t *pdsch, NR_UE
false
,
harq
->
round
,
rnti
,
UE
->
UE_beam_index
,
fapi_beam
,
nl_tbslbrm
,
pduindex
);
...
...
@@ -1163,7 +1164,7 @@ void post_process_dlsch(gNB_MAC_INST *nr_mac, post_process_pdsch_t *pdsch, NR_UE
sched_ctrl
->
coreset
,
sched_ctrl
->
aggregation_level
,
sched_ctrl
->
cce_index
,
UE
->
UE_beam_index
,
fapi_beam
,
rnti
);
pdcch_pdu
->
numDlDci
++
;
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
View file @
c288f846
...
...
@@ -1326,7 +1326,8 @@ void nr_configure_pucch(nfapi_nr_pucch_pdu_t *pucch_pdu,
uint16_t
O_csi
,
uint16_t
O_ack
,
uint8_t
O_sr
,
int
r_pucch
)
int
r_pucch
,
nr_beam_mode_t
beam_mode
)
{
NR_PUCCH_Resource_t
*
pucchres
;
NR_PUCCH_FormatConfig_t
*
pucchfmt
;
...
...
@@ -1534,7 +1535,8 @@ void nr_configure_pucch(nfapi_nr_pucch_pdu_t *pucch_pdu,
pucch_pdu
->
beamforming
.
num_prgs
=
1
;
pucch_pdu
->
beamforming
.
prg_size
=
pucch_pdu
->
prb_size
;
pucch_pdu
->
beamforming
.
dig_bf_interface
=
1
;
pucch_pdu
->
beamforming
.
prgs_list
[
0
].
dig_bf_interface_list
[
0
].
beam_idx
=
UE
->
UE_beam_index
;
const
uint16_t
fapi_beam
=
convert_to_fapi_beam
(
UE
->
UE_beam_index
,
beam_mode
);
pucch_pdu
->
beamforming
.
prgs_list
[
0
].
dig_bf_interface_list
[
0
].
beam_idx
=
fapi_beam
;
}
void
set_r_pucch_parms
(
int
rsetindex
,
...
...
@@ -3246,7 +3248,8 @@ void nr_csirs_scheduling(int Mod_idP, frame_t frame, slot_t slot, nfapi_nr_dl_tt
csirs_pdu_rel15
->
precodingAndBeamforming
.
prg_size
=
resourceMapping
.
freqBand
.
nrofRBs
;
//1 PRG of max size
csirs_pdu_rel15
->
precodingAndBeamforming
.
dig_bf_interfaces
=
1
;
csirs_pdu_rel15
->
precodingAndBeamforming
.
prgs_list
[
0
].
pm_idx
=
0
;
csirs_pdu_rel15
->
precodingAndBeamforming
.
prgs_list
[
0
].
dig_bf_interface_list
[
0
].
beam_idx
=
UE
->
UE_beam_index
;
const
uint16_t
fapi_beam
=
convert_to_fapi_beam
(
UE
->
UE_beam_index
,
gNB_mac
->
beam_info
.
beam_mode
);
csirs_pdu_rel15
->
precodingAndBeamforming
.
prgs_list
[
0
].
dig_bf_interface_list
[
0
].
beam_idx
=
fapi_beam
;
csirs_pdu_rel15
->
bwp_size
=
dl_bwp
->
BWPSize
;
csirs_pdu_rel15
->
bwp_start
=
dl_bwp
->
BWPStart
;
csirs_pdu_rel15
->
subcarrier_spacing
=
dl_bwp
->
scs
;
...
...
@@ -3689,6 +3692,12 @@ NR_beam_alloc_t beam_allocation_procedure(NR_beam_info_t *beam_info, int frame,
return
(
NR_beam_alloc_t
)
{.
new_beam
=
false
,
.
idx
=
-
1
};
}
uint16_t
convert_to_fapi_beam
(
const
uint16_t
beam_idx
,
const
nr_beam_mode_t
mode
)
{
AssertFatal
(
beam_idx
>=
0
&&
beam_idx
<
32768
,
"Beam index out of range. Valid range is [0, 32767]
\n
"
);
return
(
mode
==
LOPHY_BEAM_IDX
)
?
SET_BIT
(
beam_idx
,
15
)
:
beam_idx
;
}
void
reset_beam_status
(
NR_beam_info_t
*
beam_info
,
int
frame
,
int
slot
,
int16_t
beam_index
,
int
slots_per_frame
,
bool
new_beam
)
{
if
(
!
new_beam
)
// need to reset only if the beam was allocated specifically for this instance
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_srs.c
View file @
c288f846
...
...
@@ -473,7 +473,8 @@ static void nr_configure_srs(gNB_MAC_INST *nrmac,
srs_pdu
->
beamforming
.
num_prgs
=
m_SRS
[
srs_pdu
->
config_index
];
srs_pdu
->
beamforming
.
prg_size
=
srs_pdu
->
srs_parameters_v4
.
srs_bandwidth_size
;
}
srs_pdu
->
beamforming
.
prgs_list
[
0
].
dig_bf_interface_list
[
0
].
beam_idx
=
UE
->
UE_beam_index
;
const
uint16_t
fapi_beam
=
convert_to_fapi_beam
(
UE
->
UE_beam_index
,
nrmac
->
beam_info
.
beam_mode
);
srs_pdu
->
beamforming
.
prgs_list
[
0
].
dig_bf_interface_list
[
0
].
beam_idx
=
fapi_beam
;
NR_beam_alloc_t
beam
=
beam_allocation_procedure
(
&
nrmac
->
beam_info
,
frame
,
slot
,
UE
->
UE_beam_index
,
slots_per_frame
);
AssertFatal
(
beam
.
idx
>=
0
,
"Cannot allocate SRS in any available beam
\n
"
);
uint16_t
*
vrb_map_UL
=
&
nrmac
->
common_channels
[
CC_id
].
vrb_map_UL
[
beam
.
idx
][
buffer_index
*
MAX_BWP_SIZE
];
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_uci.c
View file @
c288f846
...
...
@@ -94,7 +94,8 @@ static void nr_fill_nfapi_pucch(gNB_MAC_INST *nrmac, frame_t frame, slot_t slot,
pucch
->
csi_bits
,
pucch
->
dai_c
,
pucch
->
sr_flag
,
pucch
->
r_pucch
);
pucch
->
r_pucch
,
nrmac
->
beam_info
.
beam_mode
);
}
#define MIN_RSRP_VALUE -141
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
View file @
c288f846
...
...
@@ -2314,7 +2314,8 @@ nfapi_nr_pusch_pdu_t *prepare_pusch_pdu(nfapi_nr_ul_tti_request_t *future_ul_tti
int
harq_id
,
int
harq_round
,
int
fh
,
int
rnti
)
int
rnti
,
nr_beam_mode_t
beam_mode
)
{
nfapi_nr_pusch_pdu_t
*
pusch_pdu
=
&
future_ul_tti_req
->
pdus_list
[
future_ul_tti_req
->
n_pdus
].
pusch_pdu
;
memset
(
pusch_pdu
,
0
,
sizeof
(
nfapi_nr_pusch_pdu_t
));
...
...
@@ -2364,7 +2365,8 @@ nfapi_nr_pusch_pdu_t *prepare_pusch_pdu(nfapi_nr_ul_tti_request_t *future_ul_tti
pusch_pdu
->
beamforming
.
num_prgs
=
1
;
pusch_pdu
->
beamforming
.
prg_size
=
pusch_pdu
->
bwp_size
;
pusch_pdu
->
beamforming
.
dig_bf_interface
=
1
;
pusch_pdu
->
beamforming
.
prgs_list
[
0
].
dig_bf_interface_list
[
0
].
beam_idx
=
UE
->
UE_beam_index
;
pusch_pdu
->
beamforming
.
prgs_list
[
0
].
dig_bf_interface_list
[
0
].
beam_idx
=
convert_to_fapi_beam
(
UE
->
UE_beam_index
,
beam_mode
);
/* TRANSFORM PRECODING --------------------------------------------------------*/
if
(
pusch_pdu
->
transform_precoding
==
NR_PUSCH_Config__transformPrecoder_enabled
)
{
// U as specified in section 6.4.1.1.1.2 in 38.211, if sequence hopping and group hopping are disabled
...
...
@@ -2522,7 +2524,8 @@ void post_process_ulsch(gNB_MAC_INST *nr_mac, post_process_pusch_t *pusch, NR_UE
harq_id
,
cur_harq
->
round
,
current_BWP
->
pusch_Config
&&
current_BWP
->
pusch_Config
->
frequencyHopping
,
UE
->
rnti
);
UE
->
rnti
,
nr_mac
->
beam_info
.
beam_mode
);
req
->
n_pdus
+=
1
;
// Calculate the normalized tx_power for PHR
...
...
@@ -2564,7 +2567,7 @@ void post_process_ulsch(gNB_MAC_INST *nr_mac, post_process_pusch_t *pusch, NR_UE
coreset
,
sched_ctrl
->
aggregation_level
,
sched_ctrl
->
cce_index
,
UE
->
UE_beam_index
,
convert_to_fapi_beam
(
UE
->
UE_beam_index
,
nr_mac
->
beam_info
.
beam_mode
)
,
UE
->
rnti
);
pdcch_pdu
->
numDlDci
++
;
...
...
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
View file @
c288f846
...
...
@@ -213,14 +213,15 @@ int nr_get_pucch_resource(NR_ControlResourceSet_t *coreset,
NR_PUCCH_Config_t
*
pucch_Config
,
int
CCEIndex
);
void
nr_configure_pucch
(
nfapi_nr_pucch_pdu_t
*
pucch_pdu
,
void
nr_configure_pucch
(
nfapi_nr_pucch_pdu_t
*
pucch_pdu
,
NR_ServingCellConfigCommon_t
*
scc
,
NR_UE_info_t
*
UE
,
NR_UE_info_t
*
UE
,
uint8_t
pucch_resource
,
uint16_t
O_csi
,
uint16_t
O_ack
,
uint8_t
O_sr
,
int
r_pucch
);
int
r_pucch
,
nr_beam_mode_t
mode
);
void
find_search_space
(
int
ss_type
,
NR_BWP_Downlink_t
*
bwp
,
...
...
@@ -330,7 +331,8 @@ nfapi_nr_pusch_pdu_t *prepare_pusch_pdu(nfapi_nr_ul_tti_request_t *future_ul_tti
int
harq_id
,
int
harq_round
,
int
fh
,
int
rnti
);
int
rnti
,
nr_beam_mode_t
beam_mode
);
nfapi_nr_dl_tti_pdsch_pdu_rel15_t
*
prepare_pdsch_pdu
(
nfapi_nr_dl_tti_request_pdu_t
*
dl_tti_pdsch_pdu
,
const
gNB_MAC_INST
*
mac
,
const
NR_UE_info_t
*
UE
,
...
...
@@ -447,6 +449,7 @@ int ul_buffer_index(int frame, int slot, int slots_per_frame, int size);
void
UL_tti_req_ahead_initialization
(
gNB_MAC_INST
*
gNB
,
int
n
,
int
CCid
,
frame_t
frameP
,
int
slotP
);
void
fapi_beam_index_allocation
(
NR_ServingCellConfigCommon_t
*
scc
,
const
nr_mac_config_t
*
config
,
gNB_MAC_INST
*
mac
);
int
get_fapi_beamforming_index
(
gNB_MAC_INST
*
mac
,
int
ssb_idx
);
uint16_t
convert_to_fapi_beam
(
const
uint16_t
beam_idx
,
const
nr_beam_mode_t
mode
);
NR_beam_alloc_t
beam_allocation_procedure
(
NR_beam_info_t
*
beam_info
,
int
frame
,
int
slot
,
int16_t
beam_index
,
int
slots_per_frame
);
void
reset_beam_status
(
NR_beam_info_t
*
beam_info
,
int
frame
,
int
slot
,
int16_t
beam_index
,
int
slots_per_frame
,
bool
new_beam
);
void
beam_selection_procedures
(
gNB_MAC_INST
*
mac
,
NR_UE_info_t
*
UE
);
...
...
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
View file @
c288f846
...
...
@@ -794,7 +794,7 @@ typedef struct NR_UE_info {
NR_UE_NR_Capability_t
*
capability
;
measgap_config_t
measgap_config
;
// UE selected beam index
uint
8
_t
UE_beam_index
;
uint
16
_t
UE_beam_index
;
float
ul_thr_ue
;
float
dl_thr_ue
;
long
pdsch_HARQ_ACK_Codebook
;
...
...
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