summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author童宗振 <[email protected]>2024-05-14 09:22:13 +0000
committer童宗振 <[email protected]>2024-05-14 09:22:13 +0000
commitd77b43cd78605550ee7da332f22f991d02faee3f (patch)
tree6d6f1ceee5621c9eb7837cb6aef8e2875ef4193a
parentada1fbbe649afeba6147e5f82d1577c82f6dd3d0 (diff)
Fix dp trace filter exec start layerv4.8.8-20240514
-rw-r--r--infra/include/dp_trace.h2
-rw-r--r--infra/src/dp_trace.c8
-rw-r--r--infra/test/TestDataPathTrace.cc8
3 files changed, 8 insertions, 10 deletions
diff --git a/infra/include/dp_trace.h b/infra/include/dp_trace.h
index 55fd720..38a2f28 100644
--- a/infra/include/dp_trace.h
+++ b/infra/include/dp_trace.h
@@ -16,7 +16,6 @@
#define DP_TRACE_RING_SIZE_MAX 4096
#define DP_TRACE_POOL_NAME "dp_trace_pool"
-#define DP_TRACE_DUMP_POOL_NAME "dp_trace_dump_pool"
#define DP_TRACE_RING_NAME "dp_trace_ring"
#define DP_TRACE_POOL_SIZE (2 * DP_TRACE_RING_SIZE_MAX)
@@ -97,7 +96,6 @@ struct dp_trace_instance
uint16_t nr_ring;
struct rte_ring * ring[DP_TRACE_RING_NUM];
struct rte_mempool * pool;
- struct rte_mempool * dump_pool;
uint16_t nr_job_ctx;
struct dp_trace_job_ctx job_ctx[DP_TRACE_JOB_NUM_MAX];
} __rte_cache_aligned;
diff --git a/infra/src/dp_trace.c b/infra/src/dp_trace.c
index c9e51bf..2ca343a 100644
--- a/infra/src/dp_trace.c
+++ b/infra/src/dp_trace.c
@@ -28,13 +28,9 @@ static struct dp_trace_instance * dp_trace_instance_create()
struct dp_trace_instance * instance = ZMALLOC(sizeof(struct dp_trace_instance));
MR_VERIFY_MALLOC(instance);
- unsigned int sz_align_priv = RTE_ALIGN(sizeof(struct mrb_metadata), RTE_MBUF_PRIV_ALIGN);
instance->pool = rte_mempool_create(DP_TRACE_POOL_NAME, DP_TRACE_POOL_SIZE, DP_TRACE_RECORD_SIZE, 0, 0, NULL, NULL,
NULL, NULL, rte_socket_id(), 0);
- instance->dump_pool = rte_pktmbuf_pool_create(DP_TRACE_DUMP_POOL_NAME, DP_TRACE_POOL_SIZE, 0, sz_align_priv,
- DP_TRACE_RECORD_SIZE + RTE_MBUF_DEFAULT_BUF_SIZE, rte_socket_id());
MR_VERIFY_MALLOC(instance->pool);
- MR_VERIFY_MALLOC(instance->dump_pool);
for (unsigned int i = 0; i < DP_TRACE_JOB_NUM_MAX; i++)
{
@@ -370,7 +366,7 @@ void dp_trace_filter_exec(struct dp_trace_process * trace, struct rte_mbuf * mbu
}
unsigned int snaplen = 0;
- for (unsigned int i = 0; i < pkt_parser_result->nr_layers; i++)
+ for (unsigned int i = pkt_parser_result->start_layers; i < pkt_parser_result->nr_layers; i++)
{
if (pkt_parser_result->layers[i].type_id == LAYER_TYPE_ID_ETHER &&
pkt_parser_result->layers[i].offset >= offset)
@@ -595,7 +591,7 @@ static inline void dp_trace_buffer_initialize(struct dp_trace_process * trace, s
dp_trace_buffer->traffic_link_id = mrb_meta->traffic_link_id;
// Extract inner layer3
- for (int i = pkt_parser_result->nr_layers - 1; i >= 0; i--)
+ for (int i = pkt_parser_result->nr_layers - 1; i >= pkt_parser_result->start_layers; i--)
{
uint16_t this_layer_type_id = pkt_parser_result->layers[i].type_id;
uint16_t this_layer_offset = pkt_parser_result->layers[i].offset;
diff --git a/infra/test/TestDataPathTrace.cc b/infra/test/TestDataPathTrace.cc
index 6306e42..721f1f2 100644
--- a/infra/test/TestDataPathTrace.cc
+++ b/infra/test/TestDataPathTrace.cc
@@ -86,6 +86,9 @@ class DataPathTraceTest : public testing::Test
// create trace
trace = dp_trace_process_create(DP_TRACE_PROCESS_MARSIO);
trace->inst->enable = true;
+ unsigned int sz_align_priv = RTE_ALIGN(sizeof(struct mrb_metadata), RTE_MBUF_PRIV_ALIGN);
+ mempool = rte_pktmbuf_pool_create("dp_trace_dump_pool", 16, 0, sz_align_priv,
+ DP_TRACE_RECORD_SIZE + RTE_MBUF_DEFAULT_BUF_SIZE, rte_socket_id());
}
void TearDown() override
@@ -105,7 +108,7 @@ class DataPathTraceTest : public testing::Test
if (process_tpye == DP_TRACE_PROCESS_MARSIO)
{
rte_mempool_free(trace->inst->pool);
- rte_mempool_free(trace->inst->dump_pool);
+ rte_mempool_free(mempool);
for (unsigned int i = 0; i < trace->inst->nr_ring; i++)
{
rte_ring_free(trace->inst->ring[i]);
@@ -124,7 +127,7 @@ class DataPathTraceTest : public testing::Test
if (trace == NULL)
return NULL;
- struct rte_mbuf * pkt_mbuf = rte_pktmbuf_alloc(trace->inst->dump_pool);
+ struct rte_mbuf * pkt_mbuf = rte_pktmbuf_alloc(mempool);
unsigned int sz_align_priv = RTE_ALIGN(sizeof(struct mrb_metadata), RTE_MBUF_PRIV_ALIGN);
uint16_t data_off = sizeof(struct rte_mbuf) + sz_align_priv;
@@ -151,6 +154,7 @@ class DataPathTraceTest : public testing::Test
}
struct dp_trace_process * trace;
+ struct rte_mempool * mempool;
};
TEST_F(DataPathTraceTest, PackageConstruct)