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, next has been updated via 66bc236b2059f554c378b90d5291ca4a8aecf5b4 (commit) via 22a659377f3b181e351428708708971c819582f7 (commit) via 458bc7ddf290806f0a95c76da6f6d4f3c8a07737 (commit) via 12229e66492f7947c180cf540aecd53096431bc8 (commit) via 7378c0ddeb8c34a38d0021230a65bccfc21a6f1b (commit) via b8867b0a5ea5eeb8b0b7a95e36025c95738f48b3 (commit) via 6ad530311e9cbd5fd77b958e78921e80fbbfa943 (commit) via aa3bbe4da1639ac4649c7d34ae75b0230ade70b2 (commit) via 022cf4a7136c7369ee5f29f5d245ac8d052135e6 (commit) via c87d5cc8d70e6e4291d18b101882ea2ddded236e (commit) via 7539b2f3ce69085518ca596fba0261a19247b2d8 (commit) via 1c0488456166888148bf191960691d076f5a9c2e (commit) via 10cd6d5e4294d3a35a366e564fbc57abde732e85 (commit) via 0a62e1c5b92a5170aa807cc8803f42698b23f4c8 (commit) via 62108ed367a2718e0f0e2d7d8682b5c83d504670 (commit) via 4afed247a6ee3058aa6dc3e66ed0bd5acff9ce97 (commit) via 25ed19ceb50d77614644f6d4a28a0b23dbf1e94f (commit) via 810fbc9420e23f55e9038410f7f9d6e593537ff3 (commit) via 04b0be7579f77821418c0c7c524950af6aeab6a6 (commit) via 6ccae3b2720a4ad84d3e50aa5851f64eb3d83b3c (commit) via dd494a2b6a22f0516ce8890df05de826377fdae2 (commit) via 0bd1a1cea75d3788c062933e635849c35a0c6099 (commit) via 94071c18d342614d16b0a14f16f85119563dd70d (commit) via 54593e175a71f5716aa50e5a03be8c30bc15c550 (commit) via 7df357dd591cce23f76221945091a019c0caa7ec (commit) via a51c171ebe9e9b0aaced13bc0956bdb38c8cfc7b (commit) via 0d6c0804640151f8aa9970cc74f1fef28a11fac1 (commit) via b17aeea11a9bac1f5d55463e81904af12c99b4c7 (commit) via ffabb755ea070ee33fd23a88d920b832da5521e1 (commit) via f603483a31d03e5647c409f8ce71d72ebaadd93b (commit) via 29889bf258fc52ae7c950c11eb17503883cff47e (commit) via 88ed645e7378b955c580ec2b8ce9b846a5fb48f0 (commit) via 722fd6f8286722d30d50c00769fa4fcad5935dd2 (commit) via bbabb79cfaf5e28ec9e804b95a23605038b39d39 (commit) via c14ec3dc896e0dd14d0491f09f81ce09e9d53bc2 (commit) via 50ebc616ddd9d05651923134d7bfaa02c103fbce (commit) via 1ff6b7a7e44e7d7376920f1e1ee81dbf28f95563 (commit) via c15da68b8dc3187c1929ff7d7705a0958856cbad (commit) via 16dd00616f73f7e49c53e4b0ea957ac789125b25 (commit) via a5609cc551f4bc71fb69746f3d6cafaf64b87fbf (commit) via 03aafc317489232bab7e9048f9bd96a24e6f598d (commit) via 19a457a86880a6bc33afe891a6204752bde70088 (commit) via 7025b1b430237cddc10a0338c7b120d23b7985a8 (commit) via 0f18e317ede15081828deca1ff61d65b72e12926 (commit) via 3875d6ebf690e07b69f11621caefab1afc58e100 (commit) via b99095485be4ac14d16bef372b5c6521b396abaa (commit) from f53fda91d2919eee33b5a177ef818be1092c890b (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 66bc236b2059f554c378b90d5291ca4a8aecf5b4 Author: Petri Savolainen petri.savolainen@linaro.org Date: Wed Feb 8 14:19:41 2017 +0200
test: l2fwd: use packet_data
Since l2fwd can assume that all packets are Ethernet. Also odp_packet_data() points to the first byte of the frame directly after packet input.
Signed-off-by: Petri Savolainen petri.savolainen@linaro.org Reviewed-and-tested-by: Bill Fischofer bill.fischofer@linaro.org Signed-off-by: Maxim Uvarov maxim.uvarov@linaro.org
diff --git a/test/common_plat/performance/odp_l2fwd.c b/test/common_plat/performance/odp_l2fwd.c index 9864c64..8f5c5e1 100644 --- a/test/common_plat/performance/odp_l2fwd.c +++ b/test/common_plat/performance/odp_l2fwd.c @@ -241,15 +241,13 @@ static inline void fill_eth_addrs(odp_packet_t pkt_tbl[],
odp_packet_prefetch(pkt, 0, ODPH_ETHHDR_LEN);
- if (odp_packet_has_eth(pkt)) { - eth = (odph_ethhdr_t *)odp_packet_l2_ptr(pkt, NULL); + eth = odp_packet_data(pkt);
- if (gbl_args->appl.src_change) - eth->src = gbl_args->port_eth_addr[dst_port]; + if (gbl_args->appl.src_change) + eth->src = gbl_args->port_eth_addr[dst_port];
- if (gbl_args->appl.dst_change) - eth->dst = gbl_args->dst_eth_addr[dst_port]; - } + if (gbl_args->appl.dst_change) + eth->dst = gbl_args->dst_eth_addr[dst_port]; } }
commit 22a659377f3b181e351428708708971c819582f7 Author: Petri Savolainen petri.savolainen@linaro.org Date: Wed Feb 8 14:19:40 2017 +0200
test: l2fwd script: limit number of generator cpus
During 'make check' run generator on up to four cpus. Generator on all cpus was an overkill compared to l2fwd on two cpus. Generator and l2fwd still share cpus (on odp-linux) as cpumask_default_worker() returns the same cpumask for both.
Signed-off-by: Petri Savolainen petri.savolainen@linaro.org Reviewed-and-tested-by: Bill Fischofer bill.fischofer@linaro.org Signed-off-by: Maxim Uvarov maxim.uvarov@linaro.org
diff --git a/test/common_plat/performance/odp_l2fwd_run.sh b/test/common_plat/performance/odp_l2fwd_run.sh index 757cf53..dd42ede 100755 --- a/test/common_plat/performance/odp_l2fwd_run.sh +++ b/test/common_plat/performance/odp_l2fwd_run.sh @@ -66,12 +66,14 @@ run_l2fwd() exit 1 fi
- #@todo: limit odp_generator to cores - #https://bugs.linaro.org/show_bug.cgi?id=1398 + # Max 4 workers + # @todo: ensure that generator and l2fwd workers are not allocated to + # the same CPUs (odp_generator${EXEEXT} --interval $FLOOD_MODE -I $IF0 \ --srcip 192.168.0.1 --dstip 192.168.0.2 \ - -m u 2>&1 > /dev/null) \ + -m u -w 4 2>&1 > /dev/null) \ 2>&1 > /dev/null & + GEN_PID=$!
# this just turns off output buffering so that you still get periodic @@ -82,6 +84,8 @@ run_l2fwd() STDBUF= fi LOG=odp_l2fwd_tmp.log + + # Max 2 workers $STDBUF odp_l2fwd${EXEEXT} -i $IF1,$IF2 -m 0 -t 30 -c 2 | tee $LOG ret=$?
commit 458bc7ddf290806f0a95c76da6f6d4f3c8a07737 Author: Petri Savolainen petri.savolainen@linaro.org Date: Wed Feb 8 14:19:39 2017 +0200
test: generator: various improvements
User may select number of worker threads (-w) or cpumask (-c) (but not both) to limit number of worker thread.
Increased pool size since many threads empty the pool easily and result some threads to give up (on the first time those see pool empty).
Added EXAMPLE_ERR() before abort() to make debugging easier.
Signed-off-by: Petri Savolainen petri.savolainen@linaro.org Reviewed-and-tested-by: Bogdan Pricope bogdan.pricope@linaro.org Reviewed-and-tested-by: Bill Fischofer bill.fischofer@linaro.org Signed-off-by: Maxim Uvarov maxim.uvarov@linaro.org
diff --git a/example/generator/odp_generator.c b/example/generator/odp_generator.c index 6ac8f2d..8062d87 100644 --- a/example/generator/odp_generator.c +++ b/example/generator/odp_generator.c @@ -22,10 +22,10 @@
#include <odp/helper/odph_api.h>
-#define MAX_WORKERS 32 /**< max number of works */ -#define SHM_PKT_POOL_SIZE (512*2048) /**< pkt pool size */ -#define SHM_PKT_POOL_BUF_SIZE 1856 /**< pkt pool buf size */ -#define DEFAULT_PKT_INTERVAL 1000 /**< interval btw each pkt */ +#define MAX_WORKERS 32 /* Max number of workers */ +#define POOL_NUM_PKT 2048 /* Number of packets in packet pool */ +#define POOL_PKT_LEN 1856 /* Max packet length */ +#define DEFAULT_PKT_INTERVAL 1000 /* Interval between each packet */
#define APPL_MODE_UDP 0 /**< UDP mode */ #define APPL_MODE_PING 1 /**< ping mode */ @@ -41,7 +41,7 @@ * Parsed command line application arguments */ typedef struct { - int cpu_count; /**< system CPU count */ + int num_workers; /**< Number of worker thread */ const char *mask; /**< CPU mask */ int if_count; /**< Number of interfaces to be used */ char **if_names; /**< Array of pointers to interface names */ @@ -383,14 +383,17 @@ static int gen_send_thread(void *arg) (unsigned int)args->appl.number) break;
+ pkt = ODP_PACKET_INVALID; + if (args->appl.mode == APPL_MODE_UDP) pkt = pack_udp_pkt(thr_args->pool); else if (args->appl.mode == APPL_MODE_PING) pkt = pack_icmp_pkt(thr_args->pool); - else - pkt = ODP_PACKET_INVALID;
- if (!odp_packet_is_valid(pkt)) { + if (pkt == ODP_PACKET_INVALID) { + /* Thread gives up as soon as it sees the pool empty. + * Depending on pool size and transmit latency, it may + * be normal that pool gets empty sometimes. */ EXAMPLE_ERR(" [%2i] alloc_single failed\n", thr); break; } @@ -671,13 +674,17 @@ int main(int argc, char *argv[]) /* Print both system and application information */ print_info(NO_PATH(argv[0]), &args->appl);
- /* Default to system CPU count unless user specified */ + /* Default to max number of workers, unless user specified number of + * workers or cpumask */ num_workers = MAX_WORKERS; - if (args->appl.cpu_count) - num_workers = args->appl.cpu_count; - num_workers = odp_cpumask_default_worker(&cpumask, num_workers); - if (args->appl.mask) { + + if (args->appl.num_workers) { + /* -w option: number of workers */ + num_workers = args->appl.num_workers; + num_workers = odp_cpumask_default_worker(&cpumask, num_workers); + } else if (args->appl.mask) { + /* -c option: cpumask */ odp_cpumask_from_str(&cpumask, args->appl.mask); num_workers = odp_cpumask_count(&cpumask); } @@ -700,9 +707,9 @@ int main(int argc, char *argv[])
/* Create packet pool */ odp_pool_param_init(¶ms); - params.pkt.seg_len = SHM_PKT_POOL_BUF_SIZE; - params.pkt.len = SHM_PKT_POOL_BUF_SIZE; - params.pkt.num = SHM_PKT_POOL_SIZE/SHM_PKT_POOL_BUF_SIZE; + params.pkt.seg_len = POOL_PKT_LEN; + params.pkt.len = POOL_PKT_LEN; + params.pkt.num = POOL_NUM_PKT; params.type = ODP_POOL_PACKET;
pool = odp_pool_create("packet_pool", ¶ms); @@ -763,18 +770,24 @@ int main(int argc, char *argv[]) odp_cpumask_set(&cpu_mask, cpu_first);
tq = odp_queue_create("", NULL); - if (tq == ODP_QUEUE_INVALID) + if (tq == ODP_QUEUE_INVALID) { + EXAMPLE_ERR("queue_create failed\n"); abort(); + } args->thread[1].pktio_dev = args->appl.if_names[0]; args->thread[1].pool = pool; args->thread[1].tp = tp; args->thread[1].tq = tq; args->thread[1].tim = odp_timer_alloc(tp, tq, NULL); - if (args->thread[1].tim == ODP_TIMER_INVALID) + if (args->thread[1].tim == ODP_TIMER_INVALID) { + EXAMPLE_ERR("timer_alloc failed\n"); abort(); + } args->thread[1].tmo_ev = odp_timeout_alloc(tmop); - if (args->thread[1].tmo_ev == ODP_TIMEOUT_INVALID) + if (args->thread[1].tmo_ev == ODP_TIMEOUT_INVALID) { + EXAMPLE_ERR("timeout_alloc failed\n"); abort(); + } args->thread[1].mode = args->appl.mode;
memset(&thr_params, 0, sizeof(thr_params)); @@ -786,18 +799,24 @@ int main(int argc, char *argv[]) odph_odpthreads_create(&thread_tbl[1], &cpu_mask, &thr_params);
tq = odp_queue_create("", NULL); - if (tq == ODP_QUEUE_INVALID) + if (tq == ODP_QUEUE_INVALID) { + EXAMPLE_ERR("queue_create failed\n"); abort(); + } args->thread[0].pktio_dev = args->appl.if_names[0]; args->thread[0].pool = pool; args->thread[0].tp = tp; args->thread[0].tq = tq; args->thread[0].tim = odp_timer_alloc(tp, tq, NULL); - if (args->thread[0].tim == ODP_TIMER_INVALID) + if (args->thread[0].tim == ODP_TIMER_INVALID) { + EXAMPLE_ERR("timer_alloc failed\n"); abort(); + } args->thread[0].tmo_ev = odp_timeout_alloc(tmop); - if (args->thread[0].tmo_ev == ODP_TIMEOUT_INVALID) + if (args->thread[0].tmo_ev == ODP_TIMEOUT_INVALID) { + EXAMPLE_ERR("timeout_alloc failed\n"); abort(); + } args->thread[0].mode = args->appl.mode; cpu_next = odp_cpumask_next(&cpumask, cpu_first); odp_cpumask_zero(&cpu_mask); @@ -819,17 +838,23 @@ int main(int argc, char *argv[])
args->thread[i].pktio_dev = args->appl.if_names[if_idx]; tq = odp_queue_create("", NULL); - if (tq == ODP_QUEUE_INVALID) + if (tq == ODP_QUEUE_INVALID) { + EXAMPLE_ERR("queue_create failed\n"); abort(); + } args->thread[i].pool = pool; args->thread[i].tp = tp; args->thread[i].tq = tq; args->thread[i].tim = odp_timer_alloc(tp, tq, NULL); - if (args->thread[i].tim == ODP_TIMER_INVALID) + if (args->thread[i].tim == ODP_TIMER_INVALID) { + EXAMPLE_ERR("timer_alloc failed\n"); abort(); + } args->thread[i].tmo_ev = odp_timeout_alloc(tmop); - if (args->thread[i].tmo_ev == ODP_TIMEOUT_INVALID) + if (args->thread[i].tmo_ev == ODP_TIMEOUT_INVALID) { + EXAMPLE_ERR("timeout_alloc failed\n"); abort(); + } args->thread[i].mode = args->appl.mode;
if (args->appl.mode == APPL_MODE_UDP) { @@ -955,7 +980,7 @@ static void parse_args(int argc, char *argv[], appl_args_t *appl_args)
switch (opt) { case 'w': - appl_args->cpu_count = atoi(optarg); + appl_args->num_workers = atoi(optarg); break; case 'c': appl_args->mask = optarg;
commit 12229e66492f7947c180cf540aecd53096431bc8 Author: Petri Savolainen petri.savolainen@linaro.org Date: Wed Feb 8 14:19:38 2017 +0200
validation: packet: print reason for suite init failure
Knowing the reason for suite init function failure helps in debugging.
Signed-off-by: Petri Savolainen petri.savolainen@linaro.org Reviewed-and-tested-by: Bill Fischofer bill.fischofer@linaro.org Signed-off-by: Maxim Uvarov maxim.uvarov@linaro.org
diff --git a/test/common_plat/validation/api/packet/packet.c b/test/common_plat/validation/api/packet/packet.c index fa5206f..e3d28f6 100644 --- a/test/common_plat/validation/api/packet/packet.c +++ b/test/common_plat/validation/api/packet/packet.c @@ -110,8 +110,10 @@ int packet_suite_init(void) uint8_t data = 0; uint32_t i;
- if (odp_pool_capability(&capa) < 0) + if (odp_pool_capability(&capa) < 0) { + printf("pool_capability failed\n"); return -1; + }
/* Pick a typical packet size and decrement it to the single segment * limit if needed (min_seg_len maybe equal to max_len @@ -136,14 +138,17 @@ int packet_suite_init(void) params.pkt.uarea_size = sizeof(struct udata_struct);
packet_pool = odp_pool_create("packet_pool", ¶ms); - if (packet_pool == ODP_POOL_INVALID) + if (packet_pool == ODP_POOL_INVALID) { + printf("pool_create failed: 1\n"); return -1; + }
params.pkt.uarea_size = 0; packet_pool_no_uarea = odp_pool_create("packet_pool_no_uarea", ¶ms); if (packet_pool_no_uarea == ODP_POOL_INVALID) { odp_pool_destroy(packet_pool); + printf("pool_create failed: 2\n"); return -1; }
@@ -154,6 +159,7 @@ int packet_suite_init(void) if (packet_pool_double_uarea == ODP_POOL_INVALID) { odp_pool_destroy(packet_pool_no_uarea); odp_pool_destroy(packet_pool); + printf("pool_create failed: 3\n"); return -1; }
@@ -174,8 +180,10 @@ int packet_suite_init(void) } while (segmented_test_packet == ODP_PACKET_INVALID);
if (odp_packet_is_valid(test_packet) == 0 || - odp_packet_is_valid(segmented_test_packet) == 0) + odp_packet_is_valid(segmented_test_packet) == 0) { + printf("packet_is_valid failed\n"); return -1; + }
segmentation_supported = odp_packet_is_segmented(segmented_test_packet);
@@ -187,16 +195,21 @@ int packet_suite_init(void)
udat = odp_packet_user_area(test_packet); udat_size = odp_packet_user_area_size(test_packet); - if (!udat || udat_size != sizeof(struct udata_struct)) + if (!udat || udat_size != sizeof(struct udata_struct)) { + printf("packet_user_area failed: 1\n"); return -1; + }
odp_pool_print(packet_pool); memcpy(udat, &test_packet_udata, sizeof(struct udata_struct));
udat = odp_packet_user_area(segmented_test_packet); udat_size = odp_packet_user_area_size(segmented_test_packet); - if (udat == NULL || udat_size != sizeof(struct udata_struct)) + if (udat == NULL || udat_size != sizeof(struct udata_struct)) { + printf("packet_user_area failed: 2\n"); return -1; + } + memcpy(udat, &test_packet_udata, sizeof(struct udata_struct));
return 0;
commit 7378c0ddeb8c34a38d0021230a65bccfc21a6f1b Author: Petri Savolainen petri.savolainen@linaro.org Date: Wed Feb 8 14:19:37 2017 +0200
test: l2fwd: add pktio driver print out
Print out pktio driver name in start up. Driver name (e.g. dpdk or netmap) helps in checking that correct pktio device started.
Signed-off-by: Petri Savolainen petri.savolainen@linaro.org Reviewed-and-tested-by: Bill Fischofer bill.fischofer@linaro.org Signed-off-by: Maxim Uvarov maxim.uvarov@linaro.org
diff --git a/test/common_plat/performance/odp_l2fwd.c b/test/common_plat/performance/odp_l2fwd.c index 54dc4cf..9864c64 100644 --- a/test/common_plat/performance/odp_l2fwd.c +++ b/test/common_plat/performance/odp_l2fwd.c @@ -603,6 +603,7 @@ static int create_pktio(const char *dev, int idx, int num_rx, int num_tx, odp_pktio_op_mode_t mode_rx; odp_pktio_op_mode_t mode_tx; pktin_mode_t in_mode = gbl_args->appl.in_mode; + odp_pktio_info_t info;
odp_pktio_param_init(&pktio_param);
@@ -620,8 +621,13 @@ static int create_pktio(const char *dev, int idx, int num_rx, int num_tx, return -1; }
- printf("created pktio %" PRIu64 " (%s)\n", - odp_pktio_to_u64(pktio), dev); + if (odp_pktio_info(pktio, &info)) { + LOG_ERR("Error: pktio info failed %s\n", dev); + return -1; + } + + printf("created pktio %" PRIu64 ", dev: %s, drv: %s\n", + odp_pktio_to_u64(pktio), dev, info.drv_name);
if (odp_pktio_capability(pktio, &capa)) { LOG_ERR("Error: capability query failed %s\n", dev);
-----------------------------------------------------------------------
Summary of changes: .codecov.yml | 25 + .travis.yml | 70 +- CHANGELOG | 178 +++ DEPENDENCIES | 4 +- configure.ac | 57 +- example/Makefile.inc | 3 +- example/classifier/odp_classifier.c | 4 +- example/generator/odp_generator.c | 83 +- example/hello/odp_hello.c | 15 +- example/ipsec/odp_ipsec.c | 6 +- example/ipsec/odp_ipsec_fwd_db.h | 1 - example/ipsec/odp_ipsec_loop_db.h | 1 - example/ipsec/odp_ipsec_misc.h | 4 +- example/ipsec/odp_ipsec_stream.c | 4 +- example/l2fwd_simple/odp_l2fwd_simple.c | 4 +- example/l3fwd/odp_l3fwd.c | 6 +- example/l3fwd/odp_l3fwd_db.h | 2 +- example/packet/odp_pktio.c | 4 +- example/switch/odp_switch.c | 4 +- example/time/time_global_test.c | 5 +- example/timer/odp_timer_test.c | 4 +- helper/Makefile.am | 36 +- helper/chksum.c | 4 +- helper/cuckootable.c | 52 +- helper/hashtable.c | 44 +- helper/include/odp/helper/odph_api.h | 39 + helper/{ => include/odp/helper}/odph_cuckootable.h | 0 helper/{ => include/odp/helper}/odph_hashtable.h | 0 .../{ => include/odp/helper}/odph_iplookuptable.h | 0 helper/{ => include/odp/helper}/odph_lineartable.h | 0 .../helper/platform/linux-generic/threads_extn.h | 112 ++ helper/include/odp/helper/{linux.h => threads.h} | 78 - helper/iplookuptable.c | 61 +- helper/lineartable.c | 29 +- helper/m4/configure.m4 | 14 + helper/odph_debug.h | 4 - helper/platform/linux-generic/thread.c | 313 ++++ helper/test/Makefile.am | 43 +- helper/test/chksum.c | 22 +- helper/test/cuckootable.c | 6 +- helper/test/iplookuptable.c | 6 +- helper/test/linux-generic/Makefile.am | 5 + helper/test/{ => linux-generic}/process.c | 16 +- helper/test/{ => linux-generic}/thread.c | 16 +- helper/test/odpthreads.c | 20 +- helper/test/parse.c | 89 +- helper/test/table.c | 15 +- helper/{linux.c => threads.c} | 242 +-- include/odp/arch/arm32-linux/odp/api/abi/buffer.h | 7 + .../arch/arm32-linux/odp/api/abi/classification.h | 7 + include/odp/arch/arm32-linux/odp/api/abi/crypto.h | 7 + include/odp/arch/arm32-linux/odp/api/abi/event.h | 7 + include/odp/arch/arm32-linux/odp/api/abi/packet.h | 7 + include/odp/arch/arm32-linux/odp/api/abi/pool.h | 7 + include/odp/arch/arm32-linux/odp/api/abi/queue.h | 7 + .../arch/arm32-linux/odp/api/abi/shared_memory.h | 7 + include/odp/arch/arm64-linux/odp/api/abi/buffer.h | 7 + .../arch/arm64-linux/odp/api/abi/classification.h | 7 + include/odp/arch/arm64-linux/odp/api/abi/crypto.h | 7 + include/odp/arch/arm64-linux/odp/api/abi/event.h | 7 + include/odp/arch/arm64-linux/odp/api/abi/packet.h | 7 + include/odp/arch/arm64-linux/odp/api/abi/pool.h | 7 + include/odp/arch/arm64-linux/odp/api/abi/queue.h | 7 + .../arch/arm64-linux/odp/api/abi/shared_memory.h | 7 + include/odp/arch/default/api/abi/buffer.h | 38 + include/odp/arch/default/api/abi/classification.h | 40 + include/odp/arch/default/api/abi/crypto.h | 36 + include/odp/arch/default/api/abi/event.h | 42 + include/odp/arch/default/api/abi/packet.h | 47 + include/odp/arch/default/api/abi/pool.h | 43 + include/odp/arch/default/api/abi/queue.h | 35 + include/odp/arch/default/api/abi/shared_memory.h | 35 + include/odp/arch/mips64-linux/odp/api/abi/buffer.h | 7 + .../arch/mips64-linux/odp/api/abi/classification.h | 7 + include/odp/arch/mips64-linux/odp/api/abi/crypto.h | 7 + include/odp/arch/mips64-linux/odp/api/abi/event.h | 7 + include/odp/arch/mips64-linux/odp/api/abi/packet.h | 7 + include/odp/arch/mips64-linux/odp/api/abi/pool.h | 7 + include/odp/arch/mips64-linux/odp/api/abi/queue.h | 7 + .../arch/mips64-linux/odp/api/abi/shared_memory.h | 7 + .../odp/arch/power64-linux/odp/api/abi/buffer.h | 7 + .../power64-linux/odp/api/abi/classification.h | 7 + .../odp/arch/power64-linux/odp/api/abi/crypto.h | 7 + include/odp/arch/power64-linux/odp/api/abi/event.h | 7 + .../odp/arch/power64-linux/odp/api/abi/packet.h | 7 + include/odp/arch/power64-linux/odp/api/abi/pool.h | 7 + include/odp/arch/power64-linux/odp/api/abi/queue.h | 7 + .../arch/power64-linux/odp/api/abi/shared_memory.h | 7 + include/odp/arch/x86_32-linux/odp/api/abi/buffer.h | 7 + .../arch/x86_32-linux/odp/api/abi/classification.h | 7 + include/odp/arch/x86_32-linux/odp/api/abi/crypto.h | 7 + include/odp/arch/x86_32-linux/odp/api/abi/event.h | 7 + include/odp/arch/x86_32-linux/odp/api/abi/packet.h | 7 + include/odp/arch/x86_32-linux/odp/api/abi/pool.h | 7 + include/odp/arch/x86_32-linux/odp/api/abi/queue.h | 7 + .../arch/x86_32-linux/odp/api/abi/shared_memory.h | 7 + include/odp/arch/x86_64-linux/odp/api/abi/buffer.h | 7 + .../arch/x86_64-linux/odp/api/abi/classification.h | 7 + include/odp/arch/x86_64-linux/odp/api/abi/crypto.h | 7 + include/odp/arch/x86_64-linux/odp/api/abi/event.h | 7 + include/odp/arch/x86_64-linux/odp/api/abi/packet.h | 7 + include/odp/arch/x86_64-linux/odp/api/abi/pool.h | 7 + include/odp/arch/x86_64-linux/odp/api/abi/queue.h | 7 + .../arch/x86_64-linux/odp/api/abi/shared_memory.h | 7 + ...inux.pc.in => libodphelper-linux-generic.pc.in} | 4 +- platform/Makefile.inc | 22 + platform/linux-generic/Makefile.am | 1 + platform/linux-generic/_ishm.c | 13 +- platform/linux-generic/_ishmphy.c | 42 +- platform/linux-generic/arch/arm/odp/api/cpu_arch.h | 6 + .../linux-generic/include/odp/api/classification.h | 9 +- .../include/odp/api/plat/buffer_types.h | 23 +- .../include/odp/api/plat/classification_types.h | 34 +- .../include/odp/api/plat/crypto_types.h | 21 +- .../include/odp/api/plat/event_types.h | 19 +- .../include/odp/api/plat/packet_types.h | 26 +- .../include/odp/api/plat/pool_types.h | 21 +- .../include/odp/api/plat/queue_types.h | 25 +- .../include/odp/api/plat/shared_memory_types.h | 16 +- platform/linux-generic/include/odp/api/queue.h | 4 + .../linux-generic/include/odp_align_internal.h | 108 +- .../include/odp_classification_datamodel.h | 19 +- .../include/odp_classification_inlines.h | 52 +- platform/linux-generic/include/odp_packet_dpdk.h | 2 +- .../linux-generic/include/odp_packet_internal.h | 5 + .../linux-generic/include/odp_packet_io_internal.h | 2 +- platform/linux-generic/include/odp_packet_netmap.h | 2 +- platform/linux-generic/include/odp_pool_internal.h | 1 + .../linux-generic/include/odp_queue_internal.h | 2 +- platform/linux-generic/include/protocols/ip.h | 14 +- platform/linux-generic/odp_buffer.c | 5 + platform/linux-generic/odp_classification.c | 39 +- platform/linux-generic/odp_crypto.c | 10 + platform/linux-generic/odp_event.c | 5 + platform/linux-generic/odp_packet.c | 16 +- platform/linux-generic/odp_pool.c | 12 +- platform/linux-generic/odp_queue.c | 5 + platform/linux-generic/odp_schedule.c | 8 +- platform/linux-generic/odp_schedule_sp.c | 7 +- platform/linux-generic/odp_shared_memory.c | 6 + platform/linux-generic/odp_timer.c | 9 +- platform/linux-generic/odp_traffic_mngr.c | 5 +- platform/linux-generic/pktio/dpdk.c | 14 +- platform/linux-generic/pktio/netmap.c | 37 +- test/Makefile.inc | 3 +- test/common_plat/common/odp_cunit_common.c | 2 +- .../common_plat/miscellaneous/odp_api_from_cpp.cpp | 2 +- test/common_plat/performance/.gitignore | 2 + test/common_plat/performance/Makefile.am | 15 +- .../common_plat/performance/dummy_crc.h | 46 +- test/common_plat/performance/odp_bench_packet.c | 1611 ++++++++++++++++++++ test/common_plat/performance/odp_crypto.c | 2 +- test/common_plat/performance/odp_l2fwd.c | 26 +- test/common_plat/performance/odp_l2fwd_run.sh | 10 +- test/common_plat/performance/odp_pktio_ordered.c | 1342 ++++++++++++++++ .../performance/odp_pktio_ordered_run.sh | 42 + test/common_plat/performance/odp_pktio_perf.c | 5 +- test/common_plat/performance/odp_sched_latency.c | 2 +- test/common_plat/performance/odp_scheduling.c | 2 +- .../common_plat/performance}/udp64.pcap | Bin test/common_plat/validation/api/Makefile.inc | 2 +- .../validation/api/classification/classification.h | 21 + .../api/classification/odp_classification_common.c | 153 +- .../classification/odp_classification_test_pmr.c | 296 +++- .../api/classification/odp_classification_tests.c | 46 +- .../classification/odp_classification_testsuites.h | 15 +- test/common_plat/validation/api/packet/packet.c | 23 +- test/common_plat/validation/api/pktio/pktio.c | 4 +- test/common_plat/validation/api/timer/timer.c | 2 +- .../validation/api/traffic_mngr/traffic_mngr.c | 6 +- test/linux-generic/Makefile.inc | 3 +- test/linux-generic/mmap_vlan_ins/mmap_vlan_ins.c | 30 +- test/linux-generic/mmap_vlan_ins/mmap_vlan_ins.sh | 15 +- test/linux-generic/pktio_ipc/ipc_common.h | 5 +- test/linux-generic/ring/ring_stress.c | 2 +- 175 files changed, 5717 insertions(+), 1091 deletions(-) create mode 100644 .codecov.yml create mode 100644 helper/include/odp/helper/odph_api.h rename helper/{ => include/odp/helper}/odph_cuckootable.h (100%) rename helper/{ => include/odp/helper}/odph_hashtable.h (100%) rename helper/{ => include/odp/helper}/odph_iplookuptable.h (100%) rename helper/{ => include/odp/helper}/odph_lineartable.h (100%) create mode 100644 helper/include/odp/helper/platform/linux-generic/threads_extn.h rename helper/include/odp/helper/{linux.h => threads.h} (74%) create mode 100644 helper/platform/linux-generic/thread.c create mode 100644 helper/test/linux-generic/Makefile.am rename helper/test/{ => linux-generic}/process.c (84%) rename helper/test/{ => linux-generic}/thread.c (84%) rename helper/{linux.c => threads.c} (66%) create mode 100644 include/odp/arch/arm32-linux/odp/api/abi/buffer.h create mode 100644 include/odp/arch/arm32-linux/odp/api/abi/classification.h create mode 100644 include/odp/arch/arm32-linux/odp/api/abi/crypto.h create mode 100644 include/odp/arch/arm32-linux/odp/api/abi/event.h create mode 100644 include/odp/arch/arm32-linux/odp/api/abi/packet.h create mode 100644 include/odp/arch/arm32-linux/odp/api/abi/pool.h create mode 100644 include/odp/arch/arm32-linux/odp/api/abi/queue.h create mode 100644 include/odp/arch/arm32-linux/odp/api/abi/shared_memory.h create mode 100644 include/odp/arch/arm64-linux/odp/api/abi/buffer.h create mode 100644 include/odp/arch/arm64-linux/odp/api/abi/classification.h create mode 100644 include/odp/arch/arm64-linux/odp/api/abi/crypto.h create mode 100644 include/odp/arch/arm64-linux/odp/api/abi/event.h create mode 100644 include/odp/arch/arm64-linux/odp/api/abi/packet.h create mode 100644 include/odp/arch/arm64-linux/odp/api/abi/pool.h create mode 100644 include/odp/arch/arm64-linux/odp/api/abi/queue.h create mode 100644 include/odp/arch/arm64-linux/odp/api/abi/shared_memory.h create mode 100644 include/odp/arch/default/api/abi/buffer.h create mode 100644 include/odp/arch/default/api/abi/classification.h create mode 100644 include/odp/arch/default/api/abi/crypto.h create mode 100644 include/odp/arch/default/api/abi/event.h create mode 100644 include/odp/arch/default/api/abi/packet.h create mode 100644 include/odp/arch/default/api/abi/pool.h create mode 100644 include/odp/arch/default/api/abi/queue.h create mode 100644 include/odp/arch/default/api/abi/shared_memory.h create mode 100644 include/odp/arch/mips64-linux/odp/api/abi/buffer.h create mode 100644 include/odp/arch/mips64-linux/odp/api/abi/classification.h create mode 100644 include/odp/arch/mips64-linux/odp/api/abi/crypto.h create mode 100644 include/odp/arch/mips64-linux/odp/api/abi/event.h create mode 100644 include/odp/arch/mips64-linux/odp/api/abi/packet.h create mode 100644 include/odp/arch/mips64-linux/odp/api/abi/pool.h create mode 100644 include/odp/arch/mips64-linux/odp/api/abi/queue.h create mode 100644 include/odp/arch/mips64-linux/odp/api/abi/shared_memory.h create mode 100644 include/odp/arch/power64-linux/odp/api/abi/buffer.h create mode 100644 include/odp/arch/power64-linux/odp/api/abi/classification.h create mode 100644 include/odp/arch/power64-linux/odp/api/abi/crypto.h create mode 100644 include/odp/arch/power64-linux/odp/api/abi/event.h create mode 100644 include/odp/arch/power64-linux/odp/api/abi/packet.h create mode 100644 include/odp/arch/power64-linux/odp/api/abi/pool.h create mode 100644 include/odp/arch/power64-linux/odp/api/abi/queue.h create mode 100644 include/odp/arch/power64-linux/odp/api/abi/shared_memory.h create mode 100644 include/odp/arch/x86_32-linux/odp/api/abi/buffer.h create mode 100644 include/odp/arch/x86_32-linux/odp/api/abi/classification.h create mode 100644 include/odp/arch/x86_32-linux/odp/api/abi/crypto.h create mode 100644 include/odp/arch/x86_32-linux/odp/api/abi/event.h create mode 100644 include/odp/arch/x86_32-linux/odp/api/abi/packet.h create mode 100644 include/odp/arch/x86_32-linux/odp/api/abi/pool.h create mode 100644 include/odp/arch/x86_32-linux/odp/api/abi/queue.h create mode 100644 include/odp/arch/x86_32-linux/odp/api/abi/shared_memory.h create mode 100644 include/odp/arch/x86_64-linux/odp/api/abi/buffer.h create mode 100644 include/odp/arch/x86_64-linux/odp/api/abi/classification.h create mode 100644 include/odp/arch/x86_64-linux/odp/api/abi/crypto.h create mode 100644 include/odp/arch/x86_64-linux/odp/api/abi/event.h create mode 100644 include/odp/arch/x86_64-linux/odp/api/abi/packet.h create mode 100644 include/odp/arch/x86_64-linux/odp/api/abi/pool.h create mode 100644 include/odp/arch/x86_64-linux/odp/api/abi/queue.h create mode 100644 include/odp/arch/x86_64-linux/odp/api/abi/shared_memory.h rename pkgconfig/{libodphelper-linux.pc.in => libodphelper-linux-generic.pc.in} (72%) copy platform/linux-generic/odp_hash.c => test/common_plat/performance/dummy_crc.h (96%) create mode 100644 test/common_plat/performance/odp_bench_packet.c create mode 100644 test/common_plat/performance/odp_pktio_ordered.c create mode 100755 test/common_plat/performance/odp_pktio_ordered_run.sh copy {example/l2fwd_simple => test/common_plat/performance}/udp64.pcap (100%)
hooks/post-receive