From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yongseok Koh Subject: [PATCH v2 3/5] net/mlx5: fix item validation in Direct Verbs Date: Tue, 23 Oct 2018 16:52:12 +0000 Message-ID: <20181023165200.2454-4-yskoh@mellanox.com> References: <20181017020739.11203-1-yskoh@mellanox.com> <20181023165200.2454-1-yskoh@mellanox.com> Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Cc: "dev@dpdk.org" , Yongseok Koh , Ori Kam To: Shahaf Shuler Return-path: Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-eopbgr10069.outbound.protection.outlook.com [40.107.1.69]) by dpdk.org (Postfix) with ESMTP id BFE431B43A for ; Tue, 23 Oct 2018 18:52:13 +0200 (CEST) In-Reply-To: <20181023165200.2454-1-yskoh@mellanox.com> Content-Language: en-US List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" 1) remove MPLS item in validation as it doesn't have a translator. 2) add missing NVGRE item to validation 3) match switch-case order between validation and translation. Fixes: fc2c498ccb94 ("net/mlx5: add Direct Verbs translate items") Fixes: 3d69434113d1 ("net/mlx5: add Direct Verbs validation function") Cc: orika@mellanox.com Signed-off-by: Yongseok Koh Acked-by: Ori Kam --- drivers/net/mlx5/mlx5_flow_dv.c | 50 +++++++++++++++++--------------------= ---- 1 file changed, 20 insertions(+), 30 deletions(-) diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_d= v.c index 57884e9f98..15603401cf 100644 --- a/drivers/net/mlx5/mlx5_flow_dv.c +++ b/drivers/net/mlx5/mlx5_flow_dv.c @@ -225,6 +225,17 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct= rte_flow_attr *attr, ((const struct rte_flow_item_ipv6 *) items->spec)->hdr.proto; break; + case RTE_FLOW_ITEM_TYPE_TCP: + ret =3D mlx5_flow_validate_item_tcp + (items, item_flags, + next_protocol, + &rte_flow_item_tcp_mask, + error); + if (ret < 0) + return ret; + item_flags |=3D tunnel ? MLX5_FLOW_LAYER_INNER_L4_TCP : + MLX5_FLOW_LAYER_OUTER_L4_TCP; + break; case RTE_FLOW_ITEM_TYPE_UDP: ret =3D mlx5_flow_validate_item_udp(items, item_flags, next_protocol, @@ -234,16 +245,13 @@ flow_dv_validate(struct rte_eth_dev *dev, const struc= t rte_flow_attr *attr, item_flags |=3D tunnel ? MLX5_FLOW_LAYER_INNER_L4_UDP : MLX5_FLOW_LAYER_OUTER_L4_UDP; break; - case RTE_FLOW_ITEM_TYPE_TCP: - ret =3D mlx5_flow_validate_item_tcp - (items, item_flags, - next_protocol, - &rte_flow_item_tcp_mask, - error); + case RTE_FLOW_ITEM_TYPE_GRE: + case RTE_FLOW_ITEM_TYPE_NVGRE: + ret =3D mlx5_flow_validate_item_gre(items, item_flags, + next_protocol, error); if (ret < 0) return ret; - item_flags |=3D tunnel ? MLX5_FLOW_LAYER_INNER_L4_TCP : - MLX5_FLOW_LAYER_OUTER_L4_TCP; + item_flags |=3D MLX5_FLOW_LAYER_GRE; break; case RTE_FLOW_ITEM_TYPE_VXLAN: ret =3D mlx5_flow_validate_item_vxlan(items, item_flags, @@ -260,21 +268,6 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct= rte_flow_attr *attr, return ret; item_flags |=3D MLX5_FLOW_LAYER_VXLAN_GPE; break; - case RTE_FLOW_ITEM_TYPE_GRE: - ret =3D mlx5_flow_validate_item_gre(items, item_flags, - next_protocol, error); - if (ret < 0) - return ret; - item_flags |=3D MLX5_FLOW_LAYER_GRE; - break; - case RTE_FLOW_ITEM_TYPE_MPLS: - ret =3D mlx5_flow_validate_item_mpls(items, item_flags, - next_protocol, - error); - if (ret < 0) - return ret; - item_flags |=3D MLX5_FLOW_LAYER_MPLS; - break; case RTE_FLOW_ITEM_TYPE_META: ret =3D flow_dv_validate_item_meta(dev, items, attr, error); @@ -982,9 +975,6 @@ flow_dv_create_item(void *matcher, void *key, struct mlx5_flow_dv_matcher *tmatcher =3D matcher; =20 switch (item->type) { - case RTE_FLOW_ITEM_TYPE_VOID: - case RTE_FLOW_ITEM_TYPE_END: - break; case RTE_FLOW_ITEM_TYPE_ETH: flow_dv_translate_item_eth(tmatcher->mask.buf, key, item, inner); @@ -1032,14 +1022,14 @@ flow_dv_create_item(void *matcher, void *key, (IBV_RX_HASH_SRC_PORT_UDP | IBV_RX_HASH_DST_PORT_UDP)); break; - case RTE_FLOW_ITEM_TYPE_NVGRE: - flow_dv_translate_item_nvgre(tmatcher->mask.buf, key, item, - inner); - break; case RTE_FLOW_ITEM_TYPE_GRE: flow_dv_translate_item_gre(tmatcher->mask.buf, key, item, inner); break; + case RTE_FLOW_ITEM_TYPE_NVGRE: + flow_dv_translate_item_nvgre(tmatcher->mask.buf, key, item, + inner); + break; case RTE_FLOW_ITEM_TYPE_VXLAN: case RTE_FLOW_ITEM_TYPE_VXLAN_GPE: flow_dv_translate_item_vxlan(tmatcher->mask.buf, key, item, --=20 2.11.0