From: Balasubramanian Manoharan <bala.manoha...@linaro.org> Destroys pktio default inqueue for a clean odp_classification_term_global() Fixes https://bugs.linaro.org/show_bug.cgi?id=1281
Signed-off-by: Balasubramanian Manoharan <bala.manoha...@linaro.org> --- .../classification/odp_classification_tests.c | 50 +++++++++++++++++++--- 1 file changed, 45 insertions(+), 5 deletions(-) diff --git a/test/validation/classification/odp_classification_tests.c b/test/validation/classification/odp_classification_tests.c index ee2c420..65e1011 100644 --- a/test/validation/classification/odp_classification_tests.c +++ b/test/validation/classification/odp_classification_tests.c @@ -5,6 +5,7 @@ */ #include "odp_classification_testsuites.h" +#include <odp_cunit_common.h> #include <odp/helper/eth.h> #include <odp/helper/ip.h> #include <odp/helper/udp.h> @@ -154,6 +155,33 @@ static uint32_t cls_pkt_get_seq(odp_packet_t pkt) return TEST_SEQ_INVALID; } + +static int destroy_inq(odp_pktio_t pktio) +{ + odp_queue_t inq; + odp_event_t ev; + + inq = odp_pktio_inq_getdef(pktio); + + if (inq == ODP_QUEUE_INVALID) { + CU_FAIL("attempting to destroy invalid inq"); + return -1; + } + + if (0 > odp_pktio_inq_remdef(pktio)) + return -1; + + while (1) { + ev = odp_schedule(NULL, ODP_SCHED_NO_WAIT); + + if (ev != ODP_EVENT_INVALID) + odp_buffer_free(odp_buffer_from_event(ev)); + else + break; + } + + return odp_queue_destroy(inq); +} odp_packet_t create_packet(bool vlan) { uint32_t seqno; @@ -296,11 +324,22 @@ int classification_tests_init(void) int classification_tests_finalize(void) { int i; - if (0 > odp_pktio_close(pktio_loop)) - return -1; + int retcode = 0; - if (0 != odp_pool_destroy(pool_default)) - return -1; + if (0 > destroy_inq(pktio_loop)) { + fprintf(stderr, "destroy pktio inq failed.\n"); + retcode = -1; + } + + if (0 > odp_pktio_close(pktio_loop)) { + fprintf(stderr, "pktio close failed.\n"); + retcode = -1; + } + + if (0 != odp_pool_destroy(pool_default)) { + fprintf(stderr, "pool_default destroy failed.\n"); + retcode = -1; + } for (i = 0; i < CLS_ENTRIES; i++) odp_cos_destroy(cos_list[i]); @@ -310,7 +349,8 @@ int classification_tests_finalize(void) for (i = 0; i < CLS_ENTRIES; i++) odp_queue_destroy(queue_list[i]); - return 0; + + return retcode; } void configure_cls_pmr_chain(void) -- 2.0.1.472.g6f92e5f _______________________________________________ lng-odp mailing list lng-odp@lists.linaro.org http://lists.linaro.org/mailman/listinfo/lng-odp