From 123e69b0253bed292a7307df024e7b8955a0e619 Mon Sep 17 00:00:00 2001 From: Viacheslav Ovsiienko Date: Thu, 7 Nov 2019 17:09:50 +0000 Subject: [PATCH] net/mlx5: update flow functions Update flow creation/destroy functions for future reuse. List operations can be skipped inside functions and done separately out of flow creation. Signed-off-by: Yongseok Koh Signed-off-by: Viacheslav Ovsiienko Acked-by: Matan Azrad --- drivers/net/mlx5/mlx5_flow.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c index d7854bece7..5898c9658b 100644 --- a/drivers/net/mlx5/mlx5_flow.c +++ b/drivers/net/mlx5/mlx5_flow.c @@ -2754,7 +2754,10 @@ flow_hairpin_split(struct rte_eth_dev *dev, * @param dev * Pointer to Ethernet device. * @param list - * Pointer to a TAILQ flow list. + * Pointer to a TAILQ flow list. If this parameter NULL, + * no list insertion occurred, flow is just created, + * this is caller's responsibility to track the + * created flow. * @param[in] attr * Flow rule attributes. * @param[in] items @@ -2899,7 +2902,8 @@ flow_list_create(struct rte_eth_dev *dev, struct mlx5_flows *list, if (ret < 0) goto error; } - TAILQ_INSERT_TAIL(list, flow, next); + if (list) + TAILQ_INSERT_TAIL(list, flow, next); flow_rxq_flags_set(dev, flow); return flow; error_before_flow: @@ -2993,7 +2997,8 @@ mlx5_flow_create(struct rte_eth_dev *dev, * @param dev * Pointer to Ethernet device. * @param list - * Pointer to a TAILQ flow list. + * Pointer to a TAILQ flow list. If this parameter NULL, + * there is no flow removal from the list. * @param[in] flow * Flow to destroy. */ @@ -3013,7 +3018,8 @@ flow_list_destroy(struct rte_eth_dev *dev, struct mlx5_flows *list, mlx5_flow_id_release(priv->sh->flow_id_pool, flow->hairpin_flow_id); flow_drv_destroy(dev, flow); - TAILQ_REMOVE(list, flow, next); + if (list) + TAILQ_REMOVE(list, flow, next); rte_free(flow->fdir); rte_free(flow); } -- 2.20.1