From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM03-BY2-obe.outbound.protection.outlook.com (mail-by2nam03on0069.outbound.protection.outlook.com [104.47.42.69]) by dpdk.org (Postfix) with ESMTP id 869D410B88 for ; Wed, 21 Dec 2016 10:26:05 +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=mTVZxy/4g0loKfL0cruN8LO34tr8g/lBobXGU6FeF78=; b=bWrrMWk8n9wd6rbly6fc9jPdXNWvukskStgydYcKKVLCTaXl2MJW2agpfJhJfAKbS3NsjiWs5pvn9eKPeOlp/ZVtfSWBZ9z74d6wkuoMgEXbrHs+ga9sEDWByPK4DqlRYVVbchAcji43KE7c7RGLTv2if8C9TaV5Fk05FTmPFpc= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Jerin.Jacob@cavium.com; Received: from localhost.localdomain.localdomain (14.140.2.178) by CY1PR0701MB1728.namprd07.prod.outlook.com (10.163.21.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.789.14; Wed, 21 Dec 2016 09:25:59 +0000 From: Jerin Jacob To: CC: , , , , , Jerin Jacob Date: Wed, 21 Dec 2016 14:55:20 +0530 Message-ID: <1482312326-2589-1-git-send-email-jerin.jacob@caviumnetworks.com> X-Mailer: git-send-email 2.5.5 In-Reply-To: <1480996340-29871-1-git-send-email-jerin.jacob@caviumnetworks.com> References: <1480996340-29871-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: PN1PR01CA0075.INDPRD01.PROD.OUTLOOK.COM (10.174.144.143) To CY1PR0701MB1728.namprd07.prod.outlook.com (10.163.21.142) X-MS-Office365-Filtering-Correlation-Id: f40afc61-f314-4074-98b6-08d429836219 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:CY1PR0701MB1728; X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB1728; 3:VgQr7Mi1VyZ/Oqxsl0cUpHIBVar1nfzFhGL+It38rk6/3pgiR6J+8e2Wpc5D2gVlTz5uy1s91BSWeJq1ZF2aGYC7PCCt1M6J4qU3MKbQRDEdZeQIBxesXbDThg+m3V4adqm3wtBLRm8FEqYoz1Z4+utEMse/vco/leJKIGL/I83t9w4TymCKJzoSBVQhXOG7JTPwEk39xjfHO5Lk5z+AhmQ17wdxv+7v57648d+Duw/ecZwIwlvmPFtldyUvFSHl2ILoyN7GDP3aDxiQssLc3A==; 25:60MglqI7UnwGzk5V5yGc3e/CVP8xIrxGxsEuvl8VCfIk/bWU7ZqRoMicVJ8ZQcS1LKCKw1D69vuSYBqqZ2PlVPdDtXtGxImg2+WdEPof8muZ5n0QOM0+9e9igP1jL0oTlLWiAI+xVv7AjQ21AtBHJLZAPoEiFKMzn30EJYr4lZjB5mzmATwVRtdAW39DQf5eTmbEX8VerHAh4deYKszWrdWu64n5j/BvjVFXGQ064UxNUvcPnoicE5DUfZ9CGQ4oqkwUJws9xQiqEN7fWwVSh64yX2lK98FtD12/SYU1SdJRkAWflfPKAtZ4F57Hqf5Ene6lygxpJ0RrgF97dwak6WCNRb2aj2JDzMflJPzRKxX+Uun/DQUTVoszB20tsMujCvJIWFclIacwkrhpbaMd/mTq1dsoUTkxOTSggzNw/Syv/FkMhZQawWDBSismhHHny2Y3EY1YnvftsUjGlYdZUQ== X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB1728; 31:7EY+lLgMJvHUm8aVoRrdAxJanpig1AZ6TO94+yPyItMhPFjC2cVn4NdvmKdWjiJI/tx30lBsh2Oacs4hUU+PMrOWul+p8r4xAkg4cfGThLqq9hzG3C/QkH2Z5SfsGwaTMxY8Wsr0NJj8tIDt6y97jpNc35og3PDwT3GXOeSqyMAhzcUmE68w5xti2JX0/K3hY+2N8pV8pb3MAnfFOgsMbagwNvs+XdYHWPC/qYivBhPWtJa7wDppdAL2IwSacxRi; 20:KFSKRxoYy1299WgrhA1Bn1AdrBMzzclK6KpN2+xUaYaMsgNHHoJpJt27NeUyc5TeeJEVZFMagHnOwNCA8YEN68dD06gqI/WAKXZbjA+ENzI6coTlTuvsxsbehJ2FiptFbXb4CWBaXdA0T6KR5g/8TAJCgLtLygmsltsqiUNnGXkGEbTkWIhqQXegK73tnnfe8V0ieR6BKyQsVmO5o96qFrrBWGzzbMOq/VuA70VpJZ+PXzyqVmjveU9KWKRF69Fk5gXLhXP7YCkjQZLhPBU4a2Mx/sDQwC1xR5YeqYwLeFp1H+snOgyT2faTGSxEYSZ/Oz2OBtOIcxEQ7Ov2zRlLAIqwyc74LVMyt3QeOKq0Gx9u8brHiEBGoZEYrjhzdZpA9MUgQhYWe0EBji4Jx+aeEhbfV942XPZ6mpNYr7ywdTd960+ztrUfreeN8fTYlrAd9oWhvrXTTzK8EYHFW9LlJnZVsU7KgxlravJ+QsI2jU19v2PYuev7qYpb9/GULZ6aKfeKTA5xZuxo4bAZB81FoXFclDOoifc8syP2WixeiT3SwzzmlPAgXdKvOAZl1Qob9kFPaZg97QgAV+f2bPrd0t+IjnPbD1sgdgvw5uUULYM= 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)(3002001)(10201501046)(6041248)(20161123560025)(20161123564025)(20161123562025)(20161123555025)(6072148); SRVR:CY1PR0701MB1728; BCL:0; PCL:0; RULEID:; SRVR:CY1PR0701MB1728; X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB1728; 4:BzEP+eqDIHLonVPPoOXto2E6gq+8TMogZJLRyPpvLU6ia9xNjpkUv+5xScZylo1jGunHZ54DCs4lNN8k9/RGOgaALT5QhBYmqL5M/Mwkkim5M2X+iHMiNokw2C3pHw6EQpkAQSsSH/7A/GNBFW45s86SL4FRYqlWCLaTId4JjeJZJVy4b8gvSpgYsIqgL+17J74U6Tq+11JcomAmHbrx20NHFRoO4vGerJj0IR/F9uUsxT9xdFil+sKbvC5zdarg6pjm6ulL1tM3msAIUn/kY2piMN57lVWZfL0ZA0OZIIGBmPx9jpZIvaByvt5+ysKKDNOT1PWzEGSTX6MfgAySlOuJEXk3FGd1jTleAk6g+44Hy/ZC5rloyHs70XIgIgm0GraKWmCKcbWrAsC0CiwNUYlHyx8Are0W0MZh9Wk58J3Omz6DJ6fMinnDd7ZDd5dskb0UpUsZ9zNdYfL6jfJontlJDKH8en3uTbURpxj6DxJpwDJT3jJePQNpMmn1nZibM63YO5zL3CTe3Q2SL+f0NrxMrrC/hTu2yWiAn4S6A5imTNq7aeBsPl4wVRrN4KlKbecRz+BSuAx86wWjq3pqww== X-Forefront-PRVS: 01630974C0 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6069001)(6009001)(7916002)(39450400003)(199003)(189002)(7736002)(68736007)(92566002)(36756003)(105586002)(38730400001)(305945005)(4001430100002)(5009440100003)(106356001)(8676002)(81166006)(15395725005)(50226002)(8666006)(33646002)(81156014)(42186005)(2351001)(4326007)(76176999)(66066001)(101416001)(48376002)(50466002)(189998001)(110136003)(107886002)(6116002)(5003940100001)(5660300001)(47776003)(42882006)(97736004)(6916009)(2950100002)(6506006)(6512006)(2906002)(25786008)(6486002)(50986999)(3846002)(6666003)(7099028)(110426004)(7059030); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR0701MB1728; H:localhost.localdomain.localdomain; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX: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; CY1PR0701MB1728; 23:8cdKsfYhlVFXex4hejifx4xjaqopICJVQAb3dre?= =?us-ascii?Q?iNm1bnA/JdS38QX3Gflc7emu7vS5hcIBN+G7ISqugzrTP2zl6JiFI5N8+qva?= =?us-ascii?Q?PpZLgBntbemjMolPYQyVkGB9K9emWXH/mk7px7jg/cQozL7LAipbSUJMIJdQ?= =?us-ascii?Q?lRXtzZwQKQR6Ny2YYus17pmXxW+s4Zs8PN5N8dDQcG6/pbUAeoBqjtk2nRAs?= =?us-ascii?Q?3d85GaEO3Lgus1PXXBZhcKtsQ8veMqQCpARa1RksS99+Hwg5n+2jla+MmqMp?= =?us-ascii?Q?qQgUngVwtnQd4oOPrCGx6HyTeJDagkuB7QSyeFrGRlupSLpCszr45TXIy6J1?= =?us-ascii?Q?nZunXbaZaJG0vtxKzdoDrFvARHMTHnyenzGEUEyqECx/5IcH4ogvn3ct8Sm/?= =?us-ascii?Q?/lAoJWUlILqwpJIOMb3NylJpCN6K16UrpqUysbExwG2GVYaLl0Wu6BcwKRV9?= =?us-ascii?Q?QNpW/Nrb8zuqvZGPDeiKpKj5CCGHb3EJiRfADlNlBO7X/RW8nOuJNW+90+fi?= =?us-ascii?Q?0zXQf8qUCjwt5VekEvioanyqXnYv/vW00Bm2ACLMt+DeqzmvLe6lPMlBCD2W?= =?us-ascii?Q?qGdW0CJnX07fG60eIP5GhmpqAew3XurWGMEzaiKFZt2+iQVhTZVJ5Es7G/uE?= =?us-ascii?Q?QOZxc9CUnCmMK8GRaEnQ9/2kqVC0YeeJi9+sc8PRR3ewxzKqX48f4uR/5sw2?= =?us-ascii?Q?MekbiqqE+9yHWs//XJA7Ar98U5+TbVjMnjNjx65aF5Z2BxNLK9n/7zSLEdxZ?= =?us-ascii?Q?WowKoatn0AkoEA5wx9IJcEi19Xll8A8gKCbxqT8h+aTNRIQ8T/Ksaqnvik7r?= =?us-ascii?Q?jIOj5ZAj3U9Dle8UUzdCF85b/guwsGxKgeVVmIrT9HiuDSBsbJWGCD1bUI5e?= =?us-ascii?Q?OSehKAuJYYva0ZXkfVyFnbRg5qBmbGvSiHo9yfi54ZDhsLIdIuoRE3Wime+Z?= =?us-ascii?Q?K7gIE2Hv4VAG1I2U/xQEn3EriP6AgbmeeeqXJtZQcoboNJ75ACiltNCwOz9N?= =?us-ascii?Q?hCfrjC761hCUP9piX1sNJS1wL5LwKavmRYoChEZPT69JYj6mSMlm2kNHRFOU?= =?us-ascii?Q?v4Yo4erZV2h4dj9XwVPPnZLeSI9K6w8FpmtJLotbQOlLKKgYHYimVzhEO3x0?= =?us-ascii?Q?+bZiiqVKASSKv7tumZUt++38y+kbUHm73i4ng/HQvAoWOKpAwvkI29ND5OUV?= =?us-ascii?Q?PMfmemebIBnxdR2kWXhGzbLhur/XMD/ZqpnMlkAOY/8CGGZsFXLYYveWNe9g?= =?us-ascii?Q?7Su2keTcdFSRcmnIJtgkkEp3stqzr9G0N/HDXrCy/w5kxTqN6fb0EnDTtjWC?= =?us-ascii?Q?SjwcuLcpUqGzqDwcyLoXL4xw=3D?= X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB1728; 6:Y/8tWPHwo9hDMXC+Ww3MNW3VbP8C5sMnKjKgClDk0bHIdalOVAVbtdhr6nJbOceSzpQWMtadGmJVMk71M2R7ee4svU0IA7f0HFzM6pS74Sn1p8gExAYwu6UeGvSwgOgSDStqiMi6O6yQIS/3tzITNBA5oqdiwuhAQM7ARXQWNjVE8uDuMqAGgvf5qkY5Os2YxJVWHb4KvBktNWP4ZrqGGya9xVm9P1Prl2FG3gx7vf5jdKfKo6TNNnliNrEUXYO1IiCtvJQkk48H91cbQzSwegD2qu8h7pmMrEs8IyIOmTrYO1iTQLDlPwDnWGsRXNHsz9cpTUc7loM9F5oIK80XE7vZota4kq3mB7S+fD5fcAcgGLMm02O6B6GzFxe2bT2SXJcuf4BmMX6VEIpI3PW4sWz926OkvBj1Mljy0G9uC4c=; 5:JlV9EDrT+ji8IaZ2B8qtFCDchDwtipR8+Px6HQ8t0aimqL2VIMxoo+dm5pfUjkBvD6bezaQVB+o4sA2U7x1XIN1JO4/4vaU3O59K3j5WULsto3+i83y9YJHDrGntxLwCvaOnMbD9LnT7MKN3DoWGNw==; 24:U6PROCgwcpE/P+Wmqf3PsrjKHuzzF2ja57xJmPZcXQOGSUwl3te5hu+v4eNHs/RPK/63z5cu7icenU/ixNMwIdoFvV/Wsr7Z9aVP+EDd05c= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB1728; 7:h9oYHF1Ur9GbMnAqOAlCoaGBMmVkX2DVSL8UTTAqZPcwMp0Rk2gbROaU3C9cp/F05tJBf0Zquy+/g9YymR8DhqY53cIhUyAhdr4d3s9HuRldxYNm9fW1yrNCG3dQzOt9b5JAETsY6wOsv6WFDeR/PIHuRkZSHALjg6Xmmx6U1AN1JqXWAz0b5nDBzkdDLbLEUJ4TpBtZThX/ncbQHdRQfl0sZyU20vJmqWulu4APPrf0u5RumBc3QPjlhtU6It/G1ECOqqLh8Trto/intahxPWYWLUA5gQO5MvYdFF1Q0ODdE460SzBN/lRz3jRl7dAbvGnod/rBKfwJ75/tPVQW+SgELhx04rGUD/dhqQ79+dJT4rRzabz6DJUivT21zQ8605uWhbvum/MeOKXjKZPHyEOodC24TbPC5nBZQh6ISsHc+HNC29HcD9jPzhtILp4fKxBH3B7KsxIoDsfGCeKRTA== X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Dec 2016 09:25:59.4683 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR0701MB1728 Subject: [dpdk-dev] [PATCH v4 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: Wed, 21 Dec 2016 09:26:06 -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 v3..v4: 1) Fixed the shared lib build issue(Bruce) 2) Added missing "struct rte_eventdev *dev" in eventdev_queue_release_t(Bruce) 3) In order to shorten the macro name, removed _FLAG_ in it(Bruce) 4) Fixed the wrong 'in-reply-to' while sending the v3 (Shreyansh) 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 | 519 ++++++++ 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 | 1222 +++++++++++++++++ lib/librte_eventdev/rte_eventdev.h | 1407 ++++++++++++++++++++ lib/librte_eventdev/rte_eventdev_pmd.h | 514 +++++++ lib/librte_eventdev/rte_eventdev_version.map | 39 + mk/rte.app.mk | 5 + 20 files changed, 4730 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