X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=app%2Ftest%2Ftest_distributor.c;h=3efa4af10439f5109bdce0228ba2002f8db5d35d;hb=94b3c1a72507b49df61889f0f237dae85bb49be5;hp=f4c6229f16ae2c7cc63f3c5b75eb5621a513297b;hpb=6e1096939de00871174bc4d2f187f78c8270ca33;p=dpdk.git diff --git a/app/test/test_distributor.c b/app/test/test_distributor.c index f4c6229f16..3efa4af104 100644 --- a/app/test/test_distributor.c +++ b/app/test/test_distributor.c @@ -11,6 +11,17 @@ #include #include #include + +#ifdef RTE_EXEC_ENV_WINDOWS +static int +test_distributor(void) +{ + printf("distributor not supported on Windows, skipping test\n"); + return TEST_SKIPPED; +} + +#else + #include #include @@ -217,6 +228,8 @@ sanity_test(struct worker_params *wp, struct rte_mempool *p) clear_packet_count(); struct rte_mbuf *many_bufs[BIG_BATCH], *return_bufs[BIG_BATCH]; unsigned num_returned = 0; + unsigned int num_being_processed = 0; + unsigned int return_buffer_capacity = 127;/* RTE_DISTRIB_RETURNS_MASK */ /* flush out any remaining packets */ rte_distributor_flush(db); @@ -233,16 +246,16 @@ sanity_test(struct worker_params *wp, struct rte_mempool *p) for (i = 0; i < BIG_BATCH/BURST; i++) { rte_distributor_process(db, &many_bufs[i*BURST], BURST); - count = rte_distributor_returned_pkts(db, - &return_bufs[num_returned], - BIG_BATCH - num_returned); - num_returned += count; + num_being_processed += BURST; + do { + count = rte_distributor_returned_pkts(db, + &return_bufs[num_returned], + BIG_BATCH - num_returned); + num_being_processed -= count; + num_returned += count; + rte_distributor_flush(db); + } while (num_being_processed + BURST > return_buffer_capacity); } - rte_distributor_flush(db); - count = rte_distributor_returned_pkts(db, - &return_bufs[num_returned], - BIG_BATCH - num_returned); - num_returned += count; retries = 0; do { rte_distributor_flush(db); @@ -937,4 +950,6 @@ err: return -1; } +#endif /* !RTE_EXEC_ENV_WINDOWS */ + REGISTER_TEST_COMMAND(distributor_autotest, test_distributor);