Remove capabilities+agent_id from FlexRAN conf/RCconfig_flexran()
This commit is contained in:
@@ -68,109 +68,10 @@ extern uint16_t sf_ahead;
|
|||||||
|
|
||||||
void RCconfig_flexran()
|
void RCconfig_flexran()
|
||||||
{
|
{
|
||||||
uint16_t i;
|
|
||||||
uint16_t num_enbs;
|
|
||||||
char aprefix[MAX_OPTNAME_SIZE*2 + 8];
|
|
||||||
/* this will possibly truncate the cell id (RRC assumes int32_t).
|
|
||||||
* Both Nid_cell and enb_id are signed in RRC case, but we use unsigned for
|
|
||||||
* the bitshifting to work properly */
|
|
||||||
int32_t Nid_cell = 0;
|
|
||||||
uint16_t Nid_cell_tr = 0;
|
|
||||||
uint32_t enb_id = 0;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* the only reason for all these variables is, that they are "hard-encoded"
|
|
||||||
* into the CCPARAMS_DESC macro and we need it for the Nid_cell variable ...
|
|
||||||
*/
|
|
||||||
char *frame_type, *prefix_type, *pbch_repetition, *prach_high_speed,
|
|
||||||
*pusch_hoppingMode, *pusch_enable64QAM, *pusch_groupHoppingEnabled,
|
|
||||||
*pusch_sequenceHoppingEnabled, *phich_duration, *phich_resource,
|
|
||||||
*srs_enable, *srs_ackNackST, *srs_MaxUpPts, *pusch_alpha,
|
|
||||||
*pucch_deltaF_Format1, *pucch_deltaF_Format1b, *pucch_deltaF_Format2,
|
|
||||||
*pucch_deltaF_Format2a, *pucch_deltaF_Format2b,
|
|
||||||
*rach_preamblesGroupAConfig, *rach_messagePowerOffsetGroupB, *pcch_nB;
|
|
||||||
long long int downlink_frequency;
|
|
||||||
int32_t tdd_config, tdd_config_s, eutra_band, uplink_frequency_offset,
|
|
||||||
Nid_cell_mbsfn, N_RB_DL, nb_antenna_ports, prach_root, prach_config_index,
|
|
||||||
prach_zero_correlation, prach_freq_offset, pucch_delta_shift,
|
|
||||||
pucch_nRB_CQI, pucch_nCS_AN, pucch_n1_AN, pdsch_referenceSignalPower,
|
|
||||||
pdsch_p_b, pusch_n_SB, pusch_hoppingOffset, pusch_groupAssignment,
|
|
||||||
pusch_nDMRS1, srs_BandwidthConfig, srs_SubframeConfig, pusch_p0_Nominal,
|
|
||||||
pucch_p0_Nominal, msg3_delta_Preamble, rach_numberOfRA_Preambles,
|
|
||||||
rach_sizeOfRA_PreamblesGroupA, rach_messageSizeGroupA,
|
|
||||||
rach_powerRampingStep, rach_preambleInitialReceivedTargetPower,
|
|
||||||
rach_preambleTransMax, rach_raResponseWindowSize,
|
|
||||||
rach_macContentionResolutionTimer, rach_maxHARQ_Msg3Tx,
|
|
||||||
pcch_defaultPagingCycle, bcch_modificationPeriodCoeff,
|
|
||||||
ue_TimersAndConstants_t300, ue_TimersAndConstants_t301,
|
|
||||||
ue_TimersAndConstants_t310, ue_TimersAndConstants_t311,
|
|
||||||
ue_TimersAndConstants_n310, ue_TimersAndConstants_n311,
|
|
||||||
ue_TransmissionMode;
|
|
||||||
|
|
||||||
int32_t ue_multiple_max = 0;
|
|
||||||
|
|
||||||
e_SL_CP_Len_r12 rxPool_sc_CP_Len;
|
|
||||||
e_SL_PeriodComm_r12 rxPool_sc_Period;
|
|
||||||
e_SL_CP_Len_r12 rxPool_data_CP_Len;
|
|
||||||
long rxPool_ResourceConfig_prb_Num;
|
|
||||||
long rxPool_ResourceConfig_prb_Start;
|
|
||||||
long rxPool_ResourceConfig_prb_End;
|
|
||||||
SL_OffsetIndicator_r12_PR rxPool_ResourceConfig_offsetIndicator_present;
|
|
||||||
long rxPool_ResourceConfig_offsetIndicator_choice;
|
|
||||||
SubframeBitmapSL_r12_PR rxPool_ResourceConfig_subframeBitmap_present;
|
|
||||||
char* rxPool_ResourceConfig_subframeBitmap_choice_bs_buf;
|
|
||||||
long rxPool_ResourceConfig_subframeBitmap_choice_bs_size;
|
|
||||||
long rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused;
|
|
||||||
|
|
||||||
//SIB19
|
|
||||||
//for discRxPool
|
|
||||||
SL_CP_Len_r12_t discRxPool_cp_Len;
|
|
||||||
e_SL_DiscResourcePool_r12__discPeriod_r12 discRxPool_discPeriod;
|
|
||||||
long discRxPool_numRetx;
|
|
||||||
long discRxPool_numRepetition;
|
|
||||||
long discRxPool_ResourceConfig_prb_Num;
|
|
||||||
long discRxPool_ResourceConfig_prb_Start;
|
|
||||||
long discRxPool_ResourceConfig_prb_End;
|
|
||||||
SL_OffsetIndicator_r12_PR discRxPool_ResourceConfig_offsetIndicator_present;
|
|
||||||
long discRxPool_ResourceConfig_offsetIndicator_choice;
|
|
||||||
SubframeBitmapSL_r12_PR discRxPool_ResourceConfig_subframeBitmap_present;
|
|
||||||
char* discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf;
|
|
||||||
long discRxPool_ResourceConfig_subframeBitmap_choice_bs_size;
|
|
||||||
long discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused;
|
|
||||||
//for discRxPoolPS
|
|
||||||
SL_CP_Len_r12_t discRxPoolPS_cp_Len;
|
|
||||||
e_SL_DiscResourcePool_r12__discPeriod_r12 discRxPoolPS_discPeriod;
|
|
||||||
long discRxPoolPS_numRetx;
|
|
||||||
long discRxPoolPS_numRepetition;
|
|
||||||
long discRxPoolPS_ResourceConfig_prb_Num;
|
|
||||||
long discRxPoolPS_ResourceConfig_prb_Start;
|
|
||||||
long discRxPoolPS_ResourceConfig_prb_End;
|
|
||||||
SL_OffsetIndicator_r12_PR discRxPoolPS_ResourceConfig_offsetIndicator_present;
|
|
||||||
long discRxPoolPS_ResourceConfig_offsetIndicator_choice;
|
|
||||||
SubframeBitmapSL_r12_PR discRxPoolPS_ResourceConfig_subframeBitmap_present;
|
|
||||||
char* discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_buf;
|
|
||||||
long discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_size;
|
|
||||||
long discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_bits_unused;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* get number of eNBs */
|
/* get number of eNBs */
|
||||||
paramdef_t ENBSParams[] = ENBSPARAMS_DESC;
|
paramdef_t ENBSParams[] = ENBSPARAMS_DESC;
|
||||||
config_get(ENBSParams, sizeof(ENBSParams)/sizeof(paramdef_t), NULL);
|
config_get(ENBSParams, sizeof(ENBSParams)/sizeof(paramdef_t), NULL);
|
||||||
num_enbs = ENBSParams[ENB_ACTIVE_ENBS_IDX].numelt;
|
uint16_t num_enbs = ENBSParams[ENB_ACTIVE_ENBS_IDX].numelt;
|
||||||
|
|
||||||
/* for eNB ID */
|
|
||||||
paramdef_t ENBParams[] = ENBPARAMS_DESC;
|
|
||||||
paramlist_def_t ENBParamList = {ENB_CONFIG_STRING_ENB_LIST, NULL, 0};
|
|
||||||
|
|
||||||
/* for Nid_cell */
|
|
||||||
checkedparam_t config_check_CCparams[] = CCPARAMS_CHECK;
|
|
||||||
paramdef_t CCsParams[] = CCPARAMS_DESC;
|
|
||||||
paramlist_def_t CCsParamList = {ENB_CONFIG_STRING_COMPONENT_CARRIERS, NULL, 0};
|
|
||||||
/* map parameter checking array instances to parameter definition array instances */
|
|
||||||
for (int I = 0; I < (sizeof(CCsParams) / sizeof(paramdef_t)); I++) {
|
|
||||||
CCsParams[I].chkPptr = &(config_check_CCparams[I]);
|
|
||||||
}
|
|
||||||
|
|
||||||
paramdef_t flexranParams[] = FLEXRANPARAMS_DESC;
|
paramdef_t flexranParams[] = FLEXRANPARAMS_DESC;
|
||||||
config_get(flexranParams, sizeof(flexranParams)/sizeof(paramdef_t), CONFIG_STRING_NETWORK_CONTROLLER_CONFIG);
|
config_get(flexranParams, sizeof(flexranParams)/sizeof(paramdef_t), CONFIG_STRING_NETWORK_CONTROLLER_CONFIG);
|
||||||
@@ -183,7 +84,7 @@ void RCconfig_flexran()
|
|||||||
num_enbs, sizeof(flexran_agent_info_t*));
|
num_enbs, sizeof(flexran_agent_info_t*));
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < num_enbs; i++) {
|
for (uint16_t i = 0; i < num_enbs; i++) {
|
||||||
RC.flexran[i] = calloc(1, sizeof(flexran_agent_info_t));
|
RC.flexran[i] = calloc(1, sizeof(flexran_agent_info_t));
|
||||||
AssertFatal(RC.flexran[i],
|
AssertFatal(RC.flexran[i],
|
||||||
"can't ALLOCATE %zu Bytes for flexran agent info (iteration %d/%d)\n",
|
"can't ALLOCATE %zu Bytes for flexran agent info (iteration %d/%d)\n",
|
||||||
@@ -200,36 +101,7 @@ void RCconfig_flexran()
|
|||||||
RC.flexran[i]->cache_name = strdup(*(flexranParams[FLEXRAN_CACHE_IDX].strptr));
|
RC.flexran[i]->cache_name = strdup(*(flexranParams[FLEXRAN_CACHE_IDX].strptr));
|
||||||
RC.flexran[i]->node_ctrl_state = strcasecmp(*(flexranParams[FLEXRAN_AWAIT_RECONF_IDX].strptr), "yes") == 0 ? ENB_WAIT : ENB_NORMAL_OPERATION;
|
RC.flexran[i]->node_ctrl_state = strcasecmp(*(flexranParams[FLEXRAN_AWAIT_RECONF_IDX].strptr), "yes") == 0 ? ENB_WAIT : ENB_NORMAL_OPERATION;
|
||||||
|
|
||||||
config_getlist(&ENBParamList, ENBParams, sizeof(ENBParams)/sizeof(paramdef_t),NULL);
|
RC.flexran[i]->mod_id = i;
|
||||||
/* eNB ID from configuration, as read in by RCconfig_RRC() */
|
|
||||||
if (!ENBParamList.paramarray[i][ENB_ENB_ID_IDX].uptr) {
|
|
||||||
// Calculate a default eNB ID
|
|
||||||
if (EPC_MODE_ENABLED)
|
|
||||||
enb_id = i + (s1ap_generate_eNB_id () & 0xFFFF8);
|
|
||||||
else
|
|
||||||
enb_id = i;
|
|
||||||
} else {
|
|
||||||
enb_id = *(ENBParamList.paramarray[i][ENB_ENB_ID_IDX].uptr);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* cell ID */
|
|
||||||
sprintf(aprefix, "%s.[%i]", ENB_CONFIG_STRING_ENB_LIST, i);
|
|
||||||
config_getlist(&CCsParamList, NULL, 0, aprefix);
|
|
||||||
if (CCsParamList.numelt > 0) {
|
|
||||||
sprintf(aprefix, "%s.[%i].%s.[%i]", ENB_CONFIG_STRING_ENB_LIST, i, ENB_CONFIG_STRING_COMPONENT_CARRIERS, 0);
|
|
||||||
config_get(CCsParams, sizeof(CCsParams)/sizeof(paramdef_t), aprefix);
|
|
||||||
Nid_cell_tr = (uint16_t) Nid_cell;
|
|
||||||
}
|
|
||||||
|
|
||||||
RC.flexran[i]->mod_id = i;
|
|
||||||
RC.flexran[i]->agent_id = (((uint64_t)i) << 48) | (((uint64_t)enb_id) << 16) | ((uint64_t)Nid_cell_tr);
|
|
||||||
|
|
||||||
/* assume for the moment the monolithic case, i.e. agent can provide
|
|
||||||
* information for all layers */
|
|
||||||
RC.flexran[i]->capability_mask = FLEXRAN_CAP_LOPHY | FLEXRAN_CAP_HIPHY
|
|
||||||
| FLEXRAN_CAP_LOMAC | FLEXRAN_CAP_HIMAC
|
|
||||||
| FLEXRAN_CAP_RLC | FLEXRAN_CAP_PDCP
|
|
||||||
| FLEXRAN_CAP_SDAP | FLEXRAN_CAP_RRC;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -162,8 +162,6 @@ typedef struct {
|
|||||||
char *cache_name;
|
char *cache_name;
|
||||||
|
|
||||||
mid_t mod_id;
|
mid_t mod_id;
|
||||||
uint64_t agent_id;
|
|
||||||
uint8_t capability_mask;
|
|
||||||
|
|
||||||
/* lock for waiting before starting or soft-restart */
|
/* lock for waiting before starting or soft-restart */
|
||||||
pthread_cond_t cond_node_ctrl;
|
pthread_cond_t cond_node_ctrl;
|
||||||
|
|||||||
Reference in New Issue
Block a user