Merge remote-tracking branch 'origin/use_slot_type' into integration_2025_w10

This commit is contained in:
francescomani
2025-03-10 18:02:28 +01:00
17 changed files with 94 additions and 121 deletions
+1 -1
View File
@@ -93,7 +93,7 @@ int aerial_phy_nr_uci_indication(nfapi_nr_uci_indication_t *ind)
return 1; return 1;
} }
void gNB_dlsch_ulsch_scheduler(module_id_t module_idP, frame_t frame, sub_frame_t slot, NR_Sched_Rsp_t* sched_info); void gNB_dlsch_ulsch_scheduler(module_id_t module_idP, frame_t frame, slot_t slot, NR_Sched_Rsp_t* sched_info);
int oai_fapi_dl_tti_req(nfapi_nr_dl_tti_request_t *dl_config_req); int oai_fapi_dl_tti_req(nfapi_nr_dl_tti_request_t *dl_config_req);
int oai_fapi_ul_tti_req(nfapi_nr_ul_tti_request_t *ul_tti_req); int oai_fapi_ul_tti_req(nfapi_nr_ul_tti_request_t *ul_tti_req);
int oai_fapi_tx_data_req(nfapi_nr_tx_data_request_t* tx_data_req); int oai_fapi_tx_data_req(nfapi_nr_tx_data_request_t* tx_data_req);
+1 -1
View File
@@ -1079,7 +1079,7 @@ int phy_cqi_indication(struct nfapi_vnf_p7_config *config, nfapi_cqi_indication_
NR_Sched_Rsp_t g_sched_resp; NR_Sched_Rsp_t g_sched_resp;
void gNB_dlsch_ulsch_scheduler(module_id_t module_idP, frame_t frame, sub_frame_t slot, NR_Sched_Rsp_t* sched_info); void gNB_dlsch_ulsch_scheduler(module_id_t module_idP, frame_t frame, slot_t slot, NR_Sched_Rsp_t* sched_info);
int oai_nfapi_dl_tti_req(nfapi_nr_dl_tti_request_t *dl_config_req); int oai_nfapi_dl_tti_req(nfapi_nr_dl_tti_request_t *dl_config_req);
int oai_nfapi_ul_tti_req(nfapi_nr_ul_tti_request_t *ul_tti_req); int oai_nfapi_ul_tti_req(nfapi_nr_ul_tti_request_t *ul_tti_req);
int oai_nfapi_tx_data_req(nfapi_nr_tx_data_request_t* tx_data_req); int oai_nfapi_tx_data_req(nfapi_nr_tx_data_request_t* tx_data_req);
+1 -1
View File
@@ -202,7 +202,7 @@ void nr_schedule_response(NR_Sched_Rsp_t *Sched_INFO)
// copy data from L2 interface into L1 structures // copy data from L2 interface into L1 structures
module_id_t Mod_id = Sched_INFO->module_id; module_id_t Mod_id = Sched_INFO->module_id;
frame_t frame = Sched_INFO->frame; frame_t frame = Sched_INFO->frame;
sub_frame_t slot = Sched_INFO->slot; slot_t slot = Sched_INFO->slot;
AssertFatal(RC.gNB != NULL, "RC.gNB is null\n"); AssertFatal(RC.gNB != NULL, "RC.gNB is null\n");
AssertFatal(RC.gNB[Mod_id] != NULL, "RC.gNB[%d] is null\n", Mod_id); AssertFatal(RC.gNB[Mod_id] != NULL, "RC.gNB[%d] is null\n", Mod_id);
+1 -1
View File
@@ -148,7 +148,7 @@ extern void fix_scd(NR_ServingCellConfig_t *scd);// forward declaration
/* specific dlsim DL preprocessor: uses rbStart/rbSize/mcs/nrOfLayers from command line of dlsim */ /* specific dlsim DL preprocessor: uses rbStart/rbSize/mcs/nrOfLayers from command line of dlsim */
int g_mcsIndex = -1, g_mcsTableIdx = 0, g_rbStart = -1, g_rbSize = -1, g_nrOfLayers = 1, g_pmi = 0; int g_mcsIndex = -1, g_mcsTableIdx = 0, g_rbStart = -1, g_rbSize = -1, g_nrOfLayers = 1, g_pmi = 0;
void nr_dlsim_preprocessor(module_id_t module_id, frame_t frame, sub_frame_t slot) void nr_dlsim_preprocessor(module_id_t module_id, frame_t frame, slot_t slot)
{ {
NR_UE_info_t *UE_info = RC.nrmac[module_id]->UE_info.list[0]; NR_UE_info_t *UE_info = RC.nrmac[module_id]->UE_info.list[0];
AssertFatal(RC.nrmac[module_id]->UE_info.list[1]==NULL, "can have only a single UE\n"); AssertFatal(RC.nrmac[module_id]->UE_info.list[1]==NULL, "can have only a single UE\n");
+1 -4
View File
@@ -296,10 +296,7 @@ void configure_csi_resource_mapping(fapi_nr_dl_config_csirs_pdu_rel15_t *csirs_c
@param @param
@returns void @returns void
*/ */
void nr_ue_msg3_scheduler(NR_UE_MAC_INST_t *mac, void nr_ue_msg3_scheduler(NR_UE_MAC_INST_t *mac, frame_t current_frame, slot_t current_slot, uint8_t Msg3_tda_id);
frame_t current_frame,
sub_frame_t current_slot,
uint8_t Msg3_tda_id);
void nr_ue_contention_resolution(NR_UE_MAC_INST_t *mac, int cc_id, frame_t frame, int slot, NR_PRACH_RESOURCES_t *prach_resources); void nr_ue_contention_resolution(NR_UE_MAC_INST_t *mac, int cc_id, frame_t frame, int slot, NR_PRACH_RESOURCES_t *prach_resources);
+14 -14
View File
@@ -57,7 +57,7 @@
AssertFatal(ret == 0, "Failure in mutex management ret=%d\n", a); \ AssertFatal(ret == 0, "Failure in mutex management ret=%d\n", a); \
} }
static void nr_ue_prach_scheduler(NR_UE_MAC_INST_t *mac, frame_t frameP, sub_frame_t slotP); static void nr_ue_prach_scheduler(NR_UE_MAC_INST_t *mac, frame_t frameP, slot_t slotP);
static void schedule_ta_command(fapi_nr_dl_config_request_t *dl_config, NR_UE_MAC_INST_t *mac); static void schedule_ta_command(fapi_nr_dl_config_request_t *dl_config, NR_UE_MAC_INST_t *mac);
static void schedule_ntn_config_command(fapi_nr_dl_config_request_t *dl_config, NR_UE_MAC_INST_t *mac); static void schedule_ntn_config_command(fapi_nr_dl_config_request_t *dl_config, NR_UE_MAC_INST_t *mac);
@@ -65,12 +65,12 @@ static void nr_ue_fill_phr(NR_UE_MAC_INST_t *mac,
NR_SINGLE_ENTRY_PHR_MAC_CE *phr, NR_SINGLE_ENTRY_PHR_MAC_CE *phr,
float P_CMAX, float P_CMAX,
float tx_power, float tx_power,
frame_t frameP, frame_t frame,
sub_frame_t subframe); slot_t slot);
static uint8_t nr_ue_get_sdu(NR_UE_MAC_INST_t *mac, static uint8_t nr_ue_get_sdu(NR_UE_MAC_INST_t *mac,
int cc_id, int cc_id,
frame_t frameP, frame_t frame,
sub_frame_t subframe, slot_t slot,
uint8_t gNB_index, uint8_t gNB_index,
uint8_t *ulsch_buffer, uint8_t *ulsch_buffer,
const uint32_t buflen, const uint32_t buflen,
@@ -2585,7 +2585,7 @@ void nr_schedule_csirs_reception(NR_UE_MAC_INST_t *mac, int frame, int slot)
// PRACH formats 9, 10, 11 are corresponding to dual PRACH format configurations A1/B1, A2/B2, A3/B3. // PRACH formats 9, 10, 11 are corresponding to dual PRACH format configurations A1/B1, A2/B2, A3/B3.
// - todo: // - todo:
// - Partial configuration is actually already stored in (fapi_nr_prach_config_t) &mac->phy_config.config_req->prach_config // - Partial configuration is actually already stored in (fapi_nr_prach_config_t) &mac->phy_config.config_req->prach_config
static void nr_ue_prach_scheduler(NR_UE_MAC_INST_t *mac, frame_t frameP, sub_frame_t slotP) static void nr_ue_prach_scheduler(NR_UE_MAC_INST_t *mac, frame_t frameP, slot_t slotP)
{ {
RA_config_t *ra = &mac->ra; RA_config_t *ra = &mac->ra;
ra->RA_offset = 2; // to compensate the rx frame offset at the gNB ra->RA_offset = 2; // to compensate the rx frame offset at the gNB
@@ -2801,8 +2801,8 @@ typedef struct {
static void nr_ue_get_sdu_mac_ce_pre(NR_UE_MAC_INST_t *mac, static void nr_ue_get_sdu_mac_ce_pre(NR_UE_MAC_INST_t *mac,
int CC_id, int CC_id,
frame_t frameP, frame_t frame,
sub_frame_t subframe, slot_t slot,
uint8_t gNB_index, uint8_t gNB_index,
uint8_t *ulsch_buffer, uint8_t *ulsch_buffer,
uint32_t buflen, uint32_t buflen,
@@ -2842,7 +2842,7 @@ static void nr_ue_get_sdu_mac_ce_pre(NR_UE_MAC_INST_t *mac,
if (buflen >= bsr_len + needed) { if (buflen >= bsr_len + needed) {
if (mac->scheduling_info.phr_info.phr_reporting) { if (mac->scheduling_info.phr_info.phr_reporting) {
mac_ce_p->phr_len = needed; mac_ce_p->phr_len = needed;
nr_ue_fill_phr(mac, &mac_ce_p->phr, P_CMAX, tx_power, frameP, subframe); nr_ue_fill_phr(mac, &mac_ce_p->phr, P_CMAX, tx_power, frame, slot);
} }
} }
} }
@@ -3394,8 +3394,8 @@ static void nr_ue_fill_phr(NR_UE_MAC_INST_t *mac,
NR_SINGLE_ENTRY_PHR_MAC_CE *phr, NR_SINGLE_ENTRY_PHR_MAC_CE *phr,
float P_CMAX, float P_CMAX,
float tx_power, float tx_power,
frame_t frameP, frame_t frame,
sub_frame_t subframe) slot_t slot)
{ {
nr_phr_info_t *phr_info = &mac->scheduling_info.phr_info; nr_phr_info_t *phr_info = &mac->scheduling_info.phr_info;
// Value mapping according to 38.133 10.1.18.1 // Value mapping according to 38.133 10.1.18.1
@@ -3412,9 +3412,9 @@ static void nr_ue_fill_phr(NR_UE_MAC_INST_t *mac,
} }
LOG_D(NR_MAC, LOG_D(NR_MAC,
"PHR Reporting sfn.subframe %d.%d reason = %d, P_CMAX = %d (%5.2f dBm), headrom = %d (%d dB) tx_power = %5.2f dBm\n", "PHR Reporting sfn.slot %d.%d reason = %d, P_CMAX = %d (%5.2f dBm), headrom = %d (%d dB) tx_power = %5.2f dBm\n",
frameP, frame,
subframe, slot,
phr_info->phr_reporting, phr_info->phr_reporting,
phr->PCMAX, phr->PCMAX,
P_CMAX, P_CMAX,
+3 -3
View File
@@ -62,7 +62,7 @@ uint8_t nr_get_rv(int rel_round)
void clear_nr_nfapi_information(gNB_MAC_INST *gNB, void clear_nr_nfapi_information(gNB_MAC_INST *gNB,
int CC_idP, int CC_idP,
frame_t frameP, frame_t frameP,
sub_frame_t slotP, slot_t slotP,
nfapi_nr_dl_tti_request_t *DL_req, nfapi_nr_dl_tti_request_t *DL_req,
nfapi_nr_tx_data_request_t *TX_req, nfapi_nr_tx_data_request_t *TX_req,
nfapi_nr_ul_dci_request_t *UL_dci_req) nfapi_nr_ul_dci_request_t *UL_dci_req)
@@ -160,7 +160,7 @@ static void copy_ul_tti_req(nfapi_nr_ul_tti_request_t *to, nfapi_nr_ul_tti_reque
to->groups_list[i] = from->groups_list[i]; to->groups_list[i] = from->groups_list[i];
} }
void gNB_dlsch_ulsch_scheduler(module_id_t module_idP, frame_t frame, sub_frame_t slot, NR_Sched_Rsp_t *sched_info) void gNB_dlsch_ulsch_scheduler(module_id_t module_idP, frame_t frame, slot_t slot, NR_Sched_Rsp_t *sched_info)
{ {
protocol_ctxt_t ctxt = {0}; protocol_ctxt_t ctxt = {0};
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, module_idP, ENB_FLAG_YES, NOT_A_RNTI, frame, slot,module_idP); PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, module_idP, ENB_FLAG_YES, NOT_A_RNTI, frame, slot,module_idP);
@@ -233,7 +233,7 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP, frame_t frame, sub_frame_
(schedule_nr_prach will assert if resources are not free). */ (schedule_nr_prach will assert if resources are not free). */
const int n_slots_ahead = slots_frame - cc->prach_len + get_NTN_Koffset(scc); const int n_slots_ahead = slots_frame - cc->prach_len + get_NTN_Koffset(scc);
const frame_t f = (frame + (slot + n_slots_ahead) / slots_frame) % 1024; const frame_t f = (frame + (slot + n_slots_ahead) / slots_frame) % 1024;
const sub_frame_t s = (slot + n_slots_ahead) % slots_frame; const slot_t s = (slot + n_slots_ahead) % slots_frame;
schedule_nr_prach(module_idP, f, s); schedule_nr_prach(module_idP, f, s);
} }
+10 -10
View File
@@ -64,7 +64,7 @@ static const float ssb_per_rach_occasion[8] = {0.125, 0.25, 0.5, 1, 2, 4, 8};
static int16_t ssb_index_from_prach(module_id_t module_idP, static int16_t ssb_index_from_prach(module_id_t module_idP,
frame_t frameP, frame_t frameP,
sub_frame_t slotP, slot_t slotP,
uint16_t preamble_index, uint16_t preamble_index,
uint8_t freq_index, uint8_t freq_index,
uint8_t symbol) uint8_t symbol)
@@ -255,7 +255,7 @@ static void schedule_nr_MsgA_pusch(NR_UplinkConfigCommon_t *uplinkConfigCommon,
gNB_MAC_INST *nr_mac, gNB_MAC_INST *nr_mac,
module_id_t module_idP, module_id_t module_idP,
frame_t frameP, frame_t frameP,
sub_frame_t slotP, slot_t slotP,
nfapi_nr_prach_pdu_t *prach_pdu, nfapi_nr_prach_pdu_t *prach_pdu,
uint16_t dmrs_TypeA_Position, uint16_t dmrs_TypeA_Position,
NR_PhysCellId_t physCellId) NR_PhysCellId_t physCellId)
@@ -356,7 +356,7 @@ static void schedule_nr_MsgA_pusch(NR_UplinkConfigCommon_t *uplinkConfigCommon,
} }
static void fill_vrb(const frame_t frame, static void fill_vrb(const frame_t frame,
const sub_frame_t slot, const slot_t slot,
int nb_rb, int nb_rb,
int beam_idx, int beam_idx,
int vrb_size, int vrb_size,
@@ -376,7 +376,7 @@ static void fill_vrb(const frame_t frame,
} }
} }
void schedule_nr_prach(module_id_t module_idP, frame_t frameP, sub_frame_t slotP) void schedule_nr_prach(module_id_t module_idP, frame_t frameP, slot_t slotP)
{ {
gNB_MAC_INST *gNB = RC.nrmac[module_idP]; gNB_MAC_INST *gNB = RC.nrmac[module_idP];
/* already mutex protected: held in gNB_dlsch_ulsch_scheduler() */ /* already mutex protected: held in gNB_dlsch_ulsch_scheduler() */
@@ -826,7 +826,7 @@ static void start_ra_contention_resolution_timer(NR_RA_t *ra, const long ra_Cont
static void nr_generate_Msg3_retransmission(module_id_t module_idP, static void nr_generate_Msg3_retransmission(module_id_t module_idP,
int CC_id, int CC_id,
frame_t frame, frame_t frame,
sub_frame_t slot, slot_t slot,
NR_RA_t *ra, NR_RA_t *ra,
nfapi_nr_ul_dci_request_t *ul_dci_req) nfapi_nr_ul_dci_request_t *ul_dci_req)
{ {
@@ -1227,7 +1227,7 @@ static void fill_msg3_pusch_pdu(nfapi_nr_pusch_pdu_t *pusch_pdu,
} }
} }
static void nr_add_msg3(module_id_t module_idP, int CC_id, frame_t frameP, sub_frame_t slotP, NR_RA_t *ra, uint8_t *RAR_pdu) static void nr_add_msg3(module_id_t module_idP, int CC_id, frame_t frameP, slot_t slotP, NR_RA_t *ra, uint8_t *RAR_pdu)
{ {
gNB_MAC_INST *mac = RC.nrmac[module_idP]; gNB_MAC_INST *mac = RC.nrmac[module_idP];
NR_COMMON_channels_t *cc = &mac->common_channels[CC_id]; NR_COMMON_channels_t *cc = &mac->common_channels[CC_id];
@@ -1622,7 +1622,7 @@ static void prepare_dl_pdus(gNB_MAC_INST *nr_mac,
static void nr_generate_Msg2(module_id_t module_idP, static void nr_generate_Msg2(module_id_t module_idP,
int CC_id, int CC_id,
frame_t frameP, frame_t frameP,
sub_frame_t slotP, slot_t slotP,
NR_RA_t *ra, NR_RA_t *ra,
nfapi_nr_dl_tti_request_t *DL_req, nfapi_nr_dl_tti_request_t *DL_req,
nfapi_nr_tx_data_request_t *TX_req) nfapi_nr_tx_data_request_t *TX_req)
@@ -1885,7 +1885,7 @@ static void nr_generate_Msg2(module_id_t module_idP,
static void nr_generate_Msg4_MsgB(module_id_t module_idP, static void nr_generate_Msg4_MsgB(module_id_t module_idP,
int CC_id, int CC_id,
frame_t frameP, frame_t frameP,
sub_frame_t slotP, slot_t slotP,
NR_RA_t *ra, NR_RA_t *ra,
nfapi_nr_dl_tti_request_t *DL_req, nfapi_nr_dl_tti_request_t *DL_req,
nfapi_nr_tx_data_request_t *TX_req) nfapi_nr_tx_data_request_t *TX_req)
@@ -2197,7 +2197,7 @@ static void nr_generate_Msg4_MsgB(module_id_t module_idP,
} }
} }
static void nr_check_Msg4_MsgB_Ack(module_id_t module_id, int CC_id, frame_t frame, sub_frame_t slot, NR_RA_t *ra) static void nr_check_Msg4_MsgB_Ack(module_id_t module_id, int CC_id, frame_t frame, slot_t slot, NR_RA_t *ra)
{ {
const char *ra_type_str = ra->ra_type == RA_2_STEP ? "MsgB" : "Msg4"; const char *ra_type_str = ra->ra_type == RA_2_STEP ? "MsgB" : "Msg4";
NR_UE_info_t *UE = find_nr_UE(&RC.nrmac[module_id]->UE_info, ra->rnti); NR_UE_info_t *UE = find_nr_UE(&RC.nrmac[module_id]->UE_info, ra->rnti);
@@ -2374,7 +2374,7 @@ static void nr_fill_rar(uint8_t Mod_idP, NR_RA_t *ra, uint8_t *dlsch_buffer, nfa
void nr_schedule_RA(module_id_t module_idP, void nr_schedule_RA(module_id_t module_idP,
frame_t frameP, frame_t frameP,
sub_frame_t slotP, slot_t slotP,
nfapi_nr_ul_dci_request_t *ul_dci_req, nfapi_nr_ul_dci_request_t *ul_dci_req,
nfapi_nr_dl_tti_request_t *DL_req, nfapi_nr_dl_tti_request_t *DL_req,
nfapi_nr_tx_data_request_t *TX_req) nfapi_nr_tx_data_request_t *TX_req)
@@ -45,7 +45,7 @@
#include "executables/softmodem-common.h" #include "executables/softmodem-common.h"
static void schedule_ssb(frame_t frame, static void schedule_ssb(frame_t frame,
sub_frame_t slot, slot_t slot,
NR_ServingCellConfigCommon_t *scc, NR_ServingCellConfigCommon_t *scc,
nfapi_nr_dl_tti_request_body_t *dl_req, nfapi_nr_dl_tti_request_body_t *dl_req,
int i_ssb, int i_ssb,
@@ -114,7 +114,7 @@ static int encode_mib(NR_BCCH_BCH_Message_t *mib, frame_t frame, uint8_t *buffer
return encode_size; return encode_size;
} }
void schedule_nr_mib(module_id_t module_idP, frame_t frameP, sub_frame_t slotP, nfapi_nr_dl_tti_request_t *DL_req) void schedule_nr_mib(module_id_t module_idP, frame_t frameP, slot_t slotP, nfapi_nr_dl_tti_request_t *DL_req)
{ {
gNB_MAC_INST *gNB = RC.nrmac[module_idP]; gNB_MAC_INST *gNB = RC.nrmac[module_idP];
/* already mutex protected: held in gNB_dlsch_ulsch_scheduler() */ /* already mutex protected: held in gNB_dlsch_ulsch_scheduler() */
@@ -657,7 +657,7 @@ static void nr_fill_nfapi_dl_SIB_pdu(int Mod_idP,
void schedule_nr_sib1(module_id_t module_idP, void schedule_nr_sib1(module_id_t module_idP,
frame_t frameP, frame_t frameP,
sub_frame_t slotP, slot_t slotP,
nfapi_nr_dl_tti_request_t *DL_req, nfapi_nr_dl_tti_request_t *DL_req,
nfapi_nr_tx_data_request_t *TX_req) nfapi_nr_tx_data_request_t *TX_req)
{ {
@@ -784,7 +784,7 @@ struct NR_SchedulingInfo2_r17 *find_sib19_sched_info(const struct NR_SI_Scheduli
void schedule_nr_sib19(module_id_t module_idP, void schedule_nr_sib19(module_id_t module_idP,
frame_t frameP, frame_t frameP,
sub_frame_t slotP, slot_t slotP,
nfapi_nr_dl_tti_request_t *DL_req, nfapi_nr_dl_tti_request_t *DL_req,
nfapi_nr_tx_data_request_t *TX_req, nfapi_nr_tx_data_request_t *TX_req,
int sib19_bcch_length, int sib19_bcch_length,
@@ -321,7 +321,7 @@ int nr_write_ce_dlsch_pdu(module_id_t module_idP,
return offset; return offset;
} }
static void nr_store_dlsch_buffer(module_id_t module_id, frame_t frame, sub_frame_t slot) static void nr_store_dlsch_buffer(module_id_t module_id, frame_t frame, slot_t slot)
{ {
UE_iterator(RC.nrmac[module_id]->UE_info.list, UE) { UE_iterator(RC.nrmac[module_id]->UE_info.list, UE) {
NR_UE_sched_ctrl_t *sched_ctrl = &UE->UE_sched_ctrl; NR_UE_sched_ctrl_t *sched_ctrl = &UE->UE_sched_ctrl;
@@ -425,7 +425,7 @@ static dl_bwp_info_t get_bwp_start_size(gNB_MAC_INST *mac, NR_UE_info_t *UE)
static bool allocate_dl_retransmission(module_id_t module_id, static bool allocate_dl_retransmission(module_id_t module_id,
frame_t frame, frame_t frame,
sub_frame_t slot, slot_t slot,
int *n_rb_sched, int *n_rb_sched,
NR_UE_info_t *UE, NR_UE_info_t *UE,
int beam_idx, int beam_idx,
@@ -599,7 +599,7 @@ static int comparator(const void *p, const void *q) {
static void pf_dl(module_id_t module_id, static void pf_dl(module_id_t module_id,
frame_t frame, frame_t frame,
sub_frame_t slot, slot_t slot,
NR_UE_info_t **UE_list, NR_UE_info_t **UE_list,
int max_num_ue, int max_num_ue,
int num_beams, int num_beams,
@@ -869,7 +869,7 @@ static void pf_dl(module_id_t module_id,
} }
} }
static void nr_dlsch_preprocessor(module_id_t module_id, frame_t frame, sub_frame_t slot) static void nr_dlsch_preprocessor(module_id_t module_id, frame_t frame, slot_t slot)
{ {
gNB_MAC_INST *mac = RC.nrmac[module_id]; gNB_MAC_INST *mac = RC.nrmac[module_id];
NR_UEs_t *UE_info = &mac->UE_info; NR_UEs_t *UE_info = &mac->UE_info;
@@ -927,7 +927,7 @@ nr_pp_impl_dl nr_init_dlsch_preprocessor(int CC_id) {
void nr_schedule_ue_spec(module_id_t module_id, void nr_schedule_ue_spec(module_id_t module_id,
frame_t frame, frame_t frame,
sub_frame_t slot, slot_t slot,
nfapi_nr_dl_tti_request_t *DL_req, nfapi_nr_dl_tti_request_t *DL_req,
nfapi_nr_tx_data_request_t *TX_req) nfapi_nr_tx_data_request_t *TX_req)
{ {
@@ -43,7 +43,7 @@
/* This function checks whether the given Dl/UL slot is set /* This function checks whether the given Dl/UL slot is set
in the input bitmap (per period), which is a mask indicating in which in the input bitmap (per period), which is a mask indicating in which
slot to transmit (among those available in the TDD configuration) */ slot to transmit (among those available in the TDD configuration) */
static bool is_xlsch_in_slot(uint64_t bitmap, sub_frame_t slot) static bool is_xlsch_in_slot(uint64_t bitmap, slot_t slot)
{ {
AssertFatal(slot < 64, "Unable to handle periods with length larger than 64 slots in phy-test mode\n"); AssertFatal(slot < 64, "Unable to handle periods with length larger than 64 slots in phy-test mode\n");
return (bitmap >> slot) & 0x01; return (bitmap >> slot) & 0x01;
@@ -55,7 +55,7 @@ uint32_t target_dl_bw = 50;
uint64_t dlsch_slot_bitmap = (1<<1); uint64_t dlsch_slot_bitmap = (1<<1);
/* schedules whole bandwidth for first user, all the time */ /* schedules whole bandwidth for first user, all the time */
void nr_preprocessor_phytest(module_id_t module_id, frame_t frame, sub_frame_t slot) void nr_preprocessor_phytest(module_id_t module_id, frame_t frame, slot_t slot)
{ {
gNB_MAC_INST *mac = RC.nrmac[module_id]; gNB_MAC_INST *mac = RC.nrmac[module_id];
/* already mutex protected: held in gNB_dlsch_ulsch_scheduler() */ /* already mutex protected: held in gNB_dlsch_ulsch_scheduler() */
@@ -217,7 +217,7 @@ uint32_t target_ul_mcs = 9;
uint32_t target_ul_bw = 50; uint32_t target_ul_bw = 50;
uint32_t target_ul_Nl = 1; uint32_t target_ul_Nl = 1;
uint64_t ulsch_slot_bitmap = (1 << 8); uint64_t ulsch_slot_bitmap = (1 << 8);
bool nr_ul_preprocessor_phytest(module_id_t module_id, frame_t frame, sub_frame_t slot) bool nr_ul_preprocessor_phytest(module_id_t module_id, frame_t frame, slot_t slot)
{ {
gNB_MAC_INST *nr_mac = RC.nrmac[module_id]; gNB_MAC_INST *nr_mac = RC.nrmac[module_id];
/* already mutex protected: held in gNB_dlsch_ulsch_scheduler() */ /* already mutex protected: held in gNB_dlsch_ulsch_scheduler() */
@@ -2775,7 +2775,7 @@ int get_pdsch_to_harq_feedback(NR_PUCCH_Config_t *pucch_Config,
} }
} }
void nr_csirs_scheduling(int Mod_idP, frame_t frame, sub_frame_t slot, nfapi_nr_dl_tti_request_t *DL_req) void nr_csirs_scheduling(int Mod_idP, frame_t frame, slot_t slot, nfapi_nr_dl_tti_request_t *DL_req)
{ {
int CC_id = 0; int CC_id = 0;
NR_UEs_t *UE_info = &RC.nrmac[Mod_idP]->UE_info; NR_UEs_t *UE_info = &RC.nrmac[Mod_idP]->UE_info;
@@ -3036,7 +3036,7 @@ static void nr_mac_clean_cellgroup(NR_CellGroupConfig_t *cell_group)
free_and_zero(cell_group->rlc_BearerToAddModList->list.array[i]->reestablishRLC); free_and_zero(cell_group->rlc_BearerToAddModList->list.array[i]->reestablishRLC);
} }
static void nr_mac_apply_cellgroup(gNB_MAC_INST *mac, NR_UE_info_t *UE, frame_t frame, sub_frame_t slot) static void nr_mac_apply_cellgroup(gNB_MAC_INST *mac, NR_UE_info_t *UE, frame_t frame, slot_t slot)
{ {
LOG_D(NR_MAC, "%4d.%2d RNTI %04x: UE inactivity timer expired\n", frame, slot, UE->rnti); LOG_D(NR_MAC, "%4d.%2d RNTI %04x: UE inactivity timer expired\n", frame, slot, UE->rnti);
@@ -3139,9 +3139,7 @@ void nr_mac_release_ue(gNB_MAC_INST *mac, int rnti)
mac_remove_nr_ue(mac, rnti); mac_remove_nr_ue(mac, rnti);
} }
void nr_mac_update_timers(module_id_t module_id, void nr_mac_update_timers(module_id_t module_id, frame_t frame, slot_t slot)
frame_t frame,
sub_frame_t slot)
{ {
gNB_MAC_INST *mac = RC.nrmac[module_id]; gNB_MAC_INST *mac = RC.nrmac[module_id];
+8 -18
View File
@@ -32,11 +32,7 @@
#include "common/ran_context.h" #include "common/ran_context.h"
#include "common/utils/nr/nr_common.h" #include "common/utils/nr/nr_common.h"
#include "nfapi/oai_integration/vendor_ext.h" #include "nfapi/oai_integration/vendor_ext.h"
static void nr_fill_nfapi_pucch(gNB_MAC_INST *nrmac, static void nr_fill_nfapi_pucch(gNB_MAC_INST *nrmac, frame_t frame, slot_t slot, const NR_sched_pucch_t *pucch, NR_UE_info_t* UE)
frame_t frame,
sub_frame_t slot,
const NR_sched_pucch_t *pucch,
NR_UE_info_t* UE)
{ {
const int index = ul_buffer_index(pucch->frame, const int index = ul_buffer_index(pucch->frame,
@@ -175,7 +171,7 @@ static int get_pucch_index(int frame, int slot, const frame_structure_t *fs, int
return (frame_start + ul_period_start + ul_period_slot) % sched_pucch_size; return (frame_start + ul_period_start + ul_period_slot) % sched_pucch_size;
} }
void nr_schedule_pucch(gNB_MAC_INST *nrmac, frame_t frameP, sub_frame_t slotP) void nr_schedule_pucch(gNB_MAC_INST *nrmac, frame_t frameP, slot_t slotP)
{ {
/* already mutex protected: held in gNB_dlsch_ulsch_scheduler() */ /* already mutex protected: held in gNB_dlsch_ulsch_scheduler() */
NR_SCHED_ENSURE_LOCKED(&nrmac->sched_lock); NR_SCHED_ENSURE_LOCKED(&nrmac->sched_lock);
@@ -211,7 +207,7 @@ void nr_schedule_pucch(gNB_MAC_INST *nrmac, frame_t frameP, sub_frame_t slotP)
} }
} }
void nr_csi_meas_reporting(int Mod_idP,frame_t frame, sub_frame_t slot) void nr_csi_meas_reporting(int Mod_idP,frame_t frame, slot_t slot)
{ {
const int CC_id = 0; const int CC_id = 0;
gNB_MAC_INST *nrmac = RC.nrmac[Mod_idP]; gNB_MAC_INST *nrmac = RC.nrmac[Mod_idP];
@@ -720,7 +716,7 @@ static void extract_pucch_csi_report(NR_CSI_MeasConfig_t *csi_MeasConfig,
} }
} }
static NR_UE_harq_t *find_harq(frame_t frame, sub_frame_t slot, NR_UE_info_t * UE, int harq_round_max) static NR_UE_harq_t *find_harq(frame_t frame, slot_t slot, NR_UE_info_t * UE, int harq_round_max)
{ {
/* In case of realtime problems: we can only identify a HARQ process by /* In case of realtime problems: we can only identify a HARQ process by
* timing. If the HARQ process's feedback_frame/feedback_slot is not the one we * timing. If the HARQ process's feedback_frame/feedback_slot is not the one we
@@ -768,10 +764,7 @@ static NR_UE_harq_t *find_harq(frame_t frame, sub_frame_t slot, NR_UE_info_t * U
return harq; return harq;
} }
void handle_nr_uci_pucch_0_1(module_id_t mod_id, void handle_nr_uci_pucch_0_1(module_id_t mod_id, frame_t frame, slot_t slot, const nfapi_nr_uci_pucch_pdu_format_0_1_t *uci_01)
frame_t frame,
sub_frame_t slot,
const nfapi_nr_uci_pucch_pdu_format_0_1_t *uci_01)
{ {
gNB_MAC_INST *nrmac = RC.nrmac[mod_id]; gNB_MAC_INST *nrmac = RC.nrmac[mod_id];
int rssi_threshold = nrmac->pucch_rssi_threshold; int rssi_threshold = nrmac->pucch_rssi_threshold;
@@ -826,10 +819,7 @@ void handle_nr_uci_pucch_0_1(module_id_t mod_id,
NR_SCHED_UNLOCK(&nrmac->sched_lock); NR_SCHED_UNLOCK(&nrmac->sched_lock);
} }
void handle_nr_uci_pucch_2_3_4(module_id_t mod_id, void handle_nr_uci_pucch_2_3_4(module_id_t mod_id, frame_t frame, slot_t slot, const nfapi_nr_uci_pucch_pdu_format_2_3_4_t *uci_234)
frame_t frame,
sub_frame_t slot,
const nfapi_nr_uci_pucch_pdu_format_2_3_4_t *uci_234)
{ {
gNB_MAC_INST *nrmac = RC.nrmac[mod_id]; gNB_MAC_INST *nrmac = RC.nrmac[mod_id];
NR_SCHED_LOCK(&nrmac->sched_lock); NR_SCHED_LOCK(&nrmac->sched_lock);
@@ -1000,7 +990,7 @@ bool check_bits_vs_coderate_limit(NR_PUCCH_Config_t *pucch_Config, int O_uci, in
int nr_acknack_scheduling(gNB_MAC_INST *mac, int nr_acknack_scheduling(gNB_MAC_INST *mac,
NR_UE_info_t *UE, NR_UE_info_t *UE,
frame_t frame, frame_t frame,
sub_frame_t slot, slot_t slot,
int ue_beam, int ue_beam,
int r_pucch, int r_pucch,
int is_common) int is_common)
@@ -1137,7 +1127,7 @@ int nr_acknack_scheduling(gNB_MAC_INST *mac,
} }
void nr_sr_reporting(gNB_MAC_INST *nrmac, frame_t SFN, sub_frame_t slot) void nr_sr_reporting(gNB_MAC_INST *nrmac, frame_t SFN, slot_t slot)
{ {
/* already mutex protected: held in gNB_dlsch_ulsch_scheduler() */ /* already mutex protected: held in gNB_dlsch_ulsch_scheduler() */
NR_SCHED_ENSURE_LOCKED(&nrmac->sched_lock); NR_SCHED_ENSURE_LOCKED(&nrmac->sched_lock);
@@ -265,7 +265,7 @@ static int nr_process_mac_pdu(instance_t module_idP,
NR_UE_info_t *UE, NR_UE_info_t *UE,
uint8_t CC_id, uint8_t CC_id,
frame_t frameP, frame_t frameP,
sub_frame_t slot, slot_t slot,
uint8_t *pduP, uint8_t *pduP,
uint32_t pdu_len, uint32_t pdu_len,
const int8_t harq_pid) const int8_t harq_pid)
@@ -574,7 +574,7 @@ static void abort_nr_ul_harq(NR_UE_info_t *UE, int8_t harq_pid)
static bool get_UE_waiting_CFRA_msg3(const gNB_MAC_INST *gNB_mac, static bool get_UE_waiting_CFRA_msg3(const gNB_MAC_INST *gNB_mac,
const int CC_id, const int CC_id,
const frame_t frame, const frame_t frame,
const sub_frame_t slot, const slot_t slot,
rnti_t rnti) rnti_t rnti)
{ {
bool UE_waiting_CFRA_msg3 = false; bool UE_waiting_CFRA_msg3 = false;
@@ -588,11 +588,7 @@ static bool get_UE_waiting_CFRA_msg3(const gNB_MAC_INST *gNB_mac,
return UE_waiting_CFRA_msg3; return UE_waiting_CFRA_msg3;
} }
void handle_nr_ul_harq(const int CC_idP, void handle_nr_ul_harq(const int CC_idP, module_id_t mod_id, frame_t frame, slot_t slot, const nfapi_nr_crc_t *crc_pdu)
module_id_t mod_id,
frame_t frame,
sub_frame_t slot,
const nfapi_nr_crc_t *crc_pdu)
{ {
gNB_MAC_INST *nrmac = RC.nrmac[mod_id]; gNB_MAC_INST *nrmac = RC.nrmac[mod_id];
if (nrmac->radio_config.disable_harq) { if (nrmac->radio_config.disable_harq) {
@@ -695,7 +691,7 @@ static void handle_msg3_failed_rx(NR_RA_t *ra, int i, int harq_round_max)
static void _nr_rx_sdu(const module_id_t gnb_mod_idP, static void _nr_rx_sdu(const module_id_t gnb_mod_idP,
const int CC_idP, const int CC_idP,
const frame_t frameP, const frame_t frameP,
const sub_frame_t slotP, const slot_t slotP,
const rnti_t rntiP, const rnti_t rntiP,
uint8_t *sduP, uint8_t *sduP,
const uint32_t sdu_lenP, const uint32_t sdu_lenP,
@@ -1005,7 +1001,7 @@ static void _nr_rx_sdu(const module_id_t gnb_mod_idP,
void nr_rx_sdu(const module_id_t gnb_mod_idP, void nr_rx_sdu(const module_id_t gnb_mod_idP,
const int CC_idP, const int CC_idP,
const frame_t frameP, const frame_t frameP,
const sub_frame_t slotP, const slot_t slotP,
const rnti_t rntiP, const rnti_t rntiP,
uint8_t *sduP, uint8_t *sduP,
const uint32_t sdu_lenP, const uint32_t sdu_lenP,
@@ -1458,7 +1454,7 @@ static int nr_srs_tpmi_estimation(const NR_PUSCH_Config_t *pusch_Config,
void handle_nr_srs_measurements(const module_id_t module_id, void handle_nr_srs_measurements(const module_id_t module_id,
const frame_t frame, const frame_t frame,
const sub_frame_t slot, const slot_t slot,
nfapi_nr_srs_indication_pdu_t *srs_ind) nfapi_nr_srs_indication_pdu_t *srs_ind)
{ {
gNB_MAC_INST *nrmac = RC.nrmac[module_id]; gNB_MAC_INST *nrmac = RC.nrmac[module_id];
@@ -1630,7 +1626,7 @@ long get_K2(NR_PUSCH_TimeDomainResourceAllocationList_t *tdaList,
static bool nr_UE_is_to_be_scheduled(const frame_structure_t *fs, static bool nr_UE_is_to_be_scheduled(const frame_structure_t *fs,
NR_UE_info_t *UE, NR_UE_info_t *UE,
frame_t frame, frame_t frame,
sub_frame_t slot, slot_t slot,
uint32_t ulsch_max_frame_inactivity) uint32_t ulsch_max_frame_inactivity)
{ {
const int n = fs->numb_slots_frame; const int n = fs->numb_slots_frame;
@@ -1751,7 +1747,7 @@ static void nr_ue_max_mcs_min_rb(int mu,
static bool allocate_ul_retransmission(gNB_MAC_INST *nrmac, static bool allocate_ul_retransmission(gNB_MAC_INST *nrmac,
frame_t frame, frame_t frame,
sub_frame_t slot, slot_t slot,
uint16_t *rballoc_mask, uint16_t *rballoc_mask,
int *n_rb_sched, int *n_rb_sched,
int dci_beam_idx, int dci_beam_idx,
@@ -2304,7 +2300,7 @@ static void pf_ul(module_id_t module_id,
} }
} }
static bool nr_ulsch_preprocessor(module_id_t module_id, frame_t frame, sub_frame_t slot) static bool nr_ulsch_preprocessor(module_id_t module_id, frame_t frame, slot_t slot)
{ {
gNB_MAC_INST *nr_mac = RC.nrmac[module_id]; gNB_MAC_INST *nr_mac = RC.nrmac[module_id];
// no UEs // no UEs
@@ -2372,7 +2368,7 @@ nr_pp_impl_ul nr_init_ulsch_preprocessor(int CC_id)
return nr_ulsch_preprocessor; return nr_ulsch_preprocessor;
} }
void nr_schedule_ulsch(module_id_t module_id, frame_t frame, sub_frame_t slot, nfapi_nr_ul_dci_request_t *ul_dci_req) void nr_schedule_ulsch(module_id_t module_id, frame_t frame, slot_t slot, nfapi_nr_ul_dci_request_t *ul_dci_req)
{ {
gNB_MAC_INST *nr_mac = RC.nrmac[module_id]; gNB_MAC_INST *nr_mac = RC.nrmac[module_id];
/* already mutex protected: held in gNB_dlsch_ulsch_scheduler() */ /* already mutex protected: held in gNB_dlsch_ulsch_scheduler() */
+23 -27
View File
@@ -70,23 +70,21 @@ int nr_transmission_action_indicator_stop(gNB_MAC_INST *mac, NR_UE_info_t *UE_in
void clear_nr_nfapi_information(gNB_MAC_INST *gNB, void clear_nr_nfapi_information(gNB_MAC_INST *gNB,
int CC_idP, int CC_idP,
frame_t frameP, frame_t frameP,
sub_frame_t slotP, slot_t slotP,
nfapi_nr_dl_tti_request_t *DL_req, nfapi_nr_dl_tti_request_t *DL_req,
nfapi_nr_tx_data_request_t *TX_req, nfapi_nr_tx_data_request_t *TX_req,
nfapi_nr_ul_dci_request_t *UL_dci_req); nfapi_nr_ul_dci_request_t *UL_dci_req);
void nr_mac_update_timers(module_id_t module_id, void nr_mac_update_timers(module_id_t module_id, frame_t frame, slot_t slot);
frame_t frame,
sub_frame_t slot);
void gNB_dlsch_ulsch_scheduler(module_id_t module_idP, frame_t frame_rxP, sub_frame_t slot_rxP, NR_Sched_Rsp_t *sched_info); void gNB_dlsch_ulsch_scheduler(module_id_t module_idP, frame_t frame_rxP, slot_t slot_rxP, NR_Sched_Rsp_t *sched_info);
/* \brief main DL scheduler function. Calls a preprocessor to decide on /* \brief main DL scheduler function. Calls a preprocessor to decide on
* resource allocation, then "post-processes" resource allocation (nFAPI * resource allocation, then "post-processes" resource allocation (nFAPI
* messages, statistics, HARQ handling, CEs, ... */ * messages, statistics, HARQ handling, CEs, ... */
void nr_schedule_ue_spec(module_id_t module_id, void nr_schedule_ue_spec(module_id_t module_id,
frame_t frame, frame_t frame,
sub_frame_t slot, slot_t slot,
nfapi_nr_dl_tti_request_t *DL_req, nfapi_nr_dl_tti_request_t *DL_req,
nfapi_nr_tx_data_request_t *TX_req); nfapi_nr_tx_data_request_t *TX_req);
@@ -95,13 +93,13 @@ nr_pp_impl_dl nr_init_dlsch_preprocessor(int CC_id);
void schedule_nr_sib1(module_id_t module_idP, void schedule_nr_sib1(module_id_t module_idP,
frame_t frameP, frame_t frameP,
sub_frame_t slotP, slot_t slotP,
nfapi_nr_dl_tti_request_t *DL_req, nfapi_nr_dl_tti_request_t *DL_req,
nfapi_nr_tx_data_request_t *TX_req); nfapi_nr_tx_data_request_t *TX_req);
void schedule_nr_sib19(module_id_t module_idP, void schedule_nr_sib19(module_id_t module_idP,
frame_t frameP, frame_t frameP,
sub_frame_t slotP, slot_t slotP,
nfapi_nr_dl_tti_request_t *DL_req, nfapi_nr_dl_tti_request_t *DL_req,
nfapi_nr_tx_data_request_t *TX_req, nfapi_nr_tx_data_request_t *TX_req,
int sib19_bcch_length, int sib19_bcch_length,
@@ -109,12 +107,12 @@ void schedule_nr_sib19(module_id_t module_idP,
struct NR_SchedulingInfo2_r17* find_sib19_sched_info(const struct NR_SI_SchedulingInfo_v1700*); struct NR_SchedulingInfo2_r17* find_sib19_sched_info(const struct NR_SI_SchedulingInfo_v1700*);
void schedule_nr_mib(module_id_t module_idP, frame_t frameP, sub_frame_t slotP, nfapi_nr_dl_tti_request_t *DL_req); void schedule_nr_mib(module_id_t module_idP, frame_t frameP, slot_t slotP, nfapi_nr_dl_tti_request_t *DL_req);
/* \brief main UL scheduler function. Calls a preprocessor to decide on /* \brief main UL scheduler function. Calls a preprocessor to decide on
* resource allocation, then "post-processes" resource allocation (nFAPI * resource allocation, then "post-processes" resource allocation (nFAPI
* messages, statistics, HARQ handling, ... */ * messages, statistics, HARQ handling, ... */
void nr_schedule_ulsch(module_id_t module_id, frame_t frame, sub_frame_t slot, nfapi_nr_ul_dci_request_t *ul_dci_req); void nr_schedule_ulsch(module_id_t module_id, frame_t frame, slot_t slot, nfapi_nr_ul_dci_request_t *ul_dci_req);
/* \brief default UL preprocessor init routine, returns preprocessor to call */ /* \brief default UL preprocessor init routine, returns preprocessor to call */
nr_pp_impl_ul nr_init_ulsch_preprocessor(int CC_id); nr_pp_impl_ul nr_init_ulsch_preprocessor(int CC_id);
@@ -123,7 +121,7 @@ nr_pp_impl_ul nr_init_ulsch_preprocessor(int CC_id);
void nr_schedule_RA(module_id_t module_idP, void nr_schedule_RA(module_id_t module_idP,
frame_t frameP, frame_t frameP,
sub_frame_t slotP, slot_t slotP,
nfapi_nr_ul_dci_request_t *ul_dci_req, nfapi_nr_ul_dci_request_t *ul_dci_req,
nfapi_nr_dl_tti_request_t *DL_req, nfapi_nr_dl_tti_request_t *DL_req,
nfapi_nr_tx_data_request_t *TX_req); nfapi_nr_tx_data_request_t *TX_req);
@@ -140,9 +138,9 @@ void nr_initiate_ra_proc(module_id_t module_idP,
void nr_clear_ra_proc(NR_RA_t *ra); void nr_clear_ra_proc(NR_RA_t *ra);
int nr_allocate_CCEs(int module_idP, int CC_idP, frame_t frameP, sub_frame_t slotP, int test_only); int nr_allocate_CCEs(int module_idP, int CC_idP, frame_t frameP, slot_t slotP, int test_only);
void schedule_nr_prach(module_id_t module_idP, frame_t frameP, sub_frame_t slotP); void schedule_nr_prach(module_id_t module_idP, frame_t frameP, slot_t slotP);
uint16_t nr_mac_compute_RIV(uint16_t N_RB_DL, uint16_t RBstart, uint16_t Lcrbs); uint16_t nr_mac_compute_RIV(uint16_t N_RB_DL, uint16_t RBstart, uint16_t Lcrbs);
@@ -150,18 +148,18 @@ uint16_t nr_mac_compute_RIV(uint16_t N_RB_DL, uint16_t RBstart, uint16_t Lcrbs);
/* \brief preprocessor for phytest: schedules UE_id 0 with fixed MCS on all /* \brief preprocessor for phytest: schedules UE_id 0 with fixed MCS on all
* freq resources */ * freq resources */
void nr_preprocessor_phytest(module_id_t module_id, frame_t frame, sub_frame_t slot); void nr_preprocessor_phytest(module_id_t module_id, frame_t frame, slot_t slot);
/* \brief UL preprocessor for phytest: schedules UE_id 0 with fixed MCS on a /* \brief UL preprocessor for phytest: schedules UE_id 0 with fixed MCS on a
* fixed set of resources */ * fixed set of resources */
bool nr_ul_preprocessor_phytest(module_id_t module_id, frame_t frame, sub_frame_t slot); bool nr_ul_preprocessor_phytest(module_id_t module_id, frame_t frame, slot_t slot);
void handle_nr_uci_pucch_0_1(module_id_t mod_id, void handle_nr_uci_pucch_0_1(module_id_t mod_id,
frame_t frame, frame_t frame,
sub_frame_t slot, slot_t slot,
const nfapi_nr_uci_pucch_pdu_format_0_1_t *uci_01); const nfapi_nr_uci_pucch_pdu_format_0_1_t *uci_01);
void handle_nr_uci_pucch_2_3_4(module_id_t mod_id, void handle_nr_uci_pucch_2_3_4(module_id_t mod_id,
frame_t frame, frame_t frame,
sub_frame_t slot, slot_t slot,
const nfapi_nr_uci_pucch_pdu_format_2_3_4_t *uci_234); const nfapi_nr_uci_pucch_pdu_format_2_3_4_t *uci_234);
void config_uldci(const NR_UE_ServingCell_Info_t *sc_info, void config_uldci(const NR_UE_ServingCell_Info_t *sc_info,
@@ -174,9 +172,7 @@ void config_uldci(const NR_UE_ServingCell_Info_t *sc_info,
uint8_t ndi, uint8_t ndi,
NR_UE_UL_BWP_t *ul_bwp); NR_UE_UL_BWP_t *ul_bwp);
void nr_schedule_pucch(gNB_MAC_INST *nrmac, void nr_schedule_pucch(gNB_MAC_INST *nrmac, frame_t frameP, slot_t slotP);
frame_t frameP,
sub_frame_t slotP);
void nr_srs_ri_computation(const nfapi_nr_srs_normalized_channel_iq_matrix_t *nr_srs_normalized_channel_iq_matrix, void nr_srs_ri_computation(const nfapi_nr_srs_normalized_channel_iq_matrix_t *nr_srs_normalized_channel_iq_matrix,
const NR_UE_UL_BWP_t *current_BWP, const NR_UE_UL_BWP_t *current_BWP,
@@ -186,14 +182,14 @@ int get_pucch_resourceid(NR_PUCCH_Config_t *pucch_Config, int O_uci, int pucch_r
void nr_schedule_srs(int module_id, frame_t frame, int slot); void nr_schedule_srs(int module_id, frame_t frame, int slot);
void nr_csirs_scheduling(int Mod_idP, frame_t frame, sub_frame_t slot, nfapi_nr_dl_tti_request_t *DL_req); void nr_csirs_scheduling(int Mod_idP, frame_t frame, slot_t slot, nfapi_nr_dl_tti_request_t *DL_req);
void nr_csi_meas_reporting(int Mod_idP, frame_t frameP, sub_frame_t slotP); void nr_csi_meas_reporting(int Mod_idP, frame_t frameP, slot_t slotP);
int nr_acknack_scheduling(gNB_MAC_INST *mac, int nr_acknack_scheduling(gNB_MAC_INST *mac,
NR_UE_info_t *UE, NR_UE_info_t *UE,
frame_t frameP, frame_t frameP,
sub_frame_t slotP, slot_t slotP,
int beam_index, int beam_index,
int r_pucch, int r_pucch,
int do_common); int do_common);
@@ -355,7 +351,7 @@ int binomial(int n, int k);
void nr_rx_sdu(const module_id_t gnb_mod_idP, void nr_rx_sdu(const module_id_t gnb_mod_idP,
const int CC_idP, const int CC_idP,
const frame_t frameP, const frame_t frameP,
const sub_frame_t subframeP, const slot_t subframeP,
const rnti_t rntiP, const rnti_t rntiP,
uint8_t * sduP, uint8_t * sduP,
const uint32_t sdu_lenP, const uint32_t sdu_lenP,
@@ -375,7 +371,7 @@ void reset_ul_harq_list(NR_UE_sched_ctrl_t *sched_ctrl);
void handle_nr_ul_harq(const int CC_idP, void handle_nr_ul_harq(const int CC_idP,
module_id_t mod_id, module_id_t mod_id,
frame_t frame, frame_t frame,
sub_frame_t slot, slot_t slot,
const nfapi_nr_crc_t *crc_pdu); const nfapi_nr_crc_t *crc_pdu);
uint8_t *allocate_transportBlock_buffer(byte_array_t *tb, uint32_t needed); uint8_t *allocate_transportBlock_buffer(byte_array_t *tb, uint32_t needed);
@@ -383,7 +379,7 @@ void free_transportBlock_buffer(byte_array_t *tb);
void handle_nr_srs_measurements(const module_id_t module_id, void handle_nr_srs_measurements(const module_id_t module_id,
const frame_t frame, const frame_t frame,
const sub_frame_t slot, const slot_t slot,
nfapi_nr_srs_indication_pdu_t *srs_ind); nfapi_nr_srs_indication_pdu_t *srs_ind);
void find_SSB_and_RO_available(gNB_MAC_INST *nrmac); void find_SSB_and_RO_available(gNB_MAC_INST *nrmac);
@@ -446,7 +442,7 @@ int get_fapi_beamforming_index(gNB_MAC_INST *mac, int ssb_idx);
NR_beam_alloc_t beam_allocation_procedure(NR_beam_info_t *beam_info, int frame, int slot, int beam_index, int slots_per_frame); NR_beam_alloc_t beam_allocation_procedure(NR_beam_info_t *beam_info, int frame, int slot, int beam_index, int slots_per_frame);
void reset_beam_status(NR_beam_info_t *beam_info, int frame, int slot, int beam_index, int slots_per_frame, bool new_beam); void reset_beam_status(NR_beam_info_t *beam_info, int frame, int slot, int beam_index, int slots_per_frame, bool new_beam);
void beam_selection_procedures(gNB_MAC_INST *mac, NR_UE_info_t *UE); void beam_selection_procedures(gNB_MAC_INST *mac, NR_UE_info_t *UE);
void nr_sr_reporting(gNB_MAC_INST *nrmac, frame_t frameP, sub_frame_t slotP); void nr_sr_reporting(gNB_MAC_INST *nrmac, frame_t frameP, slot_t slotP);
size_t dump_mac_stats(gNB_MAC_INST *gNB, char *output, size_t strlen, bool reset_rsrp); size_t dump_mac_stats(gNB_MAC_INST *gNB, char *output, size_t strlen, bool reset_rsrp);
+4 -8
View File
@@ -212,7 +212,7 @@ typedef struct {
/// Frame where Msg2 is to be sent /// Frame where Msg2 is to be sent
frame_t Msg2_frame; frame_t Msg2_frame;
/// Subframe where Msg3 is to be sent /// Subframe where Msg3 is to be sent
sub_frame_t Msg3_slot; slot_t Msg3_slot;
/// Frame where Msg3 is to be sent /// Frame where Msg3 is to be sent
frame_t Msg3_frame; frame_t Msg3_frame;
/// Msg3 time domain allocation index /// Msg3 time domain allocation index
@@ -622,7 +622,7 @@ typedef struct {
/// For UL synchronization: store last UL scheduling grant /// For UL synchronization: store last UL scheduling grant
frame_t last_ul_frame; frame_t last_ul_frame;
sub_frame_t last_ul_slot; slot_t last_ul_slot;
/// total amount of data awaiting for this UE /// total amount of data awaiting for this UE
uint32_t num_total_bytes; uint32_t num_total_bytes;
@@ -797,12 +797,8 @@ typedef struct {
#define UE_iterator(BaSe, VaR) NR_UE_info_t ** VaR##pptr=BaSe, *VaR; while ((VaR=*(VaR##pptr++))) #define UE_iterator(BaSe, VaR) NR_UE_info_t ** VaR##pptr=BaSe, *VaR; while ((VaR=*(VaR##pptr++)))
typedef void (*nr_pp_impl_dl)(module_id_t mod_id, typedef void (*nr_pp_impl_dl)(module_id_t mod_id, frame_t frame, slot_t slot);
frame_t frame, typedef bool (*nr_pp_impl_ul)(module_id_t mod_id, frame_t frame, slot_t slot);
sub_frame_t slot);
typedef bool (*nr_pp_impl_ul)(module_id_t mod_id,
frame_t frame,
sub_frame_t slot);
typedef struct f1_config_t { typedef struct f1_config_t {
f1ap_setup_req_t *setup_req; f1ap_setup_req_t *setup_req;
+2 -2
View File
@@ -99,7 +99,7 @@ static void handle_nr_uci(NR_UL_IND_t *UL_info)
const module_id_t mod_id = UL_info->module_id; const module_id_t mod_id = UL_info->module_id;
const frame_t frame = UL_info->uci_ind.sfn; const frame_t frame = UL_info->uci_ind.sfn;
const sub_frame_t slot = UL_info->uci_ind.slot; const slot_t slot = UL_info->uci_ind.slot;
int num_ucis = UL_info->uci_ind.num_ucis; int num_ucis = UL_info->uci_ind.num_ucis;
nfapi_nr_uci_t *uci_list = UL_info->uci_ind.uci_list; nfapi_nr_uci_t *uci_list = UL_info->uci_ind.uci_list;
@@ -225,7 +225,7 @@ static void handle_nr_srs(NR_UL_IND_t *UL_info)
const module_id_t module_id = UL_info->module_id; const module_id_t module_id = UL_info->module_id;
const frame_t frame = UL_info->srs_ind.sfn; const frame_t frame = UL_info->srs_ind.sfn;
const sub_frame_t slot = UL_info->srs_ind.slot; const slot_t slot = UL_info->srs_ind.slot;
const int num_srs = UL_info->srs_ind.number_of_pdus; const int num_srs = UL_info->srs_ind.number_of_pdus;
nfapi_nr_srs_indication_pdu_t *srs_list = UL_info->srs_ind.pdu_list; nfapi_nr_srs_indication_pdu_t *srs_list = UL_info->srs_ind.pdu_list;