From 2a24987bbaeb30801900a15a7216555b0d4b6e05 Mon Sep 17 00:00:00 2001 From: Simon Zhang Date: Wed, 10 Apr 2019 20:05:46 +0800 Subject: flow: add rte_flow check before creating by rte_flow_validate Change-Id: Idfcf1644952d647c6e1b61216d9b365d58b77814 Signed-off-by: Simon Zhang --- src/plugins/dpdk/device/flow.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/plugins/dpdk/device') diff --git a/src/plugins/dpdk/device/flow.c b/src/plugins/dpdk/device/flow.c index 63f04b8323d..3f9553105f8 100644 --- a/src/plugins/dpdk/device/flow.c +++ b/src/plugins/dpdk/device/flow.c @@ -209,6 +209,20 @@ dpdk_flow_add (dpdk_device_t * xd, vnet_flow_t * f, dpdk_flow_entry_t * fe) vec_add2 (actions, action, 1); action->type = RTE_FLOW_ACTION_TYPE_END; + rv = rte_flow_validate (xd->device_index, &ingress, items, actions, + &xd->last_flow_error); + + if (rv) + { + if (rv == -EINVAL) + rv = VNET_FLOW_ERROR_NOT_SUPPORTED; + else if (rv == -EEXIST) + rv = VNET_FLOW_ERROR_ALREADY_EXISTS; + else + rv = VNET_FLOW_ERROR_INTERNAL; + goto done; + } + fe->handle = rte_flow_create (xd->device_index, &ingress, items, actions, &xd->last_flow_error); -- cgit 1.2.3-korg