Commit 9ceb3ddf authored by Ejaz Ahmed's avatar Ejaz Ahmed

Merge branch 'episys/sl-eurecom2' into episys/ea/fix_mac_subheaders_length_issue

parents 4e10e4fa 289991b0
...@@ -824,7 +824,13 @@ int nr_ue_process_sci2_indication_pdu(NR_UE_MAC_INST_t *mac, module_id_t mod_id, ...@@ -824,7 +824,13 @@ int nr_ue_process_sci2_indication_pdu(NR_UE_MAC_INST_t *mac, module_id_t mod_id,
sl_res_pool, sl_res_pool,
sl_mac_params); sl_mac_params);
rx_config.sl_rx_config_list[0].pdu_type = SL_NR_CONFIG_TYPE_RX_PSSCH_SLSCH; rx_config.sl_rx_config_list[0].pdu_type = SL_NR_CONFIG_TYPE_RX_PSSCH_SLSCH;
if (sci_pdu->csi_req) { sl_nr_phy_config_request_t *sl_cfg = &mac->SL_MAC_PARAMS->sl_phy_config.sl_config_req;
uint8_t mu = sl_cfg->sl_bwp_config.sl_scs;
uint8_t slots_per_frame = nr_slots_per_frame[mu];
if ((!mac->SL_MAC_PARAMS->sl_CSI_Acquisition) &&
(((slots_per_frame * frame + slot - mac->SL_MAC_PARAMS->slot_offset) % mac->SL_MAC_PARAMS->slot_periodicity) == 0) &&
sci_pdu->csi_req) {
sl_nr_phy_config_request_t *sl_cfg = &sl_mac_params->sl_phy_config.sl_config_req; sl_nr_phy_config_request_t *sl_cfg = &sl_mac_params->sl_phy_config.sl_config_req;
uint8_t mu = sl_cfg->sl_bwp_config.sl_scs; uint8_t mu = sl_cfg->sl_bwp_config.sl_scs;
nr_ue_sl_csi_rs_scheduler(mac, mu, mac->sl_bwp, NULL, &rx_config, NULL); nr_ue_sl_csi_rs_scheduler(mac, mu, mac->sl_bwp, NULL, &rx_config, NULL);
......
...@@ -245,20 +245,22 @@ static void prepare_NR_SL_ResourcePool(NR_SL_ResourcePool_r16_t *sl_res_pool, ...@@ -245,20 +245,22 @@ static void prepare_NR_SL_ResourcePool(NR_SL_ResourcePool_r16_t *sl_res_pool,
const uint8_t psfch_periods[] = {0,1,2,4}; const uint8_t psfch_periods[] = {0,1,2,4};
AssertFatal(*nr_sl_psfch_config->sl_PSFCH_Period_r16 < 4, "sl_PSFCH_Period_r16 index must be less than 4\n"); AssertFatal(*nr_sl_psfch_config->sl_PSFCH_Period_r16 < 4, "sl_PSFCH_Period_r16 index must be less than 4\n");
uint8_t psfch_period = psfch_periods[*nr_sl_psfch_config->sl_PSFCH_Period_r16]; uint8_t psfch_period = psfch_periods[*nr_sl_psfch_config->sl_PSFCH_Period_r16];
uint16_t prod_numCh_period = *sl_res_pool->sl_NumSubchannel_r16*psfch_period; if (psfch_period) {
uint16_t num_prbs = (*sl_res_pool->sl_RB_Number_r16 / prod_numCh_period) * prod_numCh_period; uint16_t prod_numCh_period = *sl_res_pool->sl_NumSubchannel_r16*psfch_period;
uint16_t num_bytes = (num_prbs % 8) ? (num_prbs / 8) + 1 : (num_prbs / 8); uint16_t num_prbs = (*sl_res_pool->sl_RB_Number_r16 / prod_numCh_period) * prod_numCh_period;
sl_res_pool->sl_PSFCH_Config_r16->choice.setup->sl_PSFCH_RB_Set_r16->size = num_bytes; uint16_t num_bytes = (num_prbs % 8) ? (num_prbs / 8) + 1 : (num_prbs / 8);
sl_res_pool->sl_PSFCH_Config_r16->choice.setup->sl_PSFCH_RB_Set_r16->size = num_bytes;
sl_res_pool->sl_PSFCH_Config_r16->choice.setup->sl_PSFCH_RB_Set_r16->bits_unused = (num_prbs % 8) ? 8 - (num_prbs % 8) : 0;
sl_res_pool->sl_PSFCH_Config_r16->choice.setup->sl_PSFCH_RB_Set_r16->buf = calloc(sl_res_pool->sl_PSFCH_Config_r16->choice.setup->sl_PSFCH_RB_Set_r16->size, sizeof(uint8_t)); sl_res_pool->sl_PSFCH_Config_r16->choice.setup->sl_PSFCH_RB_Set_r16->bits_unused = (num_prbs % 8) ? 8 - (num_prbs % 8) : 0;
memset(sl_res_pool->sl_PSFCH_Config_r16->choice.setup->sl_PSFCH_RB_Set_r16->buf, 0xFF, num_prbs / 8); sl_res_pool->sl_PSFCH_Config_r16->choice.setup->sl_PSFCH_RB_Set_r16->buf = calloc(sl_res_pool->sl_PSFCH_Config_r16->choice.setup->sl_PSFCH_RB_Set_r16->size, sizeof(uint8_t));
uint8_t remaining_prbs = 0; memset(sl_res_pool->sl_PSFCH_Config_r16->choice.setup->sl_PSFCH_RB_Set_r16->buf, 0xFF, num_prbs / 8);
for (int i = 8 - (num_prbs % 8); i < 8; i++) uint8_t remaining_prbs = 0;
remaining_prbs |= 1 << i; for (int i = 8 - (num_prbs % 8); i < 8; i++)
if ( num_prbs % 8 != 0 ) remaining_prbs |= 1 << i;
sl_res_pool->sl_PSFCH_Config_r16->choice.setup->sl_PSFCH_RB_Set_r16->buf[num_prbs/8] = remaining_prbs; if ( num_prbs % 8 != 0 )
LOG_D(RRC, "M: %d, PRBs %d, size in bytes %d, unused bits %d, full size bytes %d, remaining prbs %d\n", prod_numCh_period, num_prbs, num_bytes, (num_prbs % 8) ? 8 - (num_prbs % 8) : 0, num_prbs / 8, remaining_prbs); sl_res_pool->sl_PSFCH_Config_r16->choice.setup->sl_PSFCH_RB_Set_r16->buf[num_prbs/8] = remaining_prbs;
LOG_D(RRC, "M: %d, PRBs %d, size in bytes %d, unused bits %d, full size bytes %d, remaining prbs %d\n", prod_numCh_period, num_prbs, num_bytes, (num_prbs % 8) ? 8 - (num_prbs % 8) : 0, num_prbs / 8, remaining_prbs);
}
} }
static void prepare_NR_SL_BWPConfigCommon(NR_SL_BWP_ConfigCommon_r16_t *sl_bwp, static void prepare_NR_SL_BWPConfigCommon(NR_SL_BWP_ConfigCommon_r16_t *sl_bwp,
......
...@@ -8,7 +8,7 @@ SIDELINK_PRECONFIGURATION = ( ...@@ -8,7 +8,7 @@ SIDELINK_PRECONFIGURATION = (
sl_nrofUplinkSymbols = 4; sl_nrofUplinkSymbols = 4;
sl_csi_rs = ( sl_csi_rs = (
{ {
symb_l0 = 4; symb_l0 = 5;
# csi_type 2 is not supported 38211, 8.4.1.5.3 # csi_type 2 is not supported 38211, 8.4.1.5.3
csi_Type = 1; csi_Type = 1;
sl_powerControlOffset = 1; sl_powerControlOffset = 1;
...@@ -16,7 +16,7 @@ SIDELINK_PRECONFIGURATION = ( ...@@ -16,7 +16,7 @@ SIDELINK_PRECONFIGURATION = (
slot_Offset = 0; slot_Offset = 0;
slot_Periodicity = 4; slot_Periodicity = 4;
# Indicates if CSI Reporting is enabled in UNICAST. is 0-ENABLED, 1-DISABLED # Indicates if CSI Reporting is enabled in UNICAST. is 0-ENABLED, 1-DISABLED
sl_CSI_Acquisition = 0; sl_CSI_Acquisition = 1;
} }
); );
sl_FrequencyCommonConfig = ( sl_FrequencyCommonConfig = (
...@@ -38,9 +38,10 @@ SIDELINK_PRECONFIGURATION = ( ...@@ -38,9 +38,10 @@ SIDELINK_PRECONFIGURATION = (
{ {
#RB start 0, RB size = 106. occupies complete Bw. #RB start 0, RB size = 106. occupies complete Bw.
sl_locationAndBandwidth = 28875; sl_locationAndBandwidth = 28875;
#Num Symbols used for Sidelink in an uplink slot # Num Symbols used for Sidelink in an uplink slot
#Value can be between symbols 7 to 14 # Herein, sl_LengthSymbols represents an index; not the number of symbols.
sl_LengthSymbols = 7; # This index value can be from 0 to 7 representing the (7 to 14 symbols)
sl_LengthSymbols = 5;
#Sidelink Starting symbol in a slot #Sidelink Starting symbol in a slot
#Value can be between symbols 0 to 7 #Value can be between symbols 0 to 7
sl_StartSymbol = 0; sl_StartSymbol = 0;
...@@ -76,7 +77,7 @@ SIDELINK_PRECONFIGURATION = ( ...@@ -76,7 +77,7 @@ SIDELINK_PRECONFIGURATION = (
sl_NumSubchannel = 1; sl_NumSubchannel = 1;
# period of PSFCH resource in units of slots within this resource pool # period of PSFCH resource in units of slots within this resource pool
# Possible values sl0 means no PSFCH resource, {sl0, sl1, sl2, sl4} # Possible values sl0 means no PSFCH resource, {sl0, sl1, sl2, sl4}
sl_PSFCH_Period = 3; //sl4 sl_PSFCH_Period = 0; //sl0
# Number of cyclic shift pairs used for a PSFCH transmission that can be multiplexed in a PRB # Number of cyclic shift pairs used for a PSFCH transmission that can be multiplexed in a PRB
# Possible values {n1, n2, n3, n4} # Possible values {n1, n2, n3, n4}
sl_NumMuxCS_Pair = 1; sl_NumMuxCS_Pair = 1;
...@@ -107,7 +108,7 @@ SIDELINK_PRECONFIGURATION = ( ...@@ -107,7 +108,7 @@ SIDELINK_PRECONFIGURATION = (
sl_NumSubchannel = 1; sl_NumSubchannel = 1;
# period of PSFCH resource in units of slots within this resource pool # period of PSFCH resource in units of slots within this resource pool
# Possible values sl0 means no PSFCH resource, {sl0, sl1, sl2, sl4} # Possible values sl0 means no PSFCH resource, {sl0, sl1, sl2, sl4}
sl_PSFCH_Period = 3; //sl4 sl_PSFCH_Period = 0; //sl0
# Number of cyclic shift pairs used for a PSFCH transmission that can be multiplexed in a PRB # Number of cyclic shift pairs used for a PSFCH transmission that can be multiplexed in a PRB
# Possible values {n1, n2, n3, n4} # Possible values {n1, n2, n3, n4}
sl_NumMuxCS_Pair = 1; sl_NumMuxCS_Pair = 1;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment