diff --git a/openair1/PHY/TOOLS/time_meas.h b/openair1/PHY/TOOLS/time_meas.h index 6d31ec3dfb243526a9e71b8d35c28fd0fa73823d..42a5f44d4b3f352457b4f255bca7c1cb8106d531 100644 --- a/openair1/PHY/TOOLS/time_meas.h +++ b/openair1/PHY/TOOLS/time_meas.h @@ -79,6 +79,14 @@ static inline void reset_meas(time_stats_t *ts) { 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) { diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp.c b/openair2/LAYER2/PDCP_v10.1.0/pdcp.c index 27637582b229ee675c2b759fd210c77de4b24e68..cd3dfaeb2ae2388aab3b64032f5e78c3400ca4d9 100755 --- a/openair2/LAYER2/PDCP_v10.1.0/pdcp.c +++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp.c @@ -275,9 +275,19 @@ boolean_t pdcp_data_req( if ((pdcp_p->security_activated != 0) && ((pdcp_p->cipheringAlgorithm) != 0) && ((pdcp_p->integrityProtAlgorithm) != 0)) { - 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) + 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 @@ -519,11 +529,21 @@ boolean_t pdcp_data_ind( // SRB1/2: control-plane data if (srb_flagP){ #if defined(ENABLE_SECURITY) - if (pdcp_p->security_activated == 1) { - pdcp_validate_security(pdcp_p, rb_idP, pdcp_header_len, - sequence_number, sdu_buffer_pP->data, - sdu_buffer_sizeP - pdcp_tailer_len); - } + if (pdcp_p->security_activated == 1) { + if (enb_flagP == ENB_FLAG_NO) + start_meas(&eNB_pdcp_stats[enb_mod_idP].validate_security); + 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 //rrc_lite_data_ind(module_id, //Modified MW - L2 Interface 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 -> 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); + 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); if (enb_flagP) stop_meas(&eNB_pdcp_stats[enb_mod_idP].pdcp_run); diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp.h b/openair2/LAYER2/PDCP_v10.1.0/pdcp.h index 065521cff9677d34d5499be056833c30afaf4cc1..c14d24d60279182ce736f884670048bbbfa2e009 100755 --- a/openair2/LAYER2/PDCP_v10.1.0/pdcp.h +++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp.h @@ -106,11 +106,10 @@ typedef struct pdcp_stats_t { time_stats_t pdcp_run; time_stats_t data_req; time_stats_t data_ind; - time_stats_t encrption; - time_stats_t decrption; + time_stats_t apply_security; // + time_stats_t validate_security; 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 diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp_netlink.c b/openair2/LAYER2/PDCP_v10.1.0/pdcp_netlink.c index 2ef2ac960412c1d7b9371fe957938dafb76e1e3e..995d69ae0f3ba220288fd09ac31d36e57768fb81 100644 --- a/openair2/LAYER2/PDCP_v10.1.0/pdcp_netlink.c +++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp_netlink.c @@ -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_ue = NULL; +time_stats_t ip_pdcp_stats_tmp; + static void *pdcp_netlink_thread_fct(void *arg); int pdcp_netlink_init(void) { @@ -95,7 +97,8 @@ int pdcp_netlink_init(void) { int nb_inst_ue; pthread_attr_t attr; struct sched_param sched_param; - + + reset_meas(&ip_pdcp_stats_tmp); #if defined(USER_MODE) && defined(OAI_EMU) nb_inst_enb = oai_emulation.info.nb_enb_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_ue = 1; #endif - + 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)); @@ -206,7 +209,7 @@ void *pdcp_netlink_thread_fct(void *arg) { for (nas_nlh_rx = (struct nlmsghdr *) nl_rx_buf; NLMSG_OK(nas_nlh_rx, (unsigned int)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 * 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 */ 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 { if (pdcp_netlink_nb_element_ue[new_data_p->pdcp_read_header.inst] > PDCP_QUEUE_NB_ELEMENTS) { @@ -270,6 +275,8 @@ void *pdcp_netlink_thread_fct(void *arg) { /* 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); + stop_meas(&ip_pdcp_stats_tmp); + copy_meas(&UE_pdcp_stats[new_data_p->pdcp_read_header.inst].pdcp_ip,&ip_pdcp_stats_tmp); } } } diff --git a/targets/SIMU/USER/oaisim.c b/targets/SIMU/USER/oaisim.c index 140d3294c80c94a983024fa761d408b22e92fdcc..ba146a1c4cb74b2dd5db9c7b5e02a331f30ab2d3 100644 --- a/targets/SIMU/USER/oaisim.c +++ b/targets/SIMU/USER/oaisim.c @@ -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].data_req); reset_meas(&UE_pdcp_stats[UE_id].data_ind); - /* reset_meas(&UE_pdcp_stats[UE_id].encrption); - reset_meas(&UE_pdcp_stats[UE_id].decrption); + reset_meas(&UE_pdcp_stats[UE_id].apply_security); + 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].ip_pdcp); - */ + 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_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].data_req); reset_meas(&eNB_pdcp_stats[eNB_id].data_ind); - /* - reset_meas(&eNB_pdcp_stats[UE_id].encrption); - reset_meas(&eNB_pdcp_stats[UE_id].decrption); - reset_meas(&eNB_pdcp_stats[UE_id].pdcp_ip); - reset_meas(&eNB_pdcp_stats[UE_id].ip_pdcp); - */ + reset_meas(&eNB_pdcp_stats[eNB_id].apply_security); + reset_meas(&eNB_pdcp_stats[eNB_id].validate_security); + reset_meas(&eNB_pdcp_stats[eNB_id].pdcp_ip); + reset_meas(&eNB_pdcp_stats[eNB_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_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++) { @@ -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].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].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); + } }