diff options
author | Jere Leppänen <jere.leppanen@nokia.com> | 2023-04-05 15:12:10 +0300 |
---|---|---|
committer | Matias Elo <matias.elo@nokia.com> | 2023-04-12 13:38:07 +0300 |
commit | fdb4dd5f1f593684acb8f67525eae028f4deb239 (patch) | |
tree | f9b7c5226a2efa431c86b4f654fbdcf8b0e3f7e5 /test | |
parent | bdb4a9a97b2baae95da360b306535853c2b4236f (diff) |
validation: fix classifier destroy order
Fix the destroy order of classifier objects and related objects, such
as PMRs, CoSes, queues and pools. Remove default CoS before destroying
the CoS.
Signed-off-by: Jere Leppänen <jere.leppanen@nokia.com>
Reviewed-by: Petri Savolainen <petri.savolainen@nokia.com>
Diffstat (limited to 'test')
4 files changed, 34 insertions, 24 deletions
diff --git a/test/validation/api/classification/odp_classification_basic.c b/test/validation/api/classification/odp_classification_basic.c index f7aa96e52..2969dedab 100644 --- a/test/validation/api/classification/odp_classification_basic.c +++ b/test/validation/api/classification/odp_classification_basic.c @@ -203,13 +203,14 @@ static void classification_test_create_pmr_match(void) retval = odp_cls_pmr_destroy(ODP_PMR_INVALID); CU_ASSERT(retval < 0); + odp_cos_destroy(cos); odp_queue_destroy(queue); odp_pool_destroy(pool); odp_pool_destroy(pkt_pool); - odp_cos_destroy(cos); + odp_pktio_default_cos_set(pktio, ODP_COS_INVALID); + odp_cos_destroy(default_cos); odp_queue_destroy(default_queue); odp_pool_destroy(default_pool); - odp_cos_destroy(default_cos); odp_pktio_close(pktio); } @@ -401,13 +402,14 @@ static void classification_test_pmr_composite_create(void) retval = odp_cls_pmr_destroy(pmr_composite); CU_ASSERT(retval == 0); + odp_cos_destroy(cos); odp_queue_destroy(queue); odp_pool_destroy(pool); odp_pool_destroy(pkt_pool); - odp_cos_destroy(cos); + odp_pktio_default_cos_set(pktio, ODP_COS_INVALID); + odp_cos_destroy(default_cos); odp_queue_destroy(default_queue); odp_pool_destroy(default_pool); - odp_cos_destroy(default_cos); odp_pktio_close(pktio); } diff --git a/test/validation/api/classification/odp_classification_test_pmr.c b/test/validation/api/classification/odp_classification_test_pmr.c index 0b29783c0..bf067719b 100644 --- a/test/validation/api/classification/odp_classification_test_pmr.c +++ b/test/validation/api/classification/odp_classification_test_pmr.c @@ -194,9 +194,10 @@ static void classification_test_pktin_classifier_flag(void) CU_ASSERT(seqno == cls_pkt_get_seq(pkt)); odp_packet_free(pkt); + odp_cls_pmr_destroy(pmr); odp_cos_destroy(cos); + odp_pktio_default_cos_set(pktio, ODP_COS_INVALID); odp_cos_destroy(default_cos); - odp_cls_pmr_destroy(pmr); stop_pktio(pktio); odp_queue_destroy(queue); odp_queue_destroy(default_queue); @@ -366,9 +367,10 @@ static void _classification_test_pmr_term_tcp_dport(int num_pkt) CU_ASSERT(sent_queue == recv_queue); CU_ASSERT(sent_default == recv_default); + odp_cls_pmr_destroy(pmr); odp_cos_destroy(cos); + odp_pktio_default_cos_set(pktio, ODP_COS_INVALID); odp_cos_destroy(default_cos); - odp_cls_pmr_destroy(pmr); stop_pktio(pktio); odp_queue_destroy(queue); odp_queue_destroy(default_queue); @@ -457,9 +459,10 @@ static void test_pmr(const odp_pmr_param_t *pmr_param, odp_packet_t pkt, } odp_packet_free(pkt); + odp_cls_pmr_destroy(pmr); odp_cos_destroy(cos); + odp_pktio_default_cos_set(pktio, ODP_COS_INVALID); odp_cos_destroy(default_cos); - odp_cls_pmr_destroy(pmr); /* XXX ordering */ stop_pktio(pktio); odp_pool_destroy(default_pool); odp_pool_destroy(pool); @@ -747,9 +750,10 @@ static void classification_test_pmr_term_dmac(void) CU_ASSERT(recvpool == default_pool); CU_ASSERT(retqueue == default_queue); + odp_cls_pmr_destroy(pmr); odp_cos_destroy(cos); + odp_pktio_default_cos_set(pktio, ODP_COS_INVALID); odp_cos_destroy(default_cos); - odp_cls_pmr_destroy(pmr); odp_packet_free(pkt); stop_pktio(pktio); odp_pool_destroy(default_pool); @@ -1080,9 +1084,10 @@ static void classification_test_pmr_pool_set(void) CU_ASSERT(retqueue == queue); odp_packet_free(pkt); + odp_cls_pmr_destroy(pmr); odp_cos_destroy(cos); + odp_pktio_default_cos_set(pktio, ODP_COS_INVALID); odp_cos_destroy(default_cos); - odp_cls_pmr_destroy(pmr); stop_pktio(pktio); odp_pool_destroy(default_pool); odp_pool_destroy(pool); @@ -1180,9 +1185,10 @@ static void classification_test_pmr_queue_set(void) CU_ASSERT(retqueue == queue_new); odp_packet_free(pkt); + odp_cls_pmr_destroy(pmr); odp_cos_destroy(cos); + odp_pktio_default_cos_set(pktio, ODP_COS_INVALID); odp_cos_destroy(default_cos); - odp_cls_pmr_destroy(pmr); stop_pktio(pktio); odp_pool_destroy(default_pool); odp_pool_destroy(pool); @@ -1603,15 +1609,15 @@ static void test_pmr_series(const int num_udp, int marking) CU_ASSERT(seqno == cls_pkt_get_seq(pkt)); CU_ASSERT(retqueue == default_queue); odp_packet_free(pkt); + odp_cls_pmr_destroy(pmr_ip); for (i = 0; i < num_udp; i++) { - odp_cos_destroy(cos_udp[i]); odp_cls_pmr_destroy(pmr_udp[i]); + odp_cos_destroy(cos_udp[i]); } odp_cos_destroy(cos_ip); - odp_cls_pmr_destroy(pmr_ip); - + odp_pktio_default_cos_set(pktio, ODP_COS_INVALID); odp_cos_destroy(default_cos); stop_pktio(pktio); odp_pool_destroy(default_pool); diff --git a/test/validation/api/classification/odp_classification_tests.c b/test/validation/api/classification/odp_classification_tests.c index 962885c06..002beb2aa 100644 --- a/test/validation/api/classification/odp_classification_tests.c +++ b/test/validation/api/classification/odp_classification_tests.c @@ -162,6 +162,16 @@ static int classification_suite_common_term(odp_bool_t enable_pktv) retcode = -1; } + for (i = 0; i < CLS_ENTRIES; i++) { + if (pmr_list[i] != ODP_PMR_INVALID) + odp_cls_pmr_destroy(pmr_list[i]); + } + + for (i = 0; i < CLS_ENTRIES; i++) { + if (cos_list[i] != ODP_COS_INVALID) + odp_cos_destroy(cos_list[i]); + } + if (0 != odp_pool_destroy(pool_default)) { ODPH_ERR("Pool_default destroy failed\n"); retcode = -1; @@ -175,16 +185,6 @@ static int classification_suite_common_term(odp_bool_t enable_pktv) } for (i = 0; i < CLS_ENTRIES; i++) { - if (cos_list[i] != ODP_COS_INVALID) - odp_cos_destroy(cos_list[i]); - } - - for (i = 0; i < CLS_ENTRIES; i++) { - if (pmr_list[i] != ODP_PMR_INVALID) - odp_cls_pmr_destroy(pmr_list[i]); - } - - for (i = 0; i < CLS_ENTRIES; i++) { if (queue_list[i] != ODP_QUEUE_INVALID) odp_queue_destroy(queue_list[i]); } diff --git a/test/validation/api/pktio/pktio.c b/test/validation/api/pktio/pktio.c index 524107d18..3772e04af 100644 --- a/test/validation/api/pktio/pktio.c +++ b/test/validation/api/pktio/pktio.c @@ -2041,8 +2041,10 @@ static void pktio_config_flow_control(int pfc, int rx, int tx) if (cos != ODP_COS_INVALID) odp_cos_destroy(cos); - if (default_cos != ODP_COS_INVALID) + if (default_cos != ODP_COS_INVALID) { + odp_pktio_default_cos_set(pktio, ODP_COS_INVALID); odp_cos_destroy(default_cos); + } if (queue != ODP_QUEUE_INVALID) odp_queue_destroy(queue); |