From: Jasvinder Singh <jasvinder.singh@intel.com>
To: dev@dpdk.org
Cc: cristian.dumitrescu@intel.com
Subject: [dpdk-dev] [PATCH v2 10/44] ip_pipeline: remove passthrough pipeline
Date: Mon, 12 Mar 2018 17:25:41 +0000 [thread overview]
Message-ID: <20180312172615.6621-11-jasvinder.singh@intel.com> (raw)
In-Reply-To: <20180312172615.6621-1-jasvinder.singh@intel.com>
remove passthrough pipeline.
Signed-off-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
Signed-off-by: Jasvinder Singh <jasvinder.singh@intel.com>
---
examples/ip_pipeline/Makefile | 2 -
examples/ip_pipeline/init.c | 2 -
examples/ip_pipeline/meson.build | 2 -
.../ip_pipeline/pipeline/pipeline_passthrough.c | 45 -
.../ip_pipeline/pipeline/pipeline_passthrough.h | 12 -
.../ip_pipeline/pipeline/pipeline_passthrough_be.c | 929 ---------------------
.../ip_pipeline/pipeline/pipeline_passthrough_be.h | 44 -
7 files changed, 1036 deletions(-)
delete mode 100644 examples/ip_pipeline/pipeline/pipeline_passthrough.c
delete mode 100644 examples/ip_pipeline/pipeline/pipeline_passthrough.h
delete mode 100644 examples/ip_pipeline/pipeline/pipeline_passthrough_be.c
delete mode 100644 examples/ip_pipeline/pipeline/pipeline_passthrough_be.h
diff --git a/examples/ip_pipeline/Makefile b/examples/ip_pipeline/Makefile
index 85fbbaf..089c269 100644
--- a/examples/ip_pipeline/Makefile
+++ b/examples/ip_pipeline/Makefile
@@ -19,8 +19,6 @@ SRCS-y += pipeline_common_be.c
SRCS-y += pipeline_common_fe.c
SRCS-y += pipeline_master_be.c
SRCS-y += pipeline_master.c
-SRCS-y += pipeline_passthrough_be.c
-SRCS-y += pipeline_passthrough.c
SRCS-y += pipeline_firewall_be.c
SRCS-y += pipeline_firewall.c
SRCS-y += pipeline_flow_classification_be.c
diff --git a/examples/ip_pipeline/init.c b/examples/ip_pipeline/init.c
index bb07efa..73b93d7 100644
--- a/examples/ip_pipeline/init.c
+++ b/examples/ip_pipeline/init.c
@@ -26,7 +26,6 @@
#include "pipeline.h"
#include "pipeline_common_fe.h"
#include "pipeline_master.h"
-#include "pipeline_passthrough.h"
#include "pipeline_firewall.h"
#include "pipeline_flow_classification.h"
#include "pipeline_flow_actions.h"
@@ -1822,7 +1821,6 @@ int app_init(struct app_params *app)
app_pipeline_common_cmd_push(app);
app_pipeline_thread_cmd_push(app);
app_pipeline_type_register(app, &pipeline_master);
- app_pipeline_type_register(app, &pipeline_passthrough);
app_pipeline_type_register(app, &pipeline_flow_classification);
app_pipeline_type_register(app, &pipeline_flow_actions);
app_pipeline_type_register(app, &pipeline_firewall);
diff --git a/examples/ip_pipeline/meson.build b/examples/ip_pipeline/meson.build
index 748c9ae..db80078 100644
--- a/examples/ip_pipeline/meson.build
+++ b/examples/ip_pipeline/meson.build
@@ -28,8 +28,6 @@ sources = files(
'pipeline/pipeline_flow_classification.c',
'pipeline/pipeline_master_be.c',
'pipeline/pipeline_master.c',
- 'pipeline/pipeline_passthrough_be.c',
- 'pipeline/pipeline_passthrough.c',
'pipeline/pipeline_routing_be.c',
'pipeline/pipeline_routing.c',
)
diff --git a/examples/ip_pipeline/pipeline/pipeline_passthrough.c b/examples/ip_pipeline/pipeline/pipeline_passthrough.c
deleted file mode 100644
index 031f5f0..0000000
--- a/examples/ip_pipeline/pipeline/pipeline_passthrough.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2010-2015 Intel Corporation
- */
-
-#include "pipeline_passthrough.h"
-#include "pipeline_passthrough_be.h"
-
-static int
-app_pipeline_passthrough_track(struct pipeline_params *p,
- uint32_t port_in,
- uint32_t *port_out)
-{
- struct pipeline_passthrough_params pp;
- int status;
-
- /* Check input arguments */
- if ((p == NULL) ||
- (port_in >= p->n_ports_in) ||
- (port_out == NULL))
- return -1;
-
- status = pipeline_passthrough_parse_args(&pp, p);
- if (status)
- return -1;
-
- if (pp.dma_hash_lb_enabled)
- return -1;
-
- *port_out = port_in / (p->n_ports_in / p->n_ports_out);
- return 0;
-}
-
-static struct pipeline_fe_ops pipeline_passthrough_fe_ops = {
- .f_init = NULL,
- .f_post_init = NULL,
- .f_free = NULL,
- .f_track = app_pipeline_passthrough_track,
- .cmds = NULL,
-};
-
-struct pipeline_type pipeline_passthrough = {
- .name = "PASS-THROUGH",
- .be_ops = &pipeline_passthrough_be_ops,
- .fe_ops = &pipeline_passthrough_fe_ops,
-};
diff --git a/examples/ip_pipeline/pipeline/pipeline_passthrough.h b/examples/ip_pipeline/pipeline/pipeline_passthrough.h
deleted file mode 100644
index 7a7a2fc..0000000
--- a/examples/ip_pipeline/pipeline/pipeline_passthrough.h
+++ /dev/null
@@ -1,12 +0,0 @@
-/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2010-2015 Intel Corporation
- */
-
-#ifndef __INCLUDE_PIPELINE_PASSTHROUGH_H__
-#define __INCLUDE_PIPELINE_PASSTHROUGH_H__
-
-#include "pipeline.h"
-
-extern struct pipeline_type pipeline_passthrough;
-
-#endif
diff --git a/examples/ip_pipeline/pipeline/pipeline_passthrough_be.c b/examples/ip_pipeline/pipeline/pipeline_passthrough_be.c
deleted file mode 100644
index b2bbaed..0000000
--- a/examples/ip_pipeline/pipeline/pipeline_passthrough_be.c
+++ /dev/null
@@ -1,929 +0,0 @@
-/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2010-2016 Intel Corporation
- */
-
-#include <stdio.h>
-#include <string.h>
-
-#include <rte_common.h>
-#include <rte_malloc.h>
-#include <rte_byteorder.h>
-#include <rte_table_stub.h>
-#include <rte_table_hash.h>
-#include <rte_pipeline.h>
-
-#include "pipeline_passthrough_be.h"
-#include "pipeline_actions_common.h"
-#include "parser.h"
-#include "hash_func.h"
-
-#define SWAP_DIM (PIPELINE_PASSTHROUGH_SWAP_N_FIELDS_MAX * \
- (PIPELINE_PASSTHROUGH_SWAP_FIELD_SIZE_MAX / sizeof(uint64_t)))
-
-struct pipeline_passthrough {
- struct pipeline p;
- struct pipeline_passthrough_params params;
- rte_table_hash_op_hash f_hash;
- uint32_t swap_field0_offset[SWAP_DIM];
- uint32_t swap_field1_offset[SWAP_DIM];
- uint64_t swap_field_mask[SWAP_DIM];
- uint32_t swap_n_fields;
-} __rte_cache_aligned;
-
-static pipeline_msg_req_handler handlers[] = {
- [PIPELINE_MSG_REQ_PING] =
- pipeline_msg_req_ping_handler,
- [PIPELINE_MSG_REQ_STATS_PORT_IN] =
- pipeline_msg_req_stats_port_in_handler,
- [PIPELINE_MSG_REQ_STATS_PORT_OUT] =
- pipeline_msg_req_stats_port_out_handler,
- [PIPELINE_MSG_REQ_STATS_TABLE] =
- pipeline_msg_req_stats_table_handler,
- [PIPELINE_MSG_REQ_PORT_IN_ENABLE] =
- pipeline_msg_req_port_in_enable_handler,
- [PIPELINE_MSG_REQ_PORT_IN_DISABLE] =
- pipeline_msg_req_port_in_disable_handler,
- [PIPELINE_MSG_REQ_CUSTOM] =
- pipeline_msg_req_invalid_handler,
-};
-
-static __rte_always_inline void
-pkt_work_dma(
- struct rte_mbuf *pkt,
- void *arg,
- uint32_t dma_size,
- uint32_t hash_enabled,
- uint32_t lb_hash,
- uint32_t port_out_pow2)
-{
- struct pipeline_passthrough *p = arg;
-
- uint64_t *dma_dst = RTE_MBUF_METADATA_UINT64_PTR(pkt,
- p->params.dma_dst_offset);
- uint64_t *dma_src = RTE_MBUF_METADATA_UINT64_PTR(pkt,
- p->params.dma_src_offset);
- uint64_t *dma_mask = (uint64_t *) p->params.dma_src_mask;
- uint32_t *dma_hash = RTE_MBUF_METADATA_UINT32_PTR(pkt,
- p->params.dma_hash_offset);
- uint32_t i;
-
- /* Read (dma_src), compute (dma_dst), write (dma_dst) */
- for (i = 0; i < (dma_size / 8); i++)
- dma_dst[i] = dma_src[i] & dma_mask[i];
-
- /* Read (dma_dst), compute (hash), write (hash) */
- if (hash_enabled) {
- uint32_t hash = p->f_hash(dma_src, dma_mask, dma_size, 0);
- *dma_hash = hash;
-
- if (lb_hash) {
- uint32_t port_out;
-
- if (port_out_pow2)
- port_out
- = hash & (p->p.n_ports_out - 1);
- else
- port_out
- = hash % p->p.n_ports_out;
-
- rte_pipeline_port_out_packet_insert(p->p.p,
- port_out, pkt);
- }
- }
-}
-
-static __rte_always_inline void
-pkt4_work_dma(
- struct rte_mbuf **pkts,
- void *arg,
- uint32_t dma_size,
- uint32_t hash_enabled,
- uint32_t lb_hash,
- uint32_t port_out_pow2)
-{
- struct pipeline_passthrough *p = arg;
-
- uint64_t *dma_dst0 = RTE_MBUF_METADATA_UINT64_PTR(pkts[0],
- p->params.dma_dst_offset);
- uint64_t *dma_dst1 = RTE_MBUF_METADATA_UINT64_PTR(pkts[1],
- p->params.dma_dst_offset);
- uint64_t *dma_dst2 = RTE_MBUF_METADATA_UINT64_PTR(pkts[2],
- p->params.dma_dst_offset);
- uint64_t *dma_dst3 = RTE_MBUF_METADATA_UINT64_PTR(pkts[3],
- p->params.dma_dst_offset);
-
- uint64_t *dma_src0 = RTE_MBUF_METADATA_UINT64_PTR(pkts[0],
- p->params.dma_src_offset);
- uint64_t *dma_src1 = RTE_MBUF_METADATA_UINT64_PTR(pkts[1],
- p->params.dma_src_offset);
- uint64_t *dma_src2 = RTE_MBUF_METADATA_UINT64_PTR(pkts[2],
- p->params.dma_src_offset);
- uint64_t *dma_src3 = RTE_MBUF_METADATA_UINT64_PTR(pkts[3],
- p->params.dma_src_offset);
-
- uint64_t *dma_mask = (uint64_t *) p->params.dma_src_mask;
-
- uint32_t *dma_hash0 = RTE_MBUF_METADATA_UINT32_PTR(pkts[0],
- p->params.dma_hash_offset);
- uint32_t *dma_hash1 = RTE_MBUF_METADATA_UINT32_PTR(pkts[1],
- p->params.dma_hash_offset);
- uint32_t *dma_hash2 = RTE_MBUF_METADATA_UINT32_PTR(pkts[2],
- p->params.dma_hash_offset);
- uint32_t *dma_hash3 = RTE_MBUF_METADATA_UINT32_PTR(pkts[3],
- p->params.dma_hash_offset);
-
- uint32_t i;
-
- /* Read (dma_src), compute (dma_dst), write (dma_dst) */
- for (i = 0; i < (dma_size / 8); i++) {
- dma_dst0[i] = dma_src0[i] & dma_mask[i];
- dma_dst1[i] = dma_src1[i] & dma_mask[i];
- dma_dst2[i] = dma_src2[i] & dma_mask[i];
- dma_dst3[i] = dma_src3[i] & dma_mask[i];
- }
-
- /* Read (dma_dst), compute (hash), write (hash) */
- if (hash_enabled) {
- uint32_t hash0 = p->f_hash(dma_src0, dma_mask, dma_size, 0);
- uint32_t hash1 = p->f_hash(dma_src1, dma_mask, dma_size, 0);
- uint32_t hash2 = p->f_hash(dma_src2, dma_mask, dma_size, 0);
- uint32_t hash3 = p->f_hash(dma_src3, dma_mask, dma_size, 0);
-
- *dma_hash0 = hash0;
- *dma_hash1 = hash1;
- *dma_hash2 = hash2;
- *dma_hash3 = hash3;
-
- if (lb_hash) {
- uint32_t port_out0, port_out1, port_out2, port_out3;
-
- if (port_out_pow2) {
- port_out0
- = hash0 & (p->p.n_ports_out - 1);
- port_out1
- = hash1 & (p->p.n_ports_out - 1);
- port_out2
- = hash2 & (p->p.n_ports_out - 1);
- port_out3
- = hash3 & (p->p.n_ports_out - 1);
- } else {
- port_out0
- = hash0 % p->p.n_ports_out;
- port_out1
- = hash1 % p->p.n_ports_out;
- port_out2
- = hash2 % p->p.n_ports_out;
- port_out3
- = hash3 % p->p.n_ports_out;
- }
- rte_pipeline_port_out_packet_insert(p->p.p,
- port_out0, pkts[0]);
- rte_pipeline_port_out_packet_insert(p->p.p,
- port_out1, pkts[1]);
- rte_pipeline_port_out_packet_insert(p->p.p,
- port_out2, pkts[2]);
- rte_pipeline_port_out_packet_insert(p->p.p,
- port_out3, pkts[3]);
- }
- }
-}
-
-static __rte_always_inline void
-pkt_work_swap(
- struct rte_mbuf *pkt,
- void *arg)
-{
- struct pipeline_passthrough *p = arg;
- uint32_t i;
-
- /* Read(field0, field1), compute(field0, field1), write(field0, field1) */
- for (i = 0; i < p->swap_n_fields; i++) {
- uint64_t *field0_ptr = RTE_MBUF_METADATA_UINT64_PTR(pkt,
- p->swap_field0_offset[i]);
- uint64_t *field1_ptr = RTE_MBUF_METADATA_UINT64_PTR(pkt,
- p->swap_field1_offset[i]);
- uint64_t mask = p->swap_field_mask[i];
-
- uint64_t field0 = *field0_ptr;
- uint64_t field1 = *field1_ptr;
-
- *field0_ptr = (field0 & (~mask)) + (field1 & mask);
- *field1_ptr = (field0 & mask) + (field1 & (~mask));
- }
-}
-
-static __rte_always_inline void
-pkt4_work_swap(
- struct rte_mbuf **pkts,
- void *arg)
-{
- struct pipeline_passthrough *p = arg;
- uint32_t i;
-
- /* Read(field0, field1), compute(field0, field1), write(field0, field1) */
- for (i = 0; i < p->swap_n_fields; i++) {
- uint64_t *pkt0_field0_ptr = RTE_MBUF_METADATA_UINT64_PTR(pkts[0],
- p->swap_field0_offset[i]);
- uint64_t *pkt1_field0_ptr = RTE_MBUF_METADATA_UINT64_PTR(pkts[1],
- p->swap_field0_offset[i]);
- uint64_t *pkt2_field0_ptr = RTE_MBUF_METADATA_UINT64_PTR(pkts[2],
- p->swap_field0_offset[i]);
- uint64_t *pkt3_field0_ptr = RTE_MBUF_METADATA_UINT64_PTR(pkts[3],
- p->swap_field0_offset[i]);
-
- uint64_t *pkt0_field1_ptr = RTE_MBUF_METADATA_UINT64_PTR(pkts[0],
- p->swap_field1_offset[i]);
- uint64_t *pkt1_field1_ptr = RTE_MBUF_METADATA_UINT64_PTR(pkts[1],
- p->swap_field1_offset[i]);
- uint64_t *pkt2_field1_ptr = RTE_MBUF_METADATA_UINT64_PTR(pkts[2],
- p->swap_field1_offset[i]);
- uint64_t *pkt3_field1_ptr = RTE_MBUF_METADATA_UINT64_PTR(pkts[3],
- p->swap_field1_offset[i]);
-
- uint64_t mask = p->swap_field_mask[i];
-
- uint64_t pkt0_field0 = *pkt0_field0_ptr;
- uint64_t pkt1_field0 = *pkt1_field0_ptr;
- uint64_t pkt2_field0 = *pkt2_field0_ptr;
- uint64_t pkt3_field0 = *pkt3_field0_ptr;
-
- uint64_t pkt0_field1 = *pkt0_field1_ptr;
- uint64_t pkt1_field1 = *pkt1_field1_ptr;
- uint64_t pkt2_field1 = *pkt2_field1_ptr;
- uint64_t pkt3_field1 = *pkt3_field1_ptr;
-
- *pkt0_field0_ptr = (pkt0_field0 & (~mask)) + (pkt0_field1 & mask);
- *pkt1_field0_ptr = (pkt1_field0 & (~mask)) + (pkt1_field1 & mask);
- *pkt2_field0_ptr = (pkt2_field0 & (~mask)) + (pkt2_field1 & mask);
- *pkt3_field0_ptr = (pkt3_field0 & (~mask)) + (pkt3_field1 & mask);
-
- *pkt0_field1_ptr = (pkt0_field0 & mask) + (pkt0_field1 & (~mask));
- *pkt1_field1_ptr = (pkt1_field0 & mask) + (pkt1_field1 & (~mask));
- *pkt2_field1_ptr = (pkt2_field0 & mask) + (pkt2_field1 & (~mask));
- *pkt3_field1_ptr = (pkt3_field0 & mask) + (pkt3_field1 & (~mask));
- }
-}
-
-#define PKT_WORK_DMA(dma_size, hash_enabled, lb_hash, port_pow2) \
-static inline void \
-pkt_work_dma_size##dma_size##_hash##hash_enabled \
- ##_lb##lb_hash##_pw##port_pow2( \
- struct rte_mbuf *pkt, \
- void *arg) \
-{ \
- pkt_work_dma(pkt, arg, dma_size, hash_enabled, lb_hash, port_pow2); \
-}
-
-#define PKT4_WORK_DMA(dma_size, hash_enabled, lb_hash, port_pow2) \
-static inline void \
-pkt4_work_dma_size##dma_size##_hash##hash_enabled \
- ##_lb##lb_hash##_pw##port_pow2( \
- struct rte_mbuf **pkts, \
- void *arg) \
-{ \
- pkt4_work_dma(pkts, arg, dma_size, hash_enabled, lb_hash, port_pow2); \
-}
-
-#define port_in_ah_dma(dma_size, hash_enabled, lb_hash, port_pow2) \
-PKT_WORK_DMA(dma_size, hash_enabled, lb_hash, port_pow2) \
-PKT4_WORK_DMA(dma_size, hash_enabled, lb_hash, port_pow2) \
-PIPELINE_PORT_IN_AH(port_in_ah_dma_size##dma_size##_hash \
- ##hash_enabled##_lb##lb_hash##_pw##port_pow2, \
- pkt_work_dma_size##dma_size##_hash##hash_enabled \
- ##_lb##lb_hash##_pw##port_pow2, \
- pkt4_work_dma_size##dma_size##_hash##hash_enabled \
- ##_lb##lb_hash##_pw##port_pow2)
-
-
-#define port_in_ah_lb(dma_size, hash_enabled, lb_hash, port_pow2) \
-PKT_WORK_DMA(dma_size, hash_enabled, lb_hash, port_pow2) \
-PKT4_WORK_DMA(dma_size, hash_enabled, lb_hash, port_pow2) \
-PIPELINE_PORT_IN_AH_HIJACK_ALL( \
- port_in_ah_lb_size##dma_size##_hash##hash_enabled \
- ##_lb##lb_hash##_pw##port_pow2, \
- pkt_work_dma_size##dma_size##_hash##hash_enabled \
- ##_lb##lb_hash##_pw##port_pow2, \
- pkt4_work_dma_size##dma_size##_hash##hash_enabled \
- ##_lb##lb_hash##_pw##port_pow2)
-
-PIPELINE_PORT_IN_AH(port_in_ah_swap, pkt_work_swap, pkt4_work_swap)
-
-
-/* Port in AH DMA(dma_size, hash_enabled, lb_hash, port_pow2) */
-
-port_in_ah_dma(8, 0, 0, 0)
-port_in_ah_dma(8, 1, 0, 0)
-port_in_ah_lb(8, 1, 1, 0)
-port_in_ah_lb(8, 1, 1, 1)
-
-port_in_ah_dma(16, 0, 0, 0)
-port_in_ah_dma(16, 1, 0, 0)
-port_in_ah_lb(16, 1, 1, 0)
-port_in_ah_lb(16, 1, 1, 1)
-
-port_in_ah_dma(24, 0, 0, 0)
-port_in_ah_dma(24, 1, 0, 0)
-port_in_ah_lb(24, 1, 1, 0)
-port_in_ah_lb(24, 1, 1, 1)
-
-port_in_ah_dma(32, 0, 0, 0)
-port_in_ah_dma(32, 1, 0, 0)
-port_in_ah_lb(32, 1, 1, 0)
-port_in_ah_lb(32, 1, 1, 1)
-
-port_in_ah_dma(40, 0, 0, 0)
-port_in_ah_dma(40, 1, 0, 0)
-port_in_ah_lb(40, 1, 1, 0)
-port_in_ah_lb(40, 1, 1, 1)
-
-port_in_ah_dma(48, 0, 0, 0)
-port_in_ah_dma(48, 1, 0, 0)
-port_in_ah_lb(48, 1, 1, 0)
-port_in_ah_lb(48, 1, 1, 1)
-
-port_in_ah_dma(56, 0, 0, 0)
-port_in_ah_dma(56, 1, 0, 0)
-port_in_ah_lb(56, 1, 1, 0)
-port_in_ah_lb(56, 1, 1, 1)
-
-port_in_ah_dma(64, 0, 0, 0)
-port_in_ah_dma(64, 1, 0, 0)
-port_in_ah_lb(64, 1, 1, 0)
-port_in_ah_lb(64, 1, 1, 1)
-
-static rte_pipeline_port_in_action_handler
-get_port_in_ah(struct pipeline_passthrough *p)
-{
- if ((p->params.dma_enabled == 0) &&
- (p->params.swap_enabled == 0))
- return NULL;
-
- if (p->params.swap_enabled)
- return port_in_ah_swap;
-
- if (p->params.dma_hash_enabled) {
- if (p->params.dma_hash_lb_enabled) {
- if (rte_is_power_of_2(p->p.n_ports_out))
- switch (p->params.dma_size) {
-
- case 8: return port_in_ah_lb_size8_hash1_lb1_pw1;
- case 16: return port_in_ah_lb_size16_hash1_lb1_pw1;
- case 24: return port_in_ah_lb_size24_hash1_lb1_pw1;
- case 32: return port_in_ah_lb_size32_hash1_lb1_pw1;
- case 40: return port_in_ah_lb_size40_hash1_lb1_pw1;
- case 48: return port_in_ah_lb_size48_hash1_lb1_pw1;
- case 56: return port_in_ah_lb_size56_hash1_lb1_pw1;
- case 64: return port_in_ah_lb_size64_hash1_lb1_pw1;
- default: return NULL;
- }
- else
- switch (p->params.dma_size) {
-
- case 8: return port_in_ah_lb_size8_hash1_lb1_pw0;
- case 16: return port_in_ah_lb_size16_hash1_lb1_pw0;
- case 24: return port_in_ah_lb_size24_hash1_lb1_pw0;
- case 32: return port_in_ah_lb_size32_hash1_lb1_pw0;
- case 40: return port_in_ah_lb_size40_hash1_lb1_pw0;
- case 48: return port_in_ah_lb_size48_hash1_lb1_pw0;
- case 56: return port_in_ah_lb_size56_hash1_lb1_pw0;
- case 64: return port_in_ah_lb_size64_hash1_lb1_pw0;
- default: return NULL;
- }
- } else
- switch (p->params.dma_size) {
-
- case 8: return port_in_ah_dma_size8_hash1_lb0_pw0;
- case 16: return port_in_ah_dma_size16_hash1_lb0_pw0;
- case 24: return port_in_ah_dma_size24_hash1_lb0_pw0;
- case 32: return port_in_ah_dma_size32_hash1_lb0_pw0;
- case 40: return port_in_ah_dma_size40_hash1_lb0_pw0;
- case 48: return port_in_ah_dma_size48_hash1_lb0_pw0;
- case 56: return port_in_ah_dma_size56_hash1_lb0_pw0;
- case 64: return port_in_ah_dma_size64_hash1_lb0_pw0;
- default: return NULL;
- }
- } else
- switch (p->params.dma_size) {
-
- case 8: return port_in_ah_dma_size8_hash0_lb0_pw0;
- case 16: return port_in_ah_dma_size16_hash0_lb0_pw0;
- case 24: return port_in_ah_dma_size24_hash0_lb0_pw0;
- case 32: return port_in_ah_dma_size32_hash0_lb0_pw0;
- case 40: return port_in_ah_dma_size40_hash0_lb0_pw0;
- case 48: return port_in_ah_dma_size48_hash0_lb0_pw0;
- case 56: return port_in_ah_dma_size56_hash0_lb0_pw0;
- case 64: return port_in_ah_dma_size64_hash0_lb0_pw0;
- default: return NULL;
- }
-}
-
-int
-pipeline_passthrough_parse_args(struct pipeline_passthrough_params *p,
- struct pipeline_params *params)
-{
- uint32_t dma_dst_offset_present = 0;
- uint32_t dma_src_offset_present = 0;
- uint32_t dma_src_mask_present = 0;
- char dma_mask_str[PIPELINE_PASSTHROUGH_DMA_SIZE_MAX * 2 + 1];
- uint32_t dma_size_present = 0;
- uint32_t dma_hash_offset_present = 0;
- uint32_t dma_hash_lb_present = 0;
- uint32_t i;
-
- /* default values */
- p->dma_enabled = 0;
- p->dma_hash_enabled = 0;
- p->dma_hash_lb_enabled = 0;
- memset(p->dma_src_mask, 0xFF, sizeof(p->dma_src_mask));
- p->swap_enabled = 0;
- p->swap_n_fields = 0;
-
- for (i = 0; i < params->n_args; i++) {
- char *arg_name = params->args_name[i];
- char *arg_value = params->args_value[i];
-
- /* dma_dst_offset */
- if (strcmp(arg_name, "dma_dst_offset") == 0) {
- int status;
-
- PIPELINE_PARSE_ERR_DUPLICATE(
- dma_dst_offset_present == 0, params->name,
- arg_name);
- dma_dst_offset_present = 1;
-
- status = parser_read_uint32(&p->dma_dst_offset,
- arg_value);
- PIPELINE_PARSE_ERR_INV_VAL((status != -EINVAL),
- params->name, arg_name, arg_value);
- PIPELINE_PARSE_ERR_OUT_RNG((status != -ERANGE),
- params->name, arg_name, arg_value);
-
- p->dma_enabled = 1;
-
- continue;
- }
-
- /* dma_src_offset */
- if (strcmp(arg_name, "dma_src_offset") == 0) {
- int status;
-
- PIPELINE_PARSE_ERR_DUPLICATE(
- dma_src_offset_present == 0, params->name,
- arg_name);
- dma_src_offset_present = 1;
-
- status = parser_read_uint32(&p->dma_src_offset,
- arg_value);
- PIPELINE_PARSE_ERR_INV_VAL((status != -EINVAL),
- params->name, arg_name, arg_value);
- PIPELINE_PARSE_ERR_OUT_RNG((status != -ERANGE),
- params->name, arg_name, arg_value);
-
- p->dma_enabled = 1;
-
- continue;
- }
-
- /* dma_size */
- if (strcmp(arg_name, "dma_size") == 0) {
- int status;
-
- PIPELINE_PARSE_ERR_DUPLICATE(
- dma_size_present == 0, params->name,
- arg_name);
- dma_size_present = 1;
-
- status = parser_read_uint32(&p->dma_size,
- arg_value);
- PIPELINE_PARSE_ERR_INV_VAL(((status != -EINVAL) &&
- (p->dma_size != 0) &&
- ((p->dma_size % 8) == 0)),
- params->name, arg_name, arg_value);
- PIPELINE_PARSE_ERR_OUT_RNG(((status != -ERANGE) &&
- (p->dma_size <=
- PIPELINE_PASSTHROUGH_DMA_SIZE_MAX)),
- params->name, arg_name, arg_value);
-
- p->dma_enabled = 1;
-
- continue;
- }
-
- /* dma_src_mask */
- if (strcmp(arg_name, "dma_src_mask") == 0) {
- int mask_str_len = strlen(arg_value);
-
- PIPELINE_PARSE_ERR_DUPLICATE(
- dma_src_mask_present == 0,
- params->name, arg_name);
- dma_src_mask_present = 1;
-
- PIPELINE_ARG_CHECK((mask_str_len <=
- (PIPELINE_PASSTHROUGH_DMA_SIZE_MAX * 2)),
- "Parse error in section \"%s\": entry "
- "\"%s\" too long", params->name,
- arg_name);
-
- snprintf(dma_mask_str, mask_str_len + 1,
- "%s", arg_value);
-
- p->dma_enabled = 1;
-
- continue;
- }
-
- /* dma_hash_offset */
- if (strcmp(arg_name, "dma_hash_offset") == 0) {
- int status;
-
- PIPELINE_PARSE_ERR_DUPLICATE(
- dma_hash_offset_present == 0,
- params->name, arg_name);
- dma_hash_offset_present = 1;
-
- status = parser_read_uint32(&p->dma_hash_offset,
- arg_value);
- PIPELINE_PARSE_ERR_INV_VAL((status != -EINVAL),
- params->name, arg_name, arg_value);
- PIPELINE_PARSE_ERR_OUT_RNG((status != -ERANGE),
- params->name, arg_name, arg_value);
-
- p->dma_hash_enabled = 1;
-
- continue;
- }
-
- /* load_balance mode */
- if (strcmp(arg_name, "lb") == 0) {
- PIPELINE_PARSE_ERR_DUPLICATE(
- dma_hash_lb_present == 0,
- params->name, arg_name);
- dma_hash_lb_present = 1;
-
- if (strcmp(arg_value, "hash") &&
- strcmp(arg_value, "HASH"))
-
- PIPELINE_PARSE_ERR_INV_VAL(0,
- params->name,
- arg_name,
- arg_value);
-
- p->dma_hash_lb_enabled = 1;
-
- continue;
- }
-
- /* swap */
- if (strcmp(arg_name, "swap") == 0) {
- uint32_t a, b, n_args;
- int len;
-
- n_args = sscanf(arg_value, "%" SCNu32 " %" SCNu32 "%n",
- &a, &b, &len);
- PIPELINE_PARSE_ERR_INV_VAL(((n_args == 2) &&
- ((size_t) len == strlen(arg_value))),
- params->name, arg_name, arg_value);
-
- p->swap_field0_offset[p->swap_n_fields] = a;
- p->swap_field1_offset[p->swap_n_fields] = b;
- p->swap_n_fields++;
- p->swap_enabled = 1;
-
- continue;
- }
-
- /* any other */
- PIPELINE_PARSE_ERR_INV_ENT(0, params->name, arg_name);
- }
-
- /* Check correlations between arguments */
- PIPELINE_ARG_CHECK((p->dma_enabled + p->swap_enabled < 2),
- "Parse error in section \"%s\": DMA and SWAP actions are both enabled",
- params->name);
- PIPELINE_ARG_CHECK((dma_dst_offset_present == p->dma_enabled),
- "Parse error in section \"%s\": missing entry "
- "\"dma_dst_offset\"", params->name);
- PIPELINE_ARG_CHECK((dma_src_offset_present == p->dma_enabled),
- "Parse error in section \"%s\": missing entry "
- "\"dma_src_offset\"", params->name);
- PIPELINE_ARG_CHECK((dma_size_present == p->dma_enabled),
- "Parse error in section \"%s\": missing entry "
- "\"dma_size\"", params->name);
- PIPELINE_ARG_CHECK((p->dma_hash_enabled <= p->dma_enabled),
- "Parse error in section \"%s\": missing all DMA entries",
- params->name);
- PIPELINE_ARG_CHECK((p->dma_hash_lb_enabled <= p->dma_hash_enabled),
- "Parse error in section \"%s\": missing all DMA hash entries ",
- params->name);
-
- if (dma_src_mask_present) {
- uint32_t dma_size = p->dma_size;
- int status;
-
- PIPELINE_ARG_CHECK((strlen(dma_mask_str) ==
- (dma_size * 2)), "Parse error in section "
- "\"%s\": dma_src_mask should have exactly %u hex "
- "digits", params->name, (dma_size * 2));
-
- status = parse_hex_string(dma_mask_str, p->dma_src_mask,
- &p->dma_size);
-
- PIPELINE_PARSE_ERR_INV_VAL(((status == 0) &&
- (dma_size == p->dma_size)), params->name,
- "dma_src_mask", dma_mask_str);
- }
-
- if (p->dma_hash_lb_enabled)
- PIPELINE_ARG_CHECK((params->n_ports_out > 1),
- "Parse error in section \"%s\": entry \"lb\" not "
- "allowed for single output port pipeline",
- params->name);
- else
- PIPELINE_ARG_CHECK(((params->n_ports_in >= params->n_ports_out)
- && ((params->n_ports_in % params->n_ports_out) == 0)),
- "Parse error in section \"%s\": n_ports_in needs to be "
- "a multiple of n_ports_out (lb mode disabled)",
- params->name);
-
- return 0;
-}
-
-static rte_table_hash_op_hash
-get_hash_function(struct pipeline_passthrough *p)
-{
- switch (p->params.dma_size) {
-
- case 8: return hash_default_key8;
- case 16: return hash_default_key16;
- case 24: return hash_default_key24;
- case 32: return hash_default_key32;
- case 40: return hash_default_key40;
- case 48: return hash_default_key48;
- case 56: return hash_default_key56;
- case 64: return hash_default_key64;
- default: return NULL;
- }
-}
-
-static int
-pipeline_passthrough_swap_convert(struct pipeline_passthrough *p)
-{
- uint32_t i;
-
- p->swap_n_fields = 0;
-
- for (i = 0; i < p->params.swap_n_fields; i++) {
- uint32_t offset0 = p->params.swap_field0_offset[i];
- uint32_t offset1 = p->params.swap_field1_offset[i];
- uint32_t size = offset1 - offset0;
- uint32_t j;
-
- /* Check */
- if ((offset0 >= offset1) ||
- (size > PIPELINE_PASSTHROUGH_SWAP_FIELD_SIZE_MAX) ||
- (p->swap_n_fields >= SWAP_DIM))
- return -1;
-
- for (j = 0; j < (size / sizeof(uint64_t)); j++) {
- p->swap_field0_offset[p->swap_n_fields] = offset0;
- p->swap_field1_offset[p->swap_n_fields] = offset1;
- p->swap_field_mask[p->swap_n_fields] = UINT64_MAX;
- p->swap_n_fields++;
- offset0 += sizeof(uint64_t);
- offset1 += sizeof(uint64_t);
- }
- if (size % sizeof(uint64_t)) {
- uint32_t n_bits = (size % sizeof(uint64_t)) * 8;
-
- p->swap_field0_offset[p->swap_n_fields] = offset0;
- p->swap_field1_offset[p->swap_n_fields] = offset1;
- p->swap_field_mask[p->swap_n_fields] =
- RTE_LEN2MASK(n_bits, uint64_t);
- p->swap_n_fields++;
- }
- }
-
- return 0;
-}
-
-static void*
-pipeline_passthrough_init(struct pipeline_params *params,
- __rte_unused void *arg)
-{
- struct pipeline *p;
- struct pipeline_passthrough *p_pt;
- uint32_t size, i;
-
- /* Check input arguments */
- if ((params == NULL) ||
- (params->n_ports_in == 0) ||
- (params->n_ports_out == 0))
- return NULL;
-
- /* Memory allocation */
- size = RTE_CACHE_LINE_ROUNDUP(sizeof(struct pipeline_passthrough));
- p = rte_zmalloc(NULL, size, RTE_CACHE_LINE_SIZE);
- p_pt = (struct pipeline_passthrough *) p;
- if (p == NULL)
- return NULL;
-
- strcpy(p->name, params->name);
- p->log_level = params->log_level;
-
- PLOG(p, HIGH, "Pass-through");
-
- /* Parse arguments */
- if (pipeline_passthrough_parse_args(&p_pt->params, params))
- return NULL;
- if (pipeline_passthrough_swap_convert(p_pt))
- return NULL;
- p_pt->f_hash = get_hash_function(p_pt);
-
- /* Pipeline */
- {
- struct rte_pipeline_params pipeline_params = {
- .name = "PASS-THROUGH",
- .socket_id = params->socket_id,
- .offset_port_id = 0,
- };
-
- p->p = rte_pipeline_create(&pipeline_params);
- if (p->p == NULL) {
- rte_free(p);
- return NULL;
- }
- }
-
- p->n_ports_in = params->n_ports_in;
- p->n_ports_out = params->n_ports_out;
- p->n_tables = p->n_ports_in;
-
- /*Input ports*/
- for (i = 0; i < p->n_ports_in; i++) {
- struct rte_pipeline_port_in_params port_params = {
- .ops = pipeline_port_in_params_get_ops(
- ¶ms->port_in[i]),
- .arg_create = pipeline_port_in_params_convert(
- ¶ms->port_in[i]),
- .f_action = get_port_in_ah(p_pt),
- .arg_ah = p_pt,
- .burst_size = params->port_in[i].burst_size,
- };
-
- int status = rte_pipeline_port_in_create(p->p,
- &port_params,
- &p->port_in_id[i]);
-
- if (status) {
- rte_pipeline_free(p->p);
- rte_free(p);
- return NULL;
- }
- }
-
- /* Output ports */
- for (i = 0; i < p->n_ports_out; i++) {
- struct rte_pipeline_port_out_params port_params = {
- .ops = pipeline_port_out_params_get_ops(
- ¶ms->port_out[i]),
- .arg_create = pipeline_port_out_params_convert(
- ¶ms->port_out[i]),
- .f_action = NULL,
- .arg_ah = NULL,
- };
-
- int status = rte_pipeline_port_out_create(p->p,
- &port_params,
- &p->port_out_id[i]);
-
- if (status) {
- rte_pipeline_free(p->p);
- rte_free(p);
- return NULL;
- }
- }
-
- /* Tables */
- for (i = 0; i < p->n_ports_in; i++) {
- struct rte_pipeline_table_params table_params = {
- .ops = &rte_table_stub_ops,
- .arg_create = NULL,
- .f_action_hit = NULL,
- .f_action_miss = NULL,
- .arg_ah = NULL,
- .action_data_size = 0,
- };
-
- int status = rte_pipeline_table_create(p->p,
- &table_params,
- &p->table_id[i]);
-
- if (status) {
- rte_pipeline_free(p->p);
- rte_free(p);
- return NULL;
- }
- }
-
- /* Connecting input ports to tables */
- for (i = 0; i < p->n_ports_in; i++) {
- int status = rte_pipeline_port_in_connect_to_table(p->p,
- p->port_in_id[i],
- p->table_id[i]);
-
- if (status) {
- rte_pipeline_free(p->p);
- rte_free(p);
- return NULL;
- }
- }
-
- /* Add entries to tables */
- for (i = 0; i < p->n_ports_in; i++) {
- uint32_t port_out_id = (p_pt->params.dma_hash_lb_enabled == 0) ?
- (i / (p->n_ports_in / p->n_ports_out)) :
- 0;
-
- struct rte_pipeline_table_entry default_entry = {
- .action = RTE_PIPELINE_ACTION_PORT,
- {.port_id = p->port_out_id[port_out_id]},
- };
-
- struct rte_pipeline_table_entry *default_entry_ptr;
-
- int status = rte_pipeline_table_default_entry_add(p->p,
- p->table_id[i],
- &default_entry,
- &default_entry_ptr);
-
- if (status) {
- rte_pipeline_free(p->p);
- rte_free(p);
- return NULL;
- }
- }
-
- /* Enable input ports */
- for (i = 0; i < p->n_ports_in; i++) {
- int status = rte_pipeline_port_in_enable(p->p,
- p->port_in_id[i]);
-
- if (status) {
- rte_pipeline_free(p->p);
- rte_free(p);
- return NULL;
- }
- }
-
- /* Check pipeline consistency */
- if (rte_pipeline_check(p->p) < 0) {
- rte_pipeline_free(p->p);
- rte_free(p);
- return NULL;
- }
-
- /* Message queues */
- p->n_msgq = params->n_msgq;
- for (i = 0; i < p->n_msgq; i++)
- p->msgq_in[i] = params->msgq_in[i];
- for (i = 0; i < p->n_msgq; i++)
- p->msgq_out[i] = params->msgq_out[i];
-
- /* Message handlers */
- memcpy(p->handlers, handlers, sizeof(p->handlers));
-
- return p;
-}
-
-static int
-pipeline_passthrough_free(void *pipeline)
-{
- struct pipeline *p = (struct pipeline *) pipeline;
-
- /* Check input arguments */
- if (p == NULL)
- return -1;
-
- /* Free resources */
- rte_pipeline_free(p->p);
- rte_free(p);
- return 0;
-}
-
-static int
-pipeline_passthrough_timer(void *pipeline)
-{
- struct pipeline *p = (struct pipeline *) pipeline;
-
- pipeline_msg_req_handle(p);
- rte_pipeline_flush(p->p);
-
- return 0;
-}
-
-struct pipeline_be_ops pipeline_passthrough_be_ops = {
- .f_init = pipeline_passthrough_init,
- .f_free = pipeline_passthrough_free,
- .f_run = NULL,
- .f_timer = pipeline_passthrough_timer,
-};
diff --git a/examples/ip_pipeline/pipeline/pipeline_passthrough_be.h b/examples/ip_pipeline/pipeline/pipeline_passthrough_be.h
deleted file mode 100644
index 94d1d1c..0000000
--- a/examples/ip_pipeline/pipeline/pipeline_passthrough_be.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2010-2015 Intel Corporation
- */
-
-#ifndef __INCLUDE_PIPELINE_PASSTHROUGH_BE_H__
-#define __INCLUDE_PIPELINE_PASSTHROUGH_BE_H__
-
-#include "pipeline_common_be.h"
-
-#define PIPELINE_PASSTHROUGH_DMA_SIZE_MAX 64
-
-#ifndef PIPELINE_PASSTHROUGH_SWAP_N_FIELDS_MAX
-#define PIPELINE_PASSTHROUGH_SWAP_N_FIELDS_MAX 8
-#endif
-
-#ifndef PIPELINE_PASSTHROUGH_SWAP_FIELD_SIZE_MAX
-#define PIPELINE_PASSTHROUGH_SWAP_FIELD_SIZE_MAX 16
-#endif
-
-struct pipeline_passthrough_params {
- uint32_t dma_enabled;
- uint32_t dma_dst_offset;
- uint32_t dma_src_offset;
- uint8_t dma_src_mask[PIPELINE_PASSTHROUGH_DMA_SIZE_MAX];
- uint32_t dma_size;
-
- uint32_t dma_hash_enabled;
- uint32_t dma_hash_offset;
-
- uint32_t dma_hash_lb_enabled;
-
- uint32_t swap_enabled;
- uint32_t swap_field0_offset[PIPELINE_PASSTHROUGH_SWAP_N_FIELDS_MAX];
- uint32_t swap_field1_offset[PIPELINE_PASSTHROUGH_SWAP_N_FIELDS_MAX];
- uint32_t swap_n_fields;
-};
-
-int
-pipeline_passthrough_parse_args(struct pipeline_passthrough_params *p,
- struct pipeline_params *params);
-
-extern struct pipeline_be_ops pipeline_passthrough_be_ops;
-
-#endif
--
2.9.3
next prev parent reply other threads:[~2018-03-12 17:52 UTC|newest]
Thread overview: 181+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-09 18:23 [dpdk-dev] [PATCH 00/37] ip_pipeline: refactoring Jasvinder Singh
2018-03-09 18:23 ` [dpdk-dev] [PATCH 01/37] pipeline: add pipeline table action APIs Jasvinder Singh
2018-03-12 17:25 ` [dpdk-dev] [PATCH v2 00/44] ip_pipeline: refactoring Jasvinder Singh
2018-03-12 17:25 ` [dpdk-dev] [PATCH v2 01/44] pipeline: add pipeline table action APIs Jasvinder Singh
2018-03-16 17:56 ` [dpdk-dev] [PATCH v3 00/44] ip_pipeline: refactoring Jasvinder Singh
2018-03-16 17:56 ` [dpdk-dev] [PATCH v3 01/44] pipeline: add pipeline table action APIs Jasvinder Singh
2018-03-16 17:58 ` [dpdk-dev] [PATCH v3 00/44] ip_pipeline: refactoring Jasvinder Singh
2018-03-16 17:58 ` [dpdk-dev] [PATCH v3 01/44] pipeline: add pipeline table action APIs Jasvinder Singh
2018-03-29 18:31 ` [dpdk-dev] [PATCH v4 00/49] ip_pipeline: refactoring Jasvinder Singh
2018-03-29 18:31 ` [dpdk-dev] [PATCH v4 01/49] pipeline: add pipeline table action APIs Jasvinder Singh
2018-03-29 18:31 ` [dpdk-dev] [PATCH v4 02/49] pipeline: get pipeline table action params Jasvinder Singh
2018-03-29 18:31 ` [dpdk-dev] [PATCH v4 03/49] pipeline: add traffic metering action Jasvinder Singh
2018-03-29 18:31 ` [dpdk-dev] [PATCH v4 04/49] pipeline: add traffic manager action Jasvinder Singh
2018-03-29 18:31 ` [dpdk-dev] [PATCH v4 05/49] pipeline: add packet encapsulation action Jasvinder Singh
2018-03-29 18:31 ` [dpdk-dev] [PATCH v4 06/49] pipeline: add nat action Jasvinder Singh
2018-03-29 18:31 ` [dpdk-dev] [PATCH v4 07/49] pipeline: add ttl update action Jasvinder Singh
2018-03-29 18:31 ` [dpdk-dev] [PATCH v4 08/49] pipeline: add statistics read action Jasvinder Singh
2018-03-29 18:31 ` [dpdk-dev] [PATCH v4 09/49] pipeline: add timestamp action Jasvinder Singh
2018-03-29 18:31 ` [dpdk-dev] [PATCH v4 10/49] pipeline: add load balance action Jasvinder Singh
2018-03-29 18:31 ` [dpdk-dev] [PATCH v4 11/49] pipeline: add pipeline port in action APIs Jasvinder Singh
2018-03-29 18:31 ` [dpdk-dev] [PATCH v4 12/49] librte_table/acl: remove incorrect check Jasvinder Singh
2018-03-29 18:31 ` [dpdk-dev] [PATCH v4 13/49] ip_pipeline: remove passthrough pipeline Jasvinder Singh
2018-03-29 18:31 ` [dpdk-dev] [PATCH v4 14/49] ip_pipeline: remove routing pipeline Jasvinder Singh
2018-03-29 18:31 ` [dpdk-dev] [PATCH v4 15/49] ip_pipeline: remove flow classification pipeline Jasvinder Singh
2018-03-29 18:31 ` [dpdk-dev] [PATCH v4 16/49] ip_pipeline: remove flow actions pipeline Jasvinder Singh
2018-03-29 18:31 ` [dpdk-dev] [PATCH v4 17/49] ip_pipeline: remove firewall pipeline Jasvinder Singh
2018-03-29 18:31 ` [dpdk-dev] [PATCH v4 18/49] ip_pipeline: remove master pipeline Jasvinder Singh
2018-03-29 18:31 ` [dpdk-dev] [PATCH v4 19/49] ip_pipeline: remove config Jasvinder Singh
2018-03-29 18:31 ` [dpdk-dev] [PATCH v4 20/49] ip_pipeline: rework and improvements Jasvinder Singh
2018-03-29 18:31 ` [dpdk-dev] [PATCH v4 21/49] ip_pipeline: add cli interface Jasvinder Singh
2018-03-29 18:31 ` [dpdk-dev] [PATCH v4 22/49] ip_pipeline: add mempool object for pipeline Jasvinder Singh
2018-03-29 18:31 ` [dpdk-dev] [PATCH v4 23/49] ip_pipeline: add link object Jasvinder Singh
2018-03-29 18:31 ` [dpdk-dev] [PATCH v4 24/49] ip_pipeline: add software queue object Jasvinder Singh
2018-03-29 18:31 ` [dpdk-dev] [PATCH v4 25/49] ip_pipeline: add traffic manager object Jasvinder Singh
2018-03-29 18:31 ` [dpdk-dev] [PATCH v4 26/49] ip_pipeline: add tap object Jasvinder Singh
2018-03-29 18:31 ` [dpdk-dev] [PATCH v4 27/49] ip_pipeline: add kni object Jasvinder Singh
2018-03-29 18:31 ` [dpdk-dev] [PATCH v4 28/49] ip_pipeline: add action profile object Jasvinder Singh
2018-03-29 18:31 ` [dpdk-dev] [PATCH v4 29/49] ip_pipeline: add pipeline object Jasvinder Singh
2018-03-29 18:31 ` [dpdk-dev] [PATCH v4 30/49] ip_pipeline: add threads Jasvinder Singh
2018-03-29 18:31 ` [dpdk-dev] [PATCH v4 31/49] ip_pipeline: add thread runtime Jasvinder Singh
2018-03-29 18:31 ` [dpdk-dev] [PATCH v4 32/49] ip_pipeline: add cli to enable and disable pipeline Jasvinder Singh
2018-03-29 18:31 ` [dpdk-dev] [PATCH v4 33/49] ip_pipeline: add cli to enable and disable pipeline port Jasvinder Singh
2018-03-29 18:31 ` [dpdk-dev] [PATCH v4 34/49] ip_pipeline: add cli to read pipeline port and table stats Jasvinder Singh
2018-03-29 18:31 ` [dpdk-dev] [PATCH v4 35/49] ip_pipeline: add cli for pipeline table entry Jasvinder Singh
2018-03-29 18:31 ` [dpdk-dev] [PATCH v4 36/49] ip_pipeline: add cli to delete " Jasvinder Singh
2018-03-29 18:31 ` [dpdk-dev] [PATCH v4 37/49] ip_pipeline: add cli for bulk entries to pipeline table Jasvinder Singh
2018-03-29 18:31 ` [dpdk-dev] [PATCH v4 38/49] ip_pipeline: add cli to read pipeline table entry stats Jasvinder Singh
2018-03-29 18:31 ` [dpdk-dev] [PATCH v4 39/49] ip_pipeline: add cli to configure meter profile Jasvinder Singh
2018-03-29 18:31 ` [dpdk-dev] [PATCH v4 40/49] ip_pipeline: add cli to read meter stats Jasvinder Singh
2018-03-29 18:32 ` [dpdk-dev] [PATCH v4 41/49] ip_pipeline: add cli to update dscp table Jasvinder Singh
2018-03-29 18:32 ` [dpdk-dev] [PATCH v4 42/49] ip_pipeline: add cli to read ttl stats Jasvinder Singh
2018-03-29 18:32 ` [dpdk-dev] [PATCH v4 43/49] ip_pipeline: add cli for load balance action Jasvinder Singh
2018-03-29 18:32 ` [dpdk-dev] [PATCH v4 44/49] ip_pipeline: add l2fwd example Jasvinder Singh
2018-03-29 18:32 ` [dpdk-dev] [PATCH v4 45/49] ip_pipeline: add KNI port example Jasvinder Singh
2018-03-29 18:32 ` [dpdk-dev] [PATCH v4 46/49] ip_pipeline: add TAP " Jasvinder Singh
2018-03-29 18:32 ` [dpdk-dev] [PATCH v4 47/49] ip_pipeline: add route example Jasvinder Singh
2018-03-29 18:32 ` [dpdk-dev] [PATCH v4 48/49] ip_pipeline: add firewall example Jasvinder Singh
2018-03-29 18:32 ` [dpdk-dev] [PATCH v4 49/49] ip_pipeline: add flow classification example Jasvinder Singh
2018-03-30 12:44 ` [dpdk-dev] [PATCH v4 00/49] ip_pipeline: refactoring Dumitrescu, Cristian
2018-03-16 17:58 ` [dpdk-dev] [PATCH v3 02/44] pipeline: get pipeline table action params Jasvinder Singh
2018-03-16 17:58 ` [dpdk-dev] [PATCH v3 03/44] pipeline: add traffic metering action Jasvinder Singh
2018-03-16 17:58 ` [dpdk-dev] [PATCH v3 04/44] pipeline: add traffic manager action Jasvinder Singh
2018-03-16 17:58 ` [dpdk-dev] [PATCH v3 05/44] pipeline: add packet encapsulation action Jasvinder Singh
2018-03-16 17:58 ` [dpdk-dev] [PATCH v3 06/44] pipeline: add nat action Jasvinder Singh
2018-03-16 17:58 ` [dpdk-dev] [PATCH v3 07/44] pipeline: add ttl update action Jasvinder Singh
2018-03-16 17:58 ` [dpdk-dev] [PATCH v3 08/44] pipeline: add statistics read action Jasvinder Singh
2018-03-16 17:58 ` [dpdk-dev] [PATCH v3 09/44] pipeline: add timestamp action Jasvinder Singh
2018-03-16 17:58 ` [dpdk-dev] [PATCH v3 10/44] ip_pipeline: remove passthrough pipeline Jasvinder Singh
2018-03-16 17:58 ` [dpdk-dev] [PATCH v3 11/44] ip_pipeline: remove routing pipeline Jasvinder Singh
2018-03-16 17:58 ` [dpdk-dev] [PATCH v3 12/44] ip_pipeline: remove flow classification pipeline Jasvinder Singh
2018-03-16 17:58 ` [dpdk-dev] [PATCH v3 13/44] ip_pipeline: remove flow actions pipeline Jasvinder Singh
2018-03-16 17:58 ` [dpdk-dev] [PATCH v3 14/44] ip_pipeline: remove firewall pipeline Jasvinder Singh
2018-03-16 17:58 ` [dpdk-dev] [PATCH v3 15/44] ip_pipeline: remove master pipeline Jasvinder Singh
2018-03-16 17:58 ` [dpdk-dev] [PATCH v3 16/44] ip_pipeline: remove config Jasvinder Singh
2018-03-16 17:58 ` [dpdk-dev] [PATCH v3 17/44] ip_pipeline: rework and improvements Jasvinder Singh
2018-03-16 17:58 ` [dpdk-dev] [PATCH v3 18/44] ip_pipeline: add cli interface Jasvinder Singh
2018-03-16 17:58 ` [dpdk-dev] [PATCH v3 19/44] ip_pipeline: add mempool object for pipeline Jasvinder Singh
2018-03-16 17:58 ` [dpdk-dev] [PATCH v3 20/44] ip_pipeline: add link object Jasvinder Singh
2018-03-16 17:58 ` [dpdk-dev] [PATCH v3 21/44] ip_pipeline: add software queue object Jasvinder Singh
2018-03-16 17:58 ` [dpdk-dev] [PATCH v3 22/44] ip_pipeline: add traffic manager object Jasvinder Singh
2018-03-16 17:58 ` [dpdk-dev] [PATCH v3 23/44] ip_pipeline: add tap object Jasvinder Singh
2018-03-16 17:58 ` [dpdk-dev] [PATCH v3 24/44] ip_pipeline: add kni object Jasvinder Singh
2018-03-16 17:58 ` [dpdk-dev] [PATCH v3 25/44] ip_pipeline: add action profile object Jasvinder Singh
2018-03-16 17:58 ` [dpdk-dev] [PATCH v3 26/44] ip_pipeline: add pipeline object Jasvinder Singh
2018-03-16 17:58 ` [dpdk-dev] [PATCH v3 27/44] ip_pipeline: add threads Jasvinder Singh
2018-03-16 17:58 ` [dpdk-dev] [PATCH v3 28/44] ip_pipeline: add thread runtime Jasvinder Singh
2018-03-16 17:58 ` [dpdk-dev] [PATCH v3 29/44] ip_pipeline: add cli to enable and disable pipeline Jasvinder Singh
2018-03-16 17:58 ` [dpdk-dev] [PATCH v3 30/44] ip_pipeline: add cli to enable and disable pipeline port Jasvinder Singh
2018-03-16 17:58 ` [dpdk-dev] [PATCH v3 31/44] ip_pipeline: add cli to read pipeline port and table stats Jasvinder Singh
2018-03-16 17:58 ` [dpdk-dev] [PATCH v3 32/44] ip_pipeline: add cli for pipeline table entries Jasvinder Singh
2018-03-16 17:58 ` [dpdk-dev] [PATCH v3 33/44] ip_pipeline: add cli to delete pipeline table entry Jasvinder Singh
2018-03-16 17:58 ` [dpdk-dev] [PATCH v3 34/44] ip_pipeline: add cli to read pipeline table entry stats Jasvinder Singh
2018-03-16 17:58 ` [dpdk-dev] [PATCH v3 35/44] ip_pipeline: add cli to configure meter profile Jasvinder Singh
2018-03-16 17:58 ` [dpdk-dev] [PATCH v3 36/44] ip_pipeline: add cli to read meter stats Jasvinder Singh
2018-03-16 17:58 ` [dpdk-dev] [PATCH v3 37/44] ip_pipeline: add cli to update dscp table Jasvinder Singh
2018-03-16 17:59 ` [dpdk-dev] [PATCH v3 38/44] ip_pipeline: add cli to read ttl stats Jasvinder Singh
2018-03-16 17:59 ` [dpdk-dev] [PATCH v3 39/44] ip_pipeline: add l2fwd example Jasvinder Singh
2018-03-16 17:59 ` [dpdk-dev] [PATCH v3 40/44] ip_pipeline: add KNI port example Jasvinder Singh
2018-03-16 17:59 ` [dpdk-dev] [PATCH v3 41/44] ip_pipeline: add TAP " Jasvinder Singh
2018-03-16 17:59 ` [dpdk-dev] [PATCH v3 42/44] ip_pipeline: add route example Jasvinder Singh
2018-03-16 17:59 ` [dpdk-dev] [PATCH v3 43/44] ip_pipeline: add firewall example Jasvinder Singh
2018-03-16 17:59 ` [dpdk-dev] [PATCH v3 44/44] ip_pipeline: add flow classification example Jasvinder Singh
2018-03-12 17:25 ` [dpdk-dev] [PATCH v2 02/44] pipeline: get pipeline table action params Jasvinder Singh
2018-03-12 17:25 ` [dpdk-dev] [PATCH v2 03/44] pipeline: add traffic metering action Jasvinder Singh
2018-03-12 17:25 ` [dpdk-dev] [PATCH v2 04/44] pipeline: add traffic manager action Jasvinder Singh
2018-03-12 17:25 ` [dpdk-dev] [PATCH v2 05/44] pipeline: add packet encapsulation action Jasvinder Singh
2018-03-12 17:25 ` [dpdk-dev] [PATCH v2 06/44] pipeline: add nat action Jasvinder Singh
2018-03-12 17:25 ` [dpdk-dev] [PATCH v2 07/44] pipeline: add ttl update action Jasvinder Singh
2018-03-12 17:25 ` [dpdk-dev] [PATCH v2 08/44] pipeline: add statistics read action Jasvinder Singh
2018-03-12 17:25 ` [dpdk-dev] [PATCH v2 09/44] pipeline: add timestamp action Jasvinder Singh
2018-03-12 17:25 ` Jasvinder Singh [this message]
2018-03-12 17:25 ` [dpdk-dev] [PATCH v2 11/44] ip_pipeline: remove routing pipeline Jasvinder Singh
2018-03-12 17:25 ` [dpdk-dev] [PATCH v2 12/44] ip_pipeline: remove flow classification pipeline Jasvinder Singh
2018-03-12 17:25 ` [dpdk-dev] [PATCH v2 13/44] ip_pipeline: remove flow actions pipeline Jasvinder Singh
2018-03-12 17:25 ` [dpdk-dev] [PATCH v2 14/44] ip_pipeline: remove firewall pipeline Jasvinder Singh
2018-03-12 17:25 ` [dpdk-dev] [PATCH v2 15/44] ip_pipeline: remove master pipeline Jasvinder Singh
2018-03-12 17:25 ` [dpdk-dev] [PATCH v2 16/44] ip_pipeline: remove config Jasvinder Singh
2018-03-12 17:25 ` [dpdk-dev] [PATCH v2 17/44] ip_pipeline: rework and improvements Jasvinder Singh
2018-03-12 17:25 ` [dpdk-dev] [PATCH v2 18/44] ip_pipeline: add cli interface Jasvinder Singh
2018-03-12 17:25 ` [dpdk-dev] [PATCH v2 19/44] ip_pipeline: add mempool object for pipeline Jasvinder Singh
2018-03-12 17:25 ` [dpdk-dev] [PATCH v2 20/44] ip_pipeline: add link object Jasvinder Singh
2018-03-12 17:25 ` [dpdk-dev] [PATCH v2 21/44] ip_pipeline: add software queue object Jasvinder Singh
2018-03-12 17:25 ` [dpdk-dev] [PATCH v2 22/44] ip_pipeline: add traffic manager object Jasvinder Singh
2018-03-12 17:25 ` [dpdk-dev] [PATCH v2 23/44] ip_pipeline: add tap object Jasvinder Singh
2018-03-12 17:25 ` [dpdk-dev] [PATCH v2 24/44] ip_pipeline: add kni object Jasvinder Singh
2018-03-12 17:25 ` [dpdk-dev] [PATCH v2 25/44] ip_pipeline: add action profile object Jasvinder Singh
2018-03-12 17:25 ` [dpdk-dev] [PATCH v2 26/44] ip_pipeline: add pipeline object Jasvinder Singh
2018-03-12 17:25 ` [dpdk-dev] [PATCH v2 27/44] ip_pipeline: add threads Jasvinder Singh
2018-03-12 17:25 ` [dpdk-dev] [PATCH v2 28/44] ip_pipeline: add thread runtime Jasvinder Singh
2018-03-12 17:26 ` [dpdk-dev] [PATCH v2 29/44] ip_pipeline: add cli to enable and disable pipeline Jasvinder Singh
2018-03-12 17:26 ` [dpdk-dev] [PATCH v2 30/44] ip_pipeline: add cli to enable and disable pipeline port Jasvinder Singh
2018-03-12 17:26 ` [dpdk-dev] [PATCH v2 31/44] ip_pipeline: add cli to read pipeline port and table stats Jasvinder Singh
2018-03-12 17:26 ` [dpdk-dev] [PATCH v2 32/44] ip_pipeline: add cli for pipeline table entries Jasvinder Singh
2018-03-12 17:26 ` [dpdk-dev] [PATCH v2 33/44] ip_pipeline: add cli to delete pipeline table entry Jasvinder Singh
2018-03-12 17:26 ` [dpdk-dev] [PATCH v2 34/44] ip_pipeline: add cli to read pipeline table entry stats Jasvinder Singh
2018-03-12 17:26 ` [dpdk-dev] [PATCH v2 35/44] ip_pipeline: add cli to configure meter profile Jasvinder Singh
2018-03-12 17:26 ` [dpdk-dev] [PATCH v2 36/44] ip_pipeline: add cli to read meter stats Jasvinder Singh
2018-03-12 17:26 ` [dpdk-dev] [PATCH v2 37/44] ip_pipeline: add cli to update dscp table Jasvinder Singh
2018-03-12 17:26 ` [dpdk-dev] [PATCH v2 38/44] ip_pipeline: add cli to read ttl stats Jasvinder Singh
2018-03-12 17:26 ` [dpdk-dev] [PATCH v2 39/44] ip_pipeline: add l2fwd example Jasvinder Singh
2018-03-12 17:26 ` [dpdk-dev] [PATCH v2 40/44] ip_pipeline: add KNI port example Jasvinder Singh
2018-03-12 17:26 ` [dpdk-dev] [PATCH v2 41/44] ip_pipeline: add TAP " Jasvinder Singh
2018-03-12 17:26 ` [dpdk-dev] [PATCH v2 42/44] ip_pipeline: add route example Jasvinder Singh
2018-03-12 17:26 ` [dpdk-dev] [PATCH v2 43/44] ip_pipeline: add firewall example Jasvinder Singh
2018-03-12 17:26 ` [dpdk-dev] [PATCH v2 44/44] ip_pipeline: add flow classification example Jasvinder Singh
2018-03-09 18:23 ` [dpdk-dev] [PATCH 02/37] pipeline: get pipeline table action params Jasvinder Singh
2018-03-09 18:23 ` [dpdk-dev] [PATCH 03/37] pipeline: add traffic metering action Jasvinder Singh
2018-03-09 18:23 ` [dpdk-dev] [PATCH 04/37] pipeline: add traffic manager action Jasvinder Singh
2018-03-09 18:23 ` [dpdk-dev] [PATCH 05/37] pipeline: add packet encapsulation action Jasvinder Singh
2018-03-09 18:23 ` [dpdk-dev] [PATCH 06/37] pipeline: add nat action Jasvinder Singh
2018-03-09 18:23 ` [dpdk-dev] [PATCH 07/37] pipeline: add ttl update action Jasvinder Singh
2018-03-09 18:23 ` [dpdk-dev] [PATCH 08/37] pipeline: add statistics read action Jasvinder Singh
2018-03-09 18:23 ` [dpdk-dev] [PATCH 09/37] pipeline: add timestamp action Jasvinder Singh
2018-03-09 18:23 ` [dpdk-dev] [PATCH 10/37] ip_pipeline: rework and improvements Jasvinder Singh
2018-03-09 18:24 ` [dpdk-dev] [PATCH 11/37] ip_pipeline: add cli interface Jasvinder Singh
2018-03-09 18:24 ` [dpdk-dev] [PATCH 12/37] ip_pipeline: add mempool object for pipeline Jasvinder Singh
2018-03-09 18:24 ` [dpdk-dev] [PATCH 13/37] ip_pipeline: add link object Jasvinder Singh
2018-03-09 18:24 ` [dpdk-dev] [PATCH 14/37] ip_pipeline: add software queue object Jasvinder Singh
2018-03-09 18:24 ` [dpdk-dev] [PATCH 15/37] ip_pipeline: add traffic manager object Jasvinder Singh
2018-03-09 18:24 ` [dpdk-dev] [PATCH 16/37] ip_pipeline: add tap object Jasvinder Singh
2018-03-09 18:24 ` [dpdk-dev] [PATCH 17/37] ip_pipeline: add kni object Jasvinder Singh
2018-03-09 18:24 ` [dpdk-dev] [PATCH 18/37] ip_pipeline: add action profile object Jasvinder Singh
2018-03-09 18:24 ` [dpdk-dev] [PATCH 19/37] ip_pipeline: add pipeline object Jasvinder Singh
2018-03-09 18:24 ` [dpdk-dev] [PATCH 20/37] ip_pipeline: add threads Jasvinder Singh
2018-03-09 18:24 ` [dpdk-dev] [PATCH 21/37] ip_pipeline: add thread runtime Jasvinder Singh
2018-03-09 18:24 ` [dpdk-dev] [PATCH 22/37] ip_pipeline: add cli to enable and disable pipeline Jasvinder Singh
2018-03-09 18:24 ` [dpdk-dev] [PATCH 23/37] ip_pipeline: add cli to enable and disable pipeline port Jasvinder Singh
2018-03-09 18:24 ` [dpdk-dev] [PATCH 24/37] ip_pipeline: add cli to read pipeline port and table stats Jasvinder Singh
2018-03-09 18:24 ` [dpdk-dev] [PATCH 25/37] ip_pipeline: add cli for pipeline table entries Jasvinder Singh
2018-03-09 18:24 ` [dpdk-dev] [PATCH 26/37] ip_pipeline: add cli to delete pipeline table entry Jasvinder Singh
2018-03-09 18:24 ` [dpdk-dev] [PATCH 27/37] ip_pipeline: add cli to read pipeline table entry stats Jasvinder Singh
2018-03-09 18:24 ` [dpdk-dev] [PATCH 28/37] ip_pipeline: add cli to configure meter profile Jasvinder Singh
2018-03-09 18:24 ` [dpdk-dev] [PATCH 29/37] ip_pipeline: add cli to read meter stats Jasvinder Singh
2018-03-09 18:24 ` [dpdk-dev] [PATCH 30/37] ip_pipeline: add cli to update dscp table Jasvinder Singh
2018-03-09 18:24 ` [dpdk-dev] [PATCH 31/37] ip_pipeline: add cli to read ttl stats Jasvinder Singh
2018-03-09 18:24 ` [dpdk-dev] [PATCH 32/37] ip_pipeline: add l2fwd example Jasvinder Singh
2018-03-09 18:24 ` [dpdk-dev] [PATCH 33/37] ip_pipeline: add KNI port example Jasvinder Singh
2018-03-09 18:24 ` [dpdk-dev] [PATCH 34/37] ip_pipeline: add TAP " Jasvinder Singh
2018-03-09 18:24 ` [dpdk-dev] [PATCH 35/37] ip_pipeline: add route example Jasvinder Singh
2018-03-09 18:24 ` [dpdk-dev] [PATCH 36/37] ip_pipeline: add firewall example Jasvinder Singh
2018-03-09 18:24 ` [dpdk-dev] [PATCH 37/37] ip_pipeline: add flow classification example Jasvinder Singh
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180312172615.6621-11-jasvinder.singh@intel.com \
--to=jasvinder.singh@intel.com \
--cc=cristian.dumitrescu@intel.com \
--cc=dev@dpdk.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).