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