This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "".
The branch, master has been updated via 58e1522451ae4a4ce62acad5ea2c47d96dafe3cd (commit) via fae79706192988fa1b89e68f11e3167c9495c771 (commit) from 3e3a204764ee055acb3f0ff0feff39a653362c38 (commit)
Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below.
- Log ----------------------------------------------------------------- commit 58e1522451ae4a4ce62acad5ea2c47d96dafe3cd Author: Matias Elo matias.elo@nokia.com Date: Wed Nov 6 09:50:28 2019 +0200
test: bench_packet: add tests for packet parse functions
Add new tests for odp_packet_parse() and odp_packet_parse_multi() functions using IPv4-TCP, IPv4-UDP, IPv6-TCP, and IPv6-UDP packets. The test packets are imported from the packet validation tests.
Signed-off-by: Matias Elo matias.elo@nokia.com Reviewed-by: Petri Savolainen petri.savolainen@nokia.com
diff --git a/test/performance/odp_bench_packet.c b/test/performance/odp_bench_packet.c index 3bf61d86d..d139006b3 100644 --- a/test/performance/odp_bench_packet.c +++ b/test/performance/odp_bench_packet.c @@ -17,6 +17,8 @@ #include <inttypes.h> #include <signal.h>
+#include <test_packet_parser.h> + #include <odp_api.h> #include <odp/helper/odph_api.h>
@@ -356,6 +358,77 @@ static void alloc_packets_twice(void) TEST_REPEAT_COUNT); }
+static void alloc_parse_packets(const void *pkt_data, uint32_t len) +{ + int i; + + allocate_test_packets(len, gbl_args->pkt_tbl, TEST_REPEAT_COUNT); + + for (i = 0; i < TEST_REPEAT_COUNT; i++) { + if (odp_packet_copy_from_mem(gbl_args->pkt_tbl[i], 0, len, + pkt_data)) + ODPH_ABORT("Copying test packet failed\n"); + } +} + +static void alloc_parse_packets_ipv4_tcp(void) +{ + alloc_parse_packets(test_packet_ipv4_tcp, sizeof(test_packet_ipv4_tcp)); +} + +static void alloc_parse_packets_ipv4_udp(void) +{ + alloc_parse_packets(test_packet_ipv4_udp, sizeof(test_packet_ipv4_udp)); +} + +static void alloc_parse_packets_ipv6_tcp(void) +{ + alloc_parse_packets(test_packet_ipv6_tcp, sizeof(test_packet_ipv6_tcp)); +} + +static void alloc_parse_packets_ipv6_udp(void) +{ + alloc_parse_packets(test_packet_ipv6_udp, sizeof(test_packet_ipv6_udp)); +} + +static void alloc_parse_packets_multi(const void *pkt_data, uint32_t len) +{ + int i; + + allocate_test_packets(len, gbl_args->pkt_tbl, + TEST_REPEAT_COUNT * gbl_args->appl.burst_size); + + for (i = 0; i < TEST_REPEAT_COUNT * gbl_args->appl.burst_size; i++) { + if (odp_packet_copy_from_mem(gbl_args->pkt_tbl[i], 0, len, + pkt_data)) + ODPH_ABORT("Copying test packet failed\n"); + } +} + +static void alloc_parse_packets_multi_ipv4_tcp(void) +{ + alloc_parse_packets_multi(test_packet_ipv4_tcp, + sizeof(test_packet_ipv4_tcp)); +} + +static void alloc_parse_packets_multi_ipv4_udp(void) +{ + alloc_parse_packets_multi(test_packet_ipv4_udp, + sizeof(test_packet_ipv4_udp)); +} + +static void alloc_parse_packets_multi_ipv6_tcp(void) +{ + alloc_parse_packets_multi(test_packet_ipv6_tcp, + sizeof(test_packet_ipv6_tcp)); +} + +static void alloc_parse_packets_multi_ipv6_udp(void) +{ + alloc_parse_packets_multi(test_packet_ipv6_udp, + sizeof(test_packet_ipv6_udp)); +} + static void create_packets(void) { int i; @@ -1352,6 +1425,53 @@ static int bench_packet_subtype(void) return i; }
+static int bench_packet_parse(void) +{ + odp_packet_parse_param_t param; + odp_packet_t *pkt_tbl = gbl_args->pkt_tbl; + int ret = 0; + int i; + + memset(¶m, 0, sizeof(odp_packet_parse_param_t)); + param.proto = ODP_PROTO_ETH; + param.last_layer = ODP_PROTO_LAYER_ALL; + param.chksums.chksum.ipv4 = 1; + param.chksums.chksum.tcp = 1; + param.chksums.chksum.udp = 1; + + for (i = 0; i < TEST_REPEAT_COUNT; i++) + ret += odp_packet_parse(pkt_tbl[i], 0, ¶m); + + return !ret; +} + +static int bench_packet_parse_multi(void) +{ + int burst_size = gbl_args->appl.burst_size; + int ret = 0; + int i; + odp_packet_parse_param_t param; + odp_packet_t *pkt_tbl = gbl_args->pkt_tbl; + uint32_t offsets[burst_size]; + + memset(&offsets, 0, sizeof(offsets)); + + memset(¶m, 0, sizeof(odp_packet_parse_param_t)); + param.proto = ODP_PROTO_ETH; + param.last_layer = ODP_PROTO_LAYER_ALL; + param.chksums.chksum.ipv4 = 1; + param.chksums.chksum.tcp = 1; + param.chksums.chksum.udp = 1; + + for (i = 0; i < TEST_REPEAT_COUNT; i++) { + int idx = i * burst_size; + + ret += odp_packet_parse_multi(&pkt_tbl[idx], offsets, + burst_size, ¶m); + } + return (ret == TEST_REPEAT_COUNT * burst_size); +} + /** * Prinf usage information */ @@ -1586,6 +1706,30 @@ bench_info_t test_suite[] = { free_packets_twice, NULL), BENCH_INFO(bench_packet_subtype, create_packets, free_packets, NULL), + BENCH_INFO(bench_packet_parse, alloc_parse_packets_ipv4_tcp, + free_packets, "bench_packet_parse_ipv4_tcp"), + BENCH_INFO(bench_packet_parse, alloc_parse_packets_ipv4_udp, + free_packets, "bench_packet_parse_ipv4_udp"), + BENCH_INFO(bench_packet_parse, alloc_parse_packets_ipv6_tcp, + free_packets, "bench_packet_parse_ipv6_tcp"), + BENCH_INFO(bench_packet_parse, alloc_parse_packets_ipv6_udp, + free_packets, "bench_packet_parse_ipv6_udp"), + BENCH_INFO(bench_packet_parse_multi, + alloc_parse_packets_multi_ipv4_tcp, + free_packets_multi, + "bench_packet_parse_multi_ipv4_tcp"), + BENCH_INFO(bench_packet_parse_multi, + alloc_parse_packets_multi_ipv4_udp, + free_packets_multi, + "bench_packet_parse_multi_ipv4_udp"), + BENCH_INFO(bench_packet_parse_multi, + alloc_parse_packets_multi_ipv6_tcp, + free_packets_multi, + "bench_packet_parse_multi_ipv6_tcp"), + BENCH_INFO(bench_packet_parse_multi, + alloc_parse_packets_multi_ipv6_udp, + free_packets_multi, + "bench_packet_parse_multi_ipv6_udp"), };
/**
commit fae79706192988fa1b89e68f11e3167c9495c771 Author: Matias Elo matias.elo@nokia.com Date: Wed Nov 6 09:50:03 2019 +0200
test: bench_packet: add tests for missing packet functions
Added tests for the following packet functions: odp_packet_data_seg_len() odp_packet_free_sp() odp_packet_from_event_multi() odp_packet_to_event_multi() odp_packet_subtype()
Signed-off-by: Matias Elo matias.elo@nokia.com Reviewed-by: Petri Savolainen petri.savolainen@nokia.com
diff --git a/test/performance/odp_bench_packet.c b/test/performance/odp_bench_packet.c index d050debb9..3bf61d86d 100644 --- a/test/performance/odp_bench_packet.c +++ b/test/performance/odp_bench_packet.c @@ -413,6 +413,18 @@ static void create_events(void) gbl_args->event_tbl[i] = odp_packet_to_event(pkt_tbl[i]); }
+static void create_events_multi(void) +{ + int i; + odp_packet_t *pkt_tbl = gbl_args->pkt_tbl; + + allocate_test_packets(gbl_args->pkt.len, gbl_args->pkt_tbl, + TEST_REPEAT_COUNT * gbl_args->appl.burst_size); + + for (i = 0; i < TEST_REPEAT_COUNT * gbl_args->appl.burst_size; i++) + gbl_args->event_tbl[i] = odp_packet_to_event(pkt_tbl[i]); +} + static void free_packets(void) { odp_packet_free_multi(gbl_args->pkt_tbl, TEST_REPEAT_COUNT); @@ -491,6 +503,19 @@ static int bench_packet_free_multi(void) return i; }
+static int bench_packet_free_sp(void) +{ + int i; + + for (i = 0; i < TEST_REPEAT_COUNT; i++) { + int pkt_idx = i * gbl_args->appl.burst_size; + + odp_packet_free_sp(&gbl_args->pkt_tbl[pkt_idx], + gbl_args->appl.burst_size); + } + return i; +} + static int bench_packet_alloc_free(void) { int i; @@ -545,6 +570,20 @@ static int bench_packet_from_event(void) return i; }
+static int bench_packet_from_event_multi(void) +{ + int i; + + for (i = 0; i < TEST_REPEAT_COUNT; i++) { + int idx = i * gbl_args->appl.burst_size; + + odp_packet_from_event_multi(&gbl_args->pkt_tbl[idx], + &gbl_args->event_tbl[idx], + gbl_args->appl.burst_size); + } + return i; +} + static int bench_packet_to_event(void) { int i; @@ -556,6 +595,20 @@ static int bench_packet_to_event(void) return i; }
+static int bench_packet_to_event_multi(void) +{ + int i; + + for (i = 0; i < TEST_REPEAT_COUNT; i++) { + int idx = i * gbl_args->appl.burst_size; + + odp_packet_to_event_multi(&gbl_args->pkt_tbl[idx], + &gbl_args->event_tbl[idx], + gbl_args->appl.burst_size); + } + return i; +} + static int bench_packet_head(void) { int i; @@ -587,6 +640,18 @@ static int bench_packet_data(void) return i; }
+static int bench_packet_data_seg_len(void) +{ + odp_packet_t *pkt_tbl = gbl_args->pkt_tbl; + uint32_t *output_tbl = gbl_args->output_tbl; + int i; + + for (i = 0; i < TEST_REPEAT_COUNT; i++) + gbl_args->ptr_tbl[i] = odp_packet_data_seg_len(pkt_tbl[i], + &output_tbl[i]); + return i; +} + static int bench_packet_seg_len(void) { int i; @@ -1276,6 +1341,17 @@ static int bench_packet_has_ref(void) return i; }
+static int bench_packet_subtype(void) +{ + int i; + odp_packet_t *pkt_tbl = gbl_args->pkt_tbl; + + for (i = 0; i < TEST_REPEAT_COUNT; i++) + gbl_args->output_tbl[i] = odp_packet_subtype(pkt_tbl[i]); + + return i; +} + /** * Prinf usage information */ @@ -1371,20 +1447,28 @@ bench_info_t test_suite[] = { BENCH_INFO(bench_packet_free, create_packets, NULL, NULL), BENCH_INFO(bench_packet_free_multi, alloc_packets_multi, NULL, NULL), + BENCH_INFO(bench_packet_free_sp, alloc_packets_multi, NULL, + NULL), BENCH_INFO(bench_packet_alloc_free, NULL, NULL, NULL), BENCH_INFO(bench_packet_alloc_free_multi, NULL, NULL, NULL), BENCH_INFO(bench_packet_reset, create_packets, free_packets, NULL), BENCH_INFO(bench_packet_from_event, create_events, free_packets, NULL), + BENCH_INFO(bench_packet_from_event_multi, create_events_multi, + free_packets_multi, NULL), BENCH_INFO(bench_packet_to_event, create_packets, free_packets, NULL), + BENCH_INFO(bench_packet_to_event_multi, alloc_packets_multi, + free_packets_multi, NULL), BENCH_INFO(bench_packet_head, create_packets, free_packets, NULL), BENCH_INFO(bench_packet_buf_len, create_packets, free_packets, NULL), BENCH_INFO(bench_packet_data, create_packets, free_packets, NULL), + BENCH_INFO(bench_packet_data_seg_len, create_packets, + free_packets, NULL), BENCH_INFO(bench_packet_seg_len, create_packets, free_packets, NULL), BENCH_INFO(bench_packet_len, create_packets, free_packets, @@ -1500,6 +1584,8 @@ bench_info_t test_suite[] = { free_packets_twice, NULL), BENCH_INFO(bench_packet_has_ref, alloc_ref_packets, free_packets_twice, NULL), + BENCH_INFO(bench_packet_subtype, create_packets, free_packets, + NULL), };
/**
-----------------------------------------------------------------------
Summary of changes: test/performance/odp_bench_packet.c | 230 ++++++++++++++++++++++++++++++++++++ 1 file changed, 230 insertions(+)
hooks/post-receive