* Compile Rel10 with component carrier

* Add VCD timing for PDCP, RLC, and MAC
* Update MAC-PHY interface
* update eNB MAC DLSCH scheduler and preprocessor with component carrier
* Add test case for dlsim performance
  


git-svn-id: http://svn.eurecom.fr/openair4G/trunk@5708 818b1a75-f10b-46b9-bf7c-635c3b92a50f
This commit is contained in:
Navid Nikaein
2014-08-12 20:27:30 +00:00
parent 6b6154102f
commit 2f2fde581d
53 changed files with 1445 additions and 1265 deletions
+1 -1
View File
@@ -18,7 +18,7 @@ CPUFLAGS += $(shell if grep --silent -w sse4 /proc/cpuinfo ; then echo "-msse4"
linux = $(shell if [ `uname` = "Linux" ] ; then echo "1" ; else echo "0" ; fi)
ifdef DEBUG
CFLAGS += -g -ggdb -DDEBUG_PHY
CFLAGS += -g -ggdb -DDEBUG_PHY -DDEBUG_MEAS
else
CFLAGE += -O2
endif
+33 -34
View File
@@ -335,115 +335,114 @@ void update_mac(Event_t event) {
LOG_I(EMU,"A NEW MAC MODEL\n");
int i = 0;
UE_list_t *UE_list;
int enb_module_id=0;
int cc_id =0;
eNB_MAC_INST *eNB_mac_inst = get_eNB_mac_inst(enb_module_id);
OAI_Emulation *oai_emulation = get_OAI_emulation();
if(event.optype == READ)
{
eNB_MAC_INST *eNB_mac_inst;
eNB_mac_inst = get_eNB_mac_inst();
printf("eNB_stats\n\n\n");
printf("eNB_stats\n\n\n");
if(event.key==NULL)
{
LOG_I(EMU,"num_dlactive_UEs :");
printf("%" PRIu16 "\n",eNB_mac_inst->eNB_stats.num_dlactive_UEs);
printf("%" PRIu16 "\n",eNB_mac_inst->eNB_stats[cc_id].num_dlactive_UEs);
LOG_I(EMU,"available_prbs :");
printf("%" PRIu16 "\n",eNB_mac_inst->eNB_stats.available_prbs);
printf("%" PRIu16 "\n",eNB_mac_inst->eNB_stats[cc_id].available_prbs);
LOG_I(EMU,"total_available_prbs :");
printf("%" PRIu32 "\n", eNB_mac_inst->eNB_stats.total_available_prbs);
printf("%" PRIu32 "\n", eNB_mac_inst->eNB_stats[cc_id].total_available_prbs);
LOG_I(EMU,"available_ncces :");
printf("%" PRIu16 "\n",eNB_mac_inst->eNB_stats.available_ncces);
printf("%" PRIu16 "\n",eNB_mac_inst->eNB_stats[cc_id].available_ncces);
LOG_I(EMU,"dlsch_bitrate :");
printf("%" PRIu32 "\n",eNB_mac_inst->eNB_stats.dlsch_bitrate);
printf("%" PRIu32 "\n",eNB_mac_inst->eNB_stats[cc_id].dlsch_bitrate);
LOG_I(EMU,"dlsch_bytes_tx :");
printf("%" PRIu32 "\n",eNB_mac_inst->eNB_stats.dlsch_bytes_tx);
printf("%" PRIu32 "\n",eNB_mac_inst->eNB_stats[cc_id].dlsch_bytes_tx);
LOG_I(EMU,"dlsch_pdus_tx :");
printf("%" PRIu32 "\n",eNB_mac_inst->eNB_stats.dlsch_pdus_tx);
printf("%" PRIu32 "\n",eNB_mac_inst->eNB_stats[cc_id].dlsch_pdus_tx);
LOG_I(EMU,"total_dlsch_bitrate :");
printf("%" PRIu32 "\n",eNB_mac_inst->eNB_stats.total_dlsch_bitrate);
printf("%" PRIu32 "\n",eNB_mac_inst->eNB_stats[cc_id].total_dlsch_bitrate);
LOG_I(EMU,"total_dlsch_bytes_tx :");
printf("%" PRIu32 "\n",eNB_mac_inst->eNB_stats.total_dlsch_bytes_tx);
printf("%" PRIu32 "\n",eNB_mac_inst->eNB_stats[cc_id].total_dlsch_bytes_tx);
LOG_I(EMU,"total_dlsch_pdus_tx :");
printf("%" PRIu32 "\n",eNB_mac_inst->eNB_stats.total_dlsch_pdus_tx);
printf("%" PRIu32 "\n",eNB_mac_inst->eNB_stats[cc_id].total_dlsch_pdus_tx);
LOG_I(EMU,"ulsch_bitrate :");
printf("%" PRIu32 "\n",eNB_mac_inst->eNB_stats.ulsch_bitrate);
printf("%" PRIu32 "\n",eNB_mac_inst->eNB_stats[cc_id].ulsch_bitrate);
LOG_I(EMU,"ulsch_bytes_rx :");
printf("%" PRIu32 "\n",eNB_mac_inst->eNB_stats.ulsch_bytes_rx);
printf("%" PRIu32 "\n",eNB_mac_inst->eNB_stats[cc_id].ulsch_bytes_rx);
LOG_I(EMU,"ulsch_pdus_rx :");
printf("%" PRIu64 "\n",eNB_mac_inst->eNB_stats.ulsch_pdus_rx);
printf("%" PRIu64 "\n",eNB_mac_inst->eNB_stats[cc_id].ulsch_pdus_rx);
}
else if(!strcmp((char *) event.key, "num_dlactive_UEs"))
{
LOG_I(EMU,"num_dlactive_UEs :");
printf("%" PRIu16 "\n",eNB_mac_inst->eNB_stats.num_dlactive_UEs);
printf("%" PRIu16 "\n",eNB_mac_inst->eNB_stats[cc_id].num_dlactive_UEs);
}
else if(!strcmp((char *) event.key, "available_prbs"))
{
LOG_I(EMU,"available_prbs :");
printf("%" PRIu16 "\n",eNB_mac_inst->eNB_stats.available_prbs);
printf("%" PRIu16 "\n",eNB_mac_inst->eNB_stats[cc_id].available_prbs);
}
else if(!strcmp((char *) event.key, "total_available_prbs"))
{
LOG_I(EMU,"total_available_prbs :");
printf("%" PRIu32 "\n", eNB_mac_inst->eNB_stats.total_available_prbs);
printf("%" PRIu32 "\n", eNB_mac_inst->eNB_stats[cc_id].total_available_prbs);
}
else if(!strcmp((char *) event.key, "available_ncces"))
{
LOG_I(EMU,"available_ncces :");
printf("%" PRIu16 "\n",eNB_mac_inst->eNB_stats.available_ncces);
printf("%" PRIu16 "\n",eNB_mac_inst->eNB_stats[cc_id].available_ncces);
}
else if(!strcmp((char *) event.key, "dlsch_bitrate"))
{
LOG_I(EMU,"dlsch_bitrate :");
printf("%" PRIu32 "\n",eNB_mac_inst->eNB_stats.dlsch_bitrate);
printf("%" PRIu32 "\n",eNB_mac_inst->eNB_stats[cc_id].dlsch_bitrate);
}
else if(!strcmp((char *) event.key, "dlsch_bytes_tx"))
{
LOG_I(EMU,"dlsch_bytes_tx :");
printf("%" PRIu32 "\n",eNB_mac_inst->eNB_stats.dlsch_bytes_tx);
printf("%" PRIu32 "\n",eNB_mac_inst->eNB_stats[cc_id].dlsch_bytes_tx);
}
else if(!strcmp((char *) event.key, "dlsch_pdus_tx"))
{
LOG_I(EMU,"dlsch_pdus_tx :");
printf("%" PRIu32 "\n",eNB_mac_inst->eNB_stats.dlsch_pdus_tx);
printf("%" PRIu32 "\n",eNB_mac_inst->eNB_stats[cc_id].dlsch_pdus_tx);
}
else if(!strcmp((char *) event.key, "total_dlsch_bitrate"))
{
LOG_I(EMU,"total_dlsch_bitrate :");
printf("%" PRIu32 "\n",eNB_mac_inst->eNB_stats.total_dlsch_bitrate);
printf("%" PRIu32 "\n",eNB_mac_inst->eNB_stats[cc_id].total_dlsch_bitrate);
}
else if(!strcmp((char *) event.key, "total_dlsch_bytes_tx"))
{
LOG_I(EMU,"total_dlsch_bytes_tx :");
printf("%" PRIu32 "\n",eNB_mac_inst->eNB_stats.total_dlsch_bytes_tx);
printf("%" PRIu32 "\n",eNB_mac_inst->eNB_stats[cc_id].total_dlsch_bytes_tx);
}
else if(!strcmp((char *) event.key, "total_dlsch_pdus_tx"))
{
LOG_I(EMU,"total_dlsch_pdus_tx :");
printf("%" PRIu32 "\n",eNB_mac_inst->eNB_stats.total_dlsch_pdus_tx);
printf("%" PRIu32 "\n",eNB_mac_inst->eNB_stats[cc_id].total_dlsch_pdus_tx);
}
else if(!strcmp((char *) event.key, "ulsch_bitrate"))
{
LOG_I(EMU,"ulsch_bitrate :");
printf("%" PRIu32 "\n",eNB_mac_inst->eNB_stats.ulsch_bitrate);
printf("%" PRIu32 "\n",eNB_mac_inst->eNB_stats[cc_id].ulsch_bitrate);
}
else if(!strcmp((char *) event.key, "ulsch_bytes_rx"))
{
LOG_I(EMU,"ulsch_bytes_rx :");
printf("%" PRIu32 "\n",eNB_mac_inst->eNB_stats.ulsch_bytes_rx);
printf("%" PRIu32 "\n",eNB_mac_inst->eNB_stats[cc_id].ulsch_bytes_rx);
}
else if(!strcmp((char *) event.key, "ulsch_pdus_rx"))
{
LOG_I(EMU,"ulsch_pdus_rx :");
printf("%" PRIu64 "\n",eNB_mac_inst->eNB_stats.ulsch_pdus_rx);
printf("%" PRIu64 "\n",eNB_mac_inst->eNB_stats[cc_id].ulsch_pdus_rx);
}
}
else if(event.optype == WRITE)
{
LOG_I(EMU,"WRITE OPERATION \n");
eNB_MAC_INST *eNB_mac_inst;
eNB_mac_inst = get_eNB_mac_inst();
OAI_Emulation *oai_emulation;
oai_emulation = get_OAI_emulation();
if(event.key==NULL && event.value!=NULL)
{
+6 -4
View File
@@ -720,8 +720,9 @@ void *l2l1_task(void *args_p) {
#ifdef PRINT_STATS
if(last_slot==9 && frame%10==0)
if(eNB_avg_thr)
fprintf(eNB_avg_thr,"%d %d\n",PHY_vars_eNB_g[eNB_inst][0]->frame,(PHY_vars_eNB_g[eNB_inst][0]->total_system_throughput)/((PHY_vars_eNB_g[eNB_inst][0]->frame+1)*10));
if(eNB_avg_thr)
fprintf(eNB_avg_thr,"%d %d\n",PHY_vars_eNB_g[eNB_inst]->proc[slot>>1].frame_tx,
(PHY_vars_eNB_g[eNB_inst]->total_system_throughput)/((PHY_vars_eNB_g[eNB_inst]->proc[slot>>1].frame_tx+1)*10));
if (eNB_stats[eNB_inst]) {
len = dump_eNB_stats(PHY_vars_eNB_g[eNB_inst][0], stats_buffer, 0);
rewind (eNB_stats[eNB_inst]);
@@ -1585,9 +1586,10 @@ void oai_shutdown(void) {
LOG_N(EMU, ">>>>>>>>>>>>>>>>>>>>>>>>>>> OAIEMU shutdown <<<<<<<<<<<<<<<<<<<<<<<<<<\n\n");
}
eNB_MAC_INST* get_eNB_mac_inst()
eNB_MAC_INST* get_eNB_mac_inst(module_id_t module_idP)
{
return eNB_mac_inst;
return (&eNB_mac_inst[module_idP]);
}
OAI_Emulation* get_OAI_emulation()
+1 -1
View File
@@ -17,7 +17,7 @@
#include "UTIL/OMV/structures.h"
#endif
eNB_MAC_INST* get_eNB_mac_inst(void);
eNB_MAC_INST* get_eNB_mac_inst(module_id_t module_idP);
OAI_Emulation* get_OAI_emulation(void);
void init_channel_vars(LTE_DL_FRAME_PARMS *frame_parms, double ***s_re,double ***s_im,double ***r_re,double ***r_im,double ***r_re0,double ***r_im0);
+1 -23
View File
@@ -63,29 +63,7 @@
# include "intertask_interface_init.h"
#endif
mapping log_level_names[] =
{
{"emerg", LOG_EMERG},
{"alert", LOG_ALERT},
{"crit", LOG_CRIT},
{"error", LOG_ERR},
{"warn", LOG_WARNING},
{"notice", LOG_NOTICE},
{"info", LOG_INFO},
{"debug", LOG_DEBUG},
{"file", LOG_FILE},
{"trace", LOG_TRACE},
{NULL, -1}
};
mapping log_verbosity_names[] =
{
{"none", 0x0},
{"low", 0x5},
{"medium", 0x15},
{"high", 0x35},
{"full", 0x75},
{NULL, -1}
};
mapping omg_model_names[] =
{
{"STATIC", STATIC},