diff --git a/src/plugins/dpdk/device/flow.c b/src/plugins/dpdk/device/flow.c index 9f765a6f8..1bda94260 100644 --- a/src/plugins/dpdk/device/flow.c +++ b/src/plugins/dpdk/device/flow.c @@ -185,6 +185,9 @@ dpdk_flow_add (dpdk_device_t * xd, vnet_flow_t * f, dpdk_flow_entry_t * fe) u8 protocol = IP_PROTOCOL_RESERVED; int rv = 0; + if ((f->actions & VNET_FLOW_ACTION_RSS) && f->queue_num) + goto pattern_end; + /* Handle generic flow first */ if (f->type == VNET_FLOW_TYPE_GENERIC) { @@ -696,6 +699,12 @@ dpdk_flow_ops_fn (vnet_main_t * vnm, vnet_flow_dev_op_t op, u32 dev_instance, goto done; break; default: + if ((flow->actions & VNET_FLOW_ACTION_RSS) && flow->queue_num) + { + if ((rv = dpdk_flow_add (xd, flow, fe))) + goto done; + break; + } rv = VNET_FLOW_ERROR_NOT_SUPPORTED; goto done; }