diff options
author | Maxim Uvarov <maxim.uvarov@linaro.org> | 2015-08-11 16:36:34 +0300 |
---|---|---|
committer | Maxim Uvarov <maxim.uvarov@linaro.org> | 2015-08-11 16:36:34 +0300 |
commit | d8b3ffe6552ef72f6d6dd4ff35ef541c2c5d1393 (patch) | |
tree | a57471d538b7629e095b7066c4ce019f57ee3ea6 /test/performance | |
parent | 1a7daf45862ab3a8785b9f5e6d6950eff6637c63 (diff) | |
parent | 4450e0a0e9f6ac7f63e6b30b94f456386e07011b (diff) |
Merge branch 'master' into api-next
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
Conflicts:
example/timer/odp_timer_test.c
Diffstat (limited to 'test/performance')
-rw-r--r-- | test/performance/odp_l2fwd.c | 9 | ||||
-rw-r--r-- | test/performance/odp_pktio_perf.c | 12 |
2 files changed, 18 insertions, 3 deletions
diff --git a/test/performance/odp_l2fwd.c b/test/performance/odp_l2fwd.c index f5bfd55c7..366bb15fd 100644 --- a/test/performance/odp_l2fwd.c +++ b/test/performance/odp_l2fwd.c @@ -109,6 +109,8 @@ typedef struct { /** Global pointer to args */ static args_t *gbl_args; +/** Global barrier to synchronize main and workers */ +static odp_barrier_t barrier; /* helper funcs */ static inline odp_queue_t lookup_dest_q(odp_packet_t pkt); @@ -136,6 +138,7 @@ static void *pktio_queue_thread(void *arg) thr = odp_thread_id(); printf("[%02i] QUEUE mode\n", thr); + odp_barrier_wait(&barrier); /* Loop packets */ while (!exit_threads) { @@ -219,6 +222,7 @@ static void *pktio_ifburst_thread(void *arg) gbl_args->appl.if_names[src_idx], gbl_args->appl.if_names[dst_idx], odp_pktio_to_u64(pktio_src), odp_pktio_to_u64(pktio_dst)); + odp_barrier_wait(&barrier); /* Loop packets */ while (!exit_threads) { @@ -332,6 +336,9 @@ static void print_speed_stats(int num_workers, stats_t **thr_stats, int i, elapsed = 0; int loop_forever = (duration == 0); + /* Wait for all threads to be ready*/ + odp_barrier_wait(&barrier); + do { pkts = 0; drops = 0; @@ -454,6 +461,8 @@ int main(int argc, char *argv[]) stats_t **stats = calloc(1, sizeof(stats_t) * num_workers); + odp_barrier_init(&barrier, num_workers + 1); + /* Create worker threads */ cpu = odp_cpumask_first(&cpumask); for (i = 0; i < num_workers; ++i) { diff --git a/test/performance/odp_pktio_perf.c b/test/performance/odp_pktio_perf.c index b09055fee..155257995 100644 --- a/test/performance/odp_pktio_perf.c +++ b/test/performance/odp_pktio_perf.c @@ -123,6 +123,8 @@ typedef struct { odp_pktio_t pktio_rx; pkt_rx_stats_t rx_stats[ODP_CONFIG_MAX_THREADS]; pkt_tx_stats_t tx_stats[ODP_CONFIG_MAX_THREADS]; + uint8_t src_mac[ODPH_ETHADDR_LEN]; + uint8_t dst_mac[ODPH_ETHADDR_LEN]; } test_globals_t; /* Status of max rate search */ @@ -169,7 +171,6 @@ static odp_packet_t pktio_create_packet(void) uint32_t offset; pkt_head_t pkt_hdr; size_t payload_len; - uint8_t mac[ODPH_ETHADDR_LEN] = {0}; payload_len = sizeof(pkt_hdr) + gbl_args->args.pkt_len; @@ -186,8 +187,8 @@ static odp_packet_t pktio_create_packet(void) offset = 0; odp_packet_l2_offset_set(pkt, offset); eth = (odph_ethhdr_t *)buf; - memcpy(eth->src.addr, mac, ODPH_ETHADDR_LEN); - memcpy(eth->dst.addr, mac, ODPH_ETHADDR_LEN); + memcpy(eth->src.addr, gbl_args->src_mac, ODPH_ETHADDR_LEN); + memcpy(eth->dst.addr, gbl_args->dst_mac, ODPH_ETHADDR_LEN); eth->type = odp_cpu_to_be_16(ODPH_ETHTYPE_IPV4); /* IP */ @@ -746,6 +747,11 @@ static int test_init(void) gbl_args->pktio_rx = gbl_args->pktio_tx; } + odp_pktio_mac_addr(gbl_args->pktio_tx, gbl_args->src_mac, + ODPH_ETHADDR_LEN); + odp_pktio_mac_addr(gbl_args->pktio_rx, gbl_args->dst_mac, + ODPH_ETHADDR_LEN); + if (gbl_args->pktio_rx == ODP_PKTIO_INVALID || gbl_args->pktio_tx == ODP_PKTIO_INVALID) { LOG_ERR("failed to open pktio\n"); |