Commit 9e1b1064 authored by root's avatar root

enabling PUSCH CQI reporting in phy-test mode

parent 23988cd3
#!/bin/sh
echo "building ctags for openair1 and openair2 ..."
ctags -e -R --exclude=openair1/DOCS/ --exclude=openair2/DOCS/ --exclude=openair2/RRC/CELLULAR/ --exclude=openair2/NAS/DRIVER/CELLULAR/ --exclude=openair2/SIMULATION/ --exclude=targets/DOCS/ --exclude=targets/PROJECTS/ openair1 openair2 openair3 targets cmake_targets common
ctags -e -R --exclude=openair1/DOCS/ --exclude=openair2/DOCS/ --exclude=openair2/RRC/CELLULAR/ --exclude=openair2/NAS/DRIVER/CELLULAR/ --exclude=openair2/SIMULATION/ --exclude=targets/DOCS/ --exclude=targets/PROJECTS/ openair1 openair2 openair3 targets cmake_targets common nfapi
......@@ -263,7 +263,7 @@ void handle_ulsch_harq_pdu(
ulsch->beta_offset_harqack_times8 = to_beta_offset_harqack[harq_information->harq_information_rel10.delta_offset_harq];
}
uint16_t to_beta_offset_ri[16]={9,13,16,20,25,32,40,50,64,80,101,127,160,0,0,0};
uint16_t to_beta_offset_ri[16]={10,13,16,20,25,32,40,50,64,80,101,127,160,0,0,0};
uint16_t to_beta_offset_cqi[16]={0,0,9,10,11,13,14,16,18,20,23,25,28,32,40,50};
void handle_ulsch_cqi_ri_pdu(PHY_VARS_eNB *eNB,int UE_id,nfapi_ul_config_request_pdu_t *ul_config_pdu,uint16_t frame,uint8_t subframe)
......@@ -281,8 +281,8 @@ void handle_ulsch_cqi_ri_pdu(PHY_VARS_eNB *eNB,int UE_id,nfapi_ul_config_request
if (ulsch_harq->O_RI>1) ulsch_harq->Or2 = rel9->aperiodic_cqi_pmi_ri_report.cc[0].dl_cqi_pmi_size[1];
ulsch->beta_offset_ri_times8 = to_beta_offset_ri[rel9->delta_offset_ri];
ulsch->beta_offset_cqi_times8 = to_beta_offset_cqi[rel9->delta_offset_cqi];
LOG_D(PHY,"Filling ulsch_cqi_ri information for frame %d, subframe %d : O_RI %d, Or1 %d, beta_offset_cqi_times8 %d (%d)\n",
frame,subframe,ulsch_harq->O_RI,ulsch_harq->Or1,ulsch->beta_offset_cqi_times8,
LOG_D(PHY,"Filling ulsch_cqi_ri information for frame %d, subframe %d : O_RI %d, Or1 %d, beta_offset_cqi_times8 %d, beta_offset_harqack_times8 %d, beta_offset_ri_times8 %d (%d)\n",
frame,subframe,ulsch_harq->O_RI,ulsch_harq->Or1,ulsch->beta_offset_cqi_times8,ulsch->beta_offset_harqack_times8,ulsch->beta_offset_ri_times8,
rel9->delta_offset_cqi);
}
......
......@@ -1362,7 +1362,7 @@ void pusch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc)
stop_meas(&eNB->ulsch_decoding_stats);
LOG_I(PHY,"[eNB %d][PUSCH %d] frame %d subframe %d RNTI %x RX power (%d,%d) N0 (%d,%d) dB ACK (%d,%d), decoding iter %d\n",
LOG_I(PHY,"[eNB %d][PUSCH %d] frame %d subframe %d RNTI %x RX power (%d,%d) N0 (%d,%d) dB ACK (%d,%d), uci_format %d, decoding iter %d\n",
eNB->Mod_id,harq_pid,
frame,subframe,
ulsch->rnti,
......@@ -1372,17 +1372,13 @@ void pusch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc)
20,//eNB->measurements.n0_power_dB[1],
ulsch_harq->o_ACK[0],
ulsch_harq->o_ACK[1],
ulsch_harq->uci_format,
ret);
//compute the expected ULSCH RX power (for the stats)
ulsch_harq->delta_TF = get_hundred_times_delta_IF_eNB(eNB,i,harq_pid, 0); // 0 means bw_factor is not considered
if (ulsch_harq->cqi_crc_status == 1) {
#ifdef DEBUG_PHY_PROC
//if (((frame%10) == 0) || (frame < 50))
print_CQI(ulsch_harq->o,ulsch_harq->uci_format,0,fp->N_RB_DL);
#endif
fill_ulsch_cqi_indication(eNB,frame,subframe,
ulsch_harq,
ulsch->rnti);
......
......@@ -81,10 +81,16 @@ schedule_ue_spec_phy_test(
nfapi_dl_config_request_body_t *dl_req;
nfapi_dl_config_request_pdu_t *dl_config_pdu;
UE_list_t *UE_list = &RC.mac[module_idP]->UE_list;
UE_sched_ctrl *sched_ctl = &UE_list->UE_sched_ctrl[UE_id];
int wideband_cqi;
N_RB_DL = to_prb(cc->mib->message.dl_Bandwidth);
for (CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
LOG_D(MAC, "doing schedule_ue_spec for CC_id %d\n",CC_id);
wideband_cqi = sched_ctl->aperiodic_wideband_cqi0[CC_id];
//mcs = cqi_to_mcs[wideband_cqi];
LOG_I(MAC, "doing schedule_ue_spec for CC_id %d, cqi %d, mcs %d\n",CC_id,wideband_cqi,mcs);
dl_req = &eNB->DL_req[CC_id].dl_config_request_body;
......@@ -199,9 +205,9 @@ void schedule_ulsch_phy_test(module_id_t module_idP,frame_t frameP,sub_frame_t s
int UE_id = 0;
uint8_t aggregation = 2;
rnti_t rnti = 0x1235;
uint8_t mcs = 0;
uint8_t mcs = 2;
uint8_t harq_pid = 0;
uint32_t cqi_req = 0,cshift,ndi,tpc = 1;
uint32_t cqi_req = 1,cshift,ndi,tpc = 1;
int32_t normalized_rx_power;
int32_t target_rx_power= 178;
int CC_id = 0;
......@@ -245,7 +251,17 @@ void schedule_ulsch_phy_test(module_id_t module_idP,frame_t frameP,sub_frame_t s
RC.eNB[module_idP][CC_id]->pusch_stats_BO[UE_id][(frameP*10)+subframeP] = UE_template->ul_total_buffer;
//printf("////////////////////////////////////*************************ul_total_buffer = %d\n",UE_template->ul_total_buffer);
if (UE_template->physicalConfigDedicated == NULL) {
UE_template->physicalConfigDedicated = CALLOC(1,sizeof(*UE_template->physicalConfigDedicated));
UE_template->physicalConfigDedicated->pusch_ConfigDedicated = CALLOC(1,sizeof(*UE_template->physicalConfigDedicated->pusch_ConfigDedicated));
UE_template->physicalConfigDedicated->cqi_ReportConfig = CALLOC(1,sizeof(*UE_template->physicalConfigDedicated->cqi_ReportConfig));
UE_template->physicalConfigDedicated->cqi_ReportConfig->cqi_ReportModeAperiodic = CALLOC(1,sizeof(*UE_template->physicalConfigDedicated->cqi_ReportConfig->cqi_ReportModeAperiodic));
UE_template->physicalConfigDedicated->pusch_ConfigDedicated->betaOffset_CQI_Index = 2;
UE_template->physicalConfigDedicated->pusch_ConfigDedicated->betaOffset_RI_Index = 0;
UE_template->physicalConfigDedicated->pusch_ConfigDedicated->betaOffset_ACK_Index = 0;
*UE_template->physicalConfigDedicated->cqi_ReportConfig->cqi_ReportModeAperiodic = CQI_ReportModeAperiodic_rm30;
}
//power control
//compute the expected ULSCH RX power (for the stats)
......
......@@ -61,6 +61,8 @@
#define ENABLE_MAC_PAYLOAD_DEBUG
#define DEBUG_eNB_SCHEDULER 1
extern int phy_test;
int choose(int n,int k)
{
int res = 1;
......@@ -1390,6 +1392,7 @@ void fill_nfapi_ulsch_config_request_rel8(nfapi_ul_config_request_pdu_t *ul_con
ul_config_pdu->ulsch_cqi_ri_pdu.cqi_ri_information.cqi_ri_information_rel9.delta_offset_cqi = physicalConfigDedicated->pusch_ConfigDedicated->betaOffset_CQI_Index;
ul_config_pdu->ulsch_cqi_ri_pdu.cqi_ri_information.cqi_ri_information_rel9.delta_offset_ri = physicalConfigDedicated->pusch_ConfigDedicated->betaOffset_RI_Index;
ul_config_pdu->ulsch_cqi_harq_ri_pdu.harq_information.harq_information_rel10.delta_offset_harq = physicalConfigDedicated->pusch_ConfigDedicated->betaOffset_ACK_Index;
}
}
......@@ -3478,6 +3481,7 @@ void extract_pusch_csi(module_id_t mod_idP,int CC_idP,int UE_id, frame_t frameP,
//subband CQI no PMI (TM1/2/3/7)
AssertFatal(tmode==1 || tmode==2 || tmode==3 || tmode==7,"Illegal transmission mode %d for CQI_ReportModeAperiodic_rm30\n",tmode);
sched_ctl->aperiodic_wideband_cqi0[CC_idP] = pdu[0]>>4;
LOG_I(MAC,"aperiodic_wideband_cqi0 %d\n",sched_ctl->aperiodic_wideband_cqi0[CC_idP]);
curbyte = 0;
curbit = 3;
for (i=0;i<N;i++) {
......@@ -3558,8 +3562,14 @@ void cqi_indication(module_id_t mod_idP, int CC_idP, frame_t frameP, sub_frame_t
nfapi_cqi_indication_rel9_t *rel9,uint8_t *pdu,
nfapi_ul_cqi_information_t *ul_cqi_information)
{
int UE_id = find_UE_id(mod_idP, rntiP);
int UE_id;
UE_list_t *UE_list = &RC.mac[mod_idP]->UE_list;
if (phy_test==1)
UE_id=0;
else
find_UE_id(mod_idP, rntiP);
if (UE_id == -1) {
LOG_W(MAC, "cqi_indication: UE %x not found\n", rntiP);
return;
......
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