aboutsummaryrefslogtreecommitdiff
path: root/test/performance
diff options
context:
space:
mode:
authorMaxim Uvarov <maxim.uvarov@linaro.org>2015-08-11 16:36:34 +0300
committerMaxim Uvarov <maxim.uvarov@linaro.org>2015-08-11 16:36:34 +0300
commitd8b3ffe6552ef72f6d6dd4ff35ef541c2c5d1393 (patch)
treea57471d538b7629e095b7066c4ce019f57ee3ea6 /test/performance
parent1a7daf45862ab3a8785b9f5e6d6950eff6637c63 (diff)
parent4450e0a0e9f6ac7f63e6b30b94f456386e07011b (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.c9
-rw-r--r--test/performance/odp_pktio_perf.c12
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");