summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author童宗振 <[email protected]>2024-05-14 06:58:20 +0000
committer童宗振 <[email protected]>2024-05-14 06:58:20 +0000
commitada1fbbe649afeba6147e5f82d1577c82f6dd3d0 (patch)
tree6fa25cc7b4e2353d38d79a6e5e0ad8f43f176ced
parente59cc677675b9e000ba37946cd7bd3fb27988492 (diff)
(TSG-21201)Fix app mbuf trace free error
-rw-r--r--app/include/mrdp_trace.h2
-rw-r--r--app/src/dp_trace.c22
-rw-r--r--app/src/mrb.c16
3 files changed, 15 insertions, 25 deletions
diff --git a/app/include/mrdp_trace.h b/app/include/mrdp_trace.h
index 71cafd4..8480b19 100644
--- a/app/include/mrdp_trace.h
+++ b/app/include/mrdp_trace.h
@@ -6,7 +6,5 @@
int marsio_dp_trace_init(struct mr_instance * instance);
void marsio_dp_trace_record_write(struct mr_instance * instance, marsio_buff_t * mbuf);
void marsio_rte_pktmbuf_free(struct rte_mbuf * m);
-void marsio_rte_mempool_generic_put(struct rte_mempool * mp, void * const * obj_table, unsigned int n,
- struct rte_mempool_cache * cache);
thread_id_t marsio_thread_id_get();
cJSON * marsio_dp_trace_monit_loop(struct mr_instance * instance); \ No newline at end of file
diff --git a/app/src/dp_trace.c b/app/src/dp_trace.c
index 20ac8da..59a7347 100644
--- a/app/src/dp_trace.c
+++ b/app/src/dp_trace.c
@@ -124,28 +124,6 @@ void marsio_rte_pktmbuf_free(struct rte_mbuf * m)
rte_pktmbuf_free(m);
}
-void marsio_rte_mempool_generic_put(struct rte_mempool * mp, void * const * obj_table, unsigned int n,
- struct rte_mempool_cache * cache)
-{
- struct mr_instance * mr_instance = marsio_current();
- for (unsigned int i = 0; i < n; i++)
- {
- if (marsio_dp_trace_measurements_can_emit(mr_instance, obj_table[i], DP_TRACE_MEASUREMENT_TYPE_TELEMETRY))
- {
- marsio_dp_trace_measurement_emit_str(mr_instance, obj_table[i], DP_TRACE_MEASUREMENT_TYPE_TELEMETRY, NULL,
- "packet dropped");
- }
-
- if (marsio_dp_trace_measurements_can_emit(mr_instance, obj_table[i], DP_TRACE_MEASUREMENT_TYPE_TRACE))
- {
- marsio_dp_trace_measurement_emit_str(mr_instance, obj_table[i], DP_TRACE_MEASUREMENT_TYPE_TRACE, NULL,
- "packet dropped");
- }
- marsio_dp_trace_record_write(mr_instance, (struct rte_mbuf *)obj_table[i]);
- }
- rte_mempool_generic_put(mp, obj_table, n, cache);
-}
-
thread_id_t marsio_thread_id_get()
{
return thread_info.thread_id % RTE_MAX_LCORE;
diff --git a/app/src/mrb.c b/app/src/mrb.c
index 5eddb02..2d2ddb4 100644
--- a/app/src/mrb.c
+++ b/app/src/mrb.c
@@ -120,6 +120,18 @@ void marsio_buff_free_v2(struct mr_instance * instance, marsio_buff_t * buff[],
struct rte_mbuf * m = (struct rte_mbuf *)buff[i];
struct rte_mbuf * m_next = NULL;
+ if (marsio_dp_trace_measurements_can_emit(instance, m, DP_TRACE_MEASUREMENT_TYPE_TELEMETRY))
+ {
+ marsio_dp_trace_measurement_emit_str(instance, m, DP_TRACE_MEASUREMENT_TYPE_TELEMETRY, NULL,
+ "packet dropped");
+ }
+
+ if (marsio_dp_trace_measurements_can_emit(instance, m, DP_TRACE_MEASUREMENT_TYPE_TRACE))
+ {
+ marsio_dp_trace_measurement_emit_str(instance, m, DP_TRACE_MEASUREMENT_TYPE_TRACE, NULL, "packet dropped");
+ }
+ marsio_dp_trace_record_write(instance, (struct rte_mbuf *)m);
+
__rte_mbuf_sanity_check(m, 1);
while (m != NULL)
{
@@ -132,7 +144,7 @@ void marsio_buff_free_v2(struct mr_instance * instance, marsio_buff_t * buff[],
/* get the local cache by mp */
struct rte_mempool_cache * mp_cache = mempool_cache_get(instance, m->pool);
- marsio_rte_mempool_generic_put(m->pool, (void **)&m, 1, mp_cache);
+ rte_mempool_generic_put(m->pool, (void **)&m, 1, mp_cache);
}
m = m_next;
@@ -326,6 +338,8 @@ static void __buff_clone_ctrlzone(marsio_buff_t * mc, marsio_buff_t * md)
/* 断言,MBUF的私有区域一定大于控制域的大小 */
assert(rte_pktmbuf_priv_size(__mc->pool) >= sizeof(struct mrb_priv_zone));
rte_memcpy(__mc_priv_zone, __mi_priv_zone, rte_pktmbuf_priv_size(__mc->pool));
+ ((struct mrb_metadata *)__mc_priv_zone)->measurement_type = DP_TRACE_MEASUREMENT_TYPE_UNKNOW;
+ ((struct mrb_metadata *)__mc_priv_zone)->dp_trace_buffer = NULL;
/* 下一个链表项 */
__mc = __mc->next;