From: Gregory Etelson <getelson@nvidia.com> To: <dev@dpdk.org> Cc: <getelson@nvidia.com>, <matan@nvidia.com>, <rasland@nvidia.com>, <elibr@nvidia.com>, <ozsh@nvidia.com>, Ori Kam <orika@nvidia.com>, Viacheslav Ovsiienko <viacheslavo@nvidia.com>, Thomas Monjalon <thomas@monjalon.net>, Ferruh Yigit <ferruh.yigit@intel.com>, "Andrew Rybchenko" <andrew.rybchenko@oktetlabs.ru> Subject: [dpdk-dev] [PATCH v5 1/3] ethdev: allow negative values in flow rule types Date: Thu, 15 Oct 2020 15:41:52 +0300 Message-ID: <20201015124154.13357-2-getelson@nvidia.com> (raw) In-Reply-To: <20201015124154.13357-1-getelson@nvidia.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 item or action conversion library accepts positive known element types with predefined sizes only. Private PMD items and actions do not fit into this scheme becase PMD type values are negative, each PMD has it's own types numeration and element types and their sizes are not visible at RTE level. To resolve these limitations the patch proposes this solution: 1. PMD can expose elements of pointer size only. RTE flow conversion functions will use pointer size for each configuration object in private PMD element it processes; 2. RTE flow verification will not reject elements with negative type. Signed-off-by: Gregory Etelson <getelson@nvidia.com> Acked-by: Ori Kam <orika@nvidia.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com> --- v4: * update the 'Negative types' section in the rtre_flow.rst * update the patch comment v5: * rebase to next-net --- doc/guides/prog_guide/rte_flow.rst | 3 +++ doc/guides/rel_notes/release_20_11.rst | 5 +++++ lib/librte_ethdev/rte_flow.c | 28 ++++++++++++++++++++------ 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/doc/guides/prog_guide/rte_flow.rst b/doc/guides/prog_guide/rte_flow.rst index 55497c9033..d0dd7a00f1 100644 --- a/doc/guides/prog_guide/rte_flow.rst +++ b/doc/guides/prog_guide/rte_flow.rst @@ -2765,6 +2765,9 @@ identifiers they are not aware of. A method to generate them remains to be defined. +Application may use PMD dynamic items or actions in flow rules. In that case +size of configuration object in dynamic element must be a pointer size. + Planned types ~~~~~~~~~~~~~ diff --git a/doc/guides/rel_notes/release_20_11.rst b/doc/guides/rel_notes/release_20_11.rst index 3181fdb6a7..55bcb5e91f 100644 --- a/doc/guides/rel_notes/release_20_11.rst +++ b/doc/guides/rel_notes/release_20_11.rst @@ -92,6 +92,11 @@ New Features * Updated HWRM structures to 1.10.1.70 version. * Added TRUFLOW support for Stingray devices. +* **Flow rules allowed to use private PMD items / actions.** + + * Flow rule verification was updated to accept private PMD + items and actions. + * **Updated Cisco enic driver.** * Added support for VF representors with single-queue Tx/Rx and flow API diff --git a/lib/librte_ethdev/rte_flow.c b/lib/librte_ethdev/rte_flow.c index ee4f3464fe..411da1940e 100644 --- a/lib/librte_ethdev/rte_flow.c +++ b/lib/librte_ethdev/rte_flow.c @@ -480,7 +480,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; } @@ -583,7 +587,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; } @@ -625,8 +633,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"); @@ -714,8 +726,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.28.0
next prev parent reply other threads:[~2020-10-15 12:42 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 ` [dpdk-dev] [PATCH v3 1/4] ethdev: allow negative values in flow rule types Gregory Etelson 2020-10-04 5:40 ` 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 ` Gregory Etelson [this message] 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=20201015124154.13357-2-getelson@nvidia.com \ --to=getelson@nvidia.com \ --cc=andrew.rybchenko@oktetlabs.ru \ --cc=dev@dpdk.org \ --cc=elibr@nvidia.com \ --cc=ferruh.yigit@intel.com \ --cc=matan@nvidia.com \ --cc=orika@nvidia.com \ --cc=ozsh@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