mirror of https://github.com/PentHertz/srsLTE.git
Reduced maximum number of CSI reports
This commit is contained in:
parent
bbacd47e02
commit
95bf85b3d3
|
@ -39,7 +39,7 @@ srsran_csi_new_nzp_csi_rs_measurement(const srsran_csi_hl_resource_cfg_t csi_res
|
|||
*/
|
||||
SRSRAN_API int srsran_csi_reports_generate(const srsran_csi_hl_cfg_t* cfg,
|
||||
const srsran_slot_cfg_t* slot_cfg,
|
||||
srsran_csi_report_cfg_t report_cfg[SRSRAN_CSI_MAX_NOF_REPORT]);
|
||||
srsran_csi_report_cfg_t report_cfg[SRSRAN_CSI_SLOT_MAX_NOF_REPORT]);
|
||||
|
||||
/**
|
||||
* @brief Quantifies a given set of CSI reports from the given set of measurements
|
||||
|
@ -49,9 +49,9 @@ SRSRAN_API int srsran_csi_reports_generate(const srsran_csi_hl_cfg_t* cfg,
|
|||
* @return The number CSI reports for transmission if the provided data is valid, SRSRAN_ERROR code otherwise
|
||||
*/
|
||||
SRSRAN_API int
|
||||
srsran_csi_reports_quantify(const srsran_csi_report_cfg_t reports[SRSRAN_CSI_MAX_NOF_REPORT],
|
||||
srsran_csi_reports_quantify(const srsran_csi_report_cfg_t reports[SRSRAN_CSI_SLOT_MAX_NOF_REPORT],
|
||||
const srsran_csi_channel_measurements_t measurements[SRSRAN_CSI_MAX_NOF_RESOURCES],
|
||||
srsran_csi_report_value_t report_value[SRSRAN_CSI_MAX_NOF_REPORT]);
|
||||
srsran_csi_report_value_t report_value[SRSRAN_CSI_SLOT_MAX_NOF_REPORT]);
|
||||
|
||||
/**
|
||||
* @brief Compute number of CSI bits necessary to transmit all the CSI reports for a PUCCH transmission
|
||||
|
|
|
@ -22,6 +22,11 @@
|
|||
*/
|
||||
#define SRSRAN_CSI_MAX_NOF_REPORT 48
|
||||
|
||||
/**
|
||||
* @brief Maximum number of supported simultaneous CSI reports in a single slot transmission
|
||||
*/
|
||||
#define SRSRAN_CSI_SLOT_MAX_NOF_REPORT 2
|
||||
|
||||
/**
|
||||
* @brief Maximum number of CSI-RS resources defined in TS 38.331 maxNrofCSI-ResourceConfigurations
|
||||
*/
|
||||
|
@ -193,13 +198,4 @@ typedef struct SRSRAN_API {
|
|||
};
|
||||
} srsran_csi_report_value_t;
|
||||
|
||||
/**
|
||||
* @brief Complete report configuration and value
|
||||
*/
|
||||
typedef struct SRSRAN_API {
|
||||
srsran_csi_report_cfg_t cfg[SRSRAN_CSI_MAX_NOF_REPORT]; ///< Configuration ready for encoding
|
||||
srsran_csi_report_value_t value[SRSRAN_CSI_MAX_NOF_REPORT]; ///< Quantified values
|
||||
uint32_t nof_reports; ///< Total number of reports to transmit
|
||||
} srsran_csi_reports_t;
|
||||
|
||||
#endif // SRSRAN_CSI_CFG_H
|
||||
|
|
|
@ -71,7 +71,7 @@ typedef struct SRSRAN_API {
|
|||
srsran_harq_ack_cfg_t ack; ///< HARQ-ACK configuration
|
||||
uint32_t o_sr; ///< Number of SR bits
|
||||
bool sr_positive_present; ///< Set to true if there is at least one positive SR
|
||||
srsran_csi_report_cfg_t csi[SRSRAN_CSI_MAX_NOF_REPORT]; ///< CSI report configuration
|
||||
srsran_csi_report_cfg_t csi[SRSRAN_CSI_SLOT_MAX_NOF_REPORT]; ///< CSI report configuration
|
||||
uint32_t nof_csi; ///< Number of CSI reports
|
||||
union {
|
||||
srsran_uci_nr_pucch_cfg_t pucch; ///< Configuration for transmission in PUCCH
|
||||
|
@ -85,7 +85,7 @@ typedef struct SRSRAN_API {
|
|||
typedef struct SRSRAN_API {
|
||||
uint8_t ack[SRSRAN_HARQ_ACK_MAX_NOF_BITS]; ///< HARQ ACK feedback bits
|
||||
uint32_t sr; ///< Number of positive SR
|
||||
srsran_csi_report_value_t csi[SRSRAN_CSI_MAX_NOF_REPORT]; ///< Packed CSI report values
|
||||
srsran_csi_report_value_t csi[SRSRAN_CSI_SLOT_MAX_NOF_REPORT]; ///< Packed CSI report values
|
||||
bool valid; ///< Indicates whether the message has been decoded successfully, ignored in the transmitter
|
||||
} srsran_uci_value_nr_t;
|
||||
|
||||
|
|
|
@ -179,7 +179,7 @@ int srsran_csi_new_nzp_csi_rs_measurement(
|
|||
|
||||
int srsran_csi_reports_generate(const srsran_csi_hl_cfg_t* cfg,
|
||||
const srsran_slot_cfg_t* slot_cfg,
|
||||
srsran_csi_report_cfg_t report_cfg[SRSRAN_CSI_MAX_NOF_REPORT])
|
||||
srsran_csi_report_cfg_t report_cfg[SRSRAN_CSI_SLOT_MAX_NOF_REPORT])
|
||||
{
|
||||
uint32_t count = 0;
|
||||
|
||||
|
@ -189,7 +189,7 @@ int srsran_csi_reports_generate(const srsran_csi_hl_cfg_t* cfg,
|
|||
}
|
||||
|
||||
// Make sure report configuration is initialised to zero
|
||||
SRSRAN_MEM_ZERO(report_cfg, srsran_csi_report_cfg_t, SRSRAN_CSI_MAX_NOF_REPORT);
|
||||
SRSRAN_MEM_ZERO(report_cfg, srsran_csi_report_cfg_t, SRSRAN_CSI_SLOT_MAX_NOF_REPORT);
|
||||
|
||||
// Iterate every possible configured CSI report
|
||||
for (uint32_t i = 0; i < SRSRAN_CSI_MAX_NOF_REPORT; i++) {
|
||||
|
@ -198,6 +198,13 @@ int srsran_csi_reports_generate(const srsran_csi_hl_cfg_t* cfg,
|
|||
continue;
|
||||
}
|
||||
|
||||
if (count >= SRSRAN_CSI_SLOT_MAX_NOF_REPORT) {
|
||||
ERROR("The number of CSI reports in the slot (%d) exceeds the maximum (%d)",
|
||||
count++,
|
||||
SRSRAN_CSI_SLOT_MAX_NOF_REPORT);
|
||||
return SRSRAN_ERROR;
|
||||
}
|
||||
|
||||
// Configure report
|
||||
report_cfg[count].cfg = cfg->reports[i];
|
||||
report_cfg[count].nof_ports = 1;
|
||||
|
@ -209,9 +216,9 @@ int srsran_csi_reports_generate(const srsran_csi_hl_cfg_t* cfg,
|
|||
return (int)count;
|
||||
}
|
||||
|
||||
int srsran_csi_reports_quantify(const srsran_csi_report_cfg_t reports[SRSRAN_CSI_MAX_NOF_REPORT],
|
||||
int srsran_csi_reports_quantify(const srsran_csi_report_cfg_t reports[SRSRAN_CSI_SLOT_MAX_NOF_REPORT],
|
||||
const srsran_csi_channel_measurements_t measurements[SRSRAN_CSI_MAX_NOF_RESOURCES],
|
||||
srsran_csi_report_value_t report_value[SRSRAN_CSI_MAX_NOF_REPORT])
|
||||
srsran_csi_report_value_t report_value[SRSRAN_CSI_SLOT_MAX_NOF_REPORT])
|
||||
{
|
||||
uint32_t count = 0;
|
||||
|
||||
|
@ -221,7 +228,7 @@ int srsran_csi_reports_quantify(const srsran_csi_report_cfg_t reports[
|
|||
}
|
||||
|
||||
// Iterate every possible configured CSI report
|
||||
for (uint32_t i = 0; i < SRSRAN_CSI_MAX_NOF_REPORT; i++) {
|
||||
for (uint32_t i = 0; i < SRSRAN_CSI_SLOT_MAX_NOF_REPORT; i++) {
|
||||
// If the report is the last one, break
|
||||
if (reports->cfg.type == SRSRAN_CSI_REPORT_TYPE_NONE) {
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue