This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "".
The branch, master has been updated via 4d4a1700354eb591c287f6dfad53796c683b6187 (commit) via 80ed0d187bb177f755720a02dd90d2a88b06a6d6 (commit) via e18bdce1546b4d68e891d5b697c784e1cbfaa33e (commit) via 94e56db4ab77bf0ac1ef6eae97b82f9fd9076ae9 (commit) via c2456cec47e3c0dc275074598b94ec8167e299f4 (commit) via 6fdd54e9ee04f350d31f3c93df3f100e47907625 (commit) via a1678f04d5c3af8f3c540a4c70f6ea726295ea7a (commit) via cf5c4d8ffab08baac185ab8d08d56201b33be198 (commit) via 5b540ecaf9a6ed3f9730c605367afd6fc7cc8d1d (commit) via 03c9d6d7ef29470067c2caef41c891b15a4d887d (commit) via 5536a1d38ad4aa827074fab400e6078408725996 (commit) via 774bd2784cb90c1d059c6dd35611a7e7adf149b9 (commit) via 51563bcb4d1d3cf84e8e4832626eed25363b89dd (commit) from 6ab6aa876354b68922e3fa038492a01beeb687a7 (commit)
Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below.
- Log ----------------------------------------------------------------- commit 4d4a1700354eb591c287f6dfad53796c683b6187 Author: Petri Savolainen petri.savolainen@nokia.com Date: Thu Oct 10 14:23:21 2019 +0300
linux-gen: cls: add supported terms into capability
These 8 terms were implemented and tested, but not reported as supported by the capability call.
Signed-off-by: Petri Savolainen petri.savolainen@nokia.com Reviewed-by: Matias Elo matias.elo@nokia.com
diff --git a/platform/linux-generic/odp_classification.c b/platform/linux-generic/odp_classification.c index 24e35d2bc..9a299f51b 100644 --- a/platform/linux-generic/odp_classification.c +++ b/platform/linux-generic/odp_classification.c @@ -1,4 +1,5 @@ /* Copyright (c) 2014-2018, Linaro Limited + * Copyright (c) 2019, Nokia * All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause @@ -155,6 +156,12 @@ int odp_cls_capability(odp_cls_capability_t *capability) capability->max_cos = CLS_COS_MAX_ENTRY; capability->pmr_range_supported = false; capability->supported_terms.all_bits = 0; + capability->supported_terms.bit.len = 1; + capability->supported_terms.bit.ethtype_0 = 1; + capability->supported_terms.bit.ethtype_x = 1; + capability->supported_terms.bit.vlan_id_0 = 1; + capability->supported_terms.bit.vlan_id_x = 1; + capability->supported_terms.bit.dmac = 1; capability->supported_terms.bit.ip_proto = 1; capability->supported_terms.bit.udp_dport = 1; capability->supported_terms.bit.udp_sport = 1; @@ -162,6 +169,8 @@ int odp_cls_capability(odp_cls_capability_t *capability) capability->supported_terms.bit.tcp_sport = 1; capability->supported_terms.bit.sip_addr = 1; capability->supported_terms.bit.dip_addr = 1; + capability->supported_terms.bit.sip6_addr = 1; + capability->supported_terms.bit.dip6_addr = 1; capability->random_early_detection = ODP_SUPPORT_NO; capability->back_pressure = ODP_SUPPORT_NO; capability->threshold_red.all_bits = 0;
commit 80ed0d187bb177f755720a02dd90d2a88b06a6d6 Author: Petri Savolainen petri.savolainen@nokia.com Date: Thu Oct 10 10:25:13 2019 +0300
validation: cls: test only supported PRM terms
Check classifier capability and run PRM term tests only for supported terms.
Signed-off-by: Petri Savolainen petri.savolainen@nokia.com Reviewed-by: Matias Elo matias.elo@nokia.com
diff --git a/test/validation/api/classification/odp_classification_test_pmr.c b/test/validation/api/classification/odp_classification_test_pmr.c index 474c62dcf..47cdeaa76 100644 --- a/test/validation/api/classification/odp_classification_test_pmr.c +++ b/test/validation/api/classification/odp_classification_test_pmr.c @@ -14,9 +14,17 @@ static odp_pool_t pkt_pool; odp_atomic_u32_t seq;
static cls_packet_info_t default_pkt_info; +static odp_cls_capability_t cls_capa;
int classification_suite_pmr_init(void) { + memset(&cls_capa, 0, sizeof(odp_cls_capability_t)); + + if (odp_cls_capability(&cls_capa)) { + fprintf(stderr, "Classifier capability call failed.\n"); + return -1; + } + pkt_pool = pool_create("classification_pmr_pool"); if (ODP_POOL_INVALID == pkt_pool) { fprintf(stderr, "Packet pool creation failed.\n"); @@ -77,14 +85,17 @@ void configure_default_cos(odp_pktio_t pktio, odp_cos_t *cos,
int classification_suite_pmr_term(void) { - int retcode = 0; + int ret = 0;
if (0 != odp_pool_destroy(pkt_pool)) { fprintf(stderr, "pkt_pool destroy failed.\n"); - retcode = -1; + ret += -1; }
- return retcode; + if (odp_cunit_print_inactive()) + ret += -1; + + return ret; }
static void classification_test_pktin_classifier_flag(void) @@ -2029,24 +2040,114 @@ static void classification_test_pmr_term_tcp_dport_multi(void) _classification_test_pmr_term_tcp_dport(SHM_PKT_NUM_BUFS / 4); }
+static int check_capa_tcp_dport(void) +{ + return cls_capa.supported_terms.bit.tcp_dport; +} + +static int check_capa_tcp_sport(void) +{ + return cls_capa.supported_terms.bit.tcp_sport; +} + +static int check_capa_udp_dport(void) +{ + return cls_capa.supported_terms.bit.udp_dport; +} + +static int check_capa_udp_sport(void) +{ + return cls_capa.supported_terms.bit.udp_sport; +} + +static int check_capa_ip_proto(void) +{ + return cls_capa.supported_terms.bit.ip_proto; +} + +static int check_capa_dmac(void) +{ + return cls_capa.supported_terms.bit.dmac; +} + +static int check_capa_ipv4_saddr(void) +{ + return cls_capa.supported_terms.bit.sip_addr; +} + +static int check_capa_ipv4_daddr(void) +{ + return cls_capa.supported_terms.bit.dip_addr; +} + +static int check_capa_ipv6_saddr(void) +{ + return cls_capa.supported_terms.bit.sip6_addr; +} + +static int check_capa_ipv6_daddr(void) +{ + return cls_capa.supported_terms.bit.dip6_addr; +} + +static int check_capa_packet_len(void) +{ + return cls_capa.supported_terms.bit.len; +} + +static int check_capa_vlan_id_0(void) +{ + return cls_capa.supported_terms.bit.vlan_id_0; +} + +static int check_capa_vlan_id_x(void) +{ + return cls_capa.supported_terms.bit.vlan_id_x; +} + +static int check_capa_ethtype_0(void) +{ + return cls_capa.supported_terms.bit.ethtype_0; +} + +static int check_capa_ethtype_x(void) +{ + return cls_capa.supported_terms.bit.ethtype_x; +} + odp_testinfo_t classification_suite_pmr[] = { - ODP_TEST_INFO(classification_test_pmr_term_tcp_dport), - ODP_TEST_INFO(classification_test_pmr_term_tcp_sport), - ODP_TEST_INFO(classification_test_pmr_term_udp_dport), - ODP_TEST_INFO(classification_test_pmr_term_udp_sport), - ODP_TEST_INFO(classification_test_pmr_term_ipproto), - ODP_TEST_INFO(classification_test_pmr_term_dmac), + ODP_TEST_INFO_CONDITIONAL(classification_test_pmr_term_tcp_dport, + check_capa_tcp_dport), + ODP_TEST_INFO_CONDITIONAL(classification_test_pmr_term_tcp_sport, + check_capa_tcp_sport), + ODP_TEST_INFO_CONDITIONAL(classification_test_pmr_term_udp_dport, + check_capa_udp_dport), + ODP_TEST_INFO_CONDITIONAL(classification_test_pmr_term_udp_sport, + check_capa_udp_sport), + ODP_TEST_INFO_CONDITIONAL(classification_test_pmr_term_ipproto, + check_capa_ip_proto), + ODP_TEST_INFO_CONDITIONAL(classification_test_pmr_term_dmac, + check_capa_dmac), ODP_TEST_INFO(classification_test_pmr_pool_set), ODP_TEST_INFO(classification_test_pmr_queue_set), - ODP_TEST_INFO(classification_test_pmr_term_ipv4_saddr), - ODP_TEST_INFO(classification_test_pmr_term_ipv4_daddr), - ODP_TEST_INFO(classification_test_pmr_term_ipv6saddr), - ODP_TEST_INFO(classification_test_pmr_term_ipv6daddr), - ODP_TEST_INFO(classification_test_pmr_term_packet_len), - ODP_TEST_INFO(classification_test_pmr_term_vlan_id_0), - ODP_TEST_INFO(classification_test_pmr_term_vlan_id_x), - ODP_TEST_INFO(classification_test_pmr_term_eth_type_0), - ODP_TEST_INFO(classification_test_pmr_term_eth_type_x), + ODP_TEST_INFO_CONDITIONAL(classification_test_pmr_term_ipv4_saddr, + check_capa_ipv4_saddr), + ODP_TEST_INFO_CONDITIONAL(classification_test_pmr_term_ipv4_daddr, + check_capa_ipv4_daddr), + ODP_TEST_INFO_CONDITIONAL(classification_test_pmr_term_ipv6saddr, + check_capa_ipv6_saddr), + ODP_TEST_INFO_CONDITIONAL(classification_test_pmr_term_ipv6daddr, + check_capa_ipv6_daddr), + ODP_TEST_INFO_CONDITIONAL(classification_test_pmr_term_packet_len, + check_capa_packet_len), + ODP_TEST_INFO_CONDITIONAL(classification_test_pmr_term_vlan_id_0, + check_capa_vlan_id_0), + ODP_TEST_INFO_CONDITIONAL(classification_test_pmr_term_vlan_id_x, + check_capa_vlan_id_x), + ODP_TEST_INFO_CONDITIONAL(classification_test_pmr_term_eth_type_0, + check_capa_ethtype_0), + ODP_TEST_INFO_CONDITIONAL(classification_test_pmr_term_eth_type_x, + check_capa_ethtype_x), ODP_TEST_INFO(classification_test_pktin_classifier_flag), ODP_TEST_INFO(classification_test_pmr_term_tcp_dport_multi), ODP_TEST_INFO_NULL, diff --git a/test/validation/api/classification/odp_classification_tests.c b/test/validation/api/classification/odp_classification_tests.c index c58f5e68f..9df869ece 100644 --- a/test/validation/api/classification/odp_classification_tests.c +++ b/test/validation/api/classification/odp_classification_tests.c @@ -137,6 +137,9 @@ int classification_suite_term(void) odp_pool_destroy(pool_list[i]); }
+ if (odp_cunit_print_inactive()) + retcode = -1; + return retcode; }
commit e18bdce1546b4d68e891d5b697c784e1cbfaa33e Author: Petri Savolainen petri.savolainen@nokia.com Date: Thu Oct 10 15:08:54 2019 +0300
validation: tm: print inactive tests on terminate
Print inactive tests on suite terminate.
Signed-off-by: Petri Savolainen petri.savolainen@nokia.com Reviewed-by: Matias Elo matias.elo@nokia.com
diff --git a/test/validation/api/traffic_mngr/traffic_mngr.c b/test/validation/api/traffic_mngr/traffic_mngr.c index ff35b7b91..2b0b99325 100644 --- a/test/validation/api/traffic_mngr/traffic_mngr.c +++ b/test/validation/api/traffic_mngr/traffic_mngr.c @@ -2104,6 +2104,9 @@ static int traffic_mngr_suite_term(void) return -1; }
+ if (odp_cunit_print_inactive()) + return -1; + return 0; }
commit 94e56db4ab77bf0ac1ef6eae97b82f9fd9076ae9 Author: Petri Savolainen petri.savolainen@nokia.com Date: Thu Oct 10 15:06:24 2019 +0300
validation: sched: print inactive tests on terminate
Print inactive tests on suite terminate.
Signed-off-by: Petri Savolainen petri.savolainen@nokia.com Reviewed-by: Matias Elo matias.elo@nokia.com
diff --git a/test/validation/api/scheduler/scheduler.c b/test/validation/api/scheduler/scheduler.c index 6332302b9..da87deaef 100644 --- a/test/validation/api/scheduler/scheduler.c +++ b/test/validation/api/scheduler/scheduler.c @@ -2135,6 +2135,9 @@ static int scheduler_suite_term(void) if (odp_shm_free(shm) != 0) fprintf(stderr, "error: failed to free shm\n");
+ if (odp_cunit_print_inactive()) + return -1; + return 0; }
commit c2456cec47e3c0dc275074598b94ec8167e299f4 Author: Petri Savolainen petri.savolainen@nokia.com Date: Thu Oct 10 14:59:45 2019 +0300
validation: pktio: print inactive tests on terminate
Print inactive tests on suite terminate.
Signed-off-by: Petri Savolainen petri.savolainen@nokia.com Reviewed-by: Matias Elo matias.elo@nokia.com
diff --git a/test/validation/api/pktio/parser.c b/test/validation/api/pktio/parser.c index e23e7d0c4..896855006 100644 --- a/test/validation/api/pktio/parser.c +++ b/test/validation/api/pktio/parser.c @@ -577,6 +577,9 @@ int parser_suite_term(void) ret = -1; }
+ if (odp_cunit_print_inactive()) + ret = -1; + return ret; }
diff --git a/test/validation/api/pktio/pktio.c b/test/validation/api/pktio/pktio.c index f035b8cd4..f8796c7da 100644 --- a/test/validation/api/pktio/pktio.c +++ b/test/validation/api/pktio/pktio.c @@ -2830,6 +2830,9 @@ static int pktio_suite_term(void) } default_pkt_pool = ODP_POOL_INVALID;
+ if (odp_cunit_print_inactive()) + ret = -1; + return ret; }
commit 6fdd54e9ee04f350d31f3c93df3f100e47907625 Author: Petri Savolainen petri.savolainen@nokia.com Date: Thu Oct 10 12:39:32 2019 +0300
validation: ipsec: use odp_cunit_print_inactive on term
Use the common function to print inactive tests on suite terminate.
Signed-off-by: Petri Savolainen petri.savolainen@nokia.com Reviewed-by: Matias Elo matias.elo@nokia.com
diff --git a/test/validation/api/ipsec/ipsec.c b/test/validation/api/ipsec/ipsec.c index 580190502..6a6a3be96 100644 --- a/test/validation/api/ipsec/ipsec.c +++ b/test/validation/api/ipsec/ipsec.c @@ -883,36 +883,25 @@ int ipsec_suite_init(void) return rc < 0 ? -1 : 0; }
-static int ipsec_suite_term(odp_testinfo_t *suite) +static int ipsec_suite_term(void) { - int i; - int first = 1; - if (suite_context.pktio != ODP_PKTIO_INVALID) pktio_stop(suite_context.pktio);
- for (i = 0; suite[i].name; i++) { - if (suite[i].check_active && - suite[i].check_active() == ODP_TEST_INACTIVE) { - if (first) { - first = 0; - printf("\n\n Inactive tests:\n"); - } - printf(" %s\n", suite[i].name); - } - } + if (odp_cunit_print_inactive()) + return -1;
return 0; }
int ipsec_in_term(void) { - return ipsec_suite_term(ipsec_in_suite); + return ipsec_suite_term(); }
int ipsec_out_term(void) { - return ipsec_suite_term(ipsec_out_suite); + return ipsec_suite_term(); }
int ipsec_init(odp_instance_t *inst)
commit a1678f04d5c3af8f3c540a4c70f6ea726295ea7a Author: Petri Savolainen petri.savolainen@nokia.com Date: Thu Oct 10 12:35:01 2019 +0300
validation: comp: remove suite terminate function
Suite terminate function is not needed anymore as the default terminate function prints all skipped tests.
Signed-off-by: Petri Savolainen petri.savolainen@nokia.com Reviewed-by: Matias Elo matias.elo@nokia.com
diff --git a/test/validation/api/comp/comp.c b/test/validation/api/comp/comp.c index 490d5577e..88a61da95 100644 --- a/test/validation/api/comp/comp.c +++ b/test/validation/api/comp/comp.c @@ -455,33 +455,15 @@ static odp_testinfo_t comp_suite[] = { ODP_TEST_INFO_NULL, };
-static int comp_suite_term(void) -{ - int i; - int first = 1; - - for (i = 0; comp_suite[i].name; i++) { - if (comp_suite[i].check_active && - comp_suite[i].check_active() == ODP_TEST_INACTIVE) { - if (first) { - first = 0; - printf("\n\n Inactive tests:\n"); - } - printf(" %s\n", comp_suite[i].name); - } - } - return 0; -} - /* Suite names */ #define ODP_COMP_SYNC_TEST "Comp/decomp sync test" #define ODP_COMP_ASYNC_TEST "Comp/decomp async test"
static odp_suiteinfo_t comp_suites[] = { {ODP_COMP_SYNC_TEST, comp_suite_sync_init, - comp_suite_term, comp_suite}, + NULL, comp_suite}, {ODP_COMP_ASYNC_TEST, comp_suite_async_init, - comp_suite_term, comp_suite}, + NULL, comp_suite}, ODP_SUITE_INFO_NULL, };
commit cf5c4d8ffab08baac185ab8d08d56201b33be198 Author: Petri Savolainen petri.savolainen@nokia.com Date: Thu Oct 10 12:31:57 2019 +0300
validation: crypto: remove suite terminate function
Suite terminate function is not needed anymore as the default terminate function prints all skipped tests.
Signed-off-by: Petri Savolainen petri.savolainen@nokia.com Reviewed-by: Matias Elo matias.elo@nokia.com
diff --git a/test/validation/api/crypto/odp_crypto_test_inp.c b/test/validation/api/crypto/odp_crypto_test_inp.c index f0aa366cb..1710c23e2 100644 --- a/test/validation/api/crypto/odp_crypto_test_inp.c +++ b/test/validation/api/crypto/odp_crypto_test_inp.c @@ -2664,24 +2664,6 @@ odp_testinfo_t crypto_suite[] = { ODP_TEST_INFO_NULL, };
-static int crypto_suite_term(void) -{ - int i; - int first = 1; - - for (i = 0; crypto_suite[i].name; i++) { - if (crypto_suite[i].check_active && - crypto_suite[i].check_active() == ODP_TEST_INACTIVE) { - if (first) { - first = 0; - printf("\n\n Inactive tests:\n"); - } - printf(" %s\n", crypto_suite[i].name); - } - } - return 0; -} - /* Suite names */ #define ODP_CRYPTO_SYNC_INP "odp_crypto_sync_inp" #define ODP_CRYPTO_ASYNC_INP "odp_crypto_async_inp" @@ -2690,13 +2672,13 @@ static int crypto_suite_term(void)
odp_suiteinfo_t crypto_suites[] = { {ODP_CRYPTO_SYNC_INP, crypto_suite_sync_init, - crypto_suite_term, crypto_suite}, + NULL, crypto_suite}, {ODP_CRYPTO_ASYNC_INP, crypto_suite_async_init, - crypto_suite_term, crypto_suite}, + NULL, crypto_suite}, {ODP_CRYPTO_PACKET_SYNC_INP, crypto_suite_packet_sync_init, - crypto_suite_term, crypto_suite}, + NULL, crypto_suite}, {ODP_CRYPTO_PACKET_ASYNC_INP, crypto_suite_packet_async_init, - crypto_suite_term, crypto_suite}, + NULL, crypto_suite}, ODP_SUITE_INFO_NULL, };
commit 5b540ecaf9a6ed3f9730c605367afd6fc7cc8d1d Author: Petri Savolainen petri.savolainen@nokia.com Date: Thu Oct 10 12:18:08 2019 +0300
validation: print names of inactive tests
Print inactive tests by default on suite terminate. Use ODP_TEST_INFO_CONDITIONAL and a test case check function to mark a test active or inactive. By default, all tests are active.
Signed-off-by: Petri Savolainen petri.savolainen@nokia.com Reviewed-by: Matias Elo matias.elo@nokia.com
diff --git a/test/common/odp_cunit_common.c b/test/common/odp_cunit_common.c index f6e7a0490..25895d628 100644 --- a/test/common/odp_cunit_common.c +++ b/test/common/odp_cunit_common.c @@ -1,4 +1,5 @@ /* Copyright (c) 2014-2018, Linaro Limited + * Copyright (c) 2019, Nokia * All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause @@ -226,6 +227,52 @@ static int _cunit_suite_init(void) return ret; }
+/* Print names of all inactive tests of the suite. This should be called by + * every suite terminate function. Otherwise, inactive tests are not listed in + * test suite results. */ +int odp_cunit_print_inactive(void) +{ + CU_pSuite cur_suite; + CU_pTest ptest; + odp_suiteinfo_t *sinfo; + odp_testinfo_t *tinfo; + int first = 1; + + cur_suite = CU_get_current_suite(); + if (cur_suite == NULL) + return -1; + + sinfo = cunit_get_suite_info(cur_suite->pName); + if (sinfo == NULL) + return -1; + + for (tinfo = sinfo->testinfo_tbl; tinfo->name; tinfo++) { + ptest = CU_get_test_by_name(tinfo->name, cur_suite); + if (ptest == NULL) { + fprintf(stderr, "%s: test not found: %s\n", + __func__, tinfo->name); + return -1; + } + + if (ptest->fActive) + continue; + + if (first) { + printf("\n\n Inactive tests:\n"); + first = 0; + } + + printf(" %s\n", tinfo->name); + } + + return 0; +} + +static int default_term_func(void) +{ + return odp_cunit_print_inactive(); +} + /* * Register suites and tests with CUnit. * @@ -238,10 +285,14 @@ static int cunit_register_suites(odp_suiteinfo_t testsuites[]) odp_testinfo_t *tinfo; CU_pSuite suite; CU_pTest test; + CU_CleanupFunc term_func;
for (sinfo = testsuites; sinfo->name; sinfo++) { - suite = CU_add_suite(sinfo->name, - _cunit_suite_init, sinfo->term_func); + term_func = default_term_func; + if (sinfo->term_func) + term_func = sinfo->term_func; + + suite = CU_add_suite(sinfo->name, _cunit_suite_init, term_func); if (!suite) return CU_get_error();
diff --git a/test/common/odp_cunit_common.h b/test/common/odp_cunit_common.h index 52a8c1891..e8f14daa6 100644 --- a/test/common/odp_cunit_common.h +++ b/test/common/odp_cunit_common.h @@ -103,5 +103,6 @@ void odp_cunit_register_global_init(int (*func_init_ptr)(odp_instance_t *inst)); void odp_cunit_register_global_term(int (*func_term_ptr)(odp_instance_t inst));
int odp_cunit_ret(int val); +int odp_cunit_print_inactive(void);
#endif /* ODP_CUNICT_COMMON_H */
commit 03c9d6d7ef29470067c2caef41c891b15a4d887d Author: Petri Savolainen petri.savolainen@nokia.com Date: Wed Oct 9 15:51:20 2019 +0300
validation: cls: add ipv4 source address test
Add test case for ODP_PMR_SIP_ADDR term.
Signed-off-by: Petri Savolainen petri.savolainen@nokia.com Reviewed-by: Matias Elo matias.elo@nokia.com
diff --git a/test/validation/api/classification/odp_classification_test_pmr.c b/test/validation/api/classification/odp_classification_test_pmr.c index bdf9ccf45..474c62dcf 100644 --- a/test/validation/api/classification/odp_classification_test_pmr.c +++ b/test/validation/api/classification/odp_classification_test_pmr.c @@ -1,4 +1,5 @@ /* Copyright (c) 2015-2018, Linaro Limited + * Copyright (c) 2019, Nokia * All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause @@ -1669,7 +1670,7 @@ static void classification_test_pmr_queue_set(void) odp_pktio_close(pktio); }
-static void classification_test_pmr_term_daddr(void) +static void test_pmr_term_ipv4_addr(int dst) { odp_packet_t pkt; uint32_t seqno; @@ -1683,13 +1684,14 @@ static void classification_test_pmr_term_daddr(void) odp_pmr_t pmr; odp_cos_t cos; odp_cos_t default_cos; - uint32_t addr; - uint32_t mask; + uint32_t dst_addr, src_addr; + uint32_t dst_mask, src_mask; char cosname[ODP_QUEUE_NAME_LEN]; odp_pmr_param_t pmr_param; odp_cls_cos_param_t cls_param; odph_ipv4hdr_t *ip; - const char *dst_addr = "10.0.0.99/32"; + const char *src_str = "10.0.0.88/32"; + const char *dst_str = "10.0.0.99/32"; odph_ethhdr_t *eth;
pktio = create_pktio(ODP_QUEUE_TYPE_SCHED, pkt_pool, true); @@ -1699,13 +1701,13 @@ static void classification_test_pmr_term_daddr(void) configure_default_cos(pktio, &default_cos, &default_queue, &default_pool);
- queue = queue_create("daddr", true); + queue = queue_create("ipv4 addr", true); CU_ASSERT_FATAL(queue != ODP_QUEUE_INVALID);
- pool = pool_create("daddr"); + pool = pool_create("ipv4 addr"); CU_ASSERT_FATAL(pool != ODP_POOL_INVALID);
- sprintf(cosname, "daddr"); + sprintf(cosname, "ipv4 addr"); odp_cls_cos_param_init(&cls_param); cls_param.pool = pool; cls_param.queue = queue; @@ -1714,25 +1716,36 @@ static void classification_test_pmr_term_daddr(void) cos = odp_cls_cos_create(cosname, &cls_param); CU_ASSERT_FATAL(cos != ODP_COS_INVALID);
- parse_ipv4_string(dst_addr, &addr, &mask); + parse_ipv4_string(src_str, &src_addr, &src_mask); + parse_ipv4_string(dst_str, &dst_addr, &dst_mask); + odp_cls_pmr_param_init(&pmr_param); - pmr_param.term = ODP_PMR_DIP_ADDR; - pmr_param.match.value = &addr; - pmr_param.match.mask = &mask; - pmr_param.val_sz = sizeof(addr); + + if (dst) { + pmr_param.term = ODP_PMR_DIP_ADDR; + pmr_param.match.value = &dst_addr; + pmr_param.match.mask = &dst_mask; + pmr_param.val_sz = sizeof(dst_addr); + } else { + pmr_param.term = ODP_PMR_SIP_ADDR; + pmr_param.match.value = &src_addr; + pmr_param.match.mask = &src_mask; + pmr_param.val_sz = sizeof(src_addr); + }
pmr = odp_cls_pmr_create(&pmr_param, 1, default_cos, cos); CU_ASSERT_FATAL(pmr != ODP_PMR_INVALID);
- /* packet with dst ip address matching PMR rule to be - received in the CoS queue*/ + /* packet with IP address matching PMR rule to be + * received in the CoS queue */ pkt = create_packet(default_pkt_info); CU_ASSERT_FATAL(pkt != ODP_PACKET_INVALID); eth = (odph_ethhdr_t *)odp_packet_l2_ptr(pkt, NULL); odp_pktio_mac_addr(pktio, eth->src.addr, ODPH_ETHADDR_LEN); odp_pktio_mac_addr(pktio, eth->dst.addr, ODPH_ETHADDR_LEN); ip = (odph_ipv4hdr_t *)odp_packet_l3_ptr(pkt, NULL); - ip->dst_addr = odp_cpu_to_be_32(addr); + ip->src_addr = odp_cpu_to_be_32(src_addr); + ip->dst_addr = odp_cpu_to_be_32(dst_addr); odph_ipv4_csum_update(pkt);
seqno = cls_pkt_get_seq(pkt); @@ -1774,6 +1787,16 @@ static void classification_test_pmr_term_daddr(void) odp_pktio_close(pktio); }
+static void classification_test_pmr_term_ipv4_saddr(void) +{ + test_pmr_term_ipv4_addr(0); +} + +static void classification_test_pmr_term_ipv4_daddr(void) +{ + test_pmr_term_ipv4_addr(1); +} + static void classification_test_pmr_term_ipv6daddr(void) { odp_packet_t pkt; @@ -2015,7 +2038,8 @@ odp_testinfo_t classification_suite_pmr[] = { ODP_TEST_INFO(classification_test_pmr_term_dmac), ODP_TEST_INFO(classification_test_pmr_pool_set), ODP_TEST_INFO(classification_test_pmr_queue_set), - ODP_TEST_INFO(classification_test_pmr_term_daddr), + ODP_TEST_INFO(classification_test_pmr_term_ipv4_saddr), + ODP_TEST_INFO(classification_test_pmr_term_ipv4_daddr), ODP_TEST_INFO(classification_test_pmr_term_ipv6saddr), ODP_TEST_INFO(classification_test_pmr_term_ipv6daddr), ODP_TEST_INFO(classification_test_pmr_term_packet_len),
commit 5536a1d38ad4aa827074fab400e6078408725996 Author: Petri Savolainen petri.savolainen@nokia.com Date: Wed Oct 9 16:30:10 2019 +0300
linux-gen: cls: add line feeds to error reports
Add missing line feeds to ODP_ERR macro calls.
Signed-off-by: Petri Savolainen petri.savolainen@nokia.com Reviewed-by: Matias Elo matias.elo@nokia.com
diff --git a/platform/linux-generic/odp_classification.c b/platform/linux-generic/odp_classification.c index eda283f4e..24e35d2bc 100644 --- a/platform/linux-generic/odp_classification.c +++ b/platform/linux-generic/odp_classification.c @@ -121,7 +121,7 @@ int odp_classification_init_global(void) int odp_classification_term_global(void) { if (cls_global && odp_shm_free(cls_global->shm)) { - ODP_ERR("shm free failed"); + ODP_ERR("shm free failed\n"); return -1; }
@@ -260,7 +260,7 @@ odp_cos_t odp_cls_cos_create(const char *name, odp_cls_cos_param_t *param) UNLOCK(&cos->s.lock); }
- ODP_ERR("CLS_COS_MAX_ENTRY reached"); + ODP_ERR("CLS_COS_MAX_ENTRY reached\n"); return ODP_COS_INVALID; }
@@ -284,7 +284,7 @@ odp_pmr_t alloc_pmr(pmr_t **pmr) } UNLOCK(&pmr_tbl->pmr[i].s.lock); } - ODP_ERR("CLS_PMR_MAX_ENTRY reached"); + ODP_ERR("CLS_PMR_MAX_ENTRY reached\n"); return ODP_PMR_INVALID; }
@@ -318,7 +318,7 @@ int odp_cos_destroy(odp_cos_t cos_id) cos_t *cos = get_cos_entry(cos_id);
if (NULL == cos) { - ODP_ERR("Invalid odp_cos_t handle"); + ODP_ERR("Invalid odp_cos_t handle\n"); return -1; }
@@ -331,12 +331,12 @@ int odp_cos_queue_set(odp_cos_t cos_id, odp_queue_t queue_id) cos_t *cos = get_cos_entry(cos_id);
if (cos == NULL) { - ODP_ERR("Invalid odp_cos_t handle"); + ODP_ERR("Invalid odp_cos_t handle\n"); return -1; }
if (cos->s.num_queue != 1) { - ODP_ERR("Hashing enabled, cannot set queue"); + ODP_ERR("Hashing enabled, cannot set queue\n"); return -1; }
@@ -351,7 +351,7 @@ odp_queue_t odp_cos_queue(odp_cos_t cos_id) cos_t *cos = get_cos_entry(cos_id);
if (!cos) { - ODP_ERR("Invalid odp_cos_t handle"); + ODP_ERR("Invalid odp_cos_t handle\n"); return ODP_QUEUE_INVALID; }
@@ -363,7 +363,7 @@ uint32_t odp_cls_cos_num_queue(odp_cos_t cos_id) cos_t *cos = get_cos_entry(cos_id);
if (!cos) { - ODP_ERR("Invalid odp_cos_t handle"); + ODP_ERR("Invalid odp_cos_t handle\n"); return 0; }
@@ -380,7 +380,7 @@ uint32_t odp_cls_cos_queues(odp_cos_t cos_id, odp_queue_t queue[],
cos = get_cos_entry(cos_id); if (!cos) { - ODP_ERR("Invalid odp_cos_t handle"); + ODP_ERR("Invalid odp_cos_t handle\n"); return 0; }
@@ -409,7 +409,7 @@ int odp_cos_drop_set(odp_cos_t cos_id, odp_cls_drop_t drop_policy) cos_t *cos = get_cos_entry(cos_id);
if (!cos) { - ODP_ERR("Invalid odp_cos_t handle"); + ODP_ERR("Invalid odp_cos_t handle\n"); return -1; }
@@ -423,7 +423,7 @@ odp_cls_drop_t odp_cos_drop(odp_cos_t cos_id) cos_t *cos = get_cos_entry(cos_id);
if (!cos) { - ODP_ERR("Invalid odp_cos_t handle"); + ODP_ERR("Invalid odp_cos_t handle\n"); return -1; }
@@ -437,12 +437,12 @@ int odp_pktio_default_cos_set(odp_pktio_t pktio_in, odp_cos_t default_cos)
entry = get_pktio_entry(pktio_in); if (entry == NULL) { - ODP_ERR("Invalid odp_pktio_t handle"); + ODP_ERR("Invalid odp_pktio_t handle\n"); return -1; } cos = get_cos_entry(default_cos); if (cos == NULL) { - ODP_ERR("Invalid odp_cos_t handle"); + ODP_ERR("Invalid odp_cos_t handle\n"); return -1; }
@@ -457,13 +457,13 @@ int odp_pktio_error_cos_set(odp_pktio_t pktio_in, odp_cos_t error_cos)
entry = get_pktio_entry(pktio_in); if (entry == NULL) { - ODP_ERR("Invalid odp_pktio_t handle"); + ODP_ERR("Invalid odp_pktio_t handle\n"); return -1; }
cos = get_cos_entry(error_cos); if (cos == NULL) { - ODP_ERR("Invalid odp_cos_t handle"); + ODP_ERR("Invalid odp_cos_t handle\n"); return -1; }
@@ -489,7 +489,7 @@ int odp_pktio_headroom_set(odp_pktio_t pktio_in, uint32_t headroom) pktio_entry_t *entry = get_pktio_entry(pktio_in);
if (entry == NULL) { - ODP_ERR("Invalid odp_pktio_t handle"); + ODP_ERR("Invalid odp_pktio_t handle\n"); return -1; } entry->s.cls.headroom = headroom; @@ -507,7 +507,7 @@ int odp_cos_with_l2_priority(odp_pktio_t pktio_in, pktio_entry_t *entry = get_pktio_entry(pktio_in);
if (entry == NULL) { - ODP_ERR("Invalid odp_pktio_t handle"); + ODP_ERR("Invalid odp_pktio_t handle\n"); return -1; } l2_cos = &entry->s.cls.l2_cos_table; @@ -537,7 +537,7 @@ int odp_cos_with_l3_qos(odp_pktio_t pktio_in, cos_t *cos;
if (entry == NULL) { - ODP_ERR("Invalid odp_pktio_t handle"); + ODP_ERR("Invalid odp_pktio_t handle\n"); return -1; }
@@ -655,7 +655,7 @@ odp_pmr_t odp_cls_pmr_create(const odp_pmr_param_t *terms, int num_terms, }
if (num_terms > CLS_PMRTERM_MAX) { - ODP_ERR("no of terms greater than supported CLS_PMRTERM_MAX"); + ODP_ERR("no of terms greater than supported CLS_PMRTERM_MAX\n"); return ODP_PMR_INVALID; }
@@ -696,7 +696,7 @@ int odp_cls_cos_pool_set(odp_cos_t cos_id, odp_pool_t pool)
cos = get_cos_entry(cos_id); if (cos == NULL) { - ODP_ERR("Invalid odp_cos_t handle"); + ODP_ERR("Invalid odp_cos_t handle\n"); return -1; }
@@ -711,7 +711,7 @@ odp_pool_t odp_cls_cos_pool(odp_cos_t cos_id)
cos = get_cos_entry(cos_id); if (cos == NULL) { - ODP_ERR("Invalid odp_cos_t handle"); + ODP_ERR("Invalid odp_cos_t handle\n"); return ODP_POOL_INVALID; }
commit 774bd2784cb90c1d059c6dd35611a7e7adf149b9 Author: Petri Savolainen petri.savolainen@nokia.com Date: Wed Oct 9 16:22:39 2019 +0300
linux-gen: cls: correct error message text
Message text had a wrong error reported.
Signed-off-by: Petri Savolainen petri.savolainen@nokia.com Reviewed-by: Matias Elo matias.elo@nokia.com
diff --git a/platform/linux-generic/odp_classification.c b/platform/linux-generic/odp_classification.c index ec4d2dc2f..eda283f4e 100644 --- a/platform/linux-generic/odp_classification.c +++ b/platform/linux-generic/odp_classification.c @@ -476,7 +476,7 @@ int odp_pktio_skip_set(odp_pktio_t pktio_in, uint32_t offset) pktio_entry_t *entry = get_pktio_entry(pktio_in);
if (entry == NULL) { - ODP_ERR("Invalid odp_cos_t handle"); + ODP_ERR("Invalid odp_pktio_t handle\n"); return -1; }
@@ -650,7 +650,7 @@ odp_pmr_t odp_cls_pmr_create(const odp_pmr_param_t *terms, int num_terms, cos_t *cos_dst = get_cos_entry(dst_cos);
if (NULL == cos_src || NULL == cos_dst) { - ODP_ERR("Invalid input handle"); + ODP_ERR("Invalid odp_cos_t handle\n"); return ODP_PMR_INVALID; }
commit 51563bcb4d1d3cf84e8e4832626eed25363b89dd Author: Petri Savolainen petri.savolainen@nokia.com Date: Mon Oct 7 17:16:00 2019 +0300
linux-gen: cls: switch-case missing default
Add missing default case to the PMR term switch-case.
Signed-off-by: Petri Savolainen petri.savolainen@nokia.com Reviewed-by: Matias Elo matias.elo@nokia.com
diff --git a/platform/linux-generic/odp_classification.c b/platform/linux-generic/odp_classification.c index 9bf104e3b..ec4d2dc2f 100644 --- a/platform/linux-generic/odp_classification.c +++ b/platform/linux-generic/odp_classification.c @@ -832,6 +832,9 @@ int verify_pmr(pmr_t *pmr, const uint8_t *pkt_addr, odp_packet_hdr_t *pkt_hdr) break; case ODP_PMR_INNER_HDR_OFF: break; + default: + pmr_failure = 1; + break; }
if (pmr_failure)
-----------------------------------------------------------------------
Summary of changes: platform/linux-generic/odp_classification.c | 58 ++++--- test/common/odp_cunit_common.c | 55 +++++- test/common/odp_cunit_common.h | 1 + .../classification/odp_classification_test_pmr.c | 189 +++++++++++++++++---- .../api/classification/odp_classification_tests.c | 3 + test/validation/api/comp/comp.c | 22 +-- test/validation/api/crypto/odp_crypto_test_inp.c | 26 +-- test/validation/api/ipsec/ipsec.c | 21 +-- test/validation/api/pktio/parser.c | 3 + test/validation/api/pktio/pktio.c | 3 + test/validation/api/scheduler/scheduler.c | 3 + test/validation/api/traffic_mngr/traffic_mngr.c | 3 + 12 files changed, 272 insertions(+), 115 deletions(-)
hooks/post-receive