> -----Original Message----- > From: Moti Haimovsky <mo...@mellanox.com> > Sent: Monday, September 9, 2019 18:57 > To: Slava Ovsiienko <viachesl...@mellanox.com>; Raslan Darawsheh > <rasl...@mellanox.com> > Cc: dev@dpdk.org > Subject: [PATCH v5 1/7] net/mlx5: support for an action search in a list > > This commit adds a helper routine that supports searching for a specific > action in a list of actions. > > Signed-off-by: Moti Haimovsky <mo...@mellanox.com> Acked-by: Viacheslav Ovsiienko <viachesl...@mellanox.com>
> --- > drivers/net/mlx5/mlx5_flow.c | 23 +++++++++++++++++++++++ > drivers/net/mlx5/mlx5_flow.h | 3 +++ > 2 files changed, 26 insertions(+) > > diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c > index 78cc06f..eb36052 100644 > --- a/drivers/net/mlx5/mlx5_flow.c > +++ b/drivers/net/mlx5/mlx5_flow.c > @@ -697,6 +697,29 @@ uint32_t mlx5_flow_adjust_priority(struct > rte_eth_dev *dev, int32_t priority, } > > /* > + * return a pointer to the desired action in the list of actions. > + * > + * @param[in] actions > + * The list of actions to search the action in. > + * @param[in] action > + * The action to find. > + * > + * @return > + * Pointer to the action in the list, if found. NULL otherwise. > + */ > +const struct rte_flow_action * > +mlx5_flow_find_action(const struct rte_flow_action *actions, > + enum rte_flow_action_type action) { > + if (actions == NULL) > + return NULL; > + for (; actions->type != RTE_FLOW_ACTION_TYPE_END; actions++) > + if (actions->type == action) > + return actions; > + return NULL; > +} > + > +/* > * Validate the flag action. > * > * @param[in] action_flags > diff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h > index 822ff36..8d193b6 100644 > --- a/drivers/net/mlx5/mlx5_flow.h > +++ b/drivers/net/mlx5/mlx5_flow.h > @@ -442,6 +442,9 @@ uint64_t mlx5_flow_hashfields_adjust(struct > mlx5_flow *dev_flow, int tunnel, > uint64_t hash_fields); > uint32_t mlx5_flow_adjust_priority(struct rte_eth_dev *dev, int32_t priority, > uint32_t subpriority); > +const struct rte_flow_action *mlx5_flow_find_action > + (const struct rte_flow_action > *actions, > + enum rte_flow_action_type action); > int mlx5_flow_validate_action_count(struct rte_eth_dev *dev, > const struct rte_flow_attr *attr, > struct rte_flow_error *error); > -- > 1.8.3.1