NR UE: don't use downlink_frequency[cc_idP][0] and uplink_frequency_offset[cc_idP][0] in MAC, store mac->dl_frequency instead
This commit is contained in:
@@ -338,6 +338,7 @@ int main(int argc, char **argv)
|
|||||||
uint16_t nr_band = get_softmodem_params()->band;
|
uint16_t nr_band = get_softmodem_params()->band;
|
||||||
mac->nr_band = nr_band;
|
mac->nr_band = nr_band;
|
||||||
mac->ssb_start_subcarrier = UE_CC->frame_parms.ssb_start_subcarrier;
|
mac->ssb_start_subcarrier = UE_CC->frame_parms.ssb_start_subcarrier;
|
||||||
|
mac->dl_frequency = downlink_frequency[CC_id][0];
|
||||||
nr_init_frame_parms_ue_sa(&UE_CC->frame_parms,
|
nr_init_frame_parms_ue_sa(&UE_CC->frame_parms,
|
||||||
downlink_frequency[CC_id][0],
|
downlink_frequency[CC_id][0],
|
||||||
uplink_frequency_offset[CC_id][0],
|
uplink_frequency_offset[CC_id][0],
|
||||||
|
|||||||
@@ -150,7 +150,7 @@ static void config_common_ue_sa(NR_UE_MAC_INST_t *mac, NR_ServingCellConfigCommo
|
|||||||
// Initial cell selection: derive from command-line parameter
|
// Initial cell selection: derive from command-line parameter
|
||||||
uint64_t dl_bw_khz = (12 * frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->carrierBandwidth) *
|
uint64_t dl_bw_khz = (12 * frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->carrierBandwidth) *
|
||||||
(15 << frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing);
|
(15 << frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing);
|
||||||
cfg->carrier_config.dl_frequency = (downlink_frequency[cc_idP][0]/1000) - (dl_bw_khz>>1);
|
cfg->carrier_config.dl_frequency = mac->dl_frequency / 1000 - (dl_bw_khz >> 1);
|
||||||
LOG_I(NR_MAC,
|
LOG_I(NR_MAC,
|
||||||
"[UE %d] Initial cell selection: dl_frequency=%u kHz (from command-line, band=%d, scs=%ld)\n",
|
"[UE %d] Initial cell selection: dl_frequency=%u kHz (from command-line, band=%d, scs=%ld)\n",
|
||||||
mac->ue_id,
|
mac->ue_id,
|
||||||
@@ -180,19 +180,28 @@ static void config_common_ue_sa(NR_UE_MAC_INST_t *mac, NR_ServingCellConfigCommo
|
|||||||
cfg->carrier_config.uplink_bandwidth = get_supported_bw_mhz(mac->frequency_range, bw_index);
|
cfg->carrier_config.uplink_bandwidth = get_supported_bw_mhz(mac->frequency_range, bw_index);
|
||||||
|
|
||||||
/** Only set UL frequency if not already initialized (e.g., from handover reconfigurationWithSync)
|
/** Only set UL frequency if not already initialized (e.g., from handover reconfigurationWithSync)
|
||||||
* MAC maintains its own frequency state, don't overwrite it with command-line parameter which
|
* MAC maintains its own frequency state, don't overwrite it with command-line parameter which
|
||||||
* is related to the initial cell selection. */
|
* is related to the initial cell selection. */
|
||||||
if (cfg->carrier_config.uplink_frequency == 0) {
|
if (cfg->carrier_config.uplink_frequency == 0) {
|
||||||
// Initial cell selection: derive from DL frequency
|
// Initial cell selection: derive from DL frequency or frequencyInfoUL->absoluteFrequencyPointA
|
||||||
LOG_I(NR_MAC,
|
if (frequencyInfoUL->absoluteFrequencyPointA == NULL) {
|
||||||
"Initial cell selection: uplink_frequency=%u kHz (from dl_frequency=%u kHz, uplink_frequency_offset=%u kHz)\n",
|
|
||||||
cfg->carrier_config.uplink_frequency,
|
|
||||||
cfg->carrier_config.dl_frequency,
|
|
||||||
uplink_frequency_offset[cc_idP][0]);
|
|
||||||
if (frequencyInfoUL->absoluteFrequencyPointA == NULL)
|
|
||||||
cfg->carrier_config.uplink_frequency = cfg->carrier_config.dl_frequency;
|
cfg->carrier_config.uplink_frequency = cfg->carrier_config.dl_frequency;
|
||||||
else
|
LOG_I(NR_MAC,
|
||||||
cfg->carrier_config.uplink_frequency = cfg->carrier_config.dl_frequency + (uplink_frequency_offset[cc_idP][0] / 1000);
|
"Initial cell selection: uplink_frequency=%u kHz (from dl_frequency=%u kHz)\n",
|
||||||
|
cfg->carrier_config.uplink_frequency,
|
||||||
|
cfg->carrier_config.dl_frequency);
|
||||||
|
} else {
|
||||||
|
cfg->carrier_config.uplink_frequency = from_nrarfcn(*frequencyInfoUL->frequencyBandList->list.array[0]->freqBandIndicatorNR,
|
||||||
|
frequencyInfoUL->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing,
|
||||||
|
*frequencyInfoUL->absoluteFrequencyPointA)
|
||||||
|
/ 1000; // freq in kHz
|
||||||
|
LOG_I(NR_MAC,
|
||||||
|
"Initial cell selection: uplink_frequency=%u kHz (from absoluteFrequencyPointA=%ld, band=%ld, scs=%ld)\n",
|
||||||
|
cfg->carrier_config.uplink_frequency,
|
||||||
|
*frequencyInfoUL->absoluteFrequencyPointA,
|
||||||
|
*frequencyInfoUL->frequencyBandList->list.array[0]->freqBandIndicatorNR,
|
||||||
|
frequencyInfoUL->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < 5; i++) {
|
for (int i = 0; i < 5; i++) {
|
||||||
|
|||||||
@@ -615,6 +615,7 @@ typedef struct NR_UE_MAC_INST_s {
|
|||||||
uint16_t nr_band;
|
uint16_t nr_band;
|
||||||
uint8_t ssb_subcarrier_offset;
|
uint8_t ssb_subcarrier_offset;
|
||||||
int ssb_start_subcarrier;
|
int ssb_start_subcarrier;
|
||||||
|
uint64_t dl_frequency;
|
||||||
int numerology;
|
int numerology;
|
||||||
|
|
||||||
NR_SSB_meas_t ssb_measurements[MAX_NB_SSB];
|
NR_SSB_meas_t ssb_measurements[MAX_NB_SSB];
|
||||||
|
|||||||
Reference in New Issue
Block a user