* additional timing measurements for PDCP
git-svn-id: http://svn.eurecom.fr/openair4G/trunk@5243 818b1a75-f10b-46b9-bf7c-635c3b92a50f
This commit is contained in:
@@ -79,6 +79,14 @@ static inline void reset_meas(time_stats_t *ts) {
|
|||||||
ts->max=0;
|
ts->max=0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
static inline void copy_meas(time_stats_t *dst_ts,time_stats_t *src_ts) {
|
||||||
|
|
||||||
|
if (opp_enabled){
|
||||||
|
dst_ts->trials=src_ts->trials;
|
||||||
|
dst_ts->diff=src_ts->diff;
|
||||||
|
dst_ts->max=src_ts->max;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*static inline double get_mean_meas_us(time_stats_t *ts, double cpu_freq_GHz) {
|
/*static inline double get_mean_meas_us(time_stats_t *ts, double cpu_freq_GHz) {
|
||||||
|
|
||||||
|
|||||||
@@ -275,9 +275,19 @@ boolean_t pdcp_data_req(
|
|||||||
if ((pdcp_p->security_activated != 0) &&
|
if ((pdcp_p->security_activated != 0) &&
|
||||||
((pdcp_p->cipheringAlgorithm) != 0) &&
|
((pdcp_p->cipheringAlgorithm) != 0) &&
|
||||||
((pdcp_p->integrityProtAlgorithm) != 0)) {
|
((pdcp_p->integrityProtAlgorithm) != 0)) {
|
||||||
pdcp_apply_security(pdcp_p, rb_idP % maxDRB,
|
|
||||||
pdcp_header_len, current_sn, pdcp_pdu_p->data,
|
if (enb_flagP == ENB_FLAG_NO)
|
||||||
sdu_buffer_sizeP);
|
start_meas(&eNB_pdcp_stats[enb_mod_idP].apply_security);
|
||||||
|
else
|
||||||
|
start_meas(&UE_pdcp_stats[ue_mod_idP].apply_security);
|
||||||
|
|
||||||
|
pdcp_apply_security(pdcp_p, rb_idP % maxDRB,
|
||||||
|
pdcp_header_len, current_sn, pdcp_pdu_p->data,
|
||||||
|
sdu_buffer_sizeP);
|
||||||
|
if (enb_flagP == ENB_FLAG_NO)
|
||||||
|
stop_meas(&eNB_pdcp_stats[enb_mod_idP].apply_security);
|
||||||
|
else
|
||||||
|
stop_meas(&UE_pdcp_stats[ue_mod_idP].apply_security);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -519,11 +529,21 @@ boolean_t pdcp_data_ind(
|
|||||||
// SRB1/2: control-plane data
|
// SRB1/2: control-plane data
|
||||||
if (srb_flagP){
|
if (srb_flagP){
|
||||||
#if defined(ENABLE_SECURITY)
|
#if defined(ENABLE_SECURITY)
|
||||||
if (pdcp_p->security_activated == 1) {
|
if (pdcp_p->security_activated == 1) {
|
||||||
pdcp_validate_security(pdcp_p, rb_idP, pdcp_header_len,
|
if (enb_flagP == ENB_FLAG_NO)
|
||||||
sequence_number, sdu_buffer_pP->data,
|
start_meas(&eNB_pdcp_stats[enb_mod_idP].validate_security);
|
||||||
sdu_buffer_sizeP - pdcp_tailer_len);
|
else
|
||||||
}
|
start_meas(&UE_pdcp_stats[ue_mod_idP].validate_security);
|
||||||
|
|
||||||
|
pdcp_validate_security(pdcp_p, rb_idP, pdcp_header_len,
|
||||||
|
sequence_number, sdu_buffer_pP->data,
|
||||||
|
sdu_buffer_sizeP - pdcp_tailer_len);
|
||||||
|
if (enb_flagP == ENB_FLAG_NO)
|
||||||
|
stop_meas(&eNB_pdcp_stats[enb_mod_idP].validate_security);
|
||||||
|
else
|
||||||
|
stop_meas(&UE_pdcp_stats[ue_mod_idP].validate_security);
|
||||||
|
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
//rrc_lite_data_ind(module_id, //Modified MW - L2 Interface
|
//rrc_lite_data_ind(module_id, //Modified MW - L2 Interface
|
||||||
pdcp_rrc_data_ind(enb_mod_idP,
|
pdcp_rrc_data_ind(enb_mod_idP,
|
||||||
@@ -774,8 +794,18 @@ void pdcp_run (
|
|||||||
pdcp_fifo_read_input_sdus(frameP, enb_flagP, ue_mod_idP, enb_mod_idP);
|
pdcp_fifo_read_input_sdus(frameP, enb_flagP, ue_mod_idP, enb_mod_idP);
|
||||||
}
|
}
|
||||||
// PDCP -> NAS/IP traffic: RX
|
// PDCP -> NAS/IP traffic: RX
|
||||||
|
if (enb_flagP)
|
||||||
|
start_meas(&eNB_pdcp_stats[enb_mod_idP].pdcp_ip);
|
||||||
|
else
|
||||||
|
start_meas(&UE_pdcp_stats[ue_mod_idP].pdcp_ip);
|
||||||
|
|
||||||
pdcp_fifo_flush_sdus(frameP, enb_flagP, enb_mod_idP, ue_mod_idP);
|
pdcp_fifo_flush_sdus(frameP, enb_flagP, enb_mod_idP, ue_mod_idP);
|
||||||
|
|
||||||
|
if (enb_flagP)
|
||||||
|
stop_meas(&eNB_pdcp_stats[enb_mod_idP].pdcp_ip);
|
||||||
|
else
|
||||||
|
stop_meas(&UE_pdcp_stats[ue_mod_idP].pdcp_ip);
|
||||||
|
|
||||||
vcd_signal_dumper_dump_function_by_name(VCD_SIGNAL_DUMPER_FUNCTIONS_PDCP_RUN, VCD_FUNCTION_OUT);
|
vcd_signal_dumper_dump_function_by_name(VCD_SIGNAL_DUMPER_FUNCTIONS_PDCP_RUN, VCD_FUNCTION_OUT);
|
||||||
if (enb_flagP)
|
if (enb_flagP)
|
||||||
stop_meas(&eNB_pdcp_stats[enb_mod_idP].pdcp_run);
|
stop_meas(&eNB_pdcp_stats[enb_mod_idP].pdcp_run);
|
||||||
|
|||||||
@@ -106,11 +106,10 @@ typedef struct pdcp_stats_t {
|
|||||||
time_stats_t pdcp_run;
|
time_stats_t pdcp_run;
|
||||||
time_stats_t data_req;
|
time_stats_t data_req;
|
||||||
time_stats_t data_ind;
|
time_stats_t data_ind;
|
||||||
time_stats_t encrption;
|
time_stats_t apply_security; //
|
||||||
time_stats_t decrption;
|
time_stats_t validate_security;
|
||||||
time_stats_t pdcp_ip;
|
time_stats_t pdcp_ip;
|
||||||
time_stats_t ip_pdcp;
|
time_stats_t ip_pdcp; // separte thread
|
||||||
|
|
||||||
}pdcp_stats_t; // common to eNB and UE
|
}pdcp_stats_t; // common to eNB and UE
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -86,6 +86,8 @@ static struct lfds611_queue_state **pdcp_netlink_queue_ue = NULL;
|
|||||||
static uint32_t *pdcp_netlink_nb_element_enb = NULL;
|
static uint32_t *pdcp_netlink_nb_element_enb = NULL;
|
||||||
static uint32_t *pdcp_netlink_nb_element_ue = NULL;
|
static uint32_t *pdcp_netlink_nb_element_ue = NULL;
|
||||||
|
|
||||||
|
time_stats_t ip_pdcp_stats_tmp;
|
||||||
|
|
||||||
static void *pdcp_netlink_thread_fct(void *arg);
|
static void *pdcp_netlink_thread_fct(void *arg);
|
||||||
|
|
||||||
int pdcp_netlink_init(void) {
|
int pdcp_netlink_init(void) {
|
||||||
@@ -95,7 +97,8 @@ int pdcp_netlink_init(void) {
|
|||||||
int nb_inst_ue;
|
int nb_inst_ue;
|
||||||
pthread_attr_t attr;
|
pthread_attr_t attr;
|
||||||
struct sched_param sched_param;
|
struct sched_param sched_param;
|
||||||
|
|
||||||
|
reset_meas(&ip_pdcp_stats_tmp);
|
||||||
#if defined(USER_MODE) && defined(OAI_EMU)
|
#if defined(USER_MODE) && defined(OAI_EMU)
|
||||||
nb_inst_enb = oai_emulation.info.nb_enb_local;
|
nb_inst_enb = oai_emulation.info.nb_enb_local;
|
||||||
nb_inst_ue = oai_emulation.info.nb_ue_local;
|
nb_inst_ue = oai_emulation.info.nb_ue_local;
|
||||||
@@ -103,7 +106,7 @@ int pdcp_netlink_init(void) {
|
|||||||
nb_inst_enb = 1;
|
nb_inst_enb = 1;
|
||||||
nb_inst_ue = 1;
|
nb_inst_ue = 1;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
pdcp_netlink_queue_enb = calloc(nb_inst_enb, sizeof(struct lfds611_queue_state*));
|
pdcp_netlink_queue_enb = calloc(nb_inst_enb, sizeof(struct lfds611_queue_state*));
|
||||||
pdcp_netlink_nb_element_enb = malloc(nb_inst_enb * sizeof(uint32_t));
|
pdcp_netlink_nb_element_enb = malloc(nb_inst_enb * sizeof(uint32_t));
|
||||||
|
|
||||||
@@ -206,7 +209,7 @@ void *pdcp_netlink_thread_fct(void *arg) {
|
|||||||
for (nas_nlh_rx = (struct nlmsghdr *) nl_rx_buf;
|
for (nas_nlh_rx = (struct nlmsghdr *) nl_rx_buf;
|
||||||
NLMSG_OK(nas_nlh_rx, (unsigned int)len);
|
NLMSG_OK(nas_nlh_rx, (unsigned int)len);
|
||||||
nas_nlh_rx = NLMSG_NEXT (nas_nlh_rx, len)) {
|
nas_nlh_rx = NLMSG_NEXT (nas_nlh_rx, len)) {
|
||||||
|
start_meas(&ip_pdcp_stats_tmp);
|
||||||
/* There is no need to check for nlmsg_type because
|
/* There is no need to check for nlmsg_type because
|
||||||
* the header is not set in our drivers.
|
* the header is not set in our drivers.
|
||||||
*/
|
*/
|
||||||
@@ -259,6 +262,8 @@ void *pdcp_netlink_thread_fct(void *arg) {
|
|||||||
|
|
||||||
/* Enqueue the element in the right queue */
|
/* Enqueue the element in the right queue */
|
||||||
lfds611_queue_guaranteed_enqueue(pdcp_netlink_queue_enb[new_data_p->pdcp_read_header.inst], new_data_p);
|
lfds611_queue_guaranteed_enqueue(pdcp_netlink_queue_enb[new_data_p->pdcp_read_header.inst], new_data_p);
|
||||||
|
stop_meas(&ip_pdcp_stats_tmp);
|
||||||
|
copy_meas(&eNB_pdcp_stats[new_data_p->pdcp_read_header.inst].pdcp_ip,&ip_pdcp_stats_tmp);
|
||||||
} else {
|
} else {
|
||||||
if (pdcp_netlink_nb_element_ue[new_data_p->pdcp_read_header.inst]
|
if (pdcp_netlink_nb_element_ue[new_data_p->pdcp_read_header.inst]
|
||||||
> PDCP_QUEUE_NB_ELEMENTS) {
|
> PDCP_QUEUE_NB_ELEMENTS) {
|
||||||
@@ -270,6 +275,8 @@ void *pdcp_netlink_thread_fct(void *arg) {
|
|||||||
|
|
||||||
/* Enqueue the element in the right queue */
|
/* Enqueue the element in the right queue */
|
||||||
lfds611_queue_guaranteed_enqueue(pdcp_netlink_queue_ue[new_data_p->pdcp_read_header.inst], new_data_p);
|
lfds611_queue_guaranteed_enqueue(pdcp_netlink_queue_ue[new_data_p->pdcp_read_header.inst], new_data_p);
|
||||||
|
stop_meas(&ip_pdcp_stats_tmp);
|
||||||
|
copy_meas(&UE_pdcp_stats[new_data_p->pdcp_read_header.inst].pdcp_ip,&ip_pdcp_stats_tmp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1172,11 +1172,11 @@ void reset_opp_meas(void){
|
|||||||
reset_meas(&UE_pdcp_stats[UE_id].pdcp_run);
|
reset_meas(&UE_pdcp_stats[UE_id].pdcp_run);
|
||||||
reset_meas(&UE_pdcp_stats[UE_id].data_req);
|
reset_meas(&UE_pdcp_stats[UE_id].data_req);
|
||||||
reset_meas(&UE_pdcp_stats[UE_id].data_ind);
|
reset_meas(&UE_pdcp_stats[UE_id].data_ind);
|
||||||
/* reset_meas(&UE_pdcp_stats[UE_id].encrption);
|
reset_meas(&UE_pdcp_stats[UE_id].apply_security);
|
||||||
reset_meas(&UE_pdcp_stats[UE_id].decrption);
|
reset_meas(&UE_pdcp_stats[UE_id].validate_security);
|
||||||
reset_meas(&UE_pdcp_stats[UE_id].pdcp_ip);
|
reset_meas(&UE_pdcp_stats[UE_id].pdcp_ip);
|
||||||
reset_meas(&UE_pdcp_stats[UE_id].ip_pdcp);
|
reset_meas(&UE_pdcp_stats[UE_id].ip_pdcp);
|
||||||
*/
|
|
||||||
for (eNB_id=0; eNB_id<NB_eNB_INST; eNB_id++) {
|
for (eNB_id=0; eNB_id<NB_eNB_INST; eNB_id++) {
|
||||||
reset_meas(&PHY_vars_eNB_g[eNB_id]->phy_proc);
|
reset_meas(&PHY_vars_eNB_g[eNB_id]->phy_proc);
|
||||||
reset_meas(&PHY_vars_eNB_g[eNB_id]->phy_proc_rx);
|
reset_meas(&PHY_vars_eNB_g[eNB_id]->phy_proc_rx);
|
||||||
@@ -1235,12 +1235,11 @@ void reset_opp_meas(void){
|
|||||||
reset_meas(&eNB_pdcp_stats[eNB_id].pdcp_run);
|
reset_meas(&eNB_pdcp_stats[eNB_id].pdcp_run);
|
||||||
reset_meas(&eNB_pdcp_stats[eNB_id].data_req);
|
reset_meas(&eNB_pdcp_stats[eNB_id].data_req);
|
||||||
reset_meas(&eNB_pdcp_stats[eNB_id].data_ind);
|
reset_meas(&eNB_pdcp_stats[eNB_id].data_ind);
|
||||||
/*
|
reset_meas(&eNB_pdcp_stats[eNB_id].apply_security);
|
||||||
reset_meas(&eNB_pdcp_stats[UE_id].encrption);
|
reset_meas(&eNB_pdcp_stats[eNB_id].validate_security);
|
||||||
reset_meas(&eNB_pdcp_stats[UE_id].decrption);
|
reset_meas(&eNB_pdcp_stats[eNB_id].pdcp_ip);
|
||||||
reset_meas(&eNB_pdcp_stats[UE_id].pdcp_ip);
|
reset_meas(&eNB_pdcp_stats[eNB_id].ip_pdcp);
|
||||||
reset_meas(&eNB_pdcp_stats[UE_id].ip_pdcp);
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1351,6 +1350,11 @@ void print_opp_meas(void){
|
|||||||
print_meas(&UE_pdcp_stats[UE_id].data_req,"[UE][DL][pdcp_data_req]",&oaisim_stats,&oaisim_stats_f);
|
print_meas(&UE_pdcp_stats[UE_id].data_req,"[UE][DL][pdcp_data_req]",&oaisim_stats,&oaisim_stats_f);
|
||||||
print_meas(&UE_pdcp_stats[UE_id].data_ind,"[UE][UL][pdcp_data_ind]",&oaisim_stats,&oaisim_stats_f);
|
print_meas(&UE_pdcp_stats[UE_id].data_ind,"[UE][UL][pdcp_data_ind]",&oaisim_stats,&oaisim_stats_f);
|
||||||
|
|
||||||
|
print_meas(&UE_pdcp_stats[UE_id].apply_security,"[UE][DL][apply_security]",&oaisim_stats,&oaisim_stats_f);
|
||||||
|
print_meas(&UE_pdcp_stats[UE_id].validate_security,"[UE][UL][validate_security]",&oaisim_stats,&oaisim_stats_f);
|
||||||
|
print_meas(&UE_pdcp_stats[UE_id].ip_pdcp,"[UE][DL][ip_pdcp]",&oaisim_stats,&oaisim_stats_f);
|
||||||
|
print_meas(&UE_pdcp_stats[UE_id].pdcp_ip,"[UE][UL][pdcp_ip]",&oaisim_stats,&oaisim_stats_f);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (eNB_id=0; eNB_id<NB_eNB_INST; eNB_id++) {
|
for (eNB_id=0; eNB_id<NB_eNB_INST; eNB_id++) {
|
||||||
@@ -1368,6 +1372,12 @@ void print_opp_meas(void){
|
|||||||
print_meas(&eNB_pdcp_stats[eNB_id].pdcp_run,"[eNB][pdcp_run]",&oaisim_stats,&oaisim_stats_f);
|
print_meas(&eNB_pdcp_stats[eNB_id].pdcp_run,"[eNB][pdcp_run]",&oaisim_stats,&oaisim_stats_f);
|
||||||
print_meas(&eNB_pdcp_stats[eNB_id].data_req,"[eNB][DL][pdcp_data_req]",&oaisim_stats,&oaisim_stats_f);
|
print_meas(&eNB_pdcp_stats[eNB_id].data_req,"[eNB][DL][pdcp_data_req]",&oaisim_stats,&oaisim_stats_f);
|
||||||
print_meas(&eNB_pdcp_stats[eNB_id].data_ind,"[eNB][UL][pdcp_data_ind]",&oaisim_stats,&oaisim_stats_f);
|
print_meas(&eNB_pdcp_stats[eNB_id].data_ind,"[eNB][UL][pdcp_data_ind]",&oaisim_stats,&oaisim_stats_f);
|
||||||
|
|
||||||
|
print_meas(&eNB_pdcp_stats[eNB_id].apply_security,"[eNB][DL][apply_security]",&oaisim_stats,&oaisim_stats_f);
|
||||||
|
print_meas(&eNB_pdcp_stats[eNB_id].validate_security,"[eNB][UL][validate_security]",&oaisim_stats,&oaisim_stats_f);
|
||||||
|
print_meas(&eNB_pdcp_stats[eNB_id].ip_pdcp,"[eNB][DL][ip_pdcp]",&oaisim_stats,&oaisim_stats_f);
|
||||||
|
print_meas(&eNB_pdcp_stats[eNB_id].pdcp_ip,"[eNB][UL][pdcp_ip]",&oaisim_stats,&oaisim_stats_f);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user