Merge remote-tracking branch 'origin/NR_UE_reworking_NOS1_bearer_configuration' into integration_2024_w04
This commit is contained in:
+2
-23
@@ -984,29 +984,8 @@ void init_NR_UE(int nb_inst, char *uecap_file, char *reconfig_file, char *rbconf
|
||||
NR_UE_MAC_INST_t *mac = get_mac_inst(i);
|
||||
AssertFatal((mac->if_module = nr_ue_if_module_init(i)) != NULL, "can not initialize IF module\n");
|
||||
if (!get_softmodem_params()->sa) {
|
||||
init_nsa_message(&rrc_inst[i], reconfig_file, rbconfig_file);
|
||||
// TODO why do we need noS1 configuration?
|
||||
// temporarily moved here to understand why not using the one provided by gNB
|
||||
nr_rlc_activate_srb0(i, NULL, send_srb0_rrc);
|
||||
if (IS_SOFTMODEM_NOS1) {
|
||||
// get default noS1 configuration
|
||||
NR_RadioBearerConfig_t *rbconfig = NULL;
|
||||
NR_RLC_BearerConfig_t *rlc_rbconfig = NULL;
|
||||
fill_nr_noS1_bearer_config(&rbconfig, &rlc_rbconfig);
|
||||
|
||||
// set up PDCP, RLC, MAC
|
||||
nr_pdcp_layer_init(false);
|
||||
nr_pdcp_add_drbs(ENB_FLAG_NO, i, rbconfig->drb_ToAddModList, 0, NULL, NULL);
|
||||
nr_rlc_add_drb(i, rbconfig->drb_ToAddModList->list.array[0]->drb_Identity, rlc_rbconfig);
|
||||
struct NR_CellGroupConfig__rlc_BearerToAddModList rlc_toadd_list;
|
||||
rlc_toadd_list.list.count = 1;
|
||||
rlc_toadd_list.list.array = calloc(1, sizeof(NR_RLC_BearerConfig_t));
|
||||
rlc_toadd_list.list.array[0] = rlc_rbconfig;
|
||||
nr_rrc_mac_config_req_ue_logicalChannelBearer(0, &rlc_toadd_list, NULL);
|
||||
|
||||
// free memory
|
||||
free_nr_noS1_bearer_config(&rbconfig, NULL);
|
||||
}
|
||||
init_nsa_message(rrc_inst, reconfig_file, rbconfig_file);
|
||||
nr_rlc_activate_srb0(mac_inst->crnti, NULL, send_srb0_rrc);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -368,7 +368,8 @@ void init_openair0(void) {
|
||||
}
|
||||
}
|
||||
|
||||
static void init_pdcp(int ue_id) {
|
||||
static void init_pdcp(int ue_id)
|
||||
{
|
||||
uint32_t pdcp_initmask = (!IS_SOFTMODEM_NOS1) ? LINK_ENB_PDCP_TO_GTPV1U_BIT : (LINK_ENB_PDCP_TO_GTPV1U_BIT | PDCP_USE_NETLINK_BIT | LINK_ENB_PDCP_TO_IP_DRIVER_BIT);
|
||||
|
||||
/*if (IS_SOFTMODEM_RFSIM || (nfapi_getmode()==NFAPI_UE_STUB_PNF)) {
|
||||
@@ -510,8 +511,6 @@ int main(int argc, char **argv)
|
||||
memset(PHY_vars_UE_g[0][CC_id], 0, sizeof(*PHY_vars_UE_g[0][CC_id]));
|
||||
}
|
||||
|
||||
init_NR_UE(NB_UE_INST, uecap_file, reconfig_file, rbconfig_file);
|
||||
|
||||
int mode_offset = get_softmodem_params()->nsa ? NUMBER_OF_UE_MAX : 1;
|
||||
uint16_t node_number = get_softmodem_params()->node_number;
|
||||
ue_id_g = (node_number == 0) ? 0 : node_number - 2;
|
||||
@@ -525,6 +524,8 @@ int main(int argc, char **argv)
|
||||
}
|
||||
}
|
||||
|
||||
init_NR_UE(NB_UE_INST, uecap_file, reconfig_file, rbconfig_file);
|
||||
|
||||
if (get_softmodem_params()->emulate_l1) {
|
||||
RCconfig_nr_ue_macrlc();
|
||||
get_channel_model_mode(uniqCfg);
|
||||
|
||||
@@ -871,6 +871,8 @@ int main(int argc, char **argv)
|
||||
nr_rrc_mac_config_req_mib(0, 0, mib->message.choice.mib, false);
|
||||
nr_rrc_mac_config_req_cg(0, 0, UE_CellGroup);
|
||||
|
||||
asn1cFreeStruc(asn_DEF_NR_CellGroupConfig, UE_CellGroup);
|
||||
|
||||
UE_mac->state = UE_CONNECTED;
|
||||
UE_mac->ra.ra_state = RA_SUCCEEDED;
|
||||
|
||||
|
||||
@@ -669,29 +669,29 @@ void nr_release_mac_config_logicalChannelBearer(NR_UE_MAC_INST_t *mac, long chan
|
||||
}
|
||||
}
|
||||
|
||||
static uint16_t nr_get_ms_bucketsizeduration(uint8_t bucketsizeduration)
|
||||
static int nr_get_ms_bucketsizeduration(long bucketsizeduration)
|
||||
{
|
||||
switch (bucketsizeduration) {
|
||||
case NR_LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms5:
|
||||
return 5;
|
||||
case NR_LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms10:
|
||||
return 10;
|
||||
case NR_LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms20:
|
||||
return 20;
|
||||
case NR_LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms50:
|
||||
return 50;
|
||||
|
||||
case NR_LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms100:
|
||||
return 100;
|
||||
|
||||
case NR_LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms150:
|
||||
return 150;
|
||||
|
||||
case NR_LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms300:
|
||||
return 300;
|
||||
|
||||
case NR_LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms500:
|
||||
return 500;
|
||||
|
||||
case NR_LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms1000:
|
||||
return 1000;
|
||||
|
||||
default:
|
||||
return 0;
|
||||
AssertFatal(false, "Invalid bucketSizeDuration %ld\n", bucketsizeduration);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -724,9 +724,9 @@ void nr_configure_mac_config_logicalChannelBearer(module_id_t module_id,
|
||||
mac->scheduling_info.lc_sched_info[channel_identity - 1].LCGID = 0;
|
||||
}
|
||||
|
||||
void nr_rrc_mac_config_req_ue_logicalChannelBearer(module_id_t module_id,
|
||||
struct NR_CellGroupConfig__rlc_BearerToAddModList *rlc_toadd_list,
|
||||
struct NR_CellGroupConfig__rlc_BearerToReleaseList *rlc_torelease_list)
|
||||
static void configure_logicalChannelBearer(module_id_t module_id,
|
||||
struct NR_CellGroupConfig__rlc_BearerToAddModList *rlc_toadd_list,
|
||||
struct NR_CellGroupConfig__rlc_BearerToReleaseList *rlc_torelease_list)
|
||||
{
|
||||
NR_UE_MAC_INST_t *mac = get_mac_inst(module_id);
|
||||
if (rlc_torelease_list) {
|
||||
@@ -1956,6 +1956,10 @@ void nr_rrc_mac_config_req_cg(module_id_t module_id,
|
||||
}
|
||||
}
|
||||
|
||||
configure_logicalChannelBearer(module_id,
|
||||
cell_group_config->rlc_BearerToAddModList,
|
||||
cell_group_config->rlc_BearerToReleaseList);
|
||||
|
||||
// Setup the SSB to Rach Occasions mapping according to the config
|
||||
// Only if RACH is configured for current BWP
|
||||
if (mac->current_UL_BWP->rach_ConfigCommon)
|
||||
@@ -1963,6 +1967,4 @@ void nr_rrc_mac_config_req_cg(module_id_t module_id,
|
||||
|
||||
if (!mac->dl_config_request || !mac->ul_config_request)
|
||||
ue_init_config_request(mac, mac->current_DL_BWP->scs);
|
||||
|
||||
asn1cFreeStruc(asn_DEF_NR_CellGroupConfig, cell_group_config);
|
||||
}
|
||||
|
||||
@@ -177,10 +177,6 @@ void release_dl_BWP(NR_UE_MAC_INST_t *mac, int index);
|
||||
void release_ul_BWP(NR_UE_MAC_INST_t *mac, int index);
|
||||
void nr_release_mac_config_logicalChannelBearer(NR_UE_MAC_INST_t *mac, long channel_identity);
|
||||
|
||||
void nr_rrc_mac_config_req_ue_logicalChannelBearer(module_id_t module_id,
|
||||
struct NR_CellGroupConfig__rlc_BearerToAddModList *rlc_toadd_list,
|
||||
struct NR_CellGroupConfig__rlc_BearerToReleaseList *rlc_torelease_list);
|
||||
|
||||
void nr_rrc_mac_config_req_cg(module_id_t module_id,
|
||||
int cc_idP,
|
||||
NR_CellGroupConfig_t *cell_group_config);
|
||||
|
||||
@@ -1087,8 +1087,9 @@ void nr_ue_ul_scheduler(nr_uplink_indication_t *ul_info)
|
||||
int lcid = lc_bearer->lcids_ordered;
|
||||
NR_LogicalChannelConfig_t *lcconfig = mac->logicalChannelConfig[lcid - 1];
|
||||
NR_LC_SCHEDULING_INFO *sched_lc = &mac->scheduling_info.lc_sched_info[lcid - 1];
|
||||
int32_t bucketSize_max =
|
||||
sched_lc->bucket_size; // max amount of data that can be buffered/accumulated in a logical channel buffer
|
||||
// max amount of data that can be buffered/accumulated in a logical channel buffer
|
||||
int32_t bucketSize_max = sched_lc->bucket_size;
|
||||
AssertFatal(bucketSize_max >= 0, "negative bucketSize_max %d, will never schedule UE: lcid %d\n",bucketSize_max, lcid);
|
||||
|
||||
/*
|
||||
measure Bj
|
||||
|
||||
+13
-16
@@ -216,8 +216,10 @@ static void nr_rrc_ue_process_rrcReconfiguration(NR_UE_RRC_INST_t *rrc,
|
||||
|
||||
nr_rrc_cellgroup_configuration(rrcNB, rrc, cellGroupConfig);
|
||||
|
||||
if (!get_softmodem_params()->sa)
|
||||
nr_rrc_mac_config_req_cg(0, 0, cellGroupConfig);
|
||||
AssertFatal(!get_softmodem_params()->sa, "secondaryCellGroup only used in NSA for now\n");
|
||||
nr_rrc_mac_config_req_cg(rrc->ue_id, 0, cellGroupConfig);
|
||||
|
||||
asn1cFreeStruc(asn_DEF_NR_CellGroupConfig, cellGroupConfig);
|
||||
}
|
||||
if (ie->measConfig != NULL) {
|
||||
LOG_I(NR_RRC, "Measurement Configuration is present\n");
|
||||
@@ -275,14 +277,12 @@ void process_nsa_message(NR_UE_RRC_INST_t *rrc, nsa_message_t nsa_message_type,
|
||||
SEQUENCE_free( &asn_DEF_NR_RadioBearerConfig, RadioBearerConfig, 1 );
|
||||
return;
|
||||
}
|
||||
if (get_softmodem_params()->nsa) {
|
||||
LOG_D(NR_RRC, "Calling nr_rrc_ue_process_RadioBearerConfig() at %d with: e_rab_id = %ld, drbID = %ld, cipher_algo = %ld, key = %ld \n",
|
||||
__LINE__, RadioBearerConfig->drb_ToAddModList->list.array[0]->cnAssociation->choice.eps_BearerIdentity,
|
||||
RadioBearerConfig->drb_ToAddModList->list.array[0]->drb_Identity,
|
||||
RadioBearerConfig->securityConfig->securityAlgorithmConfig->cipheringAlgorithm,
|
||||
*RadioBearerConfig->securityConfig->keyToUse);
|
||||
nr_rrc_ue_process_RadioBearerConfig(rrc, rrc->perNB + 0, RadioBearerConfig);
|
||||
}
|
||||
LOG_D(NR_RRC, "Calling nr_rrc_ue_process_RadioBearerConfig()with: e_rab_id = %ld, drbID = %ld, cipher_algo = %ld, key = %ld \n",
|
||||
RadioBearerConfig->drb_ToAddModList->list.array[0]->cnAssociation->choice.eps_BearerIdentity,
|
||||
RadioBearerConfig->drb_ToAddModList->list.array[0]->drb_Identity,
|
||||
RadioBearerConfig->securityConfig->securityAlgorithmConfig->cipheringAlgorithm,
|
||||
*RadioBearerConfig->securityConfig->keyToUse);
|
||||
nr_rrc_ue_process_RadioBearerConfig(rrc, rrc->perNB + 0, RadioBearerConfig);
|
||||
if (LOG_DEBUGFLAG(DEBUG_ASN1))
|
||||
xer_fprint(stdout, &asn_DEF_NR_RadioBearerConfig, (const void *)RadioBearerConfig);
|
||||
ASN_STRUCT_FREE(asn_DEF_NR_RadioBearerConfig, RadioBearerConfig);
|
||||
@@ -747,9 +747,6 @@ static void nr_rrc_manage_rlc_bearers(const NR_UE_RRC_INST_t *rrc,
|
||||
}
|
||||
}
|
||||
}
|
||||
nr_rrc_mac_config_req_ue_logicalChannelBearer(rrc->ue_id,
|
||||
cellGroupConfig->rlc_BearerToAddModList,
|
||||
cellGroupConfig->rlc_BearerToReleaseList);
|
||||
}
|
||||
|
||||
void nr_rrc_cellgroup_configuration(rrcPerNB_t *rrcNB, NR_UE_RRC_INST_t *rrc, NR_CellGroupConfig_t *cellGroupConfig)
|
||||
@@ -795,9 +792,7 @@ void nr_rrc_cellgroup_configuration(rrcPerNB_t *rrcNB, NR_UE_RRC_INST_t *rrc, NR
|
||||
}
|
||||
}
|
||||
|
||||
// TODO verify why we need this limitation
|
||||
if (get_softmodem_params()->sa || get_softmodem_params()->nsa)
|
||||
nr_rrc_manage_rlc_bearers(rrc, cellGroupConfig, rrcNB);
|
||||
nr_rrc_manage_rlc_bearers(rrc, cellGroupConfig, rrcNB);
|
||||
|
||||
AssertFatal(cellGroupConfig->sCellToReleaseList == NULL,
|
||||
"Secondary serving cell release not implemented\n");
|
||||
@@ -828,6 +823,8 @@ static void nr_rrc_ue_process_masterCellGroup(NR_UE_RRC_INST_t *rrc,
|
||||
|
||||
LOG_D(RRC,"Sending CellGroupConfig to MAC\n");
|
||||
nr_rrc_mac_config_req_cg(rrc->ue_id, 0, cellGroupConfig);
|
||||
|
||||
asn1cFreeStruc(asn_DEF_NR_CellGroupConfig, cellGroupConfig);
|
||||
}
|
||||
|
||||
static void rrc_ue_generate_RRCSetupComplete(const NR_UE_RRC_INST_t *rrc, const uint8_t Transaction_id)
|
||||
|
||||
Reference in New Issue
Block a user