Commit 0794033d authored by Vaibhav Shrivastava's avatar Vaibhav Shrivastava Committed by jperaldi

Remaining MultiCell Changes

parent 8acf8f05
......@@ -49,7 +49,7 @@
#define TEST
extern RAN_CONTEXT_t RC;
extern UL_RCC_IND_t UL_RCC_INFO;
extern UL_RCC_IND_t UL_RCC_INFO[MAX_NUM_CCs];
typedef struct {
uint8_t enabled;
......@@ -672,10 +672,10 @@ int phy_rach_indication(struct nfapi_vnf_p7_config *config, nfapi_rach_indicatio
if(NFAPI_MODE == NFAPI_MODE_VNF){
int8_t index = NFAPI_SFNSF2SF(ind->sfn_sf);
UL_RCC_INFO.rach_ind[index] = *ind;
UL_RCC_INFO[ind->header.phy_id].rach_ind[index] = *ind;
if (ind->rach_indication_body.number_of_preambles > 0)
UL_RCC_INFO.rach_ind[index].rach_indication_body.preamble_list = malloc(sizeof(nfapi_preamble_pdu_t)*ind->rach_indication_body.number_of_preambles );
UL_RCC_INFO[ind->header.phy_id].rach_ind[index].rach_indication_body.preamble_list = malloc(sizeof(nfapi_preamble_pdu_t)*ind->rach_indication_body.number_of_preambles );
for (int i=0; i<ind->rach_indication_body.number_of_preambles; i++) {
if (ind->rach_indication_body.preamble_list[i].preamble_rel8.tl.tag == NFAPI_PREAMBLE_REL8_TAG) {
......@@ -691,7 +691,7 @@ int phy_rach_indication(struct nfapi_vnf_p7_config *config, nfapi_rach_indicatio
LOG_D(MAC, "RACH PREAMBLE REL13 present\n");
}
UL_RCC_INFO.rach_ind[index].rach_indication_body.preamble_list[i] = ind->rach_indication_body.preamble_list[i];
UL_RCC_INFO[ind->header.phy_id].rach_ind[index].rach_indication_body.preamble_list[i] = ind->rach_indication_body.preamble_list[i];
}
}else{
eNB->UL_INFO.rach_ind = *ind;
......@@ -877,14 +877,14 @@ int phy_harq_indication(struct nfapi_vnf_p7_config *config, nfapi_harq_indicatio
if(NFAPI_MODE == NFAPI_MODE_VNF){
int8_t index = NFAPI_SFNSF2SF(ind->sfn_sf);
UL_RCC_INFO.harq_ind[index] = *ind;
UL_RCC_INFO[ind->header.phy_id].harq_ind[index] = *ind;
assert(ind->harq_indication_body.number_of_harqs <= NFAPI_HARQ_IND_MAX_PDU);
if (ind->harq_indication_body.number_of_harqs > 0) {
UL_RCC_INFO.harq_ind[index].harq_indication_body.harq_pdu_list = malloc(sizeof(nfapi_harq_indication_pdu_t) * NFAPI_HARQ_IND_MAX_PDU);
UL_RCC_INFO[ind->header.phy_id].harq_ind[index].harq_indication_body.harq_pdu_list = malloc(sizeof(nfapi_harq_indication_pdu_t) * NFAPI_HARQ_IND_MAX_PDU);
}
for (int i=0; i<ind->harq_indication_body.number_of_harqs; i++) {
memcpy(&UL_RCC_INFO.harq_ind[index].harq_indication_body.harq_pdu_list[i], &ind->harq_indication_body.harq_pdu_list[i], sizeof(nfapi_harq_indication_pdu_t));
memcpy(&UL_RCC_INFO[ind->header.phy_id].harq_ind[index].harq_indication_body.harq_pdu_list[i], &ind->harq_indication_body.harq_pdu_list[i], sizeof(nfapi_harq_indication_pdu_t));
}
}else{
eNB->UL_INFO.harq_ind = *ind;
......@@ -909,23 +909,23 @@ int phy_crc_indication(struct nfapi_vnf_p7_config *config, nfapi_crc_indication_
if(NFAPI_MODE == NFAPI_MODE_VNF){
int8_t index = NFAPI_SFNSF2SF(ind->sfn_sf);
UL_RCC_INFO.crc_ind[index] = *ind;
UL_RCC_INFO[ind->header.phy_id].crc_ind[index] = *ind;
assert(ind->crc_indication_body.number_of_crcs <= NFAPI_CRC_IND_MAX_PDU);
if (ind->crc_indication_body.number_of_crcs > 0) {
UL_RCC_INFO.crc_ind[index].crc_indication_body.crc_pdu_list = malloc(sizeof(nfapi_crc_indication_pdu_t) * NFAPI_CRC_IND_MAX_PDU);
UL_RCC_INFO[ind->header.phy_id].crc_ind[index].crc_indication_body.crc_pdu_list = malloc(sizeof(nfapi_crc_indication_pdu_t) * NFAPI_CRC_IND_MAX_PDU);
}
assert(ind->crc_indication_body.number_of_crcs <= NFAPI_CRC_IND_MAX_PDU);
for (int i=0; i<ind->crc_indication_body.number_of_crcs; i++) {
memcpy(&UL_RCC_INFO.crc_ind[index].crc_indication_body.crc_pdu_list[i], &ind->crc_indication_body.crc_pdu_list[i], sizeof(ind->crc_indication_body.crc_pdu_list[0]));
memcpy(&UL_RCC_INFO[ind->header.phy_id].crc_ind[index].crc_indication_body.crc_pdu_list[i], &ind->crc_indication_body.crc_pdu_list[i], sizeof(ind->crc_indication_body.crc_pdu_list[0]));
LOG_D(MAC, "%s() NFAPI SFN/SF:%d CRC_IND:number_of_crcs:%u UL_INFO:crcs:%d PDU[%d] rnti:%04x UL_INFO:rnti:%04x\n",
__FUNCTION__,
NFAPI_SFNSF2DEC(ind->sfn_sf), ind->crc_indication_body.number_of_crcs, UL_RCC_INFO.crc_ind[index].crc_indication_body.number_of_crcs,
NFAPI_SFNSF2DEC(ind->sfn_sf), ind->crc_indication_body.number_of_crcs, UL_RCC_INFO[ind->header.phy_id].crc_ind[index].crc_indication_body.number_of_crcs,
i,
ind->crc_indication_body.crc_pdu_list[i].rx_ue_information.rnti,
UL_RCC_INFO.crc_ind[index].crc_indication_body.crc_pdu_list[i].rx_ue_information.rnti);
UL_RCC_INFO[ind->header.phy_id].crc_ind[index].crc_indication_body.crc_pdu_list[i].rx_ue_information.rnti);
}
}else{
eNB->UL_INFO.crc_ind = *ind;
......@@ -1008,18 +1008,18 @@ int phy_rx_indication(struct nfapi_vnf_p7_config *config, nfapi_rx_indication_t
if(NFAPI_MODE == NFAPI_MODE_VNF){
int8_t index = NFAPI_SFNSF2SF(ind->sfn_sf);
UL_RCC_INFO.rx_ind[index] = *ind;
UL_RCC_INFO[ind->header.phy_id].rx_ind[index] = *ind;
size_t number_of_pdus = ind->rx_indication_body.number_of_pdus;
assert(number_of_pdus <= NFAPI_RX_IND_MAX_PDU);
if (number_of_pdus > 0) {
UL_RCC_INFO.rx_ind[index].rx_indication_body.rx_pdu_list =
UL_RCC_INFO[ind->header.phy_id].rx_ind[index].rx_indication_body.rx_pdu_list =
malloc(sizeof(nfapi_rx_indication_pdu_t) * NFAPI_RX_IND_MAX_PDU);
}
for (int i=0; i<number_of_pdus; i++) {
nfapi_rx_indication_pdu_t *dest_pdu = &UL_RCC_INFO.rx_ind[index].rx_indication_body.rx_pdu_list[i];
nfapi_rx_indication_pdu_t *dest_pdu = &UL_RCC_INFO[ind->header.phy_id].rx_ind[index].rx_indication_body.rx_pdu_list[i];
nfapi_rx_indication_pdu_t *src_pdu = &ind->rx_indication_body.rx_pdu_list[i];
memcpy(dest_pdu, src_pdu, sizeof(*src_pdu));
......@@ -1128,16 +1128,16 @@ int phy_sr_indication(struct nfapi_vnf_p7_config *config, nfapi_sr_indication_t
if(NFAPI_MODE == NFAPI_MODE_VNF){
int8_t index = NFAPI_SFNSF2SF(ind->sfn_sf);
UL_RCC_INFO.sr_ind[index] = *ind;
UL_RCC_INFO[ind->header.phy_id].sr_ind[index] = *ind;
LOG_D(MAC,"%s() UL_INFO[%d].sr_ind.sr_indication_body.number_of_srs:%d\n", __FUNCTION__, index, eNB->UL_INFO.sr_ind.sr_indication_body.number_of_srs);
if (ind->sr_indication_body.number_of_srs > 0) {
assert(ind->sr_indication_body.number_of_srs <= NFAPI_SR_IND_MAX_PDU);
UL_RCC_INFO.sr_ind[index].sr_indication_body.sr_pdu_list = malloc(sizeof(nfapi_sr_indication_pdu_t) * NFAPI_SR_IND_MAX_PDU);
UL_RCC_INFO[ind->header.phy_id].sr_ind[index].sr_indication_body.sr_pdu_list = malloc(sizeof(nfapi_sr_indication_pdu_t) * NFAPI_SR_IND_MAX_PDU);
}
assert(ind->sr_indication_body.number_of_srs <= NFAPI_SR_IND_MAX_PDU);
for (int i=0; i<ind->sr_indication_body.number_of_srs; i++) {
nfapi_sr_indication_pdu_t *dest_pdu = &UL_RCC_INFO.sr_ind[index].sr_indication_body.sr_pdu_list[i];
nfapi_sr_indication_pdu_t *dest_pdu = &UL_RCC_INFO[ind->header.phy_id].sr_ind[index].sr_indication_body.sr_pdu_list[i];
nfapi_sr_indication_pdu_t *src_pdu = &ind->sr_indication_body.sr_pdu_list[i];
LOG_D(MAC, "SR_IND[PDU:%d %d][rnti:%x cqi:%d channel:%d]\n", index, i, src_pdu->rx_ue_information.rnti, src_pdu->ul_cqi_information.ul_cqi, src_pdu->ul_cqi_information.channel);
......@@ -1204,12 +1204,12 @@ int phy_cqi_indication(struct nfapi_vnf_p7_config *config, nfapi_cqi_indication_
if(NFAPI_MODE == NFAPI_MODE_VNF){
int8_t index = NFAPI_SFNSF2SF(ind->sfn_sf);
UL_RCC_INFO.cqi_ind[index] = *ind;
UL_RCC_INFO[ind->header.phy_id].cqi_ind[index] = *ind;
assert(ind->cqi_indication_body.number_of_cqis <= NFAPI_CQI_IND_MAX_PDU);
if (ind->cqi_indication_body.number_of_cqis > 0){
UL_RCC_INFO.cqi_ind[index].cqi_indication_body.cqi_pdu_list =
UL_RCC_INFO[ind->header.phy_id].cqi_ind[index].cqi_indication_body.cqi_pdu_list =
malloc(sizeof(nfapi_cqi_indication_pdu_t) * NFAPI_CQI_IND_MAX_PDU);
UL_RCC_INFO.cqi_ind[index].cqi_indication_body.cqi_raw_pdu_list =
UL_RCC_INFO[ind->header.phy_id].cqi_ind[index].cqi_indication_body.cqi_raw_pdu_list =
malloc(sizeof(nfapi_cqi_indication_raw_pdu_t) * NFAPI_CQI_IND_MAX_PDU);
}
......@@ -1220,10 +1220,10 @@ int phy_cqi_indication(struct nfapi_vnf_p7_config *config, nfapi_cqi_indication_
nfapi_cqi_indication_pdu_t *src_pdu = &ind->cqi_indication_body.cqi_pdu_list[i];
LOG_D(MAC, "SR_IND[PDU:%d][rnti:%x cqi:%d channel:%d]\n", i, src_pdu->rx_ue_information.rnti,
src_pdu->ul_cqi_information.ul_cqi, src_pdu->ul_cqi_information.channel);
memcpy(&UL_RCC_INFO.cqi_ind[index].cqi_indication_body.cqi_pdu_list[i],
memcpy(&UL_RCC_INFO[ind->header.phy_id].cqi_ind[index].cqi_indication_body.cqi_pdu_list[i],
src_pdu, sizeof(nfapi_cqi_indication_pdu_t));
memcpy(&UL_RCC_INFO.cqi_ind[index].cqi_indication_body.cqi_raw_pdu_list[i],
memcpy(&UL_RCC_INFO[ind->header.phy_id].cqi_ind[index].cqi_indication_body.cqi_raw_pdu_list[i],
&ind->cqi_indication_body.cqi_raw_pdu_list[i], sizeof(nfapi_cqi_indication_raw_pdu_t));
}
}else{
......@@ -1911,42 +1911,32 @@ int oai_nfapi_dl_config_req(nfapi_dl_config_request_t *dl_config_req) {
NFAPI_TRACE(NFAPI_TRACE_INFO, "[VNF] Created VNF NFAPI start thread %s\n", __FUNCTION__);
nfapi_vnf_p7_config_t *p7_config = vnf.p7_vnfs[0].config;
int retval = 0;
int num_phy = 0;
uint16_t sfn = 0;
uint16_t sf = 0;
sfn = dl_config_req->sfn_sf >> 4;
sf = dl_config_req->sfn_sf & 0xF;
/* Below if condition checking if dl_config_req is for MIB (sf == 0) or SIB1 ((sfn % 2 == 0) && (sf == 5)) */
if ((sf == 0) || ((sfn % 2 == 0) && (sf == 5)))
num_phy = vnf.pnfs[0].num_phys;
else
num_phy = 1;
for (int i =0; i< num_phy; i++)
dl_config_req->header.message_id = NFAPI_DL_CONFIG_REQUEST;
LOG_I(NFAPI_VNF, "MultiCell: fxn:%s phy_id:%d sfn:%d sf:%d \n", __FUNCTION__, dl_config_req->header.phy_id, sfn, sf);
if (dl_config_req->dl_config_request_body.number_pdu > 0)
{
dl_config_req->header.phy_id = i+1; // DJP HACK TODO FIXME - need to pass this around!!!!
dl_config_req->header.message_id = NFAPI_DL_CONFIG_REQUEST;
LOG_I(NFAPI_VNF, "MultiCell: fxn:%s num_phy:%d phy_id:%d sfn:%d sf:%d \n", __FUNCTION__, dl_config_req->header.phy_id, num_phy, sfn, sf);
if (dl_config_req->dl_config_request_body.number_pdu > 0)
for (int i = 0; i < dl_config_req->dl_config_request_body.number_pdu; i++)
{
for (int i = 0; i < dl_config_req->dl_config_request_body.number_pdu; i++)
uint8_t pdu_type = dl_config_req->dl_config_request_body.dl_config_pdu_list[i].pdu_type;
if(pdu_type == NFAPI_DL_CONFIG_DLSCH_PDU_TYPE)
{
uint8_t pdu_type = dl_config_req->dl_config_request_body.dl_config_pdu_list[i].pdu_type;
if(pdu_type == NFAPI_DL_CONFIG_DLSCH_PDU_TYPE)
{
uint16_t dl_rnti = dl_config_req->dl_config_request_body.dl_config_pdu_list[i].dlsch_pdu.dlsch_pdu_rel8.rnti;
uint16_t numPDUs = dl_config_req->dl_config_request_body.number_pdu;
LOG_D(MAC, "(OAI eNB) Sending dl_config_req at VNF during Frame: %d and Subframe: %d,"
" with a RNTI value of: %x and with number of PDUs: %u\n",
NFAPI_SFNSF2SFN(dl_config_req->sfn_sf),NFAPI_SFNSF2SF(dl_config_req->sfn_sf), dl_rnti, numPDUs);
}
uint16_t dl_rnti = dl_config_req->dl_config_request_body.dl_config_pdu_list[i].dlsch_pdu.dlsch_pdu_rel8.rnti;
uint16_t numPDUs = dl_config_req->dl_config_request_body.number_pdu;
LOG_D(MAC, "(OAI eNB) Sending dl_config_req at VNF during Frame: %d and Subframe: %d,"
" with a RNTI value of: %x and with number of PDUs: %u\n",
NFAPI_SFNSF2SFN(dl_config_req->sfn_sf),NFAPI_SFNSF2SF(dl_config_req->sfn_sf), dl_rnti, numPDUs);
}
}
retval = nfapi_vnf_p7_dl_config_req(p7_config, dl_config_req);
if (retval!=0) {
LOG_E(PHY, "%s() Problem sending dl_config_req for phy_id:%d retval:%d\n", __FUNCTION__, dl_config_req->header.phy_id, retval);
}
}
retval = nfapi_vnf_p7_dl_config_req(p7_config, dl_config_req);
if (retval!=0) {
LOG_E(PHY, "%s() Problem sending dl_config_req for phy_id:%d retval:%d\n", __FUNCTION__, dl_config_req->header.phy_id, retval);
}
dl_config_req->dl_config_request_body.number_pdcch_ofdm_symbols = 1;
dl_config_req->dl_config_request_body.number_dci = 0;
......
......@@ -790,8 +790,8 @@ void schedule_response(Sched_Rsp_t *Sched_INFO, void *arg) {
eNB->pdcch_vars[subframe&1].num_dci = 0;
eNB->phich_vars[subframe&1].num_hi = 0;
eNB->mpdcch_vars[subframe&1].num_dci = 0;
LOG_D(PHY,"NFAPI: Sched_INFO:SFN/SF:%04d%d DL_req:SFN/SF:%04d%d:dl_pdu:%d tx_req:SFN/SF:%04d%d:pdus:%d\n",
frame,subframe,
LOG_A(PHY,"NFAPI: Sched_INFO:SFN/SF:%04d%d CC_id:%d DL_req:SFN/SF:%04d%d:dl_pdu:%d tx_req:SFN/SF:%04d%d:pdus:%d\n",
frame,subframe,CC_id,
NFAPI_SFNSF2SFN(DL_req->sfn_sf),NFAPI_SFNSF2SF(DL_req->sfn_sf),number_dl_pdu,
NFAPI_SFNSF2SFN(TX_req->sfn_sf),NFAPI_SFNSF2SF(TX_req->sfn_sf),TX_req->tx_request_body.number_of_pdus
);
......@@ -965,6 +965,7 @@ void schedule_response(Sched_Rsp_t *Sched_INFO, void *arg) {
}
Sched_INFO->DL_req->sfn_sf = frame << 4 | subframe;
Sched_INFO->DL_req->header.phy_id = Sched_INFO->CC_id;
oai_nfapi_dl_config_req(Sched_INFO->DL_req); // DJP - .dl_config_request_body.dl_config_pdu_list[0]); // DJP - FIXME TODO - yuk - only copes with 1 pdu
Sched_INFO->UE_release_req->sfn_sf = frame << 4 | subframe;
oai_nfapi_ue_release_req(Sched_INFO->UE_release_req);
......
......@@ -17,7 +17,7 @@ extern int oai_nfapi_sr_indication(nfapi_sr_indication_t *ind);
extern int oai_nfapi_rx_ind(nfapi_rx_indication_t *ind);
extern uint16_t sf_ahead;
extern UL_RCC_IND_t UL_RCC_INFO;
extern UL_RCC_IND_t UL_RCC_INFO[MAX_NUM_CCs];
extern RAN_CONTEXT_t RC;
......@@ -25,30 +25,30 @@ uint16_t frame_cnt=0;
void handle_rach(UL_IND_t *UL_info) {
int i;
int j = UL_info->subframe;
AssertFatal(j < sizeof(UL_RCC_INFO.rach_ind) / sizeof(UL_RCC_INFO.rach_ind[0]), "j index out of range of index of rach_ind\n");
AssertFatal(j < sizeof(UL_RCC_INFO[UL_info->CC_id].rach_ind) / sizeof(UL_RCC_INFO[UL_info->CC_id].rach_ind[0]), "j index out of range of index of rach_ind\n");
if (NFAPI_MODE == NFAPI_MODE_VNF)
{
if (UL_RCC_INFO.rach_ind[j].rach_indication_body.number_of_preambles > 0)
if (UL_RCC_INFO[UL_info->CC_id].rach_ind[j].rach_indication_body.number_of_preambles > 0)
{
if (UL_RCC_INFO.rach_ind[j].rach_indication_body.number_of_preambles > 1)
if (UL_RCC_INFO[UL_info->CC_id].rach_ind[j].rach_indication_body.number_of_preambles > 1)
{
LOG_D(MAC, "handle_rach j: %d UL_RCC_INFO.rach_ind[j].rach_indication_body.number_of_preambles: %d\n",
j, UL_RCC_INFO.rach_ind[j].rach_indication_body.number_of_preambles);
LOG_D(MAC, "handle_rach j: %d UL_RCC_INFO[UL_info->CC_id].rach_ind[j].rach_indication_body.number_of_preambles: %d\n",
j, UL_RCC_INFO[UL_info->CC_id].rach_ind[j].rach_indication_body.number_of_preambles);
LOG_D(MAC, "UL_info[Frame %d, Subframe %d] Calling initiate_ra_proc RACH:Frame: %d Subframe: %d\n",
UL_info->frame, UL_info->subframe, NFAPI_SFNSF2SFN(UL_RCC_INFO.rach_ind[j].sfn_sf), NFAPI_SFNSF2SF(UL_RCC_INFO.rach_ind[j].sfn_sf));
UL_info->frame, UL_info->subframe, NFAPI_SFNSF2SFN(UL_RCC_INFO[UL_info->CC_id].rach_ind[j].sfn_sf), NFAPI_SFNSF2SF(UL_RCC_INFO[UL_info->CC_id].rach_ind[j].sfn_sf));
}
AssertFatal(UL_RCC_INFO.rach_ind[j].rach_indication_body.number_of_preambles == 1, "More than 1 preamble not supported\n"); // dump frame/sf and all things in UL_RCC_INFO
AssertFatal(UL_RCC_INFO[UL_info->CC_id].rach_ind[j].rach_indication_body.number_of_preambles == 1, "More than 1 preamble not supported\n"); // dump frame/sf and all things in UL_RCC_INFO
initiate_ra_proc(UL_info->module_id,
UL_info->CC_id,
NFAPI_SFNSF2SFN(UL_RCC_INFO.rach_ind[j].sfn_sf),
NFAPI_SFNSF2SF(UL_RCC_INFO.rach_ind[j].sfn_sf),
UL_RCC_INFO.rach_ind[j].rach_indication_body.preamble_list[0].preamble_rel8.preamble,
UL_RCC_INFO.rach_ind[j].rach_indication_body.preamble_list[0].preamble_rel8.timing_advance,
UL_RCC_INFO.rach_ind[j].rach_indication_body.preamble_list[0].preamble_rel8.rnti,
NFAPI_SFNSF2SFN(UL_RCC_INFO[UL_info->CC_id].rach_ind[j].sfn_sf),
NFAPI_SFNSF2SF(UL_RCC_INFO[UL_info->CC_id].rach_ind[j].sfn_sf),
UL_RCC_INFO[UL_info->CC_id].rach_ind[j].rach_indication_body.preamble_list[0].preamble_rel8.preamble,
UL_RCC_INFO[UL_info->CC_id].rach_ind[j].rach_indication_body.preamble_list[0].preamble_rel8.timing_advance,
UL_RCC_INFO[UL_info->CC_id].rach_ind[j].rach_indication_body.preamble_list[0].preamble_rel8.rnti,
0);
free(UL_RCC_INFO.rach_ind[j].rach_indication_body.preamble_list);
UL_RCC_INFO.rach_ind[j].rach_indication_body.number_of_preambles = 0;
UL_RCC_INFO.rach_ind[j].header.message_id = 0;
free(UL_RCC_INFO[UL_info->CC_id].rach_ind[j].rach_indication_body.preamble_list);
UL_RCC_INFO[UL_info->CC_id].rach_ind[j].rach_indication_body.number_of_preambles = 0;
UL_RCC_INFO[UL_info->CC_id].rach_ind[j].header.message_id = 0;
}
} else {
if (UL_info->rach_ind.rach_indication_body.number_of_preambles>0) {
......@@ -99,20 +99,20 @@ void handle_sr(UL_IND_t *UL_info) {
}
} else if(NFAPI_MODE == NFAPI_MODE_VNF) {
for(uint8_t j = 0; j < NUM_NFAPI_SUBFRAME; j++) {
if(UL_RCC_INFO.sr_ind[j].sr_indication_body.number_of_srs > 0) {
assert(UL_RCC_INFO.sr_ind[j].sr_indication_body.number_of_srs <= NFAPI_SR_IND_MAX_PDU);
for (i=0; i<UL_RCC_INFO.sr_ind[j].sr_indication_body.number_of_srs; i++) {
if(UL_RCC_INFO[UL_info->CC_id].sr_ind[j].sr_indication_body.number_of_srs > 0) {
assert(UL_RCC_INFO[UL_info->CC_id].sr_ind[j].sr_indication_body.number_of_srs <= NFAPI_SR_IND_MAX_PDU);
for (i=0; i<UL_RCC_INFO[UL_info->CC_id].sr_ind[j].sr_indication_body.number_of_srs; i++) {
SR_indication(UL_info->module_id,
UL_info->CC_id,
NFAPI_SFNSF2SFN(UL_RCC_INFO.sr_ind[j].sfn_sf),
NFAPI_SFNSF2SF(UL_RCC_INFO.sr_ind[j].sfn_sf),
UL_RCC_INFO.sr_ind[j].sr_indication_body.sr_pdu_list[i].rx_ue_information.rnti,
UL_RCC_INFO.sr_ind[j].sr_indication_body.sr_pdu_list[i].ul_cqi_information.ul_cqi);
NFAPI_SFNSF2SFN(UL_RCC_INFO[UL_info->CC_id].sr_ind[j].sfn_sf),
NFAPI_SFNSF2SF(UL_RCC_INFO[UL_info->CC_id].sr_ind[j].sfn_sf),
UL_RCC_INFO[UL_info->CC_id].sr_ind[j].sr_indication_body.sr_pdu_list[i].rx_ue_information.rnti,
UL_RCC_INFO[UL_info->CC_id].sr_ind[j].sr_indication_body.sr_pdu_list[i].ul_cqi_information.ul_cqi);
}
free(UL_RCC_INFO.sr_ind[j].sr_indication_body.sr_pdu_list);
UL_RCC_INFO.sr_ind[j].sr_indication_body.number_of_srs=0;
UL_RCC_INFO.sr_ind[j].header.message_id = 0;
free(UL_RCC_INFO[UL_info->CC_id].sr_ind[j].sr_indication_body.sr_pdu_list);
UL_RCC_INFO[UL_info->CC_id].sr_ind[j].sr_indication_body.number_of_srs=0;
UL_RCC_INFO[UL_info->CC_id].sr_ind[j].header.message_id = 0;
}
}
} else {
......@@ -142,23 +142,23 @@ void handle_cqi(UL_IND_t *UL_info) {
}
} else if (NFAPI_MODE == NFAPI_MODE_VNF) {
for(uint8_t j = 0; j < NUM_NFAPI_SUBFRAME; j++) {
if(UL_RCC_INFO.cqi_ind[j].cqi_indication_body.number_of_cqis > 0) {
assert(UL_RCC_INFO.cqi_ind[j].cqi_indication_body.number_of_cqis <= NFAPI_CQI_IND_MAX_PDU);
for (i=0; i<UL_RCC_INFO.cqi_ind[j].cqi_indication_body.number_of_cqis; i++) {
if(UL_RCC_INFO[UL_info->CC_id].cqi_ind[j].cqi_indication_body.number_of_cqis > 0) {
assert(UL_RCC_INFO[UL_info->CC_id].cqi_ind[j].cqi_indication_body.number_of_cqis <= NFAPI_CQI_IND_MAX_PDU);
for (i=0; i<UL_RCC_INFO[UL_info->CC_id].cqi_ind[j].cqi_indication_body.number_of_cqis; i++) {
cqi_indication(UL_info->module_id,
UL_info->CC_id,
NFAPI_SFNSF2SFN(UL_RCC_INFO.cqi_ind[j].sfn_sf),
NFAPI_SFNSF2SF(UL_RCC_INFO.cqi_ind[j].sfn_sf),
UL_RCC_INFO.cqi_ind[j].cqi_indication_body.cqi_pdu_list[i].rx_ue_information.rnti,
&UL_RCC_INFO.cqi_ind[j].cqi_indication_body.cqi_pdu_list[i].cqi_indication_rel9,
UL_RCC_INFO.cqi_ind[j].cqi_indication_body.cqi_raw_pdu_list[i].pdu,
&UL_RCC_INFO.cqi_ind[j].cqi_indication_body.cqi_pdu_list[i].ul_cqi_information);
NFAPI_SFNSF2SFN(UL_RCC_INFO[UL_info->CC_id].cqi_ind[j].sfn_sf),
NFAPI_SFNSF2SF(UL_RCC_INFO[UL_info->CC_id].cqi_ind[j].sfn_sf),
UL_RCC_INFO[UL_info->CC_id].cqi_ind[j].cqi_indication_body.cqi_pdu_list[i].rx_ue_information.rnti,
&UL_RCC_INFO[UL_info->CC_id].cqi_ind[j].cqi_indication_body.cqi_pdu_list[i].cqi_indication_rel9,
UL_RCC_INFO[UL_info->CC_id].cqi_ind[j].cqi_indication_body.cqi_raw_pdu_list[i].pdu,
&UL_RCC_INFO[UL_info->CC_id].cqi_ind[j].cqi_indication_body.cqi_pdu_list[i].ul_cqi_information);
}
free(UL_RCC_INFO.cqi_ind[j].cqi_indication_body.cqi_pdu_list);
free(UL_RCC_INFO.cqi_ind[j].cqi_indication_body.cqi_raw_pdu_list);
UL_RCC_INFO.cqi_ind[j].cqi_indication_body.number_of_cqis=0;
UL_RCC_INFO.cqi_ind[j].header.message_id = 0;
free(UL_RCC_INFO[UL_info->CC_id].cqi_ind[j].cqi_indication_body.cqi_pdu_list);
free(UL_RCC_INFO[UL_info->CC_id].cqi_ind[j].cqi_indication_body.cqi_raw_pdu_list);
UL_RCC_INFO[UL_info->CC_id].cqi_ind[j].cqi_indication_body.number_of_cqis=0;
UL_RCC_INFO[UL_info->CC_id].cqi_ind[j].header.message_id = 0;
}
}
} else {
......@@ -189,19 +189,19 @@ void handle_harq(UL_IND_t *UL_info) {
UL_info->harq_ind.harq_indication_body.number_of_harqs = 0;
} else if(NFAPI_MODE == NFAPI_MODE_VNF) {
for(uint8_t j = 0; j < NUM_NFAPI_SUBFRAME; j++) {
if(UL_RCC_INFO.harq_ind[j].harq_indication_body.number_of_harqs > 0) {
assert(UL_RCC_INFO.harq_ind[j].harq_indication_body.number_of_harqs <= NFAPI_HARQ_IND_MAX_PDU);
for (int i=0; i<UL_RCC_INFO.harq_ind[j].harq_indication_body.number_of_harqs; i++) {
if(UL_RCC_INFO[UL_info->CC_id].harq_ind[j].harq_indication_body.number_of_harqs > 0) {
assert(UL_RCC_INFO[UL_info->CC_id].harq_ind[j].harq_indication_body.number_of_harqs <= NFAPI_HARQ_IND_MAX_PDU);
for (int i=0; i<UL_RCC_INFO[UL_info->CC_id].harq_ind[j].harq_indication_body.number_of_harqs; i++) {
harq_indication(UL_info->module_id,
UL_info->CC_id,
NFAPI_SFNSF2SFN(UL_RCC_INFO.harq_ind[j].sfn_sf),
NFAPI_SFNSF2SF(UL_RCC_INFO.harq_ind[j].sfn_sf),
&UL_RCC_INFO.harq_ind[j].harq_indication_body.harq_pdu_list[i]);
NFAPI_SFNSF2SFN(UL_RCC_INFO[UL_info->CC_id].harq_ind[j].sfn_sf),
NFAPI_SFNSF2SF(UL_RCC_INFO[UL_info->CC_id].harq_ind[j].sfn_sf),
&UL_RCC_INFO[UL_info->CC_id].harq_ind[j].harq_indication_body.harq_pdu_list[i]);
}
free(UL_RCC_INFO.harq_ind[j].harq_indication_body.harq_pdu_list);
UL_RCC_INFO.harq_ind[j].harq_indication_body.number_of_harqs=0;
UL_RCC_INFO.harq_ind[j].header.message_id = 0;
free(UL_RCC_INFO[UL_info->CC_id].harq_ind[j].harq_indication_body.harq_pdu_list);
UL_RCC_INFO[UL_info->CC_id].harq_ind[j].harq_indication_body.number_of_harqs=0;
UL_RCC_INFO[UL_info->CC_id].harq_ind[j].header.message_id = 0;
}
}
} else {
......@@ -234,41 +234,41 @@ void handle_ulsch(UL_IND_t *UL_info) {
}
} else if(NFAPI_MODE == NFAPI_MODE_VNF) {
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)) {
assert(UL_RCC_INFO.rx_ind[k].rx_indication_body.number_of_pdus <= NFAPI_RX_IND_MAX_PDU);
for (i=0; i<UL_RCC_INFO.rx_ind[k].rx_indication_body.number_of_pdus; i++) {
assert(UL_RCC_INFO.crc_ind[k].crc_indication_body.number_of_crcs <= NFAPI_CRC_IND_MAX_PDU);
for (j=0; j<UL_RCC_INFO.crc_ind[k].crc_indication_body.number_of_crcs; j++) {
if((UL_RCC_INFO[UL_info->CC_id].rx_ind[k].rx_indication_body.number_of_pdus>0) && (UL_RCC_INFO[UL_info->CC_id].crc_ind[k].crc_indication_body.number_of_crcs>0)) {
assert(UL_RCC_INFO[UL_info->CC_id].rx_ind[k].rx_indication_body.number_of_pdus <= NFAPI_RX_IND_MAX_PDU);
for (i=0; i<UL_RCC_INFO[UL_info->CC_id].rx_ind[k].rx_indication_body.number_of_pdus; i++) {
assert(UL_RCC_INFO[UL_info->CC_id].crc_ind[k].crc_indication_body.number_of_crcs <= NFAPI_CRC_IND_MAX_PDU);
for (j=0; j<UL_RCC_INFO[UL_info->CC_id].crc_ind[k].crc_indication_body.number_of_crcs; j++) {
// find crc_indication j corresponding rx_indication i
LOG_D(PHY,"UL_info->crc_ind.crc_indication_body.crc_pdu_list[%d].rx_ue_information.rnti:%04x UL_info->rx_ind.rx_indication_body.rx_pdu_list[%d].rx_ue_information.rnti:%04x\n",
j,UL_RCC_INFO.crc_ind[k].crc_indication_body.crc_pdu_list[j].rx_ue_information.rnti, i,UL_RCC_INFO.rx_ind[k].rx_indication_body.rx_pdu_list[i].rx_ue_information.rnti);
j,UL_RCC_INFO[UL_info->CC_id].crc_ind[k].crc_indication_body.crc_pdu_list[j].rx_ue_information.rnti, i,UL_RCC_INFO[UL_info->CC_id].rx_ind[k].rx_indication_body.rx_pdu_list[i].rx_ue_information.rnti);
if (UL_RCC_INFO.crc_ind[k].crc_indication_body.crc_pdu_list[j].rx_ue_information.rnti == UL_RCC_INFO.rx_ind[k].rx_indication_body.rx_pdu_list[i].rx_ue_information.rnti) {
if (UL_RCC_INFO[UL_info->CC_id].crc_ind[k].crc_indication_body.crc_pdu_list[j].rx_ue_information.rnti == UL_RCC_INFO[UL_info->CC_id].rx_ind[k].rx_indication_body.rx_pdu_list[i].rx_ue_information.rnti) {
LOG_D(PHY, "UL_info->crc_ind.crc_indication_body.crc_pdu_list[%d].crc_indication_rel8.crc_flag:%d\n",
j, UL_RCC_INFO.crc_ind[k].crc_indication_body.crc_pdu_list[j].crc_indication_rel8.crc_flag);
j, UL_RCC_INFO[UL_info->CC_id].crc_ind[k].crc_indication_body.crc_pdu_list[j].crc_indication_rel8.crc_flag);
if (UL_RCC_INFO.crc_ind[k].crc_indication_body.crc_pdu_list[j].crc_indication_rel8.crc_flag == 1) { // CRC error indication
if (UL_RCC_INFO[UL_info->CC_id].crc_ind[k].crc_indication_body.crc_pdu_list[j].crc_indication_rel8.crc_flag == 1) { // CRC error indication
LOG_D(MAC,"Frame %d, Subframe %d Calling rx_sdu (CRC error) \n",UL_info->frame,UL_info->subframe);
rx_sdu(UL_info->module_id,
UL_info->CC_id,
NFAPI_SFNSF2SFN(UL_RCC_INFO.rx_ind[k].sfn_sf), //UL_info->frame,
NFAPI_SFNSF2SF(UL_RCC_INFO.rx_ind[k].sfn_sf), //UL_info->subframe,
UL_RCC_INFO.rx_ind[k].rx_indication_body.rx_pdu_list[i].rx_ue_information.rnti,
NFAPI_SFNSF2SFN(UL_RCC_INFO[UL_info->CC_id].rx_ind[k].sfn_sf), //UL_info->frame,
NFAPI_SFNSF2SF(UL_RCC_INFO[UL_info->CC_id].rx_ind[k].sfn_sf), //UL_info->subframe,
UL_RCC_INFO[UL_info->CC_id].rx_ind[k].rx_indication_body.rx_pdu_list[i].rx_ue_information.rnti,
(uint8_t *)NULL,
UL_RCC_INFO.rx_ind[k].rx_indication_body.rx_pdu_list[i].rx_indication_rel8.length,
UL_RCC_INFO.rx_ind[k].rx_indication_body.rx_pdu_list[i].rx_indication_rel8.timing_advance,
UL_RCC_INFO.rx_ind[k].rx_indication_body.rx_pdu_list[i].rx_indication_rel8.ul_cqi);
UL_RCC_INFO[UL_info->CC_id].rx_ind[k].rx_indication_body.rx_pdu_list[i].rx_indication_rel8.length,
UL_RCC_INFO[UL_info->CC_id].rx_ind[k].rx_indication_body.rx_pdu_list[i].rx_indication_rel8.timing_advance,
UL_RCC_INFO[UL_info->CC_id].rx_ind[k].rx_indication_body.rx_pdu_list[i].rx_indication_rel8.ul_cqi);
} else {
LOG_D(MAC,"Frame %d, Subframe %d Calling rx_sdu (CRC ok) \n",UL_info->frame,UL_info->subframe);
rx_sdu(UL_info->module_id,
UL_info->CC_id,
NFAPI_SFNSF2SFN(UL_RCC_INFO.rx_ind[k].sfn_sf), //UL_info->frame,
NFAPI_SFNSF2SF(UL_RCC_INFO.rx_ind[k].sfn_sf), //UL_info->subframe,
UL_RCC_INFO.rx_ind[k].rx_indication_body.rx_pdu_list[i].rx_ue_information.rnti,
UL_RCC_INFO.rx_ind[k].rx_indication_body.rx_pdu_list[i].rx_ind_data,
UL_RCC_INFO.rx_ind[k].rx_indication_body.rx_pdu_list[i].rx_indication_rel8.length,
UL_RCC_INFO.rx_ind[k].rx_indication_body.rx_pdu_list[i].rx_indication_rel8.timing_advance,
UL_RCC_INFO.rx_ind[k].rx_indication_body.rx_pdu_list[i].rx_indication_rel8.ul_cqi);
NFAPI_SFNSF2SFN(UL_RCC_INFO[UL_info->CC_id].rx_ind[k].sfn_sf), //UL_info->frame,
NFAPI_SFNSF2SF(UL_RCC_INFO[UL_info->CC_id].rx_ind[k].sfn_sf), //UL_info->subframe,
UL_RCC_INFO[UL_info->CC_id].rx_ind[k].rx_indication_body.rx_pdu_list[i].rx_ue_information.rnti,
UL_RCC_INFO[UL_info->CC_id].rx_ind[k].rx_indication_body.rx_pdu_list[i].rx_ind_data,
UL_RCC_INFO[UL_info->CC_id].rx_ind[k].rx_indication_body.rx_pdu_list[i].rx_indication_rel8.length,
UL_RCC_INFO[UL_info->CC_id].rx_ind[k].rx_indication_body.rx_pdu_list[i].rx_indication_rel8.timing_advance,
UL_RCC_INFO[UL_info->CC_id].rx_ind[k].rx_indication_body.rx_pdu_list[i].rx_indication_rel8.ul_cqi);
}
break;
......@@ -276,12 +276,12 @@ void handle_ulsch(UL_IND_t *UL_info) {
} // for (j=0;j<UL_info->crc_ind.crc_indication_body.number_of_crcs;j++)
} // for (i=0;i<UL_info->rx_ind.number_of_pdus;i++)
free(UL_RCC_INFO.crc_ind[k].crc_indication_body.crc_pdu_list);
free(UL_RCC_INFO.rx_ind[k].rx_indication_body.rx_pdu_list);
UL_RCC_INFO.crc_ind[k].crc_indication_body.number_of_crcs = 0;
UL_RCC_INFO.crc_ind[k].header.message_id =0;
UL_RCC_INFO.rx_ind[k].rx_indication_body.number_of_pdus = 0;
UL_RCC_INFO.rx_ind[k].header.message_id = 0;
free(UL_RCC_INFO[UL_info->CC_id].crc_ind[k].crc_indication_body.crc_pdu_list);
free(UL_RCC_INFO[UL_info->CC_id].rx_ind[k].rx_indication_body.rx_pdu_list);
UL_RCC_INFO[UL_info->CC_id].crc_ind[k].crc_indication_body.number_of_crcs = 0;
UL_RCC_INFO[UL_info->CC_id].crc_ind[k].header.message_id =0;
UL_RCC_INFO[UL_info->CC_id].rx_ind[k].rx_indication_body.number_of_pdus = 0;
UL_RCC_INFO[UL_info->CC_id].rx_ind[k].header.message_id = 0;
}
}
} else {
......
......@@ -10503,6 +10503,7 @@ void *rrc_enb_process_itti_msg(void *notUsed) {
LTE_DL_CCCH_Message_t *dl_ccch_msg=NULL;
ue_context_pP = rrc_eNB_get_ue_context(RC.rrc[instance], SS_RRC_PDU_REQ(msg_p).rnti);
LOG_A(RRC, "Genreating RRC-CS from TTCN message RRC_PDU_REQ\n");
uint8_t cc_id = ue_context_pP->ue_context.primaryCC_id;
module_id_t Idx;
LOG_A(RRC, "Received data on SRB0 from SS, module id: %d, Frame: %d, instance: %lu \n",
ctxt.module_id, msg_p->ittiMsgHeader.lte_time.frame, instance);
......@@ -10540,7 +10541,7 @@ void *rrc_enb_process_itti_msg(void *notUsed) {
if (dl_ccch_msg->message.choice.c1.present == LTE_DL_CCCH_MessageType__c1_PR_rrcConnectionSetup) {
RRCConnSetup_PDU_Present = true;
rrc_eNB_generate_RRCConnectionSetup(&ctxt, ue_context_pP, 0);
rrc_eNB_generate_RRCConnectionSetup(&ctxt, ue_context_pP, cc_id);
LOG_I(RRC, PROTOCOL_RRC_CTXT_UE_FMT "CALLING RLC CONFIG SRB1 (rbid %d)\n",
PROTOCOL_RRC_CTXT_UE_ARGS(&ctxt),
......@@ -10563,7 +10564,7 @@ void *rrc_enb_process_itti_msg(void *notUsed) {
(LTE_PMCH_InfoList_r9_t *)NULL, 0, 0);
}
} else if (dl_ccch_msg->message.choice.c1.present == LTE_DL_CCCH_MessageType__c1_PR_rrcConnectionReject) {
rrc_eNB_generate_RRCConnectionReject(&ctxt, ue_context_pP, 0);
rrc_eNB_generate_RRCConnectionReject(&ctxt, ue_context_pP, cc_id);
}
}
#endif
......
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