From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-bl2nam02on0062.outbound.protection.outlook.com [104.47.38.62]) by dpdk.org (Postfix) with ESMTP id C82872C5E for ; Sun, 18 Dec 2016 15:22:07 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=zua2jtktiwIJDhgWj1neZv0KDC4puMudehjRHNK41Tw=; b=Ihf/l1HqT6jTKLwApl2tV6vKj/GY4G1pGxATVkhCWqMQT+dxCRkLcxIC0m6bXZoi86YYTma+TfgiHLdzfzF8zpdK5NgpFp+KSqdUikRuaJEXHkpklboCSkEAY0jqqwjPxz777bfp5Zipz5R40K+/M2xAqJZVkZtncyqpKMjz0IQ= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Jerin.Jacob@cavium.com; Received: from localhost.localdomain.localdomain (14.140.2.178) by CY1PR0701MB1725.namprd07.prod.outlook.com (10.163.21.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.789.14; Sun, 18 Dec 2016 14:22:01 +0000 From: Jerin Jacob To: CC: , , , , , Jerin Jacob Date: Sun, 18 Dec 2016 19:51:29 +0530 Message-ID: <1482070895-32491-1-git-send-email-jerin.jacob@caviumnetworks.com> X-Mailer: git-send-email 2.5.5 In-Reply-To: <1480798539-13360-1-git-send-email-jerin.jacob@caviumnetworks.com> References: <1480798539-13360-1-git-send-email-jerin.jacob@caviumnetworks.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [14.140.2.178] X-ClientProxiedBy: MAXPR01CA0003.INDPRD01.PROD.OUTLOOK.COM (10.164.147.10) To CY1PR0701MB1725.namprd07.prod.outlook.com (10.163.21.14) X-MS-Office365-Filtering-Correlation-Id: 4dd1f39e-235f-4971-53b9-08d427513e2a X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:CY1PR0701MB1725; X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB1725; 3:STwu7sk99CsiHcwbh6T5xeEJU1IJUtPd8wQs7tI8WvdI/E+xXY3ogGbWahmoFo6ZgFoT7sGkKbFMg7aT7yd73zJsEcxVybsdaWW47ySe0J2JM8jbQTd3RfTuv1igMrT84u9FuclYTuWMa15fm92D6ZFriW9Btlzs9scVkyET/lSuSabHhDmlNMlD3ljSkz1UHDCl25W+pEEnUuzGaGaKX69lPFPki5hzQK/VrqC41QKlho0PAhZIVpE7Wa+XMVFulJ/d++fkwfiQfSKvETmchQ==; 25:r9YqY0D0wP8I1R23MQHf/KWm+x95kPQP/Q4UC9n//ecOH6lfDEH+h9D5MUMXwumY/mQ4gdg1R5Mve9mtkk5dqkvKSfj6QtemjOl07KGLr1OJTCjwBBcn332Y8NA1Q4Ep6CpxsSuIyi0YQkJqSBiLGv5TkWiiIf13sVApPGBwyu7PQypzu3OufXqqqrOeHh3akV+8na9u+UZ/Dl2KvnU0Vfwkk3lutx9KvbGsCfFoMoH9+zqJAPwvsipXppdS14OQ0I549PcWVOmIOpXx55JaWTz9V8cGwrvW8hVd+St7EVArsZziiE7qq507hqxH2x9sS9N5plTnt6ck330NKsbuU/flAShxhpIQhLrUembTocr52Iw/70QCH8W/F7n/6Nqm19agS/PXCEfj3hJlsOu9Xx2UdM3fcFgwPpWtabVH/WQW0J9aUudPk7UdIRmen4smwnfneT//Y5fNkb6fIhFQRg== X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB1725; 31:KXl3hf+JtNp2vMCQRAHdawONyaNZ6D71WLCP8T8BChL1F8NEve7eZ7hoH/vwgWunOJsLQWDcxx3oYfTQgB0TjjPNuKBLRjXSJk1XPmJh0AadwDGj9tV9C6HZYzJ9TrIMUkW9Q085IDK+nFXNILfPalC0J5OXcSppVkehNmAMCvkMtP1lJXmkQvkKq3D55G1hh0VVJd/r1TzvkaOioFMN1Qchh5/YPJlB2m5I0aCwwYSuqCx2kQiQGz82v1ab/3Bc; 20:VbRwuYfQae1ASyr0s6tqKUK/81A0+SerboZt32DijhU8lSq4xf4OHXvaZ8INISh4MUlerrII+zlSaOwEklqV1FiDiT9LtmEuN/zv7b5unmdYmZzyiliBlDvgD7a+h5U0TgetOE0vw8bD7t+SMDXKRAXoPk+csZiVSsvMEgN943nMD6jxffISfRNPvcDjVEKd8Jq4XT1twmTIlbooWQ56LOJggT8BtlgOIEms3EJ1SQU1XwNKFM0HyzBV2QisuaimgOjKEv0U1x4yGtxIr5UMLenyyBxjpq2Vuc7/FgfZlpUg3oLgJSH1e90WrmSQhSs8lvKp25HkiP9lW0H5Yapw/ZBSBFz8leItGqr29JDCkPsDHyonkfNvfEToj4WrJXZV41ftofBDw15Nnc45tnjUjSfLcl6lWYGioWl1Re6VlInSuN8Elc1LLnK9eNz0+hcFfoy9TfqINd2X4FBdijYS9IXK9Q/11mcupDrf/2Th2j4zKvf9ryeIIFf9P4TwBl2Oap7SOj4HR20eCX46jHz8cnxiET7hn1fuplNbjks2X35nsv6tBDpEmZh+PEPyAZM7vS3Rf6J7WLZ9GihgqXgJBc2EbAsy0jxTPVmY2TnQr7g= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6041248)(20161123555025)(20161123560025)(20161123558021)(20161123564025)(20161123562025)(6072148); SRVR:CY1PR0701MB1725; BCL:0; PCL:0; RULEID:; SRVR:CY1PR0701MB1725; X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB1725; 4:6EsNLS4xpTNLkkAGGRY0IzPSG8gJYe962qN1W0i0fwLMJiFOHxyAVOnhXTvspTLoL9pBkelmZtod2RSRPdMKyTxS6E4aSf/cubopwGLTNZMQ56hhyn38IlQDd8bosZJ0Fyfvwv3sfmsd7d2VRLedTWzvLrGdPjAOrehySLyyyd4lYIGnwNDrVhcRpdct6h8yjFHW6XZI5aRww9yG9n5vAI8dbL0WsHYo9zvgKcZ4H29YQJQDlkkj3F/kwSp2QyW88PqPWhTQo1ULmm0TR7gi+gs4KvfL3x2H2KA5Ie4pVIO59jL+7lLaTjgvSxcP87q1F6qy3sCyq3LO8/2T7KWFfAYFqEnoV9bzVR3F/BK9doKHP9VZSTZJTmxvJJ8awPLxb932gwRAnf1lOmi1aUhnADmy61+aIRAIngYjOQWeHzXxR/RewUPGxM/eYeKy84AjCgYRdfx68efmnjRaLtd2yJeHzUVg4FYYJAWSMByf2BmLh0kPWcJj3t4OQTTFGSa9h4gGjEJQyQ/PMHBPTf4nD1QhHmKX+imVjEGxjYgf6mit3JfNrD5ZbTNpThr54QrghYDrzI4MEXQGvn/PwbOFt4Zfosvjdv4eoCUfxALHDb0= X-Forefront-PRVS: 01604FB62B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(6069001)(7916002)(39450400003)(189002)(199003)(6512006)(6506006)(106356001)(6486002)(5003940100001)(48376002)(15395725005)(68736007)(25786008)(101416001)(42186005)(5009440100003)(4001430100002)(81166006)(4326007)(105586002)(50226002)(92566002)(81156014)(50986999)(76176999)(107886002)(8676002)(2906002)(42882006)(6916009)(2950100002)(36756003)(6666003)(110136003)(2351001)(47776003)(38730400001)(305945005)(3846002)(97736004)(66066001)(8666005)(50466002)(6116002)(189998001)(5660300001)(33646002)(7736002)(7099028)(110426004)(7059030); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR0701MB1725; H:localhost.localdomain.localdomain; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR0701MB1725; 23:3VAhyg187+OPjVSEIhO+9vSr0c/W4ZTvLCQcZfX?= =?us-ascii?Q?jacMsz7A8Ru56dgJoU6+ECyCVeeiP18K0M5PYNSVJo1GUui300pDAALHTOi6?= =?us-ascii?Q?uLsr/Vtpt4RlGgQ7ZvCMpqItpHs6irQaBg0ylAWIqMdPHLj5e7USVpuGKteM?= =?us-ascii?Q?sMhpk5TdzDiya3wvOirApDvKdfMg7FObfVM6DIT0SuCgJ3MFQK5xChDAX2JQ?= =?us-ascii?Q?jIU1HbhzxJF4Z9dtgqHpaLRR/0TEgl0xjjTE4OSAyCfoBqFRdS660oEJOyp2?= =?us-ascii?Q?0hbS3O/VhCev24Hq/DZybYtI9MaVtLl7x6pzvKc2IC0IAGxEAhWGrMEIalI+?= =?us-ascii?Q?PReOolEBQJ/J4RkcWDWCWKpoA08KzNi7Y7fPc5Wz2TEp/8Ii3Y2oFNI2l0AL?= =?us-ascii?Q?NDYkc6X8gjt9vQd9KFgZz3nLH7H6vEhM9I70xPCGi90EL8gyVFH5MlwL5cnG?= =?us-ascii?Q?GHbRu84ADCNQP/G/yfe1A1ET/fbXbJ7TQceMBtzdSyEP6S1ZrGkG/hfojksm?= =?us-ascii?Q?hsaYE6h7kcqRpjlrspiWUtg86pIv6c+U0pfCOpuVwU6d/jCn1yzutw9eozvo?= =?us-ascii?Q?ttN0Vsww9GYqXXJDDmasaUzrl5CBcS1Lt+kO2vaYeInFzENwypLsfyA8WYE2?= =?us-ascii?Q?lGplrnYRHc7FLtnHULpmrPlSNUXAYEFQCrkmoi1vPmfES2eJ1Kk0T3pxbnOj?= =?us-ascii?Q?mwbt2+lOjOGADcAfqMENNA6U91sArb5MhEhiN1Pl7GxIKOXR1Z+d+jo/xqhO?= =?us-ascii?Q?eiBi4QbOrVaBpGfC/uJZ826B5RfMtTzrffcayDUBMcsRptXhKNISNOwVO2ho?= =?us-ascii?Q?dKzJe0utcpE4Q1I7lcBpIDOZS5g+KPpTMVAkv2mLA4+WuPHlt0hKRh/WiUiI?= =?us-ascii?Q?dqdHbOPgM7si5sqhD4ggXGUrszG4tFJzhOK1nFa6we1GcjeeBjWf2rYPrbH6?= =?us-ascii?Q?8h7wXf410EKxgQDUPJMYU3oB6wRkFklSV1L5QB83z2UimY+CRkWbNxX/DsRH?= =?us-ascii?Q?xqcSD8EQ8ew9Q2A/GYzITFhch/zvDplEmtpTCg4b64vy5Xo2KXQz0mDH1qUV?= =?us-ascii?Q?ivrqPj+IEx5ksee3jnlRera1vrPGAQdUD/Uz9PrlWYHjyk2fYaBBCyg02FBn?= =?us-ascii?Q?D/OB/uhTtu3lFVFuCxt71aJp+LLJHWSjweUBpeecuuN6mrTLmIrOTf0/g4u2?= =?us-ascii?Q?H/T/nE4r4NmcrCCe5R73fnK/yS0f9KaLu5EBbISktdTRSO349LtWLDY0OLCA?= =?us-ascii?Q?pb23BxhJgipbWX0Z+BQbo6u/mGW5EmoYl/ue/cZfcEi7uoJc1Kla5gEtSmZH?= =?us-ascii?Q?YwkAL6qbAaJfhwhzeNgmEOZ4=3D?= X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB1725; 6:szrnXEC1A0xBc7JRZhupyKAYiCfEK1nTHNzO9F1CzrMbFmLZCmU4XmhiLNyfHqTOTRrxmlVzVd6uNyBMmExIlQ8/0vq4SRZwBfJeGLS2FusHFp6fzUfhNyK1/Qfd+Q8AAUImwmDWJVWxIFHP6b+gK1BM5qRyh7cGY75ye/kvrX2XC9Y48IGN7TCe7ZL+4U4eocP43YOypLR9Vp0MRpYtDdwaG/AKrivT61BygxyQUXrbvGS4ZAaqVOLFa0klUqiQ/FHEhFwVdpfQXKhMPOLcSIGP4NwMK/bF2XwGlBY7QNps010iGs/NLKSzjqzefppGGEoWfEfxf5WDNQIYZg/fTd6UFYflWIg35Tk9z9613Tit0vN8+spxBqdP8ybkBS3xlmQPDSDoNU0I/2UY7OSWK8C1X9oD7WvHZYdfesh0Lh8=; 5:fJMSS2axB71VrPPF+lJX/Shlm4GjwLaXt0qP6iJ7z8ds0vQo7MgDsXprUCcI1Gduejjg+dAD3KnZ00PZx/otJIHhS1E7FUPTKOoNLLaz2coZlni9nh2nhZEtfT/b7yvo4Q0e3rHh+yZCOTGsZr1Pjg==; 24:s0x0t1EWSjHb/fXx6TTROqLeJe7GEb+l1D8LTzlF/rfMsVX6H9o1ceNXgNUu5+EuU8rAZZRY+n/BccxBD5aCLzL/HMtO8/MppYuVB2Qmpio= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB1725; 7:aFjCjTKiH28TcQ5Gn56YnyeSiPJvAJ3m2Z21AT2tEBBz4+swtz44tPtwNL+3ITUfr6DhIW9Ygb39Suo1VtBfZtVEfZ+9UDK/qtXv3K3t4WhlL0dpXHM5JbCFtgZ9/EAt+0BK7H7lMfq0jtRBLO9pqgAz9GxZ+getpuo8b+ceuL9y2gKMawK1PiLYO0ar7PVYwN4P4XOZhQE6JX+85wxi+XDKHpGG/gIvBGoWQztunHEsnEETbBbiZvdNYvEGcBXSwT7d8MWWk7k9RODaAzJuEWTnSuENtUPrS03NHYL+K4IdcTuSnPuXN03hlFQoSbFl3azyiV/S+9F6aewhPT7kPxEbwAQuaT5FW/t3aA/QxbAYwC0M5NqxSpXOn6DNv8AkO569TOTqj+CIc6hYDbjsxyLT1GbqE11mUNNs3E8kgDxcfTe7CABBTTylqspcC5ZXZ4T8OZRTW5MEdZ9339WglA== X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Dec 2016 14:22:01.7007 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR0701MB1725 Subject: [dpdk-dev] [PATCH v3 0/6] libeventdev API and northbound implementation X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 18 Dec 2016 14:22:08 -0000 As previously discussed in RFC v1 [1], RFC v2 [2], with changes described in [3] (also pasted below), here is the first non-draft series for this new API. [1] http://dpdk.org/ml/archives/dev/2016-August/045181.html [2] http://dpdk.org/ml/archives/dev/2016-October/048592.html [3] http://dpdk.org/ml/archives/dev/2016-October/048196.html v2..v3: 1) Changed struct rte_event layout more aligment balanced(Harry, Jerin) 2) Changed event_ptr type to void* from uintptr_t(Bruce) 3) Changed ev[] as const in rte_event_enqueue_burst to disallow drivers from modifying the events passed in(Bruce) 4) Removed queue memory allocation from common code as some drivers may not need it(Bruce) 5) Removed "struct rte_event_queue_link" and replaced with queues and priorities in the link and link_get API to avoid one redirection to use the API(Bruce) v1..v2: 1) Remove unnecessary header files from rte_eventdev.h(Thomas) 2) Removed PMD driver name(EVENTDEV_NAME_SKELETON_PMD) from rte_eventdev.h(Thomas) 3) Removed different #define for different priority schemes. Changed to one event device RTE_EVENT_DEV_PRIORITY_* priority (Bruce) 4) add const to rte_event_dev_configure(), rte_event_queue_setup(), rte_event_port_setup(), rte_event_port_link()(Bruce) 5) Fixed missing dev argument in dev->schedule() function(Bruce) 6) Changed \see to @see in doxgen comments(Thomas) 7) Added additional text in specification to clarify the queue depth(Thomas) 8) Changed wait to timeout across the specification(Thomas) 9) Added longer explanation for RTE_EVENT_OP_NEW and RTE_EVENT_OP_FORWARD(Thomas) 10) Fixed issue with RTE_EVENT_OP_RELEASE doxgen formatting(Thomas) 11) Changed to RTE_EVENT_DEV_CFG_FLAG_ from RTE_EVENT_DEV_CFG_(Thomas) 12) Changed to EVENT_QUEUE_CFG_FLAG_ from EVENT_QUEUE_CFG_(Thomas) 13) s/RTE_EVENT_TYPE_CORE/RTE_EVENT_TYPE_CPU/(Thomas, Gage) 14) Removed non burst API and kept only the burst API in the API specification (Thomas, Bruce, Harry, Jerin) -- Driver interface has non burst API, selection of the non burst API is based on num_objects == 1 15) sizeeof(struct rte_event) was not 16 in v1. Fixed it in v2 -- reduced the width of event_type to 4bit to save space for future change -- introduced impl_opaque for implementation specific opaque data(Harry), Something useful for HW driver too, in the context of removal the need for sepeare release API. -- squashed other element size and provided enough space to impl_opaque(Jerin) -- added RTE_BUILD_BUG_ON(sizeof(struct rte_event) != 16); check 16) add union of uint64_t in the second element in struct rte_event to make sure the structure has 16byte address all arch(Thomas) 17) Fixed invalid check of nb_atomic_order_sequences in implementation(Gage) 18) s/EDEV_LOG_ERR/RTE_EDEV_LOG_ERR(Thomas) 19) s/rte_eventdev_pmd_/rte_event_pmd_/(Bruce) 20) added fine details of distributed vs centralized scheduling information in the specification and introduced RTE_EVENT_DEV_CAP_FLAG_DISTRIBUTED_SCHED flag(Gage) 21)s/RTE_EVENT_QUEUE_CFG_FLAG_SINGLE_CONSUMER/RTE_EVENT_QUEUE_CFG_FLAG_SINGLE_LINK (Jerin) to remove the confusion to between another producer and consumer in sw eventdev driver 22) Northbound api implementation patch spited to more logical patches(Thomas) Changes since RFC v2: - Updated the documentation to define the need for this library[Jerin] - Added RTE_EVENT_QUEUE_CFG_*_ONLY configuration parameters in struct rte_event_queue_conf to enable optimized sw implementation [Bruce] - Introduced RTE_EVENT_OP* ops [Bruce] - Added nb_event_queue_flows,nb_event_port_dequeue_depth, nb_event_port_enqueue_depth in rte_event_dev_configure() like ethdev and crypto library[Jerin] - Removed rte_event_release() and replaced with RTE_EVENT_OP_RELEASE ops to reduce fast path APIs and it is redundant too[Jerin] - In the view of better application portability, Removed pin_event from rte_event_enqueue as it is just hint and Intel/NXP can not support it[Jerin] - Added rte_event_port_links_get()[Jerin] - Added rte_event_dev_dump[Harry] Notes: - This patch set is check-patch clean with an exception that 03/06 has one WARNING:MACRO_WITH_FLOW_CONTROL - Looking forward to getting additional maintainers for libeventdev TODO: 1) Create user guide Jerin Jacob (6): eventdev: introduce event driven programming model eventdev: define southbound driver interface eventdev: implement the northbound APIs eventdev: implement PMD registration functions event/skeleton: add skeleton eventdev driver app/test: unit test case for eventdev APIs MAINTAINERS | 5 + app/test/Makefile | 2 + app/test/test_eventdev.c | 778 +++++++++++ config/common_base | 14 + doc/api/doxy-api-index.md | 1 + doc/api/doxy-api.conf | 1 + drivers/Makefile | 1 + drivers/event/Makefile | 36 + drivers/event/skeleton/Makefile | 55 + .../skeleton/rte_pmd_skeleton_event_version.map | 4 + drivers/event/skeleton/skeleton_eventdev.c | 518 +++++++ drivers/event/skeleton/skeleton_eventdev.h | 68 + lib/Makefile | 1 + lib/librte_eal/common/include/rte_log.h | 1 + lib/librte_eventdev/Makefile | 57 + lib/librte_eventdev/rte_eventdev.c | 1220 +++++++++++++++++ lib/librte_eventdev/rte_eventdev.h | 1407 ++++++++++++++++++++ lib/librte_eventdev/rte_eventdev_pmd.h | 511 +++++++ lib/librte_eventdev/rte_eventdev_version.map | 39 + mk/rte.app.mk | 5 + 20 files changed, 4724 insertions(+) create mode 100644 app/test/test_eventdev.c create mode 100644 drivers/event/Makefile create mode 100644 drivers/event/skeleton/Makefile create mode 100644 drivers/event/skeleton/rte_pmd_skeleton_event_version.map create mode 100644 drivers/event/skeleton/skeleton_eventdev.c create mode 100644 drivers/event/skeleton/skeleton_eventdev.h create mode 100644 lib/librte_eventdev/Makefile create mode 100644 lib/librte_eventdev/rte_eventdev.c create mode 100644 lib/librte_eventdev/rte_eventdev.h create mode 100644 lib/librte_eventdev/rte_eventdev_pmd.h create mode 100644 lib/librte_eventdev/rte_eventdev_version.map -- 2.5.5