[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