node: add packet drop
authorNithin Dabilpuram <ndabilpuram@marvell.com>
Sat, 11 Apr 2020 14:14:23 +0000 (19:44 +0530)
committerThomas Monjalon <thomas@monjalon.net>
Tue, 5 May 2020 21:42:13 +0000 (23:42 +0200)
Add packet drop node process function for pkt_drop
rte_node. This node simply free's every object received as
an rte_mbuf to its rte_pktmbuf pool.

Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
lib/librte_node/Makefile
lib/librte_node/meson.build
lib/librte_node/pkt_drop.c [new file with mode: 0644]

index 1377f5f..9dee8b4 100644 (file)
@@ -23,6 +23,7 @@ SRCS-$(CONFIG_RTE_LIBRTE_NODE) += ethdev_tx.c
 SRCS-$(CONFIG_RTE_LIBRTE_NODE) += ethdev_ctrl.c
 SRCS-$(CONFIG_RTE_LIBRTE_NODE) += ip4_lookup.c
 SRCS-$(CONFIG_RTE_LIBRTE_NODE) += ip4_rewrite.c
+SRCS-$(CONFIG_RTE_LIBRTE_NODE) += pkt_drop.c
 
 # install header files
 SYMLINK-$(CONFIG_RTE_LIBRTE_NODE)-include += rte_node_ip4_api.h
index ad3e53a..17f1316 100644 (file)
@@ -2,7 +2,7 @@
 # Copyright(C) 2020 Marvell International Ltd.
 
 sources = files('null.c', 'log.c', 'ethdev_rx.c', 'ethdev_tx.c', 'ip4_lookup.c',
-               'ip4_rewrite.c', 'ethdev_ctrl.c')
+               'ip4_rewrite.c', 'pkt_drop.c', 'ethdev_ctrl.c')
 headers = files('rte_node_ip4_api.h', 'rte_node_eth_api.h')
 # Strict-aliasing rules are violated by uint8_t[] to context size casts.
 cflags += '-fno-strict-aliasing'
diff --git a/lib/librte_node/pkt_drop.c b/lib/librte_node/pkt_drop.c
new file mode 100644 (file)
index 0000000..c350013
--- /dev/null
@@ -0,0 +1,26 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(C) 2020 Marvell International Ltd.
+ */
+
+#include <rte_debug.h>
+#include <rte_graph.h>
+#include <rte_mbuf.h>
+
+static uint16_t
+pkt_drop_process(struct rte_graph *graph, struct rte_node *node, void **objs,
+                uint16_t nb_objs)
+{
+       RTE_SET_USED(node);
+       RTE_SET_USED(graph);
+
+       rte_pktmbuf_free_bulk((struct rte_mbuf **)objs, nb_objs);
+
+       return nb_objs;
+}
+
+static struct rte_node_register pkt_drop_node = {
+       .process = pkt_drop_process,
+       .name = "pkt_drop",
+};
+
+RTE_NODE_REGISTER(pkt_drop_node);