diff options
author | Damjan Marion <damarion@cisco.com> | 2016-11-02 14:48:21 +0100 |
---|---|---|
committer | Dave Barach <openvpp@barachs.net> | 2016-11-02 19:28:08 +0000 |
commit | 8bdc63b6036167e080b6501c17e7691033b64319 (patch) | |
tree | 24bc069f81fa87cc442266ef02a66c06de803f16 /vnet/vnet/devices/dpdk/node.c | |
parent | 3a8345f6e0b66bf165b11b767d1f6da4b35bc280 (diff) |
feature: all input nodes must have same nexts
Change-Id: Ie4c820933114af2269c99531856c45b0271a4a3e
Signed-off-by: Damjan Marion <damarion@cisco.com>
Diffstat (limited to 'vnet/vnet/devices/dpdk/node.c')
-rw-r--r-- | vnet/vnet/devices/dpdk/node.c | 57 |
1 files changed, 13 insertions, 44 deletions
diff --git a/vnet/vnet/devices/dpdk/node.c b/vnet/vnet/devices/dpdk/node.c index 01a6094e589..bcb4feac315 100644 --- a/vnet/vnet/devices/dpdk/node.c +++ b/vnet/vnet/devices/dpdk/node.c @@ -23,6 +23,7 @@ #include <vnet/classify/vnet_classify.h> #include <vnet/mpls/packet.h> #include <vnet/handoff.h> +#include <vnet/devices/devices.h> #include <vnet/feature/feature.h> #include "dpdk_priv.h" @@ -91,7 +92,7 @@ dpdk_rx_next_and_error_from_mb_flags_x1 (dpdk_device_t * xd, PKT_RX_IP_CKSUM_BAD | PKT_RX_L4_CKSUM_BAD))) { /* some error was flagged. determine the drop reason */ - n0 = DPDK_RX_NEXT_DROP; + n0 = VNET_DEVICE_INPUT_NEXT_DROP; *error0 = #ifdef RTE_LIBRTE_MBUF_EXT_RX_OLFLAGS (mb_flags & PKT_EXT_RX_PKT_ERROR) ? DPDK_ERROR_RX_PACKET_ERROR : @@ -124,17 +125,17 @@ dpdk_rx_next_and_error_from_mb_flags_x1 (dpdk_device_t * xd, else if (PREDICT_FALSE ((xd->flags & DPDK_DEVICE_FLAG_HAVE_SUBIF) || (mb_flags & PKT_RX_VLAN_PKT))) - n0 = DPDK_RX_NEXT_ETHERNET_INPUT; + n0 = VNET_DEVICE_INPUT_NEXT_ETHERNET_INPUT; else { if (PREDICT_TRUE (dpdk_mbuf_is_ip4 (mb))) - n0 = DPDK_RX_NEXT_IP4_INPUT; + n0 = VNET_DEVICE_INPUT_NEXT_IP4_INPUT; else if (PREDICT_TRUE (dpdk_mbuf_is_ip6 (mb))) - n0 = DPDK_RX_NEXT_IP6_INPUT; + n0 = VNET_DEVICE_INPUT_NEXT_IP6_INPUT; else if (PREDICT_TRUE (vlib_buffer_is_mpls (b0))) - n0 = DPDK_RX_NEXT_MPLS_INPUT; + n0 = VNET_DEVICE_INPUT_NEXT_MPLS_INPUT; else - n0 = DPDK_RX_NEXT_ETHERNET_INPUT; + n0 = VNET_DEVICE_INPUT_NEXT_ETHERNET_INPUT; } } *next0 = n0; @@ -323,7 +324,7 @@ dpdk_device_input (dpdk_main_t * dm, u32 cpu_index, u16 queue_id, int use_efd) { u32 n_buffers; - u32 next_index = DPDK_RX_NEXT_ETHERNET_INPUT; + u32 next_index = VNET_DEVICE_INPUT_NEXT_ETHERNET_INPUT; u32 n_left_to_next, *to_next; u32 mb_index; vlib_main_t *vm = vlib_get_main (); @@ -475,9 +476,9 @@ dpdk_device_input (dpdk_main_t * dm, b0->error = node->errors[error0]; - l3_offset0 = ((next0 == DPDK_RX_NEXT_IP4_INPUT || - next0 == DPDK_RX_NEXT_IP6_INPUT || - next0 == DPDK_RX_NEXT_MPLS_INPUT) ? + l3_offset0 = ((next0 == VNET_DEVICE_INPUT_NEXT_IP4_INPUT || + next0 == VNET_DEVICE_INPUT_NEXT_IP6_INPUT || + next0 == VNET_DEVICE_INPUT_NEXT_MPLS_INPUT) ? sizeof (ethernet_header_t) : 0); b0->current_data = l3_offset0; @@ -717,14 +718,8 @@ VLIB_REGISTER_NODE (dpdk_input_node) = { .n_errors = DPDK_N_ERROR, .error_strings = dpdk_error_strings, - .n_next_nodes = DPDK_RX_N_NEXT, - .next_nodes = { - [DPDK_RX_NEXT_DROP] = "error-drop", - [DPDK_RX_NEXT_ETHERNET_INPUT] = "ethernet-input", - [DPDK_RX_NEXT_IP4_INPUT] = "ip4-input-no-checksum", - [DPDK_RX_NEXT_IP6_INPUT] = "ip6-input", - [DPDK_RX_NEXT_MPLS_INPUT] = "mpls-input", - }, + .n_next_nodes = VNET_DEVICE_INPUT_N_NEXT_NODES, + .next_nodes = VNET_DEVICE_INPUT_NEXT_NODES, }; @@ -739,32 +734,6 @@ CLIB_MULTIARCH_SELECT_FN(dpdk_input_rss); CLIB_MULTIARCH_SELECT_FN(dpdk_input_efd); /* - * Override the next nodes for the dpdk input nodes. - * Must be invoked prior to VLIB_INIT_FUNCTION calls. - */ -void -dpdk_set_next_node (dpdk_rx_next_t next, char *name) -{ - vlib_node_registration_t *r = &dpdk_input_node; - vlib_node_registration_t *r_handoff = &handoff_dispatch_node; - - switch (next) - { - case DPDK_RX_NEXT_IP4_INPUT: - case DPDK_RX_NEXT_IP6_INPUT: - case DPDK_RX_NEXT_MPLS_INPUT: - case DPDK_RX_NEXT_ETHERNET_INPUT: - r->next_nodes[next] = name; - r_handoff->next_nodes[next] = name; - break; - - default: - clib_warning ("%s: illegal next %d\n", __FUNCTION__, next); - break; - } -} - -/* * set_efd_bitmap() * Based on the operation type, set lower/upper bits for the given index value */ |