From patchwork Mon Feb 13 10:28:27 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jerin Jacob X-Patchwork-Id: 20386 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id C6A4737AC; Mon, 13 Feb 2017 11:28:52 +0100 (CET) Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on0056.outbound.protection.outlook.com [104.47.36.56]) by dpdk.org (Postfix) with ESMTP id D35742E41 for ; Mon, 13 Feb 2017 11:28:49 +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=nTB6U9EWUywsbXCFON+JedD2Iec2pk2ybulk0j0+GY8=; b=T9ir/LNOJo21fNc3PVckSs1Fo8om61OEh/AVGnV36vZYcmvv+/Ey0KyKwx96uT/X4cBOUinXTdJCMBR0p278iWON8lfYfoLPLmcARezNvkyvBeUFtQWtoBQFJZsdDw9wqgiCLiop5mnZBkVHDiDR8JkvnBfYz/Ne3NoFj1z14BE= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Jerin.Jacob@cavium.com; Received: from localhost.localdomain (122.167.151.246) by BY1PR0701MB1724.namprd07.prod.outlook.com (10.162.111.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.888.16; Mon, 13 Feb 2017 10:28:42 +0000 Date: Mon, 13 Feb 2017 15:58:27 +0530 From: Jerin Jacob To: "Van Haaren, Harry" Cc: "dev@dpdk.org" , "Richardson, Bruce" , "Hunt, David" , "nipun.gupta@nxp.com" , "hemant.agrawal@nxp.com" , "Eads, Gage" Message-ID: <20170213102825.GA26613@localhost.localdomain> References: <1484580885-148524-1-git-send-email-harry.van.haaren@intel.com> <1485879273-86228-1-git-send-email-harry.van.haaren@intel.com> <1485879273-86228-16-git-send-email-harry.van.haaren@intel.com> <20170208102306.GA19597@localhost.localdomain> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.7.1 (2016-10-04) X-Originating-IP: [122.167.151.246] X-ClientProxiedBy: MAXPR01CA0032.INDPRD01.PROD.OUTLOOK.COM (10.164.147.39) To BY1PR0701MB1724.namprd07.prod.outlook.com (10.162.111.143) X-MS-Office365-Filtering-Correlation-Id: f75df1e6-75e5-4a0e-c5ea-08d453fb17d0 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:BY1PR0701MB1724; X-Microsoft-Exchange-Diagnostics: 1; BY1PR0701MB1724; 3:vzlbdINRjR3YPPxNhXx0JUOe+tE+aiu3sxS4kbSGI2Da/3QUxCcQZn2Lnt1xsx4+QRZgk3rE6JaUB2Osf9ngn2ZK3O/Go6mVfUqOVHaJIQmLQA6ENee/KfS4DPXlBDV4vIDq3EnihOAuYOPW9VNqsLaKdOoKiWOLT6sETkZzkRsOgzTkndvA0GXurWOEQK57DKvaMNoBET77LjBbXiRRTd8SRRXrgbmcYoYJIYuUVg+69qwv1kzOZNCnCA6SNyoOtK+n60L4Fwz7KFdBS5JmKw==; 25:ugcfWHnJAVLjPpwqoGVdUQwZASHfZyPfMtxvn4pf/R831pjcisLZWaL2aJTsBha3SQeT9yCgtdmcFLy9/qOBcJi6uXJTr+aEUzqg3TPcPwQjvz2YzdaeNRUn3KzPD3vjAPymrk+pyR+9MYgCqVUtm8DIEi3b5hb/ZARU/cxRHxp76EPR4FwbjUOZWcSIxiYOJnlH2kxBTkO7en3lHwVGwrja6QxVHaPmMhV5b4QEGXP6ZMQChuV6EFG3o7gofuCcMT7gQc/Rb/J4hnBdoevwyTkXjk/HmaTseIRs2ruL5J0tWAW9Befmu5Tu7ppy7lCqydCx035XHd63EEgxTOt6+pAMN0SlgFI1dXDYq0mSC5dRgKAiBRRunbPIdCyEh9UYOIHzhyHBfAV7k0lIubC5RfT2G/HYVterQem/YfJCUbDoJ8IWdCSRox09H7eqg7S2LQLmLqFCyBj9lm6xng9LKA== X-Microsoft-Exchange-Diagnostics: 1; BY1PR0701MB1724; 31:96zKbE4C+ruLPen06mP0eVBRoupGBznlleDWQxBVhMPlKrOc+8FQJ+JXx07eq8lRoNGU1lRHu4ZXzGGQTyp74waVksCMfd0eUrfFByZfSJ87f0DqkNJQqqGAlMBNiiKw0BvD0lw7e5LNAgYTVw2eSFmzbM3Wro9wcp4X81AwhIFTpaAvxmMpzfGR5x+Ijeu0EnXpp00tnlu1TdeC2sIOtGVwueMYQxyMbkrh65qtK3BNh7cyWrqbswI4UaGW6Awz1Zy1x6ZvlwNiv8RFnHnrxD0qmkiSbuSjagTHQiI3jVA=; 20:vuiF8GOasIxDPROMxna08KEmdpdPtdO6dKqYI1ONAWuktJqB75w6jA4oBTI1/J/S46i/XSVRmHRuSMFIsx9Sh1Ag7VvuAQetz0MNlT5yPt4+lO5RHNf/GTAf0RtO7/tMqRC85ZHiZ02mnBa44aZzK8rw/55mrHopHd9LAOJdt2FbUF+GsKW/5HqGn9lX8Y9r6jPWPsfuAM9rUrMzdiFJRFcrSyPj2Ij+k46ouynzAptipXvsPAVhrqpMjhnwLKQ9afrhTc/D0zyY1rkMJbIZM/kC5RVXJMLyGUK0f6J35DVgFGQc4a196ILfBqnzTo9cf/s++44lR+g6jfwCsXPlU/KzWrNoUAHv09Xu+GGZaMBNNIY2lhpw7pPyIa3G2xf/E5yT4OzHZBMf0+yDwc571Mm8nILqhw/SuiyUGR2Ji+e6u4/a0GGSE/nic6LRqeyXnsoUD5vq9ZI/iEERVohm+wUcNQXBV1OBUruQARuvp4f3PVl6gzpGjq7qM70rucNTEHecsu7JgIlFseOWJQG0toBgnKjcYIfci6VeikrY8mw0Oms9qhLW94taOTmuU7ZIwL8+v95LQ8RVB1YbVPiaqAe+FQAr+alOJeLfIpIY4Vg= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197)(100405760836317)(155532106045638)(228905959029699); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6041248)(20161123564025)(20161123562025)(20161123558025)(20161123555025)(20161123560025)(6042181)(6072148); SRVR:BY1PR0701MB1724; BCL:0; PCL:0; RULEID:; SRVR:BY1PR0701MB1724; X-Microsoft-Exchange-Diagnostics: 1; BY1PR0701MB1724; 4:yMwRt0lfjdfOP3Pq/SPpNYVrX3yos1ZiKzhDNH+VFlt5VUjYHwvW47gifbxeGgxE5IqMFnJfSD0hEJXo4zQtZEMzpWZoochm2ElH55ddmDwkhPA3js/dGp9jYPOVaTl9VlwiCcZTezx61gAyeJEnAy4sV6mWjpnOh4Q17Ewiwne/eiCoUDYHxy8IvYI5HW9eH6D4H46UWpb1eus0XDrdJmEtk0QEgVbMzeqEEO0vLoybs900YiVhO0/RZyu0JJWbpo/VDcYXuQjfcrvdVOveq91PtOgZHJ5GmY1wObFrN+4RlaOwnLDVaEXcbfsjJfEKoPEGV4CvGxLSR7AXuT3ww6vLSrc3ZQ0Cbp1BWf9VXWiFrGaeBSAm/GPz16AP89VdY5K6DKEgaHEebOqLrsqz7OwCfcp14MGCV99Kf4W3FsHht9A8ALlZ45heGCBONRgqC/vWCZq1J6vwSshuF7ftU257etQDGMY5Kb+7qHitJ77BzuzNk61c+jRZ4aLScscc7KsGxS5DDADqA8eaqlICGE7JuWCNvUHQlJWKlN7qsR87Ommz4HYqCM4TJc8R4kKqNqfMygRUKdtaT/wZxtZuS7njbGgm92FKX4hf5IucllGx0MzCwwc7dad63X1qz/dMNNepNRvCh0tiVTKUyMPi6twBLkPP5tuAPsw2GXoAG8dSOlK/RsqlcMFOoSfm66lzeqdsF5RW1WBJecwXSHY0mNpVY5x5uUjJz955YlJkX31VbZoi8fI44eUTEMdM73P9xzViKAwch7U78hEJPmZ10g== X-Forefront-PRVS: 02176E2458 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6069001)(6009001)(7916002)(189002)(199003)(377454003)(24454002)(13464003)(76104003)(106356001)(53936002)(53376002)(93886004)(50466002)(42186005)(105586002)(6306002)(54906002)(61506002)(47776003)(101416001)(66066001)(68736007)(83506001)(966004)(8656002)(81156014)(8676002)(97736004)(81166006)(55016002)(38730400002)(110136004)(9686003)(4001350100001)(7736002)(25786008)(92566002)(54356999)(229853002)(189998001)(76176999)(50986999)(6666003)(42882006)(2950100002)(6916009)(4326007)(3846002)(6116002)(23726003)(5660300001)(33656002)(305945005)(6506006)(2906002)(6246003)(1076002)(7099028)(18370500001); DIR:OUT; SFP:1101; SCL:1; SRVR:BY1PR0701MB1724; H:localhost.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; BY1PR0701MB1724; 23:VcW56Lz0zD659zaBN1dneGmMlK8kqGqza8sbzYk?= //HfpBALSGLxtlG1b66qKEJj5vIIpDPmgiI2L5qQUgfZald47ywYUwCHV3gZ4OKA2I2bj906dTQySlMRayB6ODUEriauup9nBr/NtumSGyNZ62nrnWp9KbYFRzwexZF/IZ7pCz17WIODAGZzxLFW6HI5cO7lGC4MzglPSj0pbWRS/CKKXTC+P/niAUVMtK3b16esQNUCCZuPUyVn60AA9x7jcZcd004b1fJDLST6B7Q0fW7GX4YxaHOX9/2idgY7Aw3vvsW6aYULm6F/ssZ2TNHH9vj+Py1xkHsGlEojGobVQIojgORU3nk6pTGe2Iy4rGtSRifL13bBvBiMvFjELH6zeef9s6GVnQfekU8Zc9EgL509ieTLgEe16zDlYNNSu1KqPSiFdA1nVHZcEq7LCmYEa6qsZTEtZI31lthF2zEpPnbB94jUxwVRjhvIagYiPA6gJo7hG4Hmcv6IWfi55eXpFNwKL16RmSOLFrCtIOTC80ecgIvnUBL3qfs0P99m245NZ6EPflT3huI/w0l2SOhlPYvsE3uGGj3Fjj0C6XkGJ5HczlA5pPrXo1m+3ztCENrybEtbdC6wGcdO5wqrZa01f27J2VD/EcAAIKUNu8c8iD53D3/o9rqBuRKPYcKoqlSp/4AIYnC3zA4BJr0WwL4DhsuM7TT03TTa3iRx8U+KRdDy6pwL+T5qF2Rjy3edOzRpy5+4aG/hmS0nDmwd0nSKnqxtEf9lQD0tmMsLXx2JyTbWCZ78eDgZ50jmCG9Q53qiRbJAuGB+oqHJQYLz/l7Gh7llq16+QBr5ogPD4lYsrjvZleskYtkcLx+bhChCp5zNutaYtKUCJQMerDPvoX8vWgUOmytwxcdnNzysjDkAyggjkG2uJAjs9nwJo3lr337AqfWnk9XbAmCwf/PrsF+DOtQtiHvNllEZXMJZVo+muhPSARZGAyHCTo8kvkHo+6TISdDjXwgo8fbFZNqyi/m0ldtfNk0oyoaQMGNJOAXHqpI4YFH4pFiKfbcsbxbkM/AH+OfwcbqCVGGEE/aXht6v5C2QkCdZJsf8nZ1PMBI3pSsmnBDI5AJ6Gj0h2JS7S2r3ET1vCJ2OB5FQawv/AnsqjhhcwJdeDoPy/tLJ+daoAiXKoqa860Hyh3n8WByu7mffYw8jSo/sM1MCDU25Ek44+0UlZrw7zxE9tPYUaoCNZPzq0pNR8T/n6Ja0LVRdzDV/4xN5eT1vlDv4SF5n0Swfqd10zGj+FqGG7YkR8TseQFxBsXp5iNARjIg8zYJI4ksOW7j5rQ+aXgjf9nLJa/SJU3cApnAW2rWnyY/kjmVzAShF8n77p4AIkGsKBEM6Qv+d8SODGBMNEUGLnbx4dhNJM6eb26Ct3+VEQA41ID3rzcQ== X-Microsoft-Exchange-Diagnostics: 1; BY1PR0701MB1724; 6:ILI3AbSsZn+J4z+17H6RuzGjSYJ71Mb/NrEoHdi580JQQympDGoip9aQG5qgpKBRjo87aaRWvokz+AwVo1j2l3M8X2tgOEiwrG79uta2icufNhiWAW44biinpKLEWlBUSmghykHyl0v4FCtYCd0A7WA8GRC/23925cNc/6HaeAElARVOMyEtGE9K5MIHJ7PGqaFut6WrJeTpBWUVuQBPvGd5By+EPsrroOQd6VdC2JV5QcKFZtUtE+PpdCRSIHnY2ND963tDK/w5jTYph7yTeVirl24HgXOiLqD9kxOh54/iV100viGAFF7oDpZ4Bb6zu80utIRtV4BNkWQIJYIJHPorZRyyu3bSxuAyxGXtHDrNiCxbSt/hNB6f0ynJ1I5fMoe4nNw/NW/+lIc856+bdw==; 5:tjQZhS0RUvuIUYoHh+En4Gb3uDvpv5lGyTpXANOrJh25t1MXmlEcHLwmFDUE7uKZdZzge0dohBz01ibLTdDnWayiSlIMdJEDkPCURddMQ3weWaX9WmymEjchCQ73Xu8R58zYSmiVM1kPKI6VssMqFR6ni162nMf1Y4WKIxRHBrs=; 24:IX7X8NzknjGC5a8dvNtiXg14yk+cvGiYuM8VMaxjP79sXDDiQGclx5RLTqg+weUg4f2vtdAG9ZgryM5F9EMG1kUD+FSKk25wX+IeArwbnlc= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BY1PR0701MB1724; 7:QW17db5iE1e5zRF5xmn6lKZzg3LBwmZeffNdIfkVXxNUwDtxi6odMQMth8TGz/JT+wksFk9lLSfA9bRMX6qKO7tW4j50PwubELXfCv9pud/mEi5yGQEbDEiHdZ0o2wyf7tuJzBtuuHU5PRI5MPGJnFxdKaItoQOdIICkIaF/hYNdG8pX71y7Vqvhp9mrAdNe64Ia09Ds7d99mjnxbm7akdn9/vv2IxrD7Q/zVCcIenqundz1SYJaDozdniax7wT5HgU8qbxPIlzAlVdnWAeZjKgMr24bG4YFfvSpkhE6u83LOEIv3oq8hSV5qfBEmQjjwLtYyOvoCIwlvidDBGsyKkpWZLjzEyCSoS9u8vJnYWqgSqHt557rzgeLo+uB9Gp+Hmc12BRApHAs/BxlEuHPs5xalDjoKRiEvMbsNx7OPaMJsyHUEvUQnNKaSG0hxNVJARR6/PGaITPU8wp2/i8RtWJJET1kPdrEGnwnt7vBLVVkh250Z9N6Jf8nwzH5ONypvJQ7jzMNo3RG4v6lHj9Gvg== X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Feb 2017 10:28:42.3629 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY1PR0701MB1724 Subject: Re: [dpdk-dev] [PATCH v2 15/15] app/test: add unit tests for SW eventdev driver 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On Wed, Feb 08, 2017 at 10:44:11AM +0000, Van Haaren, Harry wrote: > > -----Original Message----- > > From: Jerin Jacob [mailto:jerin.jacob@caviumnetworks.com] > > Sent: Wednesday, February 8, 2017 10:23 AM > > To: Van Haaren, Harry > > Cc: dev@dpdk.org; Richardson, Bruce ; Hunt, David > > ; nipun.gupta@nxp.com; hemant.agrawal@nxp.com; Eads, Gage > > > > Subject: Re: [PATCH v2 15/15] app/test: add unit tests for SW eventdev driver > > > > > Thanks for SW driver specific test cases. It provided me a good insight > > of expected application behavior from SW driver perspective and in turn it created > > some challenge in portable applications. > > > > I would like highlight a main difference between the implementation and get a > > consensus on how to abstract it? > > Thanks for taking the time to detail your thoughts - the examples certainly help to get a better picture of the whole. > > > > - Fairly large number of SA(kind of 2^16 to 2^20) can be processed in parallel > > Something existing IPSec application has constraints on > > http://dpdk.org/doc/guides-16.04/sample_app_ug/ipsec_secgw.html > > > > on_each_worker_cores() > > while(1) > > { > > rte_event_dequeue_burst(ev,..) > > if (!nr_events); > > continue; > > > > /* STAGE 1 processing */ > > if(ev.event_type == RTE_EVENT_TYPE_ETHDEV) { > > sa = find_it_from_packet(ev.mbuf); > > /* move to next stage2(ATOMIC) */ > > ev.event_type = RTE_EVENT_TYPE_CPU; > > ev.sub_event_type = 2; > > ev.sched_type = RTE_SCHED_TYPE_ATOMIC; > > ev.flow_id = sa; > > ev.op = RTE_EVENT_OP_FORWARD; > > rte_event_enqueue_burst(ev..); > > > > } else if(ev.event_type == RTE_EVENT_TYPE_CPU && ev.sub_event_type == 2) { /* stage 2 */ > > > [HvH] In the case of software eventdev ev.queue_id is used instead of ev.sub_event_type - but this is the same lookup operation as mentioned above. I don't see a fundamental difference between these approaches? Does that mean ev.sub_event_type can not be use for event pipelining. Right? Looks like NXP HW has similar common behavior. If so, How about abstracting with union(see below) to have portable application code? Application will use "next_stage"(or similar name) to advance the stage, based on the capability or configured mode(flow and/or queue based) underneath implementation will move to next stage. I will send a patch with above details. What do you think? * @see RTE_EVENT_TYPE_ETHDEV, * (RTE_EVENT_TYPE_*) @@ -935,13 +931,16 @@ struct rte_event { * associated with flow id on a given event * queue * for the enqueue and dequeue operation. */ - uint8_t queue_id; - /**< Targeted event queue identifier for the enqueue or - * dequeue operation. - * The value must be in the range of - * [0, nb_event_queues - 1] which previously supplied to - * rte_event_dev_configure(). - */ + union { + uint8_t queue_id; + /**< Targeted event queue identifier for the enqueue or + * dequeue operation. + * The value must be in the range of + * [0, nb_event_queues - 1] which previously supplied to + * rte_event_dev_configure(). + */ + uint8_t next_stage; + } > > > > > sa_specific_atomic_processing(sa /* ev.flow_id */);/* seq number update in critical > > section */ > > /* move to next stage(ORDERED) */ > > ev.event_type = RTE_EVENT_TYPE_CPU; > > ev.sub_event_type = 3; > > ev.sched_type = RTE_SCHED_TYPE_ORDERED; > > ev.flow_id = sa; > > ev.op = RTE_EVENT_OP_FORWARD; > > rte_event_enqueue_burst(ev,..); > > > > } else if(ev.event_type == RTE_EVENT_TYPE_CPU && ev.sub_event_type == 3) { /* stage 3 */ > > > > sa_specific_ordered_processing(sa /* ev.flow_id */);/* like encrypting packets in > > parallel */ > > /* move to next stage(ATOMIC) */ > > ev.event_type = RTE_EVENT_TYPE_CPU; > > ev.sub_event_type = 4; > > ev.sched_type = RTE_SCHED_TYPE_ATOMIC; > > output_tx_port_queue = find_output_tx_queue_and_tx_port(ev.mbuff); > > ev.flow_id = output_tx_port_queue; > > ev.op = RTE_EVENT_OP_FORWARD; > > rte_event_enqueue_burst(ev,..); > > > > } else if(ev.event_type == RTE_EVENT_TYPE_CPU && ev.sub_event_type == 4) { /* stage 4 */ > > rte_eth_tx_buffer(); > > } > > } > > > > /Jerin > > Cavium > diff --git a/lib/librte_eventdev/rte_eventdev.h b/lib/librte_eventdev/rte_eventdev.h index c2f9310..040d70d 100644 --- a/lib/librte_eventdev/rte_eventdev.h +++ b/lib/librte_eventdev/rte_eventdev.h @@ -907,17 +907,13 @@ struct rte_event { uint64_t event; /** Event attributes for dequeue or enqueue operation */ struct { - uint32_t flow_id:20; + uint32_t flow_id:28; /**< Targeted flow identifier for the enqueue and * dequeue operation. * The value must be in the range of * [0, nb_event_queue_flows - 1] which * previously supplied to * rte_event_dev_configure(). */ - uint32_t sub_event_type:8; - /**< Sub-event types based on the event source. - * @see RTE_EVENT_TYPE_CPU - */ uint32_t event_type:4; /**< Event type to classify the event source.