Modifications for packet match rule create function.

Signed-off-by: Balasubramanian Manoharan <bala.manoha...@linaro.org>
---
 example/classifier/odp_classifier.c | 38 ++++++++++++++++++++-----------------
 1 file changed, 21 insertions(+), 17 deletions(-)

diff --git a/example/classifier/odp_classifier.c 
b/example/classifier/odp_classifier.c
index 5a8cd37..44d84af 100644
--- a/example/classifier/odp_classifier.c
+++ b/example/classifier/odp_classifier.c
@@ -87,8 +87,8 @@ static void swap_pkt_addrs(odp_packet_t pkt_tbl[], unsigned 
len);
 static void parse_args(int argc, char *argv[], appl_args_t *appl_args);
 static void print_info(char *progname, appl_args_t *appl_args);
 static void usage(char *progname);
-static void configure_cos(odp_pktio_t pktio, appl_args_t *args);
-static void configure_default_cos(odp_pktio_t pktio, appl_args_t *args);
+static void configure_cos(odp_cos_t default_cos, appl_args_t *args);
+static odp_cos_t configure_default_cos(odp_pktio_t pktio, appl_args_t *args);
 static int convert_str_to_pmr_enum(char *token, odp_pmr_term_t *term,
                                   uint32_t *offset);
 static int parse_pmr_policy(appl_args_t *appl_args, char *argv[], char 
*optarg);
@@ -354,7 +354,7 @@ static void *pktio_receive_thread(void *arg)
        return NULL;
 }
 
-static void configure_default_cos(odp_pktio_t pktio, appl_args_t *args)
+static odp_cos_t configure_default_cos(odp_pktio_t pktio, appl_args_t *args)
 {
        odp_queue_param_t qparam;
        const char *queue_name = "DefaultQueue";
@@ -416,9 +416,10 @@ static void configure_default_cos(odp_pktio_t pktio, 
appl_args_t *args)
        odp_atomic_init_u64(&stats[args->policy_count].queue_pkt_count, 0);
        odp_atomic_init_u64(&stats[args->policy_count].pool_pkt_count, 0);
        args->policy_count++;
+       return cos_default;
 }
 
-static void configure_cos(odp_pktio_t pktio, appl_args_t *args)
+static void configure_cos(odp_cos_t default_cos, appl_args_t *args)
 {
        char cos_name[ODP_COS_NAME_LEN];
        char queue_name[ODP_QUEUE_NAME_LEN];
@@ -432,15 +433,6 @@ static void configure_cos(odp_pktio_t pktio, appl_args_t 
*args)
        for (i = 0; i < args->policy_count; i++) {
                stats = &args->stats[i];
 
-               const odp_pmr_match_t match = {
-                       .term = stats->rule.term,
-                       .val = &stats->rule.val,
-                       .mask = &stats->rule.mask,
-                       .val_sz = stats->rule.val_sz,
-                       .offset = stats->rule.offset
-               };
-
-               stats->pmr = odp_pmr_create(&match);
                odp_queue_param_init(&qparam);
                qparam.sched.prio = i % odp_schedule_num_prio();
                qparam.sched.sync = ODP_SCHED_SYNC_NONE;
@@ -480,7 +472,17 @@ static void configure_cos(odp_pktio_t pktio, appl_args_t 
*args)
                cls_param.drop_policy = ODP_COS_DROP_POOL;
                stats->cos = odp_cls_cos_create(cos_name, &cls_param);
 
-               if (0 > odp_pktio_pmr_cos(stats->pmr, pktio, stats->cos)) {
+               const odp_pmr_match_t match = {
+                       .term = stats->rule.term,
+                       .val = &stats->rule.val,
+                       .mask = &stats->rule.mask,
+                       .val_sz = stats->rule.val_sz,
+                       .offset = stats->rule.offset
+               };
+
+               stats->pmr = odp_cls_pmr_create(&match, default_cos,
+                                               stats->cos);
+               if (stats->pmr == ODP_PMR_INVAL) {
                        EXAMPLE_ERR("odp_pktio_pmr_cos failed");
                        exit(EXIT_FAILURE);
                }
@@ -505,6 +507,7 @@ int main(int argc, char *argv[])
        odp_pool_param_t params;
        odp_pktio_t pktio;
        appl_args_t *args;
+       odp_cos_t default_cos;
        odp_queue_t inq;
        odp_shm_t shm;
 
@@ -576,10 +579,10 @@ int main(int argc, char *argv[])
        /* create pktio per interface */
        pktio = create_pktio(args->if_name, pool);
 
-       configure_cos(pktio, args);
-
        /* configure default Cos */
-       configure_default_cos(pktio, args);
+       default_cos = configure_default_cos(pktio, args);
+
+       configure_cos(default_cos, args);
 
        if (odp_pktio_start(pktio)) {
                EXAMPLE_ERR("Error: unable to start pktio.\n");
@@ -606,6 +609,7 @@ int main(int argc, char *argv[])
        print_cls_statistics(args);
 
        for (i = 0; i < args->policy_count; i++) {
+               odp_cls_pmr_destroy(args->stats[i].pmr);
                odp_cos_destroy(args->stats[i].cos);
                odp_pool_destroy(args->stats[i].pool);
                odp_queue_destroy(args->stats[i].queue);
-- 
1.9.1

_______________________________________________
lng-odp mailing list
lng-odp@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to