On 12/21/2016 3:19 PM, Nelio Laranjeiro wrote: > Convert Ethernet, IPv4, IPv6, TCP, UDP layers into ibv_flow and create > those rules when after validation (i.e. NIC supports the rule). > > VLAN is still not supported in this commit. > > Signed-off-by: Nelio Laranjeiro <nelio.laranje...@6wind.com>
<...> > +static struct rte_flow * > +priv_flow_create(struct priv *priv, > + const struct rte_flow_attr *attr, > + const struct rte_flow_item items[], > + const struct rte_flow_action actions[], > + struct rte_flow_error *error) > +{ > + struct rte_flow *rte_flow = NULL; Unnecessary assignment. <...> > + action = (struct action) { > + .queue = -1, > + .drop = 0, > + }; > + for (; actions->type != RTE_FLOW_ACTION_TYPE_END; ++actions) { > + if (actions->type == RTE_FLOW_ACTION_TYPE_VOID) { > + continue; > + } else if (actions->type == RTE_FLOW_ACTION_TYPE_QUEUE) { > + action.queue = ((const struct rte_flow_action_queue *) > + actions->conf)->index; > + } else if (actions->type == RTE_FLOW_ACTION_TYPE_DROP) { > + action.drop = 1; > + } else { > + rte_flow_error_set(error, ENOTSUP, > + RTE_FLOW_ERROR_TYPE_ACTION, > + actions, "unsupported action"); > + goto exit; > + } > + } > + if (action.queue >= 0) { > + queue = action.queue; > + } else if (action.drop) { > + queue = MLX5_FLOW_DROP_QUEUE; > + } else { Not really so important, but as a note, ACTION_TYPE_VOID hits here. It pass from validation, but gives error in creation. > + rte_flow_error_set(error, ENOTSUP, > + RTE_FLOW_ERROR_TYPE_ACTION, > + actions, > + "no possible action found"); > + goto exit; > + } <...>