From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on0055.outbound.protection.outlook.com [104.47.36.55]) by dpdk.org (Postfix) with ESMTP id 02B0A2BC5 for ; Tue, 6 Dec 2016 04:52:38 +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=ZHRbqPd5y9rHFOGhbtYxtM1ptu9WUZswiFdv43zr97A=; b=DSraEd1v8lUlnhvtmPQi8N3AxZQLDbmibs2BWy4mU7QIAn6/ZgcMof73ZWujYaS9+p9zL5+6ovBuzdzEnhgLm+9hKDJL82nTL8bXpMU880qwApDnvATpvL3uL9UgApY3wcTRJ5MI7g5ya5ouhdoEMYmMlRy8/gkNXB/0HGXHPaE= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Jerin.Jacob@cavium.com; Received: from localhost.caveonetworks.com (50.233.148.156) by BY1PR0701MB1723.namprd07.prod.outlook.com (10.162.111.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.693.12; Tue, 6 Dec 2016 03:52:34 +0000 From: Jerin Jacob To: CC: , , , , , Jerin Jacob Date: Tue, 6 Dec 2016 09:22:14 +0530 Message-ID: <1480996340-29871-1-git-send-email-jerin.jacob@caviumnetworks.com> X-Mailer: git-send-email 2.5.5 In-Reply-To: <1479447902-3700-2-git-send-email-jerin.jacob@caviumnetworks.com> References: <1479447902-3700-2-git-send-email-jerin.jacob@caviumnetworks.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [50.233.148.156] X-ClientProxiedBy: BLUPR13CA0014.namprd13.prod.outlook.com (10.160.191.24) To BY1PR0701MB1723.namprd07.prod.outlook.com (10.162.111.142) X-Microsoft-Exchange-Diagnostics: 1; BY1PR0701MB1723; 2:D4j8rKcxgK2yvBz7iKcc39me0VZXOFJ+XXYZm+j+p8uhrAlnDCYFZWRZSH8XOw8sBpQ+7FEIhOavoI1eubkw9Z4eAErnZq6KYrcU+F0WCJiA6M5YYc8Ff0aqtgQ9b2QnPkU2Aoy1zGJr5DkH7L7zxBtk2Cv2leq/WZBGkRO1s7o=; 3:xGEn7Mgikk+X8/8wfUjtRBXdznPUNsVjz0SKoBxeML9muVspcqhAgNlNzLA/seCDD9uRyM39PNxSVZwKEJ1dJAWGSlph7WLZ2W2Dw3/XpUwjH2hRHnlXrw4/wdcE8bvffH/lLx23UB4DYr2Skv3HbvyZQIOpwpyJZgKNlwEFRJk= X-MS-Office365-Filtering-Correlation-Id: f3815e44-22fa-4a64-a391-08d41d8b50b8 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:BY1PR0701MB1723; X-Microsoft-Exchange-Diagnostics: 1; BY1PR0701MB1723; 25:+QbWzvSAf+dh+tJnhPbQmuCFXTGL2iUCI7Xe5W7CXGDecd59Tmop9iuS3lDtJZ0QDn2h78/FFkTKUwrBMR/fsI2yLGVyxStvx33IbOScu3VfawXqMebcgMnbYXYcgueNsQ62o1X5m8/1wiYBeEd8duBtM/AMNn7r83mW4dxsh3i92m8mzT+jDkJIVt5dvIj+VCopF1eZyu/h/P2LV+c0Qy8iylqDPVGepPd5NeAgY8+rX5WKhq9av+mj2tUI5G9l8RUIRWfTwfj/hwZf+q+BQbzvJi2xiQDvPpMiZFknkCD+IRLqnHmFFGc9jY0cWdqaDEFza/WpW3pHbsSuK7jcil4furot04A/kroLZpZxkuH++/F9QVEJw6xetHuRZrORbPcBU4uEIRBNmA36TG/AvUqBdEZIwkU/ZegEaNVHoC4Q1/bMg6z1VTv1qb64MOAGAxhlQgg1PDPE22otq46EDMdmSWo4U9NbrvCDaCwLFwM53IDw+llk3A02e7hlWPIxfO13DlMDc4qnE59N55XaUU2BsRtHdIXd4QESqTTISbNZ+ZI1+CS+miHy+m3MgfePluVo/J9phvC1BpEGLyxFI61Xg2adZkhhZlrYQ/sHGdZSdet4qnttu8GPIOvk+PAOj9NrOPj/dRKN+dU0rpw/P+71RpMvyxHlTWCS45bR2/T8w/LcOg7X1enycr7sFPsdCt8LdiqKpCJ2SSIzNvvzs5K+gNePVJc8hgqtapBCpUlf8xhVGKTognVJ26bNpsKlYF7sbPPWqbY2yOsz36rx+kO3zgP+pjRHS7DRnSvrvMDTyvSS5P6HMvy5UfCkLbqvjzaSQ4KGGXwejKqOrsAmrJQXNGsSNTtOHgsWyxiMzqsf74zbq880Hr/kFNl/CDBo X-Microsoft-Exchange-Diagnostics: 1; BY1PR0701MB1723; 31:lJgH7iDj3mZ8xlN9Tlt17qNabpZa3+I8OsYsVJxp7Z64Q1mfUsl94gA3gClDvxQ384eb5PXPVqyy7+CvXef6ovr2EUd6PIe/FXmDm+jDxYc9XqXVkihHKqqgVLWCd+NM7wtDEZwInrEcBmgvyhmQ1ZLIbrXL0tFAwPCekkZRqIUcHSsitN6NbLA207WAfwS6h8o6uN5yBhkGZ4uFb4t9xgd4n8pBCapLj/B8TMBJEX542YbKZpidkXdJ751yGQZ0; 20:K9m2oHW4YPDfpSStQL8sQN/QnHeuGHQk31snKrvw/VIdgXbscb5GneG29sgF1/Jr2UIJJGtJCdWSbgiu1ZYAYzR3PWouqT+wZMuBpYjwnfhsCrDZn90jRWBvdlueXq1mA+LVMXXSoo6Fm8p7v545cwlYh9lkygMsgC3fquvmUeexgZKv5no2PhDJCLjDzpIeCVYtl5N6XJFScmmcbQodGddXFAttViYL4mYvWPjxAwld+JrJSBJ7dTGSXKa6hOVm9cGca0uLN2S84L6VYAjpAl7qx+NTkfc6MEvqOLDsiVavbK5tKQ/S1DPTfVd19vtkpgzzF7MFYmy6BwbZ9uEnW2Ot1CEyzQZyPXfoscH1r2KeodknMZKczMDfCqqg4x/FPigISi6Dbi4vX45P+8atB2GHsr6GlE9MtiypwYFJArvvRUF9lTNAl6lvbGgA8urja49A3lHON+yOlIppsvKF7GraKUajCpakN/JmOV/DtjOo+0iHiAtZFgfHSVsVcZmibAGRaATAAkziM5g1RweISE0zhLilQROCj3co5VHfzcPv/0wEAyYek0H0JSlKwwz9roUz3Zo2fKXqp1fhmDPHMMIAWcMoficzeW/AzYlPdMQ= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001)(6041248)(20161123555025)(20161123564025)(20161123562025)(20161123560025)(6072148); SRVR:BY1PR0701MB1723; BCL:0; PCL:0; RULEID:; SRVR:BY1PR0701MB1723; X-Microsoft-Exchange-Diagnostics: 1; BY1PR0701MB1723; 4:LdjS21inMLRNY9CrMm8VLx4Zeujjogc0dHfnBhfsWlI21dlvlWOJtHDDyuzeG71dGG31sS+TQvfcP/isfFSKBbogI7NpubhYv4/BKx7Ba9PsMlA0MVyT000/RI3H8RIHRJASlwjbbKgti/xCbeChPIn8NuixR37PO5a1bZLaQPetM9Mv8P3nPgNWGFgpUTWf5Dm1mY4gqkBYQtoafs9si1punOUq3yH6eM/6RGidL2kbDv/FYr0rIggsic7IwGvcEzcbkfKaYotHV8KKQd3HZSw7GXfpszLZD6heSxqoROisNJSDG7/ZCwdpPfzsiOw5VEqoD/3vPNHPv2BXtE89y+CV+QFzQlN6e9vFx6Y7AepOn8S1WMLxd5DHazSnl2f3GKcepOwcpYiZK9YsskxWlKgFWW0lvukkTiGjJY+SirwCyDNqccamwG+tKGOAkvfAR0HWEknlvIxwm3vGkhMBP2O3GCMGB3tOnSpNlU2MHcFIbF+WrRtords5aFVx9APhkxHYJJRxt32chcAJpTsOqxBE0g64NkUEooDa5C9Q0IpzyU0+xTYdjAInD1/uDS8X X-Forefront-PRVS: 01480965DA X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6069001)(6009001)(7916002)(199003)(189002)(101416001)(110136003)(6916009)(69596002)(4326007)(8666005)(106356001)(76176999)(2351001)(47776003)(97736004)(2906002)(107886002)(7846002)(5660300001)(92566002)(305945005)(48376002)(733004)(42882006)(68736007)(50986999)(39850400001)(50466002)(6666003)(36756003)(2950100002)(81156014)(105586002)(42186005)(3846002)(33646002)(81166006)(8676002)(5003940100001)(6512006)(6506006)(6486002)(53416004)(7736002)(189998001)(38730400001)(4001430100002)(6116002)(50226002)(39840400001)(39450400002)(39410400001)(15395725005)(66066001)(76506005)(7059030); DIR:OUT; SFP:1101; SCL:1; SRVR:BY1PR0701MB1723; H:localhost.caveonetworks.com; 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; BY1PR0701MB1723; 23:HEFbZz6sDs+s1EjJtJKdxrrSVjXNySBPuarB9+w?= =?us-ascii?Q?DYKw3kW1pKvDiCkv2A7o/ruKtF7RJUsXQ3e3tmKJZr7AGgntss/0AT65cWth?= =?us-ascii?Q?vg1Lw2ceFB8kaL7dmgL+EfYCP4XssxaAc9cwI7XS6J54DeUPbyvv4evdqHM1?= =?us-ascii?Q?G+83JLzNWIX5fANzAHuG87YfQThz9gMbtg4eucDFitOyDbsDjsHCSSVfgjW6?= =?us-ascii?Q?TvhclpscPZcB+4K1YYM9g4A6a2ERR31cAg4tKobVdNlnwmbGiUGdSlw18yjK?= =?us-ascii?Q?3WVYYNUL7yx9qkOBe6ryWVuEFXW/1xKE/H05EKv64jLt4YG2pq0xxYPxJt0+?= =?us-ascii?Q?k/be8p9mY7IBL14MRmtYYMbc0b67JCTVKNOO5jbIer07nipJukD8VCHUwjE/?= =?us-ascii?Q?xk4+lu3sp2axgwU+345VjPpLT1I3VzZtpTi3SRpOUhgWQk95I9OFrUps74re?= =?us-ascii?Q?Ls0xRdvXaaJHredzgf1wybWAI2pq1aj1hiW+v+3OR96guVH8XKN+hQLU22No?= =?us-ascii?Q?XliVJr7AJ3Ds+Ci85JGJT/syer0vNKlVs5IgyHb9Nq51Md4d0hkFu6elG/oR?= =?us-ascii?Q?w6N3/hdFoLEWKk+C+MYjtz4fAn8iI1oBtXWCNiyfqQ0O8aKbjVfkqlcWY0/P?= =?us-ascii?Q?h2pnNAENlxUz3A/7aKRDsl1+oIY+1U2pQ9tlj8hg8/mmQ8I+BA1u//gYDEDy?= =?us-ascii?Q?cbGm46S5VAZKK/PkPX3lt4/0JZ5NIX7LXQnUJYV1x6z2OxtTO8NqoGNydill?= =?us-ascii?Q?kobYOm2eQg4Aby4rnqCOmiV6V8tCsOVwYq45qIeeUi8d+/uCSVwnhWhgcON3?= =?us-ascii?Q?SVhrO0UtLSuccAYcI0sYmQu8t7UalRMS1EY+4TKTZ+Pw11iZFTsXjjtICfnF?= =?us-ascii?Q?4cRX+mfRgItH6BRZ/2LTvQRvtUwe+uKwHyw7GD5mMuVe7ZMCcvqttCEsQL5L?= =?us-ascii?Q?A0RFcshB0utpfnj6RjAvAC0aWAHGTuEqYCn+SIymfPKxeK93iiv80rPdG1Ae?= =?us-ascii?Q?t1QjPBx0KmK6xTswhn4G3GEvHMj/t3K1FIXgN8e8b/GD0EtoYRjXLLmK0llA?= =?us-ascii?Q?u2lLt5XKi7I4pFA100pF2uzG+XZ8TQbmyvCzTh+VtHg1obuvYXedKBXqvzoP?= =?us-ascii?Q?LcLj6/kCCntmtB1SIyYPLc/lDr84o2pamMntbj/rViYlfP8XqTpypngt8bQr?= =?us-ascii?Q?U19b2thhIzQ/dCKQvLGZwdFZe5g2+n2wjXOE/1lxGkqz5l4kDNJ1UMUe00mY?= =?us-ascii?Q?R/maG6x2lqKjVii9bMDc774bx04a2HAPBsX8iiC0li/9n4tNC8OgfDPMYmZd?= =?us-ascii?Q?NFsIc+8RWc8yq8vQn0luUbaqeB2vDcxGYIkYy7tRZFr48IMMnoQJM4yXyuWu?= =?us-ascii?Q?5BZysIMaMySyhdopc/CdngoGY0S0R1O/zmqCVcZV9WPHwTxOHuiWhd7cDYxx?= =?us-ascii?Q?vhDMKk5XLlw=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; BY1PR0701MB1723; 6:wFtGzVhfGgPEQvQM38hWS95PZEllOSL09ktlnn4lCqA2xIzijsDm5eiQBlV8Ve23jkNL1ZBrF7OxFQ8AsUrWGeqFQLeCCAcgbjF37wIv4ojMSOp3gtjx5/fSri+DSELll0s8TasZB/z2rGV+4U3uvhfubd65M5gnCTCdKjmQh1BTYO+s+ANDZ2FCo7gv/ouhrN2Juvez5XNPIg2J5Auchb0LUswsL+kNn6GlDbsH2TTK7DiymuYQuwB/ijrYFIF9s9KntgDzyWY7YVmkEdsVxxxaBfCK9rtVKXJYwZpJfjFWrOc49TL21ohQkXt2y0d4B4KBYbC9kct1xnQDr6M8OhNzwEcL8GwZ4i2+KH3zCAM=; 5:QAhVwaXSfV2Lz/akAkzQK0ytCHgNSepB5GR3Ok5HGAY66UofUlGM37UPKXERcSvBrtCMgWfwXwzFxPODAwSPTgD4i3R6s1tmlLpxzQqyy9t7q161IY752zsgO0p4s32rS6PeQHTjF184Rq34Nssr7w==; 24:oMo+EbhD1aT8HsdZer0DgiC+THuAiJCYxqL6rJfzWjBx3uxJApxVWuSp+kZgGFTBihJgk98zwBFt9U6y4ACmlpr87svEEzc6SDE1WXy254U= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BY1PR0701MB1723; 7:Ksmfao46wNYTNr1p7ElX45SgvNXtOd0HyTqV+MO/sVeiGBfgALjt+EHBoEt6UZ7SsibhZuL42657bqcNG9+ANGIJHjV0gZecdjDjsgEuLaTGwwElOu1db98hwkD+P/v0J3Pp+WdBJ+P7Cug+pDS3cEnowoO2JPolwJCijq1Rlj1jF1omjXHSOIDLUkNwvE8FY4gjDvXukp6HNxUEC+XmpWaRfWi0Bas1NB+lDvmRzNKzh6vaod/IZitwepk/W3pHDcZ+pheIl75K0N4I8BnCPlczyAK1DAQGtt/2KGB6qB3RIu1zmvkk/awefQliS1n+HG2WN3TaLN34CmtDWOCxo9wizpfkv0Ma4VrEXDqv5MY= X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Dec 2016 03:52:34.5908 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY1PR0701MB1723 Subject: [dpdk-dev] [PATCH v2 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: Tue, 06 Dec 2016 03:52:39 -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 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 02/04 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 | 775 +++++++++++ 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 | 540 ++++++++ drivers/event/skeleton/skeleton_eventdev.h | 72 + lib/Makefile | 1 + lib/librte_eal/common/include/rte_log.h | 1 + lib/librte_eventdev/Makefile | 57 + lib/librte_eventdev/rte_eventdev.c | 1237 +++++++++++++++++ lib/librte_eventdev/rte_eventdev.h | 1408 ++++++++++++++++++++ lib/librte_eventdev/rte_eventdev_pmd.h | 506 +++++++ lib/librte_eventdev/rte_eventdev_version.map | 39 + mk/rte.app.mk | 5 + 20 files changed, 4760 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