[dpdk-dev] RTE_PIPELINE_ACTION_PORT_META doesn't work properly

Ильдар Мустафин imustafin at bk.ru
Fri Feb 20 17:25:05 CET 2015


 Hi, list!

RTE_PIPELINE_ACTION_PORT_META option in rte_pipeline library doesn't work for non-default table entries. Is this bug or correct behaviour?

This is my patch, that changes this behaviour:

--- a/lib/librte_pipeline/rte_pipeline.c
+++ b/lib/librte_pipeline/rte_pipeline.c
@@ -999,8 +999,10 @@ rte_pipeline_compute_masks(struct rte_pipeline *p, uint64_t pkts_mask)
 {
        p->action_mask1[RTE_PIPELINE_ACTION_DROP] = 0;
        p->action_mask1[RTE_PIPELINE_ACTION_PORT] = 0;
+    p->action_mask1[RTE_PIPELINE_ACTION_PORT_META] = 0;
        p->action_mask1[RTE_PIPELINE_ACTION_TABLE] = 0;
 
+
        if ((pkts_mask & (pkts_mask + 1)) == 0) {
                uint64_t n_pkts = __builtin_popcountll(pkts_mask);
                uint32_t i;
@@ -1224,6 +1226,7 @@ rte_pipeline_run(struct rte_pipeline *p)
                pkts_mask = RTE_LEN2MASK(n_pkts, uint64_t);
                p->action_mask0[RTE_PIPELINE_ACTION_DROP] = 0;
                p->action_mask0[RTE_PIPELINE_ACTION_PORT] = 0;
+        p->action_mask0[RTE_PIPELINE_ACTION_PORT_META] = 0;
                p->action_mask0[RTE_PIPELINE_ACTION_TABLE] = 0;
 
                /* Input port user actions */
@@ -1300,6 +1303,9 @@ rte_pipeline_run(struct rte_pipeline *p)
                                p->action_mask0[RTE_PIPELINE_ACTION_PORT] |=
                                        p->action_mask1[
                                                RTE_PIPELINE_ACTION_PORT];
+                p->action_mask0[RTE_PIPELINE_ACTION_PORT_META] |=
+                    p->action_mask1[
+                        RTE_PIPELINE_ACTION_PORT_META];
                                p->action_mask0[RTE_PIPELINE_ACTION_TABLE] |=
                                        p->action_mask1[
                                                RTE_PIPELINE_ACTION_TABLE];





Thanks, Ildar



More information about the dev mailing list