rewrite to improve readability
This commit is contained in:
@@ -927,7 +927,9 @@ void program_dlsch_acknak(module_id_t module_idP, int CC_idP,int UE_idP, frame_t
|
|||||||
if ((UE_list->UE_template[CC_idP][UE_idP].physicalConfigDedicated->ext2) &&
|
if ((UE_list->UE_template[CC_idP][UE_idP].physicalConfigDedicated->ext2) &&
|
||||||
(UE_list->UE_template[CC_idP][UE_idP].physicalConfigDedicated->ext2->pucch_ConfigDedicated_v1020) &&
|
(UE_list->UE_template[CC_idP][UE_idP].physicalConfigDedicated->ext2->pucch_ConfigDedicated_v1020) &&
|
||||||
(UE_list->UE_template[CC_idP][UE_idP].physicalConfigDedicated->ext2->pucch_ConfigDedicated_v1020->simultaneousPUCCH_PUSCH_r10) &&
|
(UE_list->UE_template[CC_idP][UE_idP].physicalConfigDedicated->ext2->pucch_ConfigDedicated_v1020->simultaneousPUCCH_PUSCH_r10) &&
|
||||||
(*UE_list->UE_template[CC_idP][UE_idP].physicalConfigDedicated->ext2->pucch_ConfigDedicated_v1020->simultaneousPUCCH_PUSCH_r10 == PUCCH_ConfigDedicated_v1020__simultaneousPUCCH_PUSCH_r10_true)) use_simultaneous_pucch_pusch=1;
|
(*UE_list->UE_template[CC_idP][UE_idP].physicalConfigDedicated->ext2->pucch_ConfigDedicated_v1020->simultaneousPUCCH_PUSCH_r10 ==
|
||||||
|
PUCCH_ConfigDedicated_v1020__simultaneousPUCCH_PUSCH_r10_true))
|
||||||
|
use_simultaneous_pucch_pusch=1;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// pucch1 and pusch feedback is similar, namely in n+k subframes from now
|
// pucch1 and pusch feedback is similar, namely in n+k subframes from now
|
||||||
@@ -949,23 +951,22 @@ void program_dlsch_acknak(module_id_t module_idP, int CC_idP,int UE_idP, frame_t
|
|||||||
(frameP*10)+subframeP,
|
(frameP*10)+subframeP,
|
||||||
cce_idx);
|
cce_idx);
|
||||||
}
|
}
|
||||||
else { // there is already an existing UL grant so update it if needed
|
else {
|
||||||
// on top of some other UL resource (PUSCH,combined SR/CQI/HARQ on PUCCH, etc)
|
/* there is already an existing UL grant so update it if needed
|
||||||
|
* on top of some other UL resource (PUSCH,combined SR/CQI/HARQ on PUCCH, etc)
|
||||||
|
*/
|
||||||
switch(ul_config_pdu->pdu_type) {
|
switch(ul_config_pdu->pdu_type) {
|
||||||
|
|
||||||
|
/* [ulsch] to [ulsch + harq] or [ulsch + harq on pucch] */
|
||||||
|
|
||||||
case NFAPI_UL_CONFIG_ULSCH_PDU_TYPE:
|
case NFAPI_UL_CONFIG_ULSCH_PDU_TYPE:
|
||||||
case NFAPI_UL_CONFIG_ULSCH_HARQ_PDU_TYPE:
|
|
||||||
case NFAPI_UL_CONFIG_ULSCH_UCI_HARQ_PDU_TYPE:
|
|
||||||
if (use_simultaneous_pucch_pusch==1) {
|
if (use_simultaneous_pucch_pusch==1) {
|
||||||
AssertFatal(ul_config_pdu->pdu_type!=NFAPI_UL_CONFIG_ULSCH_HARQ_PDU_TYPE,
|
|
||||||
"Cannot be NFAPI_UL_CONFIG_ULSCH_HARQ_PDU_TYPE, simultaneous_pucch_pusch is active\n");
|
|
||||||
// Convert it to an NFAPI_UL_CONFIG_ULSCH_UCI_HARQ_PDU_TYPE
|
// Convert it to an NFAPI_UL_CONFIG_ULSCH_UCI_HARQ_PDU_TYPE
|
||||||
harq_information = &ul_config_pdu->ulsch_uci_harq_pdu.harq_information;
|
harq_information = &ul_config_pdu->ulsch_uci_harq_pdu.harq_information;
|
||||||
ul_config_pdu->pdu_type = NFAPI_UL_CONFIG_ULSCH_UCI_HARQ_PDU_TYPE;
|
ul_config_pdu->pdu_type = NFAPI_UL_CONFIG_ULSCH_UCI_HARQ_PDU_TYPE;
|
||||||
LOG_D(MAC,"Frame %d, Subframe %d: Switched UCI HARQ to ULSCH UCI HARQ\n",frameP,subframeP);
|
LOG_D(MAC,"Frame %d, Subframe %d: Switched UCI HARQ to ULSCH UCI HARQ\n",frameP,subframeP);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
AssertFatal(ul_config_pdu->pdu_type!=NFAPI_UL_CONFIG_ULSCH_UCI_HARQ_PDU_TYPE,
|
|
||||||
"Cannot be NFAPI_UL_CONFIG_ULSCH_UCI_PDU_TYPE, simultaneous_pucch_pusch is inactive\n");
|
|
||||||
// Convert it to an NFAPI_UL_CONFIG_ULSCH_HARQ_PDU_TYPE
|
// Convert it to an NFAPI_UL_CONFIG_ULSCH_HARQ_PDU_TYPE
|
||||||
ulsch_harq_information = &ul_config_pdu->ulsch_harq_pdu.harq_information;
|
ulsch_harq_information = &ul_config_pdu->ulsch_harq_pdu.harq_information;
|
||||||
ul_config_pdu->pdu_type = NFAPI_UL_CONFIG_ULSCH_HARQ_PDU_TYPE;
|
ul_config_pdu->pdu_type = NFAPI_UL_CONFIG_ULSCH_HARQ_PDU_TYPE;
|
||||||
@@ -975,52 +976,80 @@ void program_dlsch_acknak(module_id_t module_idP, int CC_idP,int UE_idP, frame_t
|
|||||||
LOG_D(MAC,"Frame %d, Subframe %d: Switched UCI HARQ to ULSCH HARQ\n",frameP,subframeP);
|
LOG_D(MAC,"Frame %d, Subframe %d: Switched UCI HARQ to ULSCH HARQ\n",frameP,subframeP);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case NFAPI_UL_CONFIG_ULSCH_CQI_RI_PDU_TYPE:
|
case NFAPI_UL_CONFIG_ULSCH_HARQ_PDU_TYPE:
|
||||||
case NFAPI_UL_CONFIG_ULSCH_CQI_HARQ_RI_PDU_TYPE:
|
AssertFatal(use_simultaneous_pucch_pusch == 1,
|
||||||
case NFAPI_UL_CONFIG_ULSCH_UCI_CSI_PDU_TYPE:
|
"Cannot be NFAPI_UL_CONFIG_ULSCH_HARQ_PDU_TYPE, simultaneous_pucch_pusch is active");
|
||||||
case NFAPI_UL_CONFIG_ULSCH_CSI_UCI_HARQ_PDU_TYPE:
|
break;
|
||||||
if (use_simultaneous_pucch_pusch==1) {
|
case NFAPI_UL_CONFIG_ULSCH_UCI_HARQ_PDU_TYPE:
|
||||||
AssertFatal(ul_config_pdu->pdu_type==NFAPI_UL_CONFIG_ULSCH_UCI_CSI_PDU_TYPE ||
|
AssertFatal(use_simultaneous_pucch_pusch == 0,
|
||||||
ul_config_pdu->pdu_type==NFAPI_UL_CONFIG_ULSCH_CSI_UCI_HARQ_PDU_TYPE,
|
"Cannot be NFAPI_UL_CONFIG_ULSCH_UCI_PDU_TYPE, simultaneous_pucch_pusch is inactive\n");
|
||||||
"Cannot be NFAPI_UL_CONFIG_ULSCH_CQI_RI_xxx_PDU_TYPE, simultaneous_pucch_pusch is active\n");
|
|
||||||
// convert it to an NFAPI_UL_CONFIG_ULSCH_CSI_UCI_HARQ_PDU_TYPE
|
|
||||||
harq_information = &ul_config_pdu->ulsch_csi_uci_harq_pdu.harq_information;
|
|
||||||
ul_config_pdu->pdu_type = NFAPI_UL_CONFIG_ULSCH_CSI_UCI_HARQ_PDU_TYPE;
|
|
||||||
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
AssertFatal(ul_config_pdu->pdu_type==NFAPI_UL_CONFIG_ULSCH_CQI_RI_PDU_TYPE ||
|
|
||||||
ul_config_pdu->pdu_type==NFAPI_UL_CONFIG_ULSCH_CQI_HARQ_RI_PDU_TYPE,
|
|
||||||
"Cannot be NFAPI_UL_CONFIG_ULSCH_UCI_xxx_PDU_TYPE, simultaneous_pucch_pusch is inactive\n");
|
|
||||||
// Convert it to an NFAPI_UL_CONFIG_ULSCH_CQI_RI_HARQ_PDU_TYPE
|
|
||||||
ulsch_harq_information = &ul_config_pdu->ulsch_cqi_harq_ri_pdu.harq_information;
|
|
||||||
ul_config_pdu->pdu_type = NFAPI_UL_CONFIG_ULSCH_CQI_HARQ_RI_PDU_TYPE;
|
|
||||||
ul_config_pdu->ulsch_cqi_harq_ri_pdu.initial_transmission_parameters.initial_transmission_parameters_rel8.n_srs_initial=0; // last symbol not punctured
|
|
||||||
ul_config_pdu->ulsch_cqi_harq_ri_pdu.initial_transmission_parameters.initial_transmission_parameters_rel8.initial_number_of_resource_blocks=
|
|
||||||
ul_config_pdu->ulsch_harq_pdu.ulsch_pdu.ulsch_pdu_rel8.number_of_resource_blocks; // we don't change the number of resource blocks across retransmissions yet
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
/* [ulsch + cqi] to [ulsch + cqi + harq] */
|
||||||
|
|
||||||
|
case NFAPI_UL_CONFIG_ULSCH_CQI_RI_PDU_TYPE:
|
||||||
|
// Convert it to an NFAPI_UL_CONFIG_ULSCH_CQI_HARQ_RI_PDU_TYPE
|
||||||
|
ulsch_harq_information = &ul_config_pdu->ulsch_cqi_harq_ri_pdu.harq_information;
|
||||||
|
ul_config_pdu->pdu_type = NFAPI_UL_CONFIG_ULSCH_CQI_HARQ_RI_PDU_TYPE;
|
||||||
|
/* TODO: check this - when converting from nfapi_ul_config_ulsch_cqi_ri_pdu to
|
||||||
|
* nfapi_ul_config_ulsch_cqi_harq_ri_pdu, shouldn't we copy initial_transmission_parameters
|
||||||
|
* from the one to the other?
|
||||||
|
* Those two types are not compatible. 'initial_transmission_parameters' is not at the
|
||||||
|
* place in both.
|
||||||
|
*/
|
||||||
|
ul_config_pdu->ulsch_cqi_harq_ri_pdu.initial_transmission_parameters.initial_transmission_parameters_rel8.n_srs_initial=0; // last symbol not punctured
|
||||||
|
ul_config_pdu->ulsch_cqi_harq_ri_pdu.initial_transmission_parameters.initial_transmission_parameters_rel8.initial_number_of_resource_blocks=
|
||||||
|
ul_config_pdu->ulsch_harq_pdu.ulsch_pdu.ulsch_pdu_rel8.number_of_resource_blocks; // we don't change the number of resource blocks across retransmissions yet
|
||||||
|
break;
|
||||||
|
case NFAPI_UL_CONFIG_ULSCH_CQI_HARQ_RI_PDU_TYPE:
|
||||||
|
AssertFatal(use_simultaneous_pucch_pusch == 0,
|
||||||
|
"Cannot be NFAPI_UL_CONFIG_ULSCH_CQI_HARQ_RI_PDU_TYPE, simultaneous_pucch_pusch is active\n");
|
||||||
|
break;
|
||||||
|
|
||||||
|
/* [ulsch + cqi on pucch] to [ulsch + cqi on pucch + harq on pucch] */
|
||||||
|
|
||||||
|
case NFAPI_UL_CONFIG_ULSCH_UCI_CSI_PDU_TYPE:
|
||||||
|
// convert it to an NFAPI_UL_CONFIG_ULSCH_CSI_UCI_HARQ_PDU_TYPE
|
||||||
|
harq_information = &ul_config_pdu->ulsch_csi_uci_harq_pdu.harq_information;
|
||||||
|
ul_config_pdu->pdu_type = NFAPI_UL_CONFIG_ULSCH_CSI_UCI_HARQ_PDU_TYPE;
|
||||||
|
break;
|
||||||
|
case NFAPI_UL_CONFIG_ULSCH_CSI_UCI_HARQ_PDU_TYPE:
|
||||||
|
AssertFatal(use_simultaneous_pucch_pusch == 1,
|
||||||
|
"Cannot be NFAPI_UL_CONFIG_ULSCH_CSI_UCI_HARQ_PDU_TYPE, simultaneous_pucch_pusch is inactive\n");
|
||||||
|
break;
|
||||||
|
|
||||||
|
/* [sr] to [sr + harq] */
|
||||||
|
|
||||||
case NFAPI_UL_CONFIG_UCI_SR_PDU_TYPE:
|
case NFAPI_UL_CONFIG_UCI_SR_PDU_TYPE:
|
||||||
case NFAPI_UL_CONFIG_UCI_SR_HARQ_PDU_TYPE:
|
// convert to NFAPI_UL_CONFIG_UCI_SR_HARQ_PDU_TYPE
|
||||||
// convert/keep it to NFAPI_UL_CONFIG_UCI_SR_HARQ_PDU_TYPE
|
|
||||||
ul_config_pdu->pdu_type = NFAPI_UL_CONFIG_UCI_SR_HARQ_PDU_TYPE;
|
ul_config_pdu->pdu_type = NFAPI_UL_CONFIG_UCI_SR_HARQ_PDU_TYPE;
|
||||||
harq_information = &ul_config_pdu->uci_sr_harq_pdu.harq_information;
|
harq_information = &ul_config_pdu->uci_sr_harq_pdu.harq_information;
|
||||||
break;
|
break;
|
||||||
|
case NFAPI_UL_CONFIG_UCI_SR_HARQ_PDU_TYPE:
|
||||||
|
/* nothing to do */
|
||||||
|
break;
|
||||||
|
|
||||||
|
/* [cqi] to [cqi + harq] */
|
||||||
|
|
||||||
case NFAPI_UL_CONFIG_UCI_CQI_PDU_TYPE:
|
case NFAPI_UL_CONFIG_UCI_CQI_PDU_TYPE:
|
||||||
case NFAPI_UL_CONFIG_UCI_CQI_HARQ_PDU_TYPE:
|
// convert to NFAPI_UL_CONFIG_UCI_CQI_HARQ_PDU_TYPE
|
||||||
// convert/keep it to NFAPI_UL_CONFIG_UCI_CQI_HARQ_PDU_TYPE
|
|
||||||
ul_config_pdu->pdu_type = NFAPI_UL_CONFIG_UCI_CQI_HARQ_PDU_TYPE;
|
ul_config_pdu->pdu_type = NFAPI_UL_CONFIG_UCI_CQI_HARQ_PDU_TYPE;
|
||||||
harq_information = &ul_config_pdu->uci_cqi_harq_pdu.harq_information;
|
harq_information = &ul_config_pdu->uci_cqi_harq_pdu.harq_information;
|
||||||
break;
|
break;
|
||||||
|
case NFAPI_UL_CONFIG_UCI_CQI_HARQ_PDU_TYPE:
|
||||||
|
/* nothing to do */
|
||||||
|
break;
|
||||||
|
|
||||||
|
/* [cqi + sr] to [cqr + sr + harq] */
|
||||||
|
|
||||||
case NFAPI_UL_CONFIG_UCI_CQI_SR_PDU_TYPE:
|
case NFAPI_UL_CONFIG_UCI_CQI_SR_PDU_TYPE:
|
||||||
case NFAPI_UL_CONFIG_UCI_CQI_SR_HARQ_PDU_TYPE:
|
// convert to NFAPI_UL_CONFIG_UCI_CQI_SR_HARQ_PDU_TYPE
|
||||||
// convert/keep it to NFAPI_UL_CONFIG_UCI_CQI_SR_HARQ_PDU_TYPE
|
|
||||||
ul_config_pdu->pdu_type = NFAPI_UL_CONFIG_UCI_CQI_SR_HARQ_PDU_TYPE;
|
ul_config_pdu->pdu_type = NFAPI_UL_CONFIG_UCI_CQI_SR_HARQ_PDU_TYPE;
|
||||||
harq_information = &ul_config_pdu->uci_cqi_sr_harq_pdu.harq_information;
|
harq_information = &ul_config_pdu->uci_cqi_sr_harq_pdu.harq_information;
|
||||||
break;
|
break;
|
||||||
|
case NFAPI_UL_CONFIG_UCI_CQI_SR_HARQ_PDU_TYPE:
|
||||||
|
/* nothing to do */
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1308,10 +1337,8 @@ void fill_nfapi_ulsch_config_request_rel8(nfapi_ul_config_request_pdu_t *ul_con
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
memset((void*)ul_config_pdu,0,sizeof(nfapi_ul_config_request_pdu_t));
|
memset((void*)ul_config_pdu,0,sizeof(nfapi_ul_config_request_pdu_t));
|
||||||
if (cqi_req==0)
|
|
||||||
ul_config_pdu->pdu_type = NFAPI_UL_CONFIG_ULSCH_PDU_TYPE;
|
ul_config_pdu->pdu_type = NFAPI_UL_CONFIG_ULSCH_PDU_TYPE;
|
||||||
else
|
|
||||||
ul_config_pdu->pdu_type = NFAPI_UL_CONFIG_ULSCH_CQI_RI_PDU_TYPE;
|
|
||||||
ul_config_pdu->pdu_size = (uint8_t)(2+sizeof(nfapi_ul_config_ulsch_pdu));
|
ul_config_pdu->pdu_size = (uint8_t)(2+sizeof(nfapi_ul_config_ulsch_pdu));
|
||||||
ul_config_pdu->ulsch_pdu.ulsch_pdu_rel8.handle = handle;
|
ul_config_pdu->ulsch_pdu.ulsch_pdu_rel8.handle = handle;
|
||||||
ul_config_pdu->ulsch_pdu.ulsch_pdu_rel8.rnti = rnti;
|
ul_config_pdu->ulsch_pdu.ulsch_pdu_rel8.rnti = rnti;
|
||||||
@@ -1330,12 +1357,10 @@ void fill_nfapi_ulsch_config_request_rel8(nfapi_ul_config_request_pdu_t *ul_con
|
|||||||
ul_config_pdu->ulsch_pdu.ulsch_pdu_rel8.current_tx_nb = current_tx_nb;
|
ul_config_pdu->ulsch_pdu.ulsch_pdu_rel8.current_tx_nb = current_tx_nb;
|
||||||
ul_config_pdu->ulsch_pdu.ulsch_pdu_rel8.n_srs = n_srs;
|
ul_config_pdu->ulsch_pdu.ulsch_pdu_rel8.n_srs = n_srs;
|
||||||
ul_config_pdu->ulsch_pdu.ulsch_pdu_rel8.size = size;
|
ul_config_pdu->ulsch_pdu.ulsch_pdu_rel8.size = size;
|
||||||
|
|
||||||
if (cqi_req == 1) {
|
|
||||||
// Add CQI portion
|
|
||||||
|
|
||||||
|
if (cqi_req == 1) {
|
||||||
ul_config_pdu->pdu_type = NFAPI_UL_CONFIG_ULSCH_CQI_RI_PDU_TYPE;
|
// Add CQI portion
|
||||||
|
ul_config_pdu->pdu_type = NFAPI_UL_CONFIG_ULSCH_CQI_RI_PDU_TYPE;
|
||||||
ul_config_pdu->pdu_size = (uint8_t)(2+sizeof(nfapi_ul_config_ulsch_cqi_ri_pdu));
|
ul_config_pdu->pdu_size = (uint8_t)(2+sizeof(nfapi_ul_config_ulsch_cqi_ri_pdu));
|
||||||
ul_config_pdu->ulsch_cqi_ri_pdu.cqi_ri_information.cqi_ri_information_rel9.report_type = 1;
|
ul_config_pdu->ulsch_cqi_ri_pdu.cqi_ri_information.cqi_ri_information_rel9.report_type = 1;
|
||||||
ul_config_pdu->ulsch_cqi_ri_pdu.cqi_ri_information.cqi_ri_information_rel9.aperiodic_cqi_pmi_ri_report.number_of_cc = 1;
|
ul_config_pdu->ulsch_cqi_ri_pdu.cqi_ri_information.cqi_ri_information_rel9.aperiodic_cqi_pmi_ri_report.number_of_cc = 1;
|
||||||
|
|||||||
Reference in New Issue
Block a user