Commit 35ba974c authored by Javier Morgade's avatar Javier Morgade

MBMS Scheduler code cleanup

	MCH channel level calculation reformulated according to DLSCH

	ACKNOWLEDGEMENT:
 	1. This commit was developed at Vicomtech (https://www.vicomtech.org) under UE project CDN-X-ALL: "CDN edge-cloud computing for efficient cache and reliable streaming aCROSS Aggregated unicast-multicast LinkS"
 	2. Project funded by Fed4FIRE+ OC5 (https://www.fed4fire.eu)
Signed-off-by: default avatarJavier Morgade <javier.morgade@ieee.org>
parent 5c306f25
...@@ -265,16 +265,16 @@ void mch_channel_level(int **dl_ch_estimates_ext, ...@@ -265,16 +265,16 @@ void mch_channel_level(int **dl_ch_estimates_ext,
for (i=0; i<(nre>>2); i++) { for (i=0; i<(nre>>2); i++) {
#if defined(__x86_64__) || defined(__i386__) #if defined(__x86_64__) || defined(__i386__)
avg128 = _mm_add_epi32(avg128,_mm_madd_epi16(dl_ch128[0],dl_ch128[0])); avg128 = _mm_add_epi32(avg128,_mm_srai_epi32(_mm_madd_epi16(dl_ch128[0],dl_ch128[0]),log2_approx(nre>>2)-1));
#elif defined(__arm__) #elif defined(__arm__)
#endif #endif
} }
avg[aarx] = (((int*)&avg128)[0] + avg[aarx] = (((((int*)&avg128)[0] +
((int*)&avg128)[1] + ((int*)&avg128)[1] +
((int*)&avg128)[2] + ((int*)&avg128)[2] +
((int*)&avg128)[3])/nre; ((int*)&avg128)[3])/(nre>>factor2(nre)))*(1<<(log2_approx(nre>>2)-1-factor2(nre))));
// printf("Channel level : %d\n",avg[(aatx<<1)+aarx]); // printf("Channel level : %d\n",avg[(aatx<<1)+aarx]);
} }
......
...@@ -166,7 +166,7 @@ void prach_procedures(PHY_VARS_eNB *eNB ...@@ -166,7 +166,7 @@ void prach_procedures(PHY_VARS_eNB *eNB
{ {
if ((eNB->prach_energy_counter == 100) && if ((eNB->prach_energy_counter == 100) &&
(max_preamble_energy[0] > eNB->measurements.prach_I0+eNB->prach_DTX_threshold)) { (max_preamble_energy[0] > eNB->measurements.prach_I0+eNB->prach_DTX_threshold)) {
LOG_I(PHY,"[eNB %d/%d][RAPROC] Frame %d, subframe %d Initiating RA procedure with preamble %d, energy %d.%d dB, delay %d\n", LOG_D(PHY,"[eNB %d/%d][RAPROC] Frame %d, subframe %d Initiating RA procedure with preamble %d, energy %d.%d dB, delay %d\n",
eNB->Mod_id, eNB->Mod_id,
eNB->CC_id, eNB->CC_id,
frame, frame,
......
...@@ -82,14 +82,12 @@ get_mbsfn_sf_alloction(module_id_t module_idP, uint8_t CC_id, ...@@ -82,14 +82,12 @@ get_mbsfn_sf_alloction(module_id_t module_idP, uint8_t CC_id,
} }
} }
uint32_t bytes_in_buffer=0; static uint32_t bytes_in_buffer=0;
uint8_t msi_active=0; static uint8_t msi_pmch_stop=0;
uint8_t msi_pmch_stop=0; //static uint8_t msi_active=0;
uint8_t msi_pmch_stop2=0; //static uint8_t msi_pmch_stop2=0;
uint16_t mbms_rab_id = 2047; uint16_t mbms_rab_id = 2047;
static uint8_t msi_sfs=0;
uint8_t msi_sfs=0;
//MSI_ELEMENT * ptr =NULL; //MSI_ELEMENT * ptr =NULL;
...@@ -534,60 +532,30 @@ schedule_MBMS(module_id_t module_idP, uint8_t CC_id, frame_t frameP, ...@@ -534,60 +532,30 @@ schedule_MBMS(module_id_t module_idP, uint8_t CC_id, frame_t frameP,
//l=0; //l=0;
for (k = 0; k < num_mtch; k++) { // loop for all session in this MCH (MCH[0]) at this moment for (k = 0; k < num_mtch; k++) { // loop for all session in this MCH (MCH[0]) at this moment
((MSI_ELEMENT *) msi_ptr)->lcid = cc->mbms_SessionList[0]->list.array[k]->logicalChannelIdentity_r9; //mtch_lcid;
((MSI_ELEMENT *) msi_ptr)->stop_sf_MSB = 0; // last subframeP of this mtch (only one mtch now)
((MSI_ELEMENT *) msi_ptr)->stop_sf_LSB = 0xB;
//((MSI_ELEMENT *) msi_ptr)->stop_sf_LSB = 0x2; //100
((MSI_ELEMENT *) msi_ptr)->stop_sf_MSB = 0x7; // last subframeP of this mtch (only one mtch now) ((MSI_ELEMENT *) msi_ptr)->lcid = cc->mbms_SessionList[0]->list.array[k]->logicalChannelIdentity_r9; //mtch_lcid;
//((MSI_ELEMENT *) msi_ptr)->stop_sf_LSB = 0xB;
((MSI_ELEMENT *) msi_ptr)->stop_sf_LSB = 0xFF; //100
// ((MSI_ELEMENT *) msi_ptr)->stop_sf_MSB = 0x0; // last subframeP of this mtch (only one mtch now)
// ((MSI_ELEMENT *) msi_ptr)->stop_sf_LSB = 0x2; //100
//while((++l)*TBS<=bytes_in_buffer && l<=cc->pmch_Config[0]->sf_AllocEnd_r9){
// if(l>=6 && l<=cc->pmch_Config[0]->sf_AllocEnd_r9){
// ((MSI_ELEMENT *) msi_ptr)->stop_sf_MSB = 0; //we limite till 256 TOFIX
// ((MSI_ELEMENT *) msi_ptr)->stop_sf_LSB = l;
// }
//}
//ptr = (MSI_ELEMENT *) msi_ptr;
if( msi_sfs != 0 ) if( msi_sfs != 0 )
msi_pmch_stop = msi_sfs-1; msi_pmch_stop = msi_sfs-1;
else else
msi_pmch_stop = msi_sfs; msi_pmch_stop = msi_sfs;
//msi_pmch_stop = bytes_in_buffer/TBS;
//if(bytes_in_buffer%TBS)
//msi_pmch_stop++;
// if( msi_pmch_stop > cc->pmch_Config[0]->sf_AllocEnd_r9)
//msi_pmch_stop = 20; LOG_W(MAC,"e-MBMS Buffer Overflow\n");
if(msi_pmch_stop>=num_sf_alloc /*&& msi_pmch_stop <=cc->pmch_Config[0]->sf_AllocEnd_r9*/) { if(msi_pmch_stop>=num_sf_alloc /*&& msi_pmch_stop <=cc->pmch_Config[0]->sf_AllocEnd_r9*/) {
((MSI_ELEMENT *) msi_ptr)->stop_sf_MSB = 0; // last subframeP of this mtch (only one mtch now) ((MSI_ELEMENT *) msi_ptr)->stop_sf_MSB = 0; // last subframeP of this mtch (only one mtch now) & stop_sf limited to 256
//((MSI_ELEMENT *) msi_ptr)->stop_sf_LSB = msi_pmch_stop; //((MSI_ELEMENT *) msi_ptr)->stop_sf_LSB = msi_pmch_stop;
((MSI_ELEMENT *) msi_ptr)->stop_sf_LSB = (msi_pmch_stop <=cc->pmch_Config[0]->sf_AllocEnd_r9 ? msi_pmch_stop: cc->pmch_Config[0]->sf_AllocEnd_r9); ((MSI_ELEMENT *) msi_ptr)->stop_sf_LSB = (msi_pmch_stop <=cc->pmch_Config[0]->sf_AllocEnd_r9 ? msi_pmch_stop: cc->pmch_Config[0]->sf_AllocEnd_r9);
msi_pmch_stop = (msi_pmch_stop <=cc->pmch_Config[0]->sf_AllocEnd_r9 ? msi_pmch_stop: cc->pmch_Config[0]->sf_AllocEnd_r9); msi_pmch_stop = (msi_pmch_stop <=cc->pmch_Config[0]->sf_AllocEnd_r9 ? msi_pmch_stop: cc->pmch_Config[0]->sf_AllocEnd_r9);
}else{ }else{
((MSI_ELEMENT *) msi_ptr)->stop_sf_MSB = 0x7; // last subframeP of this mtch (only one mtch now) ((MSI_ELEMENT *) msi_ptr)->stop_sf_MSB = 0x7; // last subframeP of this mtch (only one mtch now)
((MSI_ELEMENT *) msi_ptr)->stop_sf_LSB = 0xFF; //100 ((MSI_ELEMENT *) msi_ptr)->stop_sf_LSB = 0xFF;
msi_pmch_stop=0; msi_pmch_stop=0;
} }
// do{
// if(l>=0 && l<=cc->pmch_Config[0]->sf_AllocEnd_r9){
// ((MSI_ELEMENT *) msi_ptr)->stop_sf_MSB = 0; //we limite till 256 TOFIX
// ((MSI_ELEMENT *) msi_ptr)->stop_sf_LSB = l;
// }
// }while((l++)*TBS<=bytes_in_buffer);
//
// if(((MSI_ELEMENT *) msi_ptr)->stop_sf_MSB !=0x7 && ((MSI_ELEMENT *) msi_ptr)->stop_sf_LSB != 0xFF )
// msi_active=1;
// else
// msi_active=1;
//((MSI_ELEMENT *) msi_ptr)->stop_sf_LSB = l;
// l++;
// }
msi_ptr += sizeof(MSI_ELEMENT); msi_ptr += sizeof(MSI_ELEMENT);
} }
......
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