Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/97166/?format=api
http://patchwork.dpdk.org/api/patches/97166/?format=api", "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/20210820162834.12544-1-konstantin.ananyev@intel.com/", "project": { "id": 1, "url": "http://patchwork.dpdk.org/api/projects/1/?format=api", "name": "DPDK", "link_name": "dpdk", "list_id": "dev.dpdk.org", "list_email": "dev@dpdk.org", "web_url": "http://core.dpdk.org", "scm_url": "git://dpdk.org/dpdk", "webscm_url": "http://git.dpdk.org/dpdk", "list_archive_url": "https://inbox.dpdk.org/dev", "list_archive_url_format": "https://inbox.dpdk.org/dev/{}", "commit_url_format": "" }, "msgid": "<20210820162834.12544-1-konstantin.ananyev@intel.com>", "list_archive_url": "https://inbox.dpdk.org/dev/20210820162834.12544-1-konstantin.ananyev@intel.com", "date": "2021-08-20T16:28:27", "name": "[RFC,0/7] hide eth dev related structures", "commit_ref": null, "pull_url": null, "state": null, "archived": false, "hash": null, "submitter": { "id": 33, "url": "http://patchwork.dpdk.org/api/people/33/?format=api", "name": "Ananyev, Konstantin", "email": "konstantin.ananyev@intel.com" }, "delegate": null, "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/20210820162834.12544-1-konstantin.ananyev@intel.com/mbox/", "series": [], "comments": "http://patchwork.dpdk.org/api/patches/97166/comments/", "check": "pending", "checks": "http://patchwork.dpdk.org/api/patches/97166/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<dev-bounces@dpdk.org>", "X-Original-To": "patchwork@inbox.dpdk.org", "Delivered-To": "patchwork@inbox.dpdk.org", "Received": [ "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id D9F46A0C4D;\n\tFri, 20 Aug 2021 18:28:59 +0200 (CEST)", "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 9A62F4013F;\n\tFri, 20 Aug 2021 18:28:59 +0200 (CEST)", "from mga01.intel.com (mga01.intel.com [192.55.52.88])\n by mails.dpdk.org (Postfix) with ESMTP id 16F114003E;\n Fri, 20 Aug 2021 18:28:57 +0200 (CEST)", "from fmsmga008.fm.intel.com ([10.253.24.58])\n by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 20 Aug 2021 09:28:56 -0700", "from sivswdev08.ir.intel.com ([10.237.217.47])\n by fmsmga008.fm.intel.com with ESMTP; 20 Aug 2021 09:28:54 -0700" ], "X-IronPort-AV": [ "E=McAfee;i=\"6200,9189,10082\"; a=\"238930248\"", "E=Sophos;i=\"5.84,338,1620716400\"; d=\"scan'208\";a=\"238930248\"", "E=Sophos;i=\"5.84,338,1620716400\"; d=\"scan'208\";a=\"490551664\"" ], "X-ExtLoop1": "1", "From": "Konstantin Ananyev <konstantin.ananyev@intel.com>", "To": "dev@dpdk.org", "Cc": "thomas@monjalon.net, ferruh.yigit@intel.com,\n andrew.rybchenko@oktetlabs.ru,\n qiming.yang@intel.com, qi.z.zhang@intel.com, beilei.xing@intel.com,\n techboard@dpdk.org, Konstantin Ananyev <konstantin.ananyev@intel.com>", "Date": "Fri, 20 Aug 2021 17:28:27 +0100", "Message-Id": "<20210820162834.12544-1-konstantin.ananyev@intel.com>", "X-Mailer": "git-send-email 2.18.0", "Subject": "[dpdk-dev] [RFC 0/7] hide eth dev related structures", "X-BeenThere": "dev@dpdk.org", "X-Mailman-Version": "2.1.29", "Precedence": "list", "List-Id": "DPDK patches and discussions <dev.dpdk.org>", "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>", "List-Archive": "<http://mails.dpdk.org/archives/dev/>", "List-Post": "<mailto:dev@dpdk.org>", "List-Help": "<mailto:dev-request@dpdk.org?subject=help>", "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>", "Errors-To": "dev-bounces@dpdk.org", "Sender": "\"dev\" <dev-bounces@dpdk.org>" }, "content": "NOTE: This is just an RFC to start further discussion and collect the feedback.\nDue to significant amount of work, changes required are applied only to two\nPMDs so far: net/i40e and net/ice.\nSo to build it you'll need to add:\n-Denable_drivers='common/*,mempool/*,net/ice,net/i40e'\nto your config options. \n\nThe aim of these patch series is to make rte_ethdev core data structures\n(rte_eth_dev, rte_eth_dev_data, rte_eth_rxtx_callback, etc.) internal to DPDK\nand not visible to the user.\nThat should allow future possible changes to core ethdev related structures\nto be transparent to the user and help to improve ABI/API stability.\nNote that current ethdev API is preserved, though it is an ABI break for sure.\n\nThe work is based on previous discussion at:\nhttps://www.mail-archive.com/dev@dpdk.org/msg211405.html\nand consists of the following main points:\n1. Move public 'fast' function pointers (rx_pkt_burst(), etc.) from\n rte_eth_dev into a separate flat array. We keep it public to still be\n able to use inline functions for these 'fast' calls\n (like rte_eth_rx_burst(), etc.) to avoid/minimize slowdown.\n2. Change prototype within PMDs for these 'fast' functions\n (pkt_rx_burst(), etc.) to accept pair of <port_id, queue_id>\n instead of queue pointer.\n3. Also some mechanical changes in function start/finish code is required.\n Basically to avoid extra level of indirection - PMD required to do some\n preliminary checks and data retrieval that are currently done at user level\n by inline rte_eth* functions. \n4. Special _rte_eth_*_prolog(/epilog) inline functions and helper macros\n are provided to make these changes inside PMDs as straightforward\n as possible.\n5. Change implementation of 'fast' ethdev functions (rte_eth_rx_burst(), etc.)\n to use new public flat array. \n6. Move rte_eth_dev, rte_eth_dev_data, rte_eth_rxtx_callback and related things\n into internal header: <ethdev_driver.h>.\n\nThat approach was selected to avoid(/minimize) possible performance losses.\n \nSo far I done only limited amount functional and performance testing.\nDidn't spot any functional problems, and performance numbers\nremains the same before and after the patch on my box (testpmd, macswap fwd).\n\nRemaining items:\n==============\n- implement required changes for all PMD at drivers/net.\n So far I done changes only for two drivers, and definitely would use some\n help from other PMD maintainers. Required changes are mechanical,\n but we have a lot of drivers these days.\n- <rte_bus_pci.h> contains reference to rte_eth_dev field\n RTE_ETH_DEV_TO_PCI(eth_dev).\n Need to move this macro into some internal header.\n- Extra testing\n- checkpatch warnings\n- docs update\n\nKonstantin Ananyev (7):\n eth: move ethdev 'burst' API into separate structure\n eth: make drivers to use new API for Rx\n eth: make drivers to use new API for Tx\n eth: make drivers to use new API for Tx prepare\n eth: make drivers to use new API to obtain descriptor status\n eth: make drivers to use new API for Rx queue count\n eth: hide eth dev related structures\n\n app/test-pmd/config.c | 23 +-\n app/test/virtual_pmd.c | 27 +-\n drivers/common/octeontx2/otx2_sec_idev.c | 2 +-\n drivers/crypto/octeontx2/otx2_cryptodev_ops.c | 2 +-\n drivers/net/i40e/i40e_ethdev.c | 15 +-\n drivers/net/i40e/i40e_ethdev_vf.c | 15 +-\n drivers/net/i40e/i40e_rxtx.c | 243 ++++---\n drivers/net/i40e/i40e_rxtx.h | 68 +-\n drivers/net/i40e/i40e_rxtx_vec_avx2.c | 11 +-\n drivers/net/i40e/i40e_rxtx_vec_avx512.c | 12 +-\n drivers/net/i40e/i40e_rxtx_vec_sse.c | 8 +-\n drivers/net/i40e/i40e_vf_representor.c | 10 +-\n drivers/net/ice/ice_dcf_ethdev.c | 10 +-\n drivers/net/ice/ice_dcf_vf_representor.c | 10 +-\n drivers/net/ice/ice_ethdev.c | 15 +-\n drivers/net/ice/ice_rxtx.c | 236 ++++---\n drivers/net/ice/ice_rxtx.h | 73 +--\n drivers/net/ice/ice_rxtx_vec_avx2.c | 24 +-\n drivers/net/ice/ice_rxtx_vec_avx512.c | 24 +-\n drivers/net/ice/ice_rxtx_vec_common.h | 7 +-\n drivers/net/ice/ice_rxtx_vec_sse.c | 12 +-\n lib/ethdev/ethdev_driver.h | 601 ++++++++++++++++++\n lib/ethdev/ethdev_private.c | 74 +++\n lib/ethdev/ethdev_private.h | 3 +\n lib/ethdev/rte_ethdev.c | 176 ++++-\n lib/ethdev/rte_ethdev.h | 194 ++----\n lib/ethdev/rte_ethdev_core.h | 182 ++----\n lib/ethdev/version.map | 16 +\n lib/eventdev/rte_event_eth_rx_adapter.c | 2 +-\n lib/eventdev/rte_event_eth_tx_adapter.c | 2 +-\n lib/eventdev/rte_eventdev.c | 2 +-\n 31 files changed, 1488 insertions(+), 611 deletions(-)", "diff": null, "prefixes": [ "RFC", "0/7" ] }{ "id": 97166, "url": "