diff options
| author | 童宗振 <[email protected]> | 2024-07-10 07:04:46 +0000 |
|---|---|---|
| committer | 童宗振 <[email protected]> | 2024-07-10 07:04:46 +0000 |
| commit | b1d39093ebd855be544c036d0fbd393addc23c91 (patch) | |
| tree | 5f1174c5bbb4a989afea94968b1752dee05509ae | |
| parent | af9177f5e0b15c80d5370e681526fc1ccac7d0ff (diff) | |
(TSG-21729)metadata add egress_action fieldv4.8.15-20240710
| -rw-r--r-- | app/src/dp_trace.c | 47 | ||||
| -rw-r--r-- | app/src/mrb.c | 3 | ||||
| -rw-r--r-- | app/src/version.map | 4 | ||||
| -rw-r--r-- | include/external/marsio.h | 19 | ||||
| -rw-r--r-- | include/internal/mrb_define.h | 1 | ||||
| -rw-r--r-- | infra/include/dp_trace.h | 3 | ||||
| -rw-r--r-- | service/src/dp_trace.c | 19 |
7 files changed, 26 insertions, 70 deletions
diff --git a/app/src/dp_trace.c b/app/src/dp_trace.c index 39972af..361da17 100644 --- a/app/src/dp_trace.c +++ b/app/src/dp_trace.c @@ -23,44 +23,6 @@ int marsio_dp_trace_init(struct mr_instance * mr_instance) return RT_SUCCESS; } -int marsio_dp_trace_record_can_emit(const marsio_buff_t * mbuf) -{ - return dp_trace_record_can_emit((struct rte_mbuf *)mbuf, DP_TRACE_MEASUREMENT_TYPE_TRACE); -} - -int marsio_dp_trace_record_emit_str(struct mr_instance * mr_instance, marsio_buff_t * mbuf, const char * module, - const char * str) -{ - struct dp_trace_record_meta meta = { - .measurement_type = DP_TRACE_MEASUREMENT_TYPE_TRACE, .module = module, .appsym = mr_instance->appsym}; - return dp_trace_record_emit_str(mr_instance->trace, (struct rte_mbuf *)mbuf, marsio_thread_id_get(), &meta, str); -} - -int marsio_dp_trace_record_emit_fmt(struct mr_instance * mr_instance, marsio_buff_t * mbuf, const char * module, - const char * format, ...) -{ - struct dp_trace_process * trace = mr_instance->trace; - - char buffer[512]; - va_list args; - va_start(args, format); - int ret = vsnprintf(buffer, sizeof(buffer), format, args); - va_end(args); - - if (unlikely(ret < 0 || ret >= sizeof(buffer))) - { - thread_id_t thread_id = marsio_thread_id_get(); - trace->statistics[thread_id].record_emit_failed_trace_oversize++; - return -1; - } - - struct dp_trace_record_meta meta = { - .measurement_type = DP_TRACE_MEASUREMENT_TYPE_TRACE, .module = module, .appsym = mr_instance->appsym}; - - ret = dp_trace_record_emit_str(trace, (struct rte_mbuf *)mbuf, marsio_thread_id_get(), &meta, buffer); - return ret; -} - int marsio_dp_trace_measurements_can_emit(__rte_unused struct mr_instance * instance, const marsio_buff_t * mbuf, uint8_t measurement_type) { @@ -105,11 +67,6 @@ int marsio_dp_trace_measurement_emit_fmt(struct mr_instance * mr_instance, marsi return ret; } -void marsio_dp_trace_filter_exec(struct mr_instance * instance, marsio_buff_t * mbuf) -{ - dp_trace_filter_exec(instance->trace, (struct rte_mbuf *)mbuf, 0, marsio_thread_id_get()); -} - void marsio_dp_trace_record_write(struct mr_instance * mr_instance, marsio_buff_t * mbuf) { return dp_trace_record_write(mr_instance->trace, (struct rte_mbuf *)mbuf, marsio_thread_id_get()); @@ -120,6 +77,8 @@ void marsio_rte_pktmbuf_free(struct rte_mbuf * m) if (unlikely(m == NULL)) return; struct mr_instance * mr_instance = marsio_current(); + struct mrb_metadata * mrb_meta = rte_mbuf_to_priv(m); + mrb_meta->egress_action = MR_EGRESS_ACTION_DROP; marsio_dp_trace_record_write(mr_instance, m); rte_pktmbuf_free(m); } @@ -349,6 +308,8 @@ int marsio_dp_trace_buffer_info_get(const marsio_buff_t * mbuf, struct dp_trace_ info->inner_src_port = dp_trace_buffer->inner_src_port; info->inner_dst_port = dp_trace_buffer->inner_dst_port; + info->egress_action = mrb_meta->egress_action; + return 0; } diff --git a/app/src/mrb.c b/app/src/mrb.c index d156f34..fe2a3ea 100644 --- a/app/src/mrb.c +++ b/app/src/mrb.c @@ -130,6 +130,9 @@ void marsio_buff_free_v2(struct mr_instance * instance, marsio_buff_t * buff[], { marsio_dp_trace_measurement_emit_str(instance, m, DP_TRACE_MEASUREMENT_TYPE_TRACE, NULL, "packet dropped"); } + + struct mrb_metadata * mrb_meta = rte_mbuf_to_priv(m); + mrb_meta->egress_action = MR_EGRESS_ACTION_DROP; marsio_dp_trace_record_write(instance, (struct rte_mbuf *)m); __rte_mbuf_sanity_check(m, 1); diff --git a/app/src/version.map b/app/src/version.map index 6d5e927..b522bfd 100644 --- a/app/src/version.map +++ b/app/src/version.map @@ -84,10 +84,6 @@ global: marsio_poll_wait; marsio_poll_register_eventfd; - marsio_dp_trace_filter_exec; - marsio_dp_trace_record_can_emit; - marsio_dp_trace_record_emit_str; - marsio_dp_trace_record_emit_fmt; marsio_dp_trace_measurements_can_emit; marsio_dp_trace_measurement_emit_str; marsio_dp_trace_measurement_emit_fmt; diff --git a/include/external/marsio.h b/include/external/marsio.h index b74c792..12e4bd1 100644 --- a/include/external/marsio.h +++ b/include/external/marsio.h @@ -295,26 +295,9 @@ int marsio_buff_prepend_sid_list(marsio_buff_t * m, sid_t * slist, uint8_t sz_sl int marsio_buff_get_current_sid(marsio_buff_t * m, sid_t * sid); /******************************** data path trace**************************************/ -__attribute__((deprecated( - "use marsio_dp_trace_measurements_can_emit replace.the current interface will be removed in 24.06."))) int -marsio_dp_trace_record_can_emit(const marsio_buff_t * mbuf); - -__attribute__(( - deprecated("use marsio_dp_trace_measurement_emit_str replace.the current interface will be removed in 24.06."))) int -marsio_dp_trace_record_emit_str(struct mr_instance * instance, marsio_buff_t * mbuf, const char * module, - const char * str); -__attribute__(( - deprecated("use marsio_dp_trace_measurement_emit_fmt replace.the current interface will be removed in 24.06."))) int -marsio_dp_trace_record_emit_fmt(struct mr_instance * instance, marsio_buff_t * mbuf, const char * module, - const char * format, ...); - #define DP_TRACE_MEASUREMENT_TYPE_TRACE (1 << 0) #define DP_TRACE_MEASUREMENT_TYPE_TELEMETRY (1 << 1) -__attribute__(( - deprecated("Users do not need to manually call this function.The current function will be removed in 24.06."))) void -marsio_dp_trace_filter_exec(struct mr_instance * instance, marsio_buff_t * mbuf); - int marsio_dp_trace_measurements_can_emit(struct mr_instance * instance, const marsio_buff_t * mbuf, uint8_t measurement_type); @@ -351,6 +334,8 @@ struct dp_trace_buffer_telemetry char inner_dst_addr_str[INET6_ADDRSTRLEN]; int32_t inner_src_port; int32_t inner_dst_port; + + uint8_t egress_action; }; struct dp_trace_record_header diff --git a/include/internal/mrb_define.h b/include/internal/mrb_define.h index cad8c44..1fd663c 100644 --- a/include/internal/mrb_define.h +++ b/include/internal/mrb_define.h @@ -41,6 +41,7 @@ struct mrb_metadata /* ingress, egress */ uint16_t port_ingress; uint16_t port_egress; + uint8_t egress_action; /* Session Id */ uint64_t session_id; diff --git a/infra/include/dp_trace.h b/infra/include/dp_trace.h index 820e966..7a01866 100644 --- a/infra/include/dp_trace.h +++ b/infra/include/dp_trace.h @@ -37,6 +37,9 @@ #define DP_TRACE_MEASUREMENT_TYPE_BUF_ALLOC_FAILED (1 << 4) #define DP_TRACE_MEASUREMENT_TYPE_MATCHED (DP_TRACE_MEASUREMENT_TYPE_TRACE | DP_TRACE_MEASUREMENT_TYPE_TELEMETRY) +#define MR_EGRESS_ACTION_SEND 0 +#define MR_EGRESS_ACTION_DROP 1 + enum dp_trace_req_action { DP_TRACE_INSTANCE_GET, diff --git a/service/src/dp_trace.c b/service/src/dp_trace.c index 2db3647..4d4b656 100644 --- a/service/src/dp_trace.c +++ b/service/src/dp_trace.c @@ -206,6 +206,9 @@ void hook_rte_pktmbuf_free(struct rte_mbuf * m) .measurement_type = DP_TRACE_MEASUREMENT_TYPE_TRACE, .appsym = MR_TRACE_APPSYM, .module = ""}; dp_trace_record_emit_str(sc_main_get()->trace, m, rte_lcore_id(), &meta, "packet dropped"); } + + struct mrb_metadata * mrb_meta = rte_mbuf_to_priv(m); + mrb_meta->egress_action = MR_EGRESS_ACTION_DROP; dp_trace_record_write(trace, m, rte_lcore_id()); rte_pktmbuf_free(m); } @@ -215,21 +218,25 @@ void hook_rte_pktmbuf_free_bulk(struct rte_mbuf ** mbufs, unsigned int count) struct dp_trace_process * trace = sc_main_get()->trace; for (unsigned int idx = 0; idx < count; idx++) { - if (mbufs[idx] == NULL) + struct rte_mbuf * mbuf = mbufs[idx]; + if (mbuf == NULL) continue; - if (unlikely(dp_trace_record_can_emit(mbufs[idx], DP_TRACE_MEASUREMENT_TYPE_TELEMETRY))) + if (unlikely(dp_trace_record_can_emit(mbuf, DP_TRACE_MEASUREMENT_TYPE_TELEMETRY))) { struct dp_trace_record_meta meta = { .measurement_type = DP_TRACE_MEASUREMENT_TYPE_TELEMETRY, .appsym = MR_TRACE_APPSYM, .module = ""}; - dp_trace_record_emit_str(sc_main_get()->trace, mbufs[idx], rte_lcore_id(), &meta, "packet dropped"); + dp_trace_record_emit_str(sc_main_get()->trace, mbuf, rte_lcore_id(), &meta, "packet dropped"); } - if (unlikely(dp_trace_record_can_emit(mbufs[idx], DP_TRACE_MEASUREMENT_TYPE_TRACE))) + if (unlikely(dp_trace_record_can_emit(mbuf, DP_TRACE_MEASUREMENT_TYPE_TRACE))) { struct dp_trace_record_meta meta = { .measurement_type = DP_TRACE_MEASUREMENT_TYPE_TRACE, .appsym = MR_TRACE_APPSYM, .module = ""}; - dp_trace_record_emit_str(sc_main_get()->trace, mbufs[idx], rte_lcore_id(), &meta, "packet dropped"); + dp_trace_record_emit_str(sc_main_get()->trace, mbuf, rte_lcore_id(), &meta, "packet dropped"); } - dp_trace_record_write(trace, mbufs[idx], rte_lcore_id()); + + struct mrb_metadata * mrb_meta = rte_mbuf_to_priv(mbuf); + mrb_meta->egress_action = MR_EGRESS_ACTION_DROP; + dp_trace_record_write(trace, mbuf, rte_lcore_id()); } rte_pktmbuf_free_bulk(mbufs, count); }
\ No newline at end of file |
