Commit 48662ed5 authored by Melissa Elkadi's avatar Melissa Elkadi

Fixed uci_harq_ind issue by adding drop_tb call

Also updated the spelling of global variable NUM_NFAPI_SUBFRAME
parent 27a232ab
...@@ -98,7 +98,7 @@ void handle_sr(UL_IND_t *UL_info) { ...@@ -98,7 +98,7 @@ void handle_sr(UL_IND_t *UL_info) {
oai_nfapi_sr_indication(&UL_info->sr_ind); oai_nfapi_sr_indication(&UL_info->sr_ind);
} }
} else if(NFAPI_MODE == NFAPI_MODE_VNF) { } else if(NFAPI_MODE == NFAPI_MODE_VNF) {
for(uint8_t j = 0; j < NUM_NFPAI_SUBFRAME; j++) { for(uint8_t j = 0; j < NUM_NFAPI_SUBFRAME; j++) {
if(UL_RCC_INFO.sr_ind[j].sr_indication_body.number_of_srs > 0) { if(UL_RCC_INFO.sr_ind[j].sr_indication_body.number_of_srs > 0) {
for (i=0; i<UL_RCC_INFO.sr_ind[j].sr_indication_body.number_of_srs; i++) { for (i=0; i<UL_RCC_INFO.sr_ind[j].sr_indication_body.number_of_srs; i++) {
SR_indication(UL_info->module_id, SR_indication(UL_info->module_id,
...@@ -139,7 +139,7 @@ void handle_cqi(UL_IND_t *UL_info) { ...@@ -139,7 +139,7 @@ void handle_cqi(UL_IND_t *UL_info) {
UL_info->cqi_ind.cqi_indication_body.number_of_cqis=0; UL_info->cqi_ind.cqi_indication_body.number_of_cqis=0;
} }
} else if (NFAPI_MODE == NFAPI_MODE_VNF) { } else if (NFAPI_MODE == NFAPI_MODE_VNF) {
for(uint8_t j = 0; j < NUM_NFPAI_SUBFRAME; j++) { for(uint8_t j = 0; j < NUM_NFAPI_SUBFRAME; j++) {
if(UL_RCC_INFO.cqi_ind[j].cqi_indication_body.number_of_cqis > 0) { if(UL_RCC_INFO.cqi_ind[j].cqi_indication_body.number_of_cqis > 0) {
for (i=0; i<UL_RCC_INFO.cqi_ind[j].cqi_indication_body.number_of_cqis; i++) { for (i=0; i<UL_RCC_INFO.cqi_ind[j].cqi_indication_body.number_of_cqis; i++) {
cqi_indication(UL_info->module_id, cqi_indication(UL_info->module_id,
...@@ -184,7 +184,7 @@ void handle_harq(UL_IND_t *UL_info) { ...@@ -184,7 +184,7 @@ void handle_harq(UL_IND_t *UL_info) {
UL_info->harq_ind.harq_indication_body.number_of_harqs = 0; UL_info->harq_ind.harq_indication_body.number_of_harqs = 0;
} else if(NFAPI_MODE == NFAPI_MODE_VNF) { } else if(NFAPI_MODE == NFAPI_MODE_VNF) {
for(uint8_t j = 0; j < NUM_NFPAI_SUBFRAME; j++) { for(uint8_t j = 0; j < NUM_NFAPI_SUBFRAME; j++) {
if(UL_RCC_INFO.harq_ind[j].harq_indication_body.number_of_harqs > 0) { if(UL_RCC_INFO.harq_ind[j].harq_indication_body.number_of_harqs > 0) {
for (int i=0; i<UL_RCC_INFO.harq_ind[j].harq_indication_body.number_of_harqs; i++) { for (int i=0; i<UL_RCC_INFO.harq_ind[j].harq_indication_body.number_of_harqs; i++) {
harq_indication(UL_info->module_id, harq_indication(UL_info->module_id,
...@@ -227,7 +227,7 @@ void handle_ulsch(UL_IND_t *UL_info) { ...@@ -227,7 +227,7 @@ void handle_ulsch(UL_IND_t *UL_info) {
UL_info->rx_ind.rx_indication_body.number_of_pdus = 0; UL_info->rx_ind.rx_indication_body.number_of_pdus = 0;
} }
} else if(NFAPI_MODE == NFAPI_MODE_VNF) { } else if(NFAPI_MODE == NFAPI_MODE_VNF) {
for(uint8_t k = 0; k < NUM_NFPAI_SUBFRAME; k++) { for(uint8_t k = 0; k < NUM_NFAPI_SUBFRAME; k++) {
if((UL_RCC_INFO.rx_ind[k].rx_indication_body.number_of_pdus>0) && (UL_RCC_INFO.crc_ind[k].crc_indication_body.number_of_crcs>0)) { if((UL_RCC_INFO.rx_ind[k].rx_indication_body.number_of_pdus>0) && (UL_RCC_INFO.crc_ind[k].crc_indication_body.number_of_crcs>0)) {
for (i=0; i<UL_RCC_INFO.rx_ind[k].rx_indication_body.number_of_pdus; i++) { for (i=0; i<UL_RCC_INFO.rx_ind[k].rx_indication_body.number_of_pdus; i++) {
for (j=0; j<UL_RCC_INFO.crc_ind[k].crc_indication_body.number_of_crcs; j++) { for (j=0; j<UL_RCC_INFO.crc_ind[k].crc_indication_body.number_of_crcs; j++) {
......
...@@ -88,25 +88,25 @@ typedef struct { ...@@ -88,25 +88,25 @@ typedef struct {
} UL_IND_t; } UL_IND_t;
// Downlink subframe P7 // Downlink subframe P7
#define NUM_NFPAI_SUBFRAME 10 #define NUM_NFAPI_SUBFRAME 10
typedef struct { typedef struct {
/// harq indication list /// harq indication list
nfapi_harq_indication_t harq_ind[NUM_NFPAI_SUBFRAME]; nfapi_harq_indication_t harq_ind[NUM_NFAPI_SUBFRAME];
/// crc indication list /// crc indication list
nfapi_crc_indication_t crc_ind[NUM_NFPAI_SUBFRAME]; nfapi_crc_indication_t crc_ind[NUM_NFAPI_SUBFRAME];
/// SR indication list /// SR indication list
nfapi_sr_indication_t sr_ind[NUM_NFPAI_SUBFRAME]; nfapi_sr_indication_t sr_ind[NUM_NFAPI_SUBFRAME];
/// CQI indication list /// CQI indication list
nfapi_cqi_indication_t cqi_ind[NUM_NFPAI_SUBFRAME]; nfapi_cqi_indication_t cqi_ind[NUM_NFAPI_SUBFRAME];
/// RACH indication list /// RACH indication list
nfapi_rach_indication_t rach_ind[NUM_NFPAI_SUBFRAME]; nfapi_rach_indication_t rach_ind[NUM_NFAPI_SUBFRAME];
/// RX indication /// RX indication
nfapi_rx_indication_t rx_ind[NUM_NFPAI_SUBFRAME]; nfapi_rx_indication_t rx_ind[NUM_NFAPI_SUBFRAME];
} UL_RCC_IND_t; } UL_RCC_IND_t;
......
...@@ -50,12 +50,12 @@ queue_t hi_dci0_req_queue; ...@@ -50,12 +50,12 @@ queue_t hi_dci0_req_queue;
int current_sfn_sf; int current_sfn_sf;
sem_t sfn_semaphore; sem_t sfn_semaphore;
static sf_rnti_mcs_s sf_rnti_mcs[NUM_NFPAI_SUBFRAME]; static sf_rnti_mcs_s sf_rnti_mcs[NUM_NFAPI_SUBFRAME];
static int ue_tx_sock_descriptor = -1; static int ue_tx_sock_descriptor = -1;
static int ue_rx_sock_descriptor = -1; static int ue_rx_sock_descriptor = -1;
extern nfapi_tx_request_pdu_t* tx_request_pdu[1023][NUM_NFPAI_SUBFRAME][10]; //TODO Melissa check these values extern nfapi_tx_request_pdu_t* tx_request_pdu[1023][NUM_NFAPI_SUBFRAME][10]; //TODO: NFAPI_TX_MAX_PDU for last dim? Check nfapi_pnf.c ln. 81
//extern int timer_subframe; //extern int timer_subframe;
//extern int timer_frame; //extern int timer_frame;
...@@ -798,7 +798,7 @@ void dl_config_req_UE_MAC_dci(int sfn, ...@@ -798,7 +798,7 @@ void dl_config_req_UE_MAC_dci(int sfn,
sfn, sf, dci->pdu_size, sfn, sf, dci->pdu_size,
dlsch->dlsch_pdu.dlsch_pdu_rel8.pdu_index, dlsch->dlsch_pdu.dlsch_pdu_rel8.pdu_index,
tx_req_pdu_list->num_pdus); tx_req_pdu_list->num_pdus);
if (!check_drop_tb(sf, dci->dci_dl_pdu.dci_dl_pdu_rel8.rnti)) if (!drop_tb(sf, dci->dci_dl_pdu.dci_dl_pdu_rel8.rnti))
{ {
ue_send_sdu(ue_id, 0, sfn, sf, ue_send_sdu(ue_id, 0, sfn, sf,
tx_req_pdu_list->pdus[pdu_index].segments[0].segment_data, tx_req_pdu_list->pdus[pdu_index].segments[0].segment_data,
...@@ -817,7 +817,7 @@ void dl_config_req_UE_MAC_dci(int sfn, ...@@ -817,7 +817,7 @@ void dl_config_req_UE_MAC_dci(int sfn,
for (int ue_id = 0; ue_id < num_ue; ue_id++) { for (int ue_id = 0; ue_id < num_ue; ue_id++) {
if (UE_mac_inst[ue_id].UE_mode[0] == NOT_SYNCHED) if (UE_mac_inst[ue_id].UE_mode[0] == NOT_SYNCHED)
continue; continue;
if (!check_drop_tb(sf, dci->dci_dl_pdu.dci_dl_pdu_rel8.rnti)) if (!drop_tb(sf, dci->dci_dl_pdu.dci_dl_pdu_rel8.rnti))
{ {
ue_decode_si(ue_id, 0, sfn, 0, ue_decode_si(ue_id, 0, sfn, 0,
tx_req_pdu_list->pdus[pdu_index].segments[0].segment_data, tx_req_pdu_list->pdus[pdu_index].segments[0].segment_data,
...@@ -833,7 +833,7 @@ void dl_config_req_UE_MAC_dci(int sfn, ...@@ -833,7 +833,7 @@ void dl_config_req_UE_MAC_dci(int sfn,
LOG_I(MAC, "%s() Received paging message: sfn/sf:%d.%d\n", LOG_I(MAC, "%s() Received paging message: sfn/sf:%d.%d\n",
__func__, sfn, sf); __func__, sfn, sf);
if (!check_drop_tb(sf, dci->dci_dl_pdu.dci_dl_pdu_rel8.rnti)) if (!drop_tb(sf, dci->dci_dl_pdu.dci_dl_pdu_rel8.rnti))
{ {
ue_decode_p(ue_id, 0, sfn, 0, ue_decode_p(ue_id, 0, sfn, 0,
tx_req_pdu_list->pdus[pdu_index].segments[0].segment_data, tx_req_pdu_list->pdus[pdu_index].segments[0].segment_data,
...@@ -863,7 +863,7 @@ void dl_config_req_UE_MAC_dci(int sfn, ...@@ -863,7 +863,7 @@ void dl_config_req_UE_MAC_dci(int sfn,
"%s(): Received RAR, PreambleIndex: %d\n", "%s(): Received RAR, PreambleIndex: %d\n",
__func__, UE_mac_inst[ue_id].RA_prach_resources.ra_PreambleIndex); __func__, UE_mac_inst[ue_id].RA_prach_resources.ra_PreambleIndex);
if (!check_drop_tb(sf, dci->dci_dl_pdu.dci_dl_pdu_rel8.rnti)) if (!drop_tb(sf, dci->dci_dl_pdu.dci_dl_pdu_rel8.rnti))
{ {
ue_process_rar(ue_id, 0, sfn, ue_process_rar(ue_id, 0, sfn,
ra_rnti, //RA-RNTI ra_rnti, //RA-RNTI
...@@ -1940,7 +1940,7 @@ char *nfapi_ul_config_req_to_string(nfapi_ul_config_request_t *req) ...@@ -1940,7 +1940,7 @@ char *nfapi_ul_config_req_to_string(nfapi_ul_config_request_t *req)
} }
} }
int check_drop_tb(int sf, uint16_t rnti) bool check_drop_tb(int sf, uint16_t rnti)
{ {
if (sf_rnti_mcs[sf].pdu_size <= 0) if (sf_rnti_mcs[sf].pdu_size <= 0)
{ {
...@@ -1956,10 +1956,10 @@ char *nfapi_ul_config_req_to_string(nfapi_ul_config_request_t *req) ...@@ -1956,10 +1956,10 @@ char *nfapi_ul_config_req_to_string(nfapi_ul_config_request_t *req)
} }
} }
LOG_I(MAC, "No matching rnti in sf_rnti_mcs.\n"); LOG_I(MAC, "No matching rnti in sf_rnti_mcs.\n");
return 0; return false;
} }
void drop_tb(int sf, uint16_t rnti) bool drop_tb(int sf, uint16_t rnti)
{ {
assert(sf < 10 && sf >= 0); assert(sf < 10 && sf >= 0);
...@@ -1975,7 +1975,7 @@ char *nfapi_ul_config_req_to_string(nfapi_ul_config_request_t *req) ...@@ -1975,7 +1975,7 @@ char *nfapi_ul_config_req_to_string(nfapi_ul_config_request_t *req)
if (sf_rnti_mcs[sf].rnti[n] == rnti) if (sf_rnti_mcs[sf].rnti[n] == rnti)
{ {
mcs = sf_rnti_mcs[sf].mcs[n]; mcs = sf_rnti_mcs[sf].mcs[n];
sf_rnti_mcs[sf].drop_flag[n] = 0; sf_rnti_mcs[sf].drop_flag[n] = false;
break; break;
} }
} }
...@@ -2048,7 +2048,7 @@ char *nfapi_ul_config_req_to_string(nfapi_ul_config_request_t *req) ...@@ -2048,7 +2048,7 @@ char *nfapi_ul_config_req_to_string(nfapi_ul_config_request_t *req)
if (bler_val <= drop_cutoff) if (bler_val <= drop_cutoff)
{ {
sf_rnti_mcs[sf].drop_flag[n] = 1; sf_rnti_mcs[sf].drop_flag[n] = true;
} }
return; return sf_rnti_mcs[sf].drop_flag[n];
} }
...@@ -52,7 +52,7 @@ typedef struct ...@@ -52,7 +52,7 @@ typedef struct
uint8_t mcs[256]; uint8_t mcs[256];
float sinr; float sinr;
uint16_t pdu_size; uint16_t pdu_size;
int drop_flag[256]; bool drop_flag[256];
} sf_rnti_mcs_s; } sf_rnti_mcs_s;
...@@ -201,8 +201,8 @@ const char *dl_pdu_type_to_string(uint8_t pdu_type); ...@@ -201,8 +201,8 @@ const char *dl_pdu_type_to_string(uint8_t pdu_type);
const char *ul_pdu_type_to_string(uint8_t pdu_type); const char *ul_pdu_type_to_string(uint8_t pdu_type);
void read_channel_param(nfapi_dl_config_request_t * dl_config, int sf); void read_channel_param(nfapi_dl_config_request_t * dl_config, int sf);
void drop_tb(int sf, uint16_t rnti); bool drop_tb(int sf, uint16_t rnti);
int check_drop_tb(int sf, uint16_t rnti); bool check_drop_tb(int sf, uint16_t rnti);
extern queue_t dl_config_req_tx_req_queue; extern queue_t dl_config_req_tx_req_queue;
extern queue_t ul_config_req_queue; extern queue_t ul_config_req_queue;
......
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