diff options
| author | 童宗振 <[email protected]> | 2024-05-14 06:58:20 +0000 |
|---|---|---|
| committer | 童宗振 <[email protected]> | 2024-05-14 06:58:20 +0000 |
| commit | ada1fbbe649afeba6147e5f82d1577c82f6dd3d0 (patch) | |
| tree | 6fa25cc7b4e2353d38d79a6e5e0ad8f43f176ced | |
| parent | e59cc677675b9e000ba37946cd7bd3fb27988492 (diff) | |
(TSG-21201)Fix app mbuf trace free error
| -rw-r--r-- | app/include/mrdp_trace.h | 2 | ||||
| -rw-r--r-- | app/src/dp_trace.c | 22 | ||||
| -rw-r--r-- | app/src/mrb.c | 16 |
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; |
