From: Gregory Etelson <getelson@nvidia.com> To: <dev@dpdk.org> Cc: <getelson@nvidia.com>, <matan@nvidia.com>, <rasland@nvidia.com>, "Gregory Etelson" <getelson@mellanox.com>, Ori Kam <orika@nvidia.com>, "Viacheslav Ovsiienko" <viacheslavo@nvidia.com>, Ori Kam <orika@mellanox.com>, "Thomas Monjalon" <thomas@monjalon.net>, Ferruh Yigit <ferruh.yigit@intel.com>, Andrew Rybchenko <arybchenko@solarflare.com> Subject: [dpdk-dev] [PATCH v3 1/4] ethdev: allow negative values in flow rule types Date: Wed, 30 Sep 2020 12:18:50 +0300 Message-ID: <20200930091854.19768-2-getelson@nvidia.com> (raw) In-Reply-To: <20200930091854.19768-1-getelson@nvidia.com> From: Gregory Etelson <getelson@mellanox.com> RTE flow items & actions use positive values in item & action type. Negative values are reserved for PMD private types. PMD items & actions usually are not exposed to application and are not used to create RTE flows. The patch allows applications with access to PMD flow items & actions ability to integrate RTE and PMD items & actions and use them to create flow rule. RTE flow library functions cannot work with PMD private items and actions (elements) because RTE flow has no API to query PMD flow object size. In the patch, PMD flow elements use object pointer. RTE flow library functions handle PMD element object size as size of a pointer. PMD handles its objects internally. Signed-off-by: Gregory Etelson <getelson@mellanox.com> Acked-by: Ori Kam <orika@nvidia.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com> --- lib/librte_ethdev/rte_flow.c | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/lib/librte_ethdev/rte_flow.c b/lib/librte_ethdev/rte_flow.c index f8fdd68fe9..c8c6d62a8b 100644 --- a/lib/librte_ethdev/rte_flow.c +++ b/lib/librte_ethdev/rte_flow.c @@ -564,7 +564,11 @@ rte_flow_conv_item_spec(void *buf, const size_t size, } break; default: - off = rte_flow_desc_item[item->type].size; + /** + * allow PMD private flow item + */ + off = (int)item->type >= 0 ? + rte_flow_desc_item[item->type].size : sizeof(void *); rte_memcpy(buf, data, (size > off ? off : size)); break; } @@ -667,7 +671,11 @@ rte_flow_conv_action_conf(void *buf, const size_t size, } break; default: - off = rte_flow_desc_action[action->type].size; + /** + * allow PMD private flow action + */ + off = (int)action->type >= 0 ? + rte_flow_desc_action[action->type].size : sizeof(void *); rte_memcpy(buf, action->conf, (size > off ? off : size)); break; } @@ -709,8 +717,12 @@ rte_flow_conv_pattern(struct rte_flow_item *dst, unsigned int i; for (i = 0, off = 0; !num || i != num; ++i, ++src, ++dst) { - if ((size_t)src->type >= RTE_DIM(rte_flow_desc_item) || - !rte_flow_desc_item[src->type].name) + /** + * allow PMD private flow item + */ + if (((int)src->type >= 0) && + ((size_t)src->type >= RTE_DIM(rte_flow_desc_item) || + !rte_flow_desc_item[src->type].name)) return rte_flow_error_set (error, ENOTSUP, RTE_FLOW_ERROR_TYPE_ITEM, src, "cannot convert unknown item type"); @@ -798,8 +810,12 @@ rte_flow_conv_actions(struct rte_flow_action *dst, unsigned int i; for (i = 0, off = 0; !num || i != num; ++i, ++src, ++dst) { - if ((size_t)src->type >= RTE_DIM(rte_flow_desc_action) || - !rte_flow_desc_action[src->type].name) + /** + * allow PMD private flow action + */ + if (((int)src->type >= 0) && + ((size_t)src->type >= RTE_DIM(rte_flow_desc_action) || + !rte_flow_desc_action[src->type].name)) return rte_flow_error_set (error, ENOTSUP, RTE_FLOW_ERROR_TYPE_ACTION, src, "cannot convert unknown action type"); -- 2.25.1
next prev parent reply other threads:[~2020-09-30 9:19 UTC|newest] Thread overview: 90+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-06-25 16:03 [dpdk-dev] [PATCH 0/2] ethdev: tunnel offload model Gregory Etelson 2020-06-25 16:03 ` [dpdk-dev] [PATCH 1/2] ethdev: allow negative values in flow rule types Gregory Etelson 2020-07-05 13:34 ` Andrew Rybchenko 2020-08-19 14:33 ` Gregory Etelson 2020-06-25 16:03 ` [dpdk-dev] [PATCH 2/2] ethdev: tunnel offload model Gregory Etelson [not found] ` <DB8PR05MB6761ED02BCD188771BDCDE64A86F0@DB8PR05MB6761.eurprd05.prod.outlook.com> [not found] ` <38d3513f-1261-0fbc-7c56-f83ced61f97a@ashroe.eu> 2020-07-01 6:52 ` Gregory Etelson 2020-07-13 8:21 ` Thomas Monjalon 2020-07-13 13:23 ` Gregory Etelson 2020-07-05 14:50 ` Andrew Rybchenko 2020-08-19 14:30 ` Gregory Etelson 2020-07-05 13:39 ` [dpdk-dev] [PATCH 0/2] " Andrew Rybchenko 2020-09-08 20:15 ` [dpdk-dev] [PATCH v2 0/4] Tunnel Offload API Gregory Etelson 2020-09-08 20:15 ` [dpdk-dev] [PATCH v2 1/4] ethdev: allow negative values in flow rule types Gregory Etelson 2020-09-15 4:36 ` Ajit Khaparde 2020-09-15 8:46 ` Andrew Rybchenko 2020-09-15 10:27 ` Gregory Etelson 2020-09-16 17:21 ` Gregory Etelson 2020-09-17 6:49 ` Andrew Rybchenko 2020-09-17 7:47 ` Ori Kam 2020-09-17 15:15 ` Andrew Rybchenko 2020-09-17 7:56 ` Gregory Etelson 2020-09-17 15:18 ` Andrew Rybchenko 2020-09-15 8:45 ` Andrew Rybchenko 2020-09-15 16:17 ` Gregory Etelson 2020-09-08 20:15 ` [dpdk-dev] [PATCH v2 2/4] ethdev: tunnel offload model Gregory Etelson 2020-09-08 20:15 ` [dpdk-dev] [PATCH v2 3/4] net/mlx5: implement tunnel offload API Gregory Etelson 2020-09-08 20:15 ` [dpdk-dev] [PATCH v2 4/4] app/testpmd: support " Gregory Etelson 2020-09-15 4:47 ` Ajit Khaparde 2020-09-15 10:44 ` Gregory Etelson 2020-09-30 9:18 ` [dpdk-dev] [PATCH v3 0/4] Tunnel Offload API Gregory Etelson 2020-09-30 9:18 ` Gregory Etelson [this message] 2020-10-04 5:40 ` [dpdk-dev] [PATCH v3 1/4] ethdev: allow negative values in flow rule types Ajit Khaparde 2020-10-04 9:24 ` Gregory Etelson 2020-09-30 9:18 ` [dpdk-dev] [PATCH v3 2/4] ethdev: tunnel offload model Gregory Etelson 2020-09-30 9:18 ` [dpdk-dev] [PATCH v3 3/4] net/mlx5: implement tunnel offload API Gregory Etelson 2020-09-30 9:18 ` [dpdk-dev] [PATCH v3 4/4] app/testpmd: add commands for " Gregory Etelson 2020-10-01 5:32 ` Ajit Khaparde 2020-10-01 9:05 ` Gregory Etelson 2020-10-04 5:40 ` Ajit Khaparde 2020-10-04 9:29 ` Gregory Etelson 2020-10-04 13:50 ` [dpdk-dev] [PATCH v4 0/4] Tunnel Offload API Gregory Etelson 2020-10-04 13:50 ` [dpdk-dev] [PATCH v4 1/4] ethdev: allow negative values in flow rule types Gregory Etelson 2020-10-14 23:40 ` Thomas Monjalon 2020-10-04 13:50 ` [dpdk-dev] [PATCH v4 2/4] ethdev: tunnel offload model Gregory Etelson 2020-10-06 9:47 ` Sriharsha Basavapatna 2020-10-07 12:36 ` Gregory Etelson 2020-10-14 17:23 ` Ferruh Yigit 2020-10-16 9:15 ` Gregory Etelson 2020-10-14 23:55 ` Thomas Monjalon 2020-10-04 13:50 ` [dpdk-dev] [PATCH v4 3/4] net/mlx5: implement tunnel offload API Gregory Etelson 2020-10-04 13:50 ` [dpdk-dev] [PATCH v4 4/4] app/testpmd: add commands for " Gregory Etelson 2020-10-04 13:59 ` Ori Kam 2020-10-14 17:25 ` [dpdk-dev] [PATCH v4 0/4] Tunnel Offload API Ferruh Yigit 2020-10-15 12:41 ` [dpdk-dev] [PATCH v5 0/3] " Gregory Etelson 2020-10-15 12:41 ` [dpdk-dev] [PATCH v5 1/3] ethdev: allow negative values in flow rule types Gregory Etelson 2020-10-15 12:41 ` [dpdk-dev] [PATCH v5 2/3] ethdev: tunnel offload model Gregory Etelson 2020-10-15 12:41 ` [dpdk-dev] [PATCH v5 3/3] app/testpmd: add commands for tunnel offload API Gregory Etelson 2020-10-15 22:47 ` [dpdk-dev] [PATCH v5 0/3] Tunnel Offload API Ferruh Yigit 2020-10-16 8:55 ` [dpdk-dev] [PATCH v6 " Gregory Etelson 2020-10-16 8:55 ` [dpdk-dev] [PATCH v6 1/3] ethdev: allow negative values in flow rule types Gregory Etelson 2020-10-16 8:55 ` [dpdk-dev] [PATCH v6 2/3] ethdev: tunnel offload model Gregory Etelson 2020-10-16 8:55 ` [dpdk-dev] [PATCH v6 3/3] app/testpmd: add commands for tunnel offload API Gregory Etelson 2020-10-16 10:33 ` [dpdk-dev] [PATCH v7 0/3] Tunnel Offload API Gregory Etelson 2020-10-16 10:33 ` [dpdk-dev] [PATCH v7 1/3] ethdev: allow negative values in flow rule types Gregory Etelson 2020-10-16 10:33 ` [dpdk-dev] [PATCH v7 2/3] ethdev: tunnel offload model Gregory Etelson 2020-10-16 10:34 ` [dpdk-dev] [PATCH v7 3/3] app/testpmd: add commands for tunnel offload API Gregory Etelson 2020-10-16 12:10 ` [dpdk-dev] [PATCH v7 0/3] Tunnel Offload API Ferruh Yigit 2020-10-16 12:51 ` [dpdk-dev] [PATCH v8 " Gregory Etelson 2020-10-16 12:51 ` [dpdk-dev] [PATCH v8 1/3] ethdev: allow negative values in flow rule types Gregory Etelson 2020-10-16 12:51 ` [dpdk-dev] [PATCH v8 2/3] ethdev: tunnel offload model Gregory Etelson 2020-10-16 15:41 ` Kinsella, Ray 2020-10-16 12:51 ` [dpdk-dev] [PATCH v8 3/3] app/testpmd: add commands for tunnel offload API Gregory Etelson 2020-10-16 13:19 ` [dpdk-dev] [PATCH v8 0/3] Tunnel Offload API Ferruh Yigit 2020-10-16 14:20 ` Ferruh Yigit 2020-10-18 12:15 ` [dpdk-dev] [PATCH] ethdev: rename tunnel offload callbacks Gregory Etelson 2020-10-19 8:31 ` Ferruh Yigit 2020-10-19 9:56 ` Kinsella, Ray 2020-10-19 21:29 ` Thomas Monjalon 2020-10-21 9:22 ` [dpdk-dev] [PATCH] net/mlx5: implement tunnel offload API Gregory Etelson 2020-10-22 16:00 ` [dpdk-dev] [PATCH v2] " Gregory Etelson 2020-10-23 13:49 ` [dpdk-dev] [PATCH v3] " Gregory Etelson 2020-10-23 13:57 ` [dpdk-dev] [PATCH v4] " Gregory Etelson 2020-10-25 14:08 ` [dpdk-dev] [PATCH v5] " Gregory Etelson 2020-10-25 15:01 ` Raslan Darawsheh 2020-10-27 16:12 ` [dpdk-dev] [PATCH] net/mlx5: tunnel offload code cleanup Gregory Etelson 2020-10-27 16:29 ` Slava Ovsiienko 2020-10-27 17:16 ` Raslan Darawsheh 2020-10-28 12:33 ` Andrew Rybchenko 2020-10-28 4:58 ` [dpdk-dev] [PATCH] net/mlx5: fix tunnel flow destroy Gregory Etelson 2020-11-02 16:27 ` Raslan Darawsheh
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20200930091854.19768-2-getelson@nvidia.com \ --to=getelson@nvidia.com \ --cc=arybchenko@solarflare.com \ --cc=dev@dpdk.org \ --cc=ferruh.yigit@intel.com \ --cc=getelson@mellanox.com \ --cc=matan@nvidia.com \ --cc=orika@mellanox.com \ --cc=orika@nvidia.com \ --cc=rasland@nvidia.com \ --cc=thomas@monjalon.net \ --cc=viacheslavo@nvidia.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
DPDK patches and discussions This inbox may be cloned and mirrored by anyone: git clone --mirror http://inbox.dpdk.org/dev/0 dev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 dev dev/ http://inbox.dpdk.org/dev \ dev@dpdk.org public-inbox-index dev Example config snippet for mirrors. Newsgroup available over NNTP: nntp://inbox.dpdk.org/inbox.dpdk.dev AGPL code for this site: git clone https://public-inbox.org/public-inbox.git