From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01on0056.outbound.protection.outlook.com [104.47.1.56]) by dpdk.org (Postfix) with ESMTP id 4BF388DB3 for ; Tue, 5 Jun 2018 02:13:03 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=d98KJ4nq3JattOuKOPtzZIEYiXVLaGtKqawYUG+/Hzc=; b=eaJ37Ko/jV216n7XqgTnk7O6NpoXOizalqKruSwcFy1AglA0JeFn4sUWu3ZK7OC9OdFZiiPJ78TXq25WvrQfLTd2V0wb2jabyDLjiahFQUIqo5D+myhHA9/dIsIGCQdreOZaNi+8Vp2Ljl2K3A5gDI+/o1yp0VW2fhkkDuli/vA= Received: from mellanox.com (209.116.155.178) by AM5PR0501MB2036.eurprd05.prod.outlook.com (2603:10a6:203:1a::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.820.11; Tue, 5 Jun 2018 00:13:00 +0000 From: Yongseok Koh To: yliu@fridaylinux.org Cc: stable@dpdk.org, shahafs@mellanox.com, adrien.mazarguil@6wind.com, nelio.laranjeiro@6wind.com Date: Mon, 4 Jun 2018 17:10:57 -0700 Message-Id: <20180605001129.13184-36-yskoh@mellanox.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180605001129.13184-1-yskoh@mellanox.com> References: <20180605001129.13184-1-yskoh@mellanox.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Originating-IP: [209.116.155.178] X-ClientProxiedBy: CO1PR15CA0060.namprd15.prod.outlook.com (2603:10b6:101:1f::28) To AM5PR0501MB2036.eurprd05.prod.outlook.com (2603:10a6:203:1a::22) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(48565401081)(5600026)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:AM5PR0501MB2036; X-Microsoft-Exchange-Diagnostics: 1; AM5PR0501MB2036; 3:0tDADT4HyJwE+anpbRj3C3y3TrWC4IVtdZLRjLU/l0GOOm0MsL39OfGDLjX8t6oHIhrQLJN0zbJsoJgptW8cMT+B6zwnlFJiyQKkv2qDPOd6lJqN9Duv/hG3Su98jqCCK/UQFVAVZaFozFEbQ9tAO0mZQ3varrwTYc7S0mixI1FmP7N+MWL0Xsr8mIBW+5B/vcF8cy6HP7kLRpXhQDrElWHjzqSSxxLb8UCEE+/h5zO7s+cLPWyMTHSAxMfJyuGV; 25:Iv1LZDD4cReIPc9nnbg/FT5nLoum6axS70kcwkd7Gn5zt2+aL4cD6xHwCwyOsbpHRsWfak9lhgm/f0e/iNDgvz2o37LzF7tpv66VkrUo1Cr17MfOa7bHtlJOBN21vs33r58oSZRMTPf8cmWSHBcIoYEgNMWo5YmvCMFs+J293sw5lTgtiHDrFt3eyMKa1XYEAayGWXn8R+HG+UYRxenBiv7pijGfmq/PwnrM+PVIDEZQk5XYF1HDoqdKto+28e/h+uSYzPVeQ1X1Dil6qw+k1VptOT24fyiRiexFi5147klgar6Yjzn4WleFkw322XdeZrw+Jn2WFUwsbCqOBKsgfA==; 31:RqUaLCYbdNPwOixDEv0LbzQ1jIogiTdbpRFlb9WHVszJsA91m2Nb4LxWVnsa2TjNzfWaUhcaW7ZWfoS62iA8HpPzNJ5iCIUd3KUiw/UROaL3eZOQh0UJjKlUNfw3AXY+3FrAC+wFaM2CImOEz3yee5mPUU0qArASM3JhVkcaBVhOJ4ysJh3tmtx0oLI3Hmgy9cKlfqkj498+vrMGGDvHqwbmk3kxrhjxcGREVK8+MLs= X-MS-TrafficTypeDiagnostic: AM5PR0501MB2036: Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=yskoh@mellanox.com; X-LD-Processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr X-Microsoft-Exchange-Diagnostics: 1; AM5PR0501MB2036; 20:k5Zueq/osN9X6J/PEIPKjrIfgbzpgOTvKr/LHBbZdozONTiqVA5QhyGGYXH6GdDLIbDN9OSN8klYxDwYxlPBiQg23pNU76r5du7LAIeZYJDAsq1Gb3nxKbctJqungS0zQ/IdF5m1yzRZoyG5alJQmzpTlwjiyz/3tm0vmCUiV/dVgr8VrzTOYHx/S9yooxbeqxixuGF22YX3fBMSdzOqzGbXmOWA8ZbNTLhG972s0CXfMlGdyFPQ77yo6uwD1mB+ZhIyYH7uxwxQ41QKlbfPyCR7FHjRbWBP2Vj8zOMN38Tv1EN2nFQUPCscy3aLK9ROsT/FWa5rtpL7ndrEm8vvd+rqpIjaCThCEEMG3A+Ley1fa4RAb2QX6hgB5+vjQgiS6ewb8Yf5eKR76EK7DEm+DOot7aJUBAiacjxvpDRnmfCb5DKKKKnBM4fG3uF0GUZD5W7vEda55tsjNK5O2VvlfvA0mtL6R342EI8ZUwB87Ht/BEZHoVefVt+hcw7M8WkF; 4:TK32wcJT6zV3bq7obYKef3ZeTA+oinXcWjxpfbB8rPKj7P8IPRyfx8yZ4aBG7/v9TOewGzre151HwZysMfvEy0lnp1sqOgYAivF1F1oRVasFIDsbKmZIY0pSON/o8XdHUcObZMYeVuDtzc+H4YVuuUYVApOpVDahVgUMhCzZgpqSgqXMfMiEk9kMMcTJjU+ecpuLgXvM111x8BqMzhcWekKhd/Ef1kUb81Pc0MeAEV0YI5UwYzyrT1I0OiSBkNwd/AviHC3izpMZI8OFWo63Ig== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(93006095)(93001095)(3231254)(944501410)(52105095)(10201501046)(3002001)(6055026)(149027)(150027)(6041310)(20161123560045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123558120)(6072148)(201708071742011)(7699016); SRVR:AM5PR0501MB2036; BCL:0; PCL:0; RULEID:; SRVR:AM5PR0501MB2036; X-Forefront-PRVS: 0694C54398 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(1496009)(39380400002)(366004)(396003)(39860400002)(346002)(376002)(189003)(199004)(478600001)(81156014)(76176011)(7696005)(956004)(2361001)(50226002)(305945005)(2616005)(50466002)(47776003)(486006)(97736004)(5660300001)(6666003)(2351001)(106356001)(8936002)(186003)(81166006)(52116002)(6116002)(476003)(6916009)(23676004)(386003)(446003)(11346002)(66066001)(26005)(3846002)(8676002)(16526019)(1076002)(25786009)(21086003)(86362001)(2870700001)(53936002)(4326008)(2906002)(316002)(55016002)(36756003)(105586002)(69596002)(68736007)(7736002); DIR:OUT; SFP:1101; SCL:1; SRVR:AM5PR0501MB2036; H:mellanox.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtBTTVQUjA1MDFNQjIwMzY7MjM6KzNIdEtNQzVldFlRQll4OWtqU1lHZHl2?= =?utf-8?B?dTFiaEozYlNRT3BZQi9VbjA4Y08rbHp1ZmFkWlRZM0dmR0NHVS8vMElQSHlI?= =?utf-8?B?eE5lbmMyNUQxNjZNSEovSlI1bkdPSTVBeFB3dlNpaG5NUmF2SC9OSUo3WmhD?= =?utf-8?B?V3kzVTByeUs2QTlMbUNZeUdMc2FubHA4TW80U0l5c2M2S0tZOFNJRlVIeGVT?= =?utf-8?B?MDE4VVlZVFhwS1lxWm5RdGhDTjZ3UzNNK3JBQzB5RUM5STdiR0xBcDlhMkZw?= =?utf-8?B?WEpMdWFiSitGemkwckRScmFLL3BOUE5Tck90eUJKeEhmeWwzTWpSeHh3a1FI?= =?utf-8?B?RS82YXByMVB3aFpKVmtnbGN3Y2trNGprL1ZHQ2JNVllzRjgvUXJCVVF4T05a?= =?utf-8?B?NjlHcHMxbFk4Q29ObmROTHdoTE9kK1NTOEFpWDVDcE9PRUoyTDJXa0RoamJ6?= =?utf-8?B?YlQrcVFYYUswRlhody9Ia09HVkY0ZEkyWmRVMWRCZVpCUWJGdWxNZ3R3NWZN?= =?utf-8?B?bGdzRzNlUWxsb0lycC94Uk4vd2Vxd1doV3BObDlUMHBiSW9ZVy9HSzZzcSto?= =?utf-8?B?RFN3UDdDNzcvRWJMOHVUaUpYZ1g1RVM4MVQyWDNFQlBjREZsM21SU3E5Rmkx?= =?utf-8?B?UlpxN1dSNUN3VEpZRlVYeTRVVDNndHdpeXRFQmRTbDV2WmFWQmdMcDdMR2o3?= =?utf-8?B?cjhFakZYbjRCblE2aGtXMCt4MGwxNGZKNWJkeVNjajdGT0dOUGxkeGtOdzkv?= =?utf-8?B?UXBkSE55bm9ROXMzZWJHRFp0T3RMTGh2WFltNGkzWFRkZm5ZQWh3R016MGZq?= =?utf-8?B?blc0bmU4TnFiN2haR040cFB4NVJtTVpCeGFpYTIzN0RhVFFNNDBXMmtNTk5l?= =?utf-8?B?cjFDZzg2YUtxc2wwa2xJZEtxbEVaZ3NqWG96N1pHM3hmTXUxVlhZV0NQZlhC?= =?utf-8?B?MnQ1Qmx1TTlqSlFvNHB6NW5mVHBsK1p4cHlXN01seWxFM2ZEcEJIMEQ1Z0l6?= =?utf-8?B?Ri9pVGxDNld6b2ZNbnhUZnFDS01tdHFnOVhSd3FmLzJSeEJvMGNjcDlmUmRj?= =?utf-8?B?ZFJpZ3Y2RnFQQ29uWVp2R0ZYVXpuaWduSEsvdytkaVVYaUcyZjhNeGZIUmdE?= =?utf-8?B?SDduNzAxZlFZVnpoRHhTTVRxci9GclZHMXd2VDRkNEFXa3Z1ZkMwNWhGdzk1?= =?utf-8?B?R2Q1dExBc3NSdXVrck82OStKOWZhYmYxZjhocmRvN1lxQ09ZOUtMNWpUOUw3?= =?utf-8?B?YUlnZzZNbklabFcxR085eUQzdE15RW55bEZkc2QwVTAweDQzMVZhOGgram5S?= =?utf-8?B?Qkd1b0NLZXBkRkpvRkdpblkrSFpqVURLSUtoQU9aaXluWW1SNmZqOUN6aWlP?= =?utf-8?B?bmI5WlhBemdHVTNZQ0Q4U3cwckxIbDU4Ukw3VjhMUytrVXZQdXNqY21xMWhS?= =?utf-8?B?Ynp1UkZ4LytBNUt4VDJRVzdCYkNZT2VUenZ5Z291UXBiV1NrdXlpSVNGTnY2?= =?utf-8?B?b2RDR3pVNUpKM3VzemJjODczZ1hqQ0pKWVhxQmFhNklHUVRlazZ1YTJ1Q09l?= =?utf-8?B?M3RyRi80OTcyRGk3UDVraXZqcEdkSmhmeExaT3V5cXlCZXN6RHI3bG4xN3pM?= =?utf-8?B?c0RKbGFGKzFJczMwMmVRRmdzSGIwWFBjT1R6K0gzZ3luSmw0YXM3ZzRXRmRj?= =?utf-8?Q?mUh7cFW2rXVD7Z5USqqW/eMg39CWcRIW3peIx5uiS?= X-Microsoft-Antispam-Message-Info: GKYoUDKT4VH3tkCzZgHh2IwxuGMkMmDD1rwURIFY1RPV5PjNCd3PT5rPUwc1CbwKwpI19U/LqUqDO6dli/jcUuDJKz894eGWNC2+x79siSITXqVJAQw+y+TIYef0pzIyKBitUjdnv0ykybs3NaqB/f4vzz1rx9fASb5agvmrkQHG1AIVKdOQliVOLVc12Qvg X-Microsoft-Exchange-Diagnostics: 1; AM5PR0501MB2036; 6:LXXK3BJEYBOzECuHfTj5Fh+ZzOpaDxTRMt0yp0zd8OyRPbLow2YHsanOx/1fi97IvHR/4X5Vy3igXoCxEmDECARfSq1TIc8LFK6PG1IFUyQEkWA+MaW8I9Qn3CcGZdXXa2s8tpgMNfddHTBKeBPRSPCESeHtKWiFVTG0dCfkyc3KfvGzZpbu7qjHThTUbvDB9zJ9QnUzlfLrywNVg8UjmGvPlDZMjackqIZWM0fpGGSWqj11hqcjN/VSuhbDNOTEcEtelMRUGaByovicjcryBIGtO25aBPgbVlH3QZvSO74GAfVXUaI0/74w/eRI1fV6OTKbhY8zoIvRDqzAAJYvY20+cOJ7ZtIoj7QUBmLdC1gnKqynDsOIaIrq/68qP7c5Z1Hg1pF/A8rKmgKKd5szpQcOov6q4NtE2PW8CZQnsY5kBxz9Gcai5suKId40VAL6DmM6SV/EhIBWSm9JrdbGuA==; 5:BsUK4QbXTPyrmS1CIqEb10pK1ujUJw+6Qd9RoBZrfHO4fLb/IckAFX7Fx1n1umRGCK9IqFkJNdkOab773bQBO0xXXrzRNIS7EiXtY8eNctsFNmCT1g/s1niPBSi7JsMeuWcGvitBfzh6e5+sJt9GHVgpqBCM+UKwmQ2x3xmQuBE=; 24:7+yypE0LpvY61WM5RzwfFzypgCOVosCLT8qC4D5FR8wGO2grL1oU5/mxyTRpby3Q08kPa4rR6euQ7tAzBFFf253vRTPXLQ3mi7YMwm5RR6c= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; AM5PR0501MB2036; 7:55rl2hM5/oRhxdz7YfAZIlgsk//bWtPU8iAArhu2r56E4MXwLbtfSc2MMWSNqZf32ZsgEEeYkmWB2uJkTzEKV+lW8+bC55OpYQ5HUxsLt0Ozk8V1km3WEXOmz26SjmScxZxQayWqhQG8mzEgLiYzGf2Ega3jWf9Gh3WiX0hcLOIG0X6jK+ENEyOL69kfpMLViYpKqPl9o/uXg0Zbk5M1rR6h8OnubYyztVHlKkigTNOA9TbTk2QQ9eZS9lXGuk01 X-MS-Office365-Filtering-Correlation-Id: bc3e8eca-d520-47ea-972e-08d5ca791a40 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2018 00:13:00.9336 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: bc3e8eca-d520-47ea-972e-08d5ca791a40 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0501MB2036 Subject: [dpdk-stable] [PATCH 35/67] net/mlx5: improve flow error explanation X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 05 Jun 2018 00:13:03 -0000 From: NĂ©lio Laranjeiro [ upstream commit fca13017680e538c5fe01f44e69fe01ce1609181 ] Fill the error context in conversion function to provide a better reason on why it cannot be done to the user. Signed-off-by: Nelio Laranjeiro --- drivers/net/mlx5/mlx5_flow.c | 72 ++++++++++++++++++++++++-------------------- 1 file changed, 40 insertions(+), 32 deletions(-) diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c index c150ad52b..c5111de7b 100644 --- a/drivers/net/mlx5/mlx5_flow.c +++ b/drivers/net/mlx5/mlx5_flow.c @@ -83,40 +83,46 @@ ibv_destroy_counter_set(struct ibv_counter_set *cs) extern const struct eth_dev_ops mlx5_dev_ops; extern const struct eth_dev_ops mlx5_dev_ops_isolate; +/** Structure give to the conversion functions. */ +struct mlx5_flow_data { + struct mlx5_flow_parse *parser; /** Parser context. */ + struct rte_flow_error *error; /** Error context. */ +}; + static int mlx5_flow_create_eth(const struct rte_flow_item *item, const void *default_mask, - void *data); + struct mlx5_flow_data *data); static int mlx5_flow_create_vlan(const struct rte_flow_item *item, const void *default_mask, - void *data); + struct mlx5_flow_data *data); static int mlx5_flow_create_ipv4(const struct rte_flow_item *item, const void *default_mask, - void *data); + struct mlx5_flow_data *data); static int mlx5_flow_create_ipv6(const struct rte_flow_item *item, const void *default_mask, - void *data); + struct mlx5_flow_data *data); static int mlx5_flow_create_udp(const struct rte_flow_item *item, const void *default_mask, - void *data); + struct mlx5_flow_data *data); static int mlx5_flow_create_tcp(const struct rte_flow_item *item, const void *default_mask, - void *data); + struct mlx5_flow_data *data); static int mlx5_flow_create_vxlan(const struct rte_flow_item *item, const void *default_mask, - void *data); + struct mlx5_flow_data *data); struct mlx5_flow_parse; @@ -291,7 +297,7 @@ struct mlx5_flow_items { */ int (*convert)(const struct rte_flow_item *item, const void *default_mask, - void *data); + struct mlx5_flow_data *data); /** Size in bytes of the destination structure. */ const unsigned int dst_sz; /** List of possible following items. */ @@ -1157,6 +1163,11 @@ mlx5_flow_convert(struct rte_eth_dev *dev, /* Third step. Conversion parse, fill the specifications. */ parser->inner = 0; for (; items->type != RTE_FLOW_ITEM_TYPE_END; ++items) { + struct mlx5_flow_data data = { + .parser = parser, + .error = error, + }; + if (items->type == RTE_FLOW_ITEM_TYPE_VOID) continue; cur_item = &mlx5_flow_items[items->type]; @@ -1164,13 +1175,9 @@ mlx5_flow_convert(struct rte_eth_dev *dev, (cur_item->default_mask ? cur_item->default_mask : cur_item->mask), - parser); - if (ret) { - rte_flow_error_set(error, rte_errno, - RTE_FLOW_ERROR_TYPE_ITEM, - items, "item not supported"); + &data); + if (ret) goto exit_free; - } } if (parser->mark) mlx5_flow_create_flag_mark(parser, parser->mark_id); @@ -1263,11 +1270,11 @@ mlx5_flow_create_copy(struct mlx5_flow_parse *parser, void *src, static int mlx5_flow_create_eth(const struct rte_flow_item *item, const void *default_mask, - void *data) + struct mlx5_flow_data *data) { const struct rte_flow_item_eth *spec = item->spec; const struct rte_flow_item_eth *mask = item->mask; - struct mlx5_flow_parse *parser = (struct mlx5_flow_parse *)data; + struct mlx5_flow_parse *parser = data->parser; const unsigned int eth_size = sizeof(struct ibv_flow_spec_eth); struct ibv_flow_spec_eth eth = { .type = parser->inner | IBV_FLOW_SPEC_ETH, @@ -1315,11 +1322,11 @@ mlx5_flow_create_eth(const struct rte_flow_item *item, static int mlx5_flow_create_vlan(const struct rte_flow_item *item, const void *default_mask, - void *data) + struct mlx5_flow_data *data) { const struct rte_flow_item_vlan *spec = item->spec; const struct rte_flow_item_vlan *mask = item->mask; - struct mlx5_flow_parse *parser = (struct mlx5_flow_parse *)data; + struct mlx5_flow_parse *parser = data->parser; struct ibv_flow_spec_eth *eth; const unsigned int eth_size = sizeof(struct ibv_flow_spec_eth); @@ -1358,11 +1365,11 @@ mlx5_flow_create_vlan(const struct rte_flow_item *item, static int mlx5_flow_create_ipv4(const struct rte_flow_item *item, const void *default_mask, - void *data) + struct mlx5_flow_data *data) { const struct rte_flow_item_ipv4 *spec = item->spec; const struct rte_flow_item_ipv4 *mask = item->mask; - struct mlx5_flow_parse *parser = (struct mlx5_flow_parse *)data; + struct mlx5_flow_parse *parser = data->parser; unsigned int ipv4_size = sizeof(struct ibv_flow_spec_ipv4_ext); struct ibv_flow_spec_ipv4_ext ipv4 = { .type = parser->inner | IBV_FLOW_SPEC_IPV4_EXT, @@ -1413,11 +1420,11 @@ mlx5_flow_create_ipv4(const struct rte_flow_item *item, static int mlx5_flow_create_ipv6(const struct rte_flow_item *item, const void *default_mask, - void *data) + struct mlx5_flow_data *data) { const struct rte_flow_item_ipv6 *spec = item->spec; const struct rte_flow_item_ipv6 *mask = item->mask; - struct mlx5_flow_parse *parser = (struct mlx5_flow_parse *)data; + struct mlx5_flow_parse *parser = data->parser; unsigned int ipv6_size = sizeof(struct ibv_flow_spec_ipv6); struct ibv_flow_spec_ipv6 ipv6 = { .type = parser->inner | IBV_FLOW_SPEC_IPV6, @@ -1472,11 +1479,11 @@ mlx5_flow_create_ipv6(const struct rte_flow_item *item, static int mlx5_flow_create_udp(const struct rte_flow_item *item, const void *default_mask, - void *data) + struct mlx5_flow_data *data) { const struct rte_flow_item_udp *spec = item->spec; const struct rte_flow_item_udp *mask = item->mask; - struct mlx5_flow_parse *parser = (struct mlx5_flow_parse *)data; + struct mlx5_flow_parse *parser = data->parser; unsigned int udp_size = sizeof(struct ibv_flow_spec_tcp_udp); struct ibv_flow_spec_tcp_udp udp = { .type = parser->inner | IBV_FLOW_SPEC_UDP, @@ -1521,11 +1528,11 @@ mlx5_flow_create_udp(const struct rte_flow_item *item, static int mlx5_flow_create_tcp(const struct rte_flow_item *item, const void *default_mask, - void *data) + struct mlx5_flow_data *data) { const struct rte_flow_item_tcp *spec = item->spec; const struct rte_flow_item_tcp *mask = item->mask; - struct mlx5_flow_parse *parser = (struct mlx5_flow_parse *)data; + struct mlx5_flow_parse *parser = data->parser; unsigned int tcp_size = sizeof(struct ibv_flow_spec_tcp_udp); struct ibv_flow_spec_tcp_udp tcp = { .type = parser->inner | IBV_FLOW_SPEC_TCP, @@ -1570,11 +1577,11 @@ mlx5_flow_create_tcp(const struct rte_flow_item *item, static int mlx5_flow_create_vxlan(const struct rte_flow_item *item, const void *default_mask, - void *data) + struct mlx5_flow_data *data) { const struct rte_flow_item_vxlan *spec = item->spec; const struct rte_flow_item_vxlan *mask = item->mask; - struct mlx5_flow_parse *parser = (struct mlx5_flow_parse *)data; + struct mlx5_flow_parse *parser = data->parser; unsigned int size = sizeof(struct ibv_flow_spec_tunnel); struct ibv_flow_spec_tunnel vxlan = { .type = parser->inner | IBV_FLOW_SPEC_VXLAN_TUNNEL, @@ -1605,10 +1612,11 @@ mlx5_flow_create_vxlan(const struct rte_flow_item *item, * before will also match this rule. * To avoid such situation, VNI 0 is currently refused. */ - if (!vxlan.val.tunnel_id) { - rte_errno = EINVAL; - return -rte_errno; - } + if (!vxlan.val.tunnel_id) + return rte_flow_error_set(data->error, EINVAL, + RTE_FLOW_ERROR_TYPE_ITEM, + item, + "VxLAN vni cannot be 0"); mlx5_flow_create_copy(parser, &vxlan, size); return 0; } -- 2.11.0