From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM03-CO1-obe.outbound.protection.outlook.com (mail-co1nam03on0064.outbound.protection.outlook.com [104.47.40.64]) by dpdk.org (Postfix) with ESMTP id 1D5AF2C4B for ; Mon, 13 Feb 2017 12:38:09 +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=BO26L3zULrVQe0Ix8VIykHqFFr+A2T9LkVDYVcVOqpM=; b=gCyCHueDphTSEyYfYM9odMpKu6ulMr7g8b8yOEbZTWTN2RsG9HLdtiRkctZkFUtBZtXlPvOjJuA/5Kv/iNW3BZju5J4lq8NI4aZRvBxGtZ6+Px8OvRjzDbBhw4eetnyRtLKq2k8/2Ha34mwLmHPbkKVwhFAAwKqP2nNNqf/Myl8= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Jerin.Jacob@cavium.com; Received: from localhost.localdomain (122.167.151.246) by BN3PR0701MB1717.namprd07.prod.outlook.com (10.163.39.16) 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 11:38:02 +0000 Date: Mon, 13 Feb 2017 17:07:45 +0530 From: Jerin Jacob To: Nipun Gupta Cc: Harry van Haaren , "dev@dpdk.org" , Bruce Richardson , David Hunt , Hemant Agrawal , "gage.eads@intel.com" Message-ID: <20170213113744.GC26613@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-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.7.1 (2016-10-04) X-Originating-IP: [122.167.151.246] X-ClientProxiedBy: PN1PR01CA0082.INDPRD01.PROD.OUTLOOK.COM (10.174.144.150) To BN3PR0701MB1717.namprd07.prod.outlook.com (10.163.39.16) X-MS-Office365-Filtering-Correlation-Id: b6efa728-758c-4bf0-a6db-08d45404c6d3 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:BN3PR0701MB1717; X-Microsoft-Exchange-Diagnostics: 1; BN3PR0701MB1717; 3:b3pA9vkfKT/SA7cLpeUWsfBGdCQVrzuXbAKD6cI0yX6uitXXJIoJbNHXAwnDSs14xoZykM8EArbbPGjW3pAIaESn367d73f0Xm7pLR1rOTQt+76y7gCYSZUEdxChkMk9yu4h2WBisCsiSNzXnqoorPSCwJiRuNCghRyUceljh3GMQ5KNFcGp06cPA2OlwzeumPn1+p59LM7TeFAqqYgDMs/iF+SiV/ne/KrJt+u6HQUYE6O4yrNX1QEcJJ9TpGIoU8Ex21jB1arVCYF/pMaNnw==; 25:owxr/Pza47Caga4ZGDAIRyR85rK2IRX9H9Dm4f8CgoTWE1sP5Dlvair53WjRbg7GhKGNDKGSyoHZquqzeiOr/28ON6wHEgnArWZtw7Jb+p5iRMl3xoPjKkEKe32P+LSbBscbgrX+9YMJ9bsQHgs0zWoALaKR5kLLOyIICeejuuaInaHLZtxV0hnKEyXHBN8uGsXQxOLPU4hT+sDm0iW0RTXi5IMg+QgzfeAJ2buqsEWbW0uQm4RXOk08Y+LoLhV6x6qIwZ3M1bKTDVCL6FiK/ib7t60gXSIttqG4mVx/8wNkRkKQrEvdVdikwS3af8zNzkcC/9587LxYtwqZVoeT+kJdn3WTGFnJReEd4b6D3FG36QXxaiazT3H3n5wtnkuBQJHwTIdbYYD+Yx3+I8d7/J4DIHaoh53FpFxBhJY2OXEMxgH1gyXwm0SdKZ3wrqYLDxyPo6ihYptKbslvtULMBg== X-Microsoft-Exchange-Diagnostics: 1; BN3PR0701MB1717; 31:dl/3t3HzyAZSwhffRFzt2KbxU9qK0R0krAXQu9IUjtqbnI87EHryNz7T+Fk9rYt15av4peoVhBh9w7bHUI41xweBuWaEcXZdLFH7HQJwHxrsGQA+YlfEfz0fgHc6b5gs7FrKvdXC1+KRA5oiCEL7ELL3169mx3rKe+XFSyWs46yiQFHS0q9BoH8q1nZ0JoJpBoKnRn3vYuatX3Z8vGX0dsVqVKBuG1UrZBa/DhLV0/py3ZNX93fvWe+osNWirq6BjpaCYCjBDyHSoe007NsqKw==; 20:FwvxOn8k9UORFS1stl4ZVYKbZVlH+DvX35tapBLSYFMfSqu6YPBDa3wyQjODFdTgbGujmeCn0Xz3SS7BcZ05yRc7ccNVems6rxcltJlu2iYWoaImNluLIMlSaxVHfH51a6R1TDU1mTxrX+V9rO2MmFMHf80ijA/Z+s609xViWKJQWAp/PJHlSB04dE37BxKxe5Eq5k/1kwGtRGpLo84eKTHd+m8w1oh700BLTmtE4qUoP6nCTSSye7hCdTVxpY0JA+TlLBESxCvw3bCZMnEnF+ubaRcEaKmxsqjnL0S78tSVsSzeYJilA0sLrUIkGdhvxr/EoFSvv/N8XgCoNzSaFgO7hizCX8Lme+RkafCPQJyyy8AP3pjfLJpWNhdT4Gf2tl6/Lvq6DMujnw/Y3LslfcdeXsUb0SfLcQdmp7NwHZylL+ezjzkUSvnvcR9rmljs1EUYvXUNQDNiqry9YlTybG2QEk/l19qnl3c47NwXG4FnodPkV/Dbwjcgn7oMawQdRbVdlPj849KEZeoa7v0HyOXaT/2lshcC/2IEzJI42dR6aLIAYh94IUfcNuvwR7sv9GV67+z8TrXVgTvh1o1WF+D5k5wJWOy3OV65uvP4uE4= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197)(228905959029699); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6041248)(20161123564025)(20161123562025)(20161123555025)(20161123558025)(20161123560025)(6072148); SRVR:BN3PR0701MB1717; BCL:0; PCL:0; RULEID:; SRVR:BN3PR0701MB1717; X-Microsoft-Exchange-Diagnostics: 1; BN3PR0701MB1717; 4:WNRz8RENA2/JcVyfF+JxsdK/vHmRROFwF8xWjr4pGxLd4ndty8bNGFNPx5XMBfSMPITz1EsetD/YvsEcHYtnA8/qgkOsj+DfwlWR2Z8stHB6usRYej9VoJtqKI0Heo3pxZbP7HiUmCmmk0L4BecDEpR7s/svnztdfm0mHt9SiFpvCGp8ioZqXjGZ8MhX9eDB3KEMLl63d2/PdIA+C2sZTtEZB4qm8Mm5r0j0Iig1+Xuy5U0o3PyvbykRjdz74IYhl5VmO976bq3aB7q8dHL7+QkMhZYsOyf32WRR7EZpFLmClEHx13LqukOZUh+6kvpS8Hryz+itxpw8E5NJaxfx6aTsS6XI5sxeuAEUNZdFXroJXZGsYm73s0r4H+bnWxL4arpbfF+LBUNlLBlRoCSuZTP/CXZnbUOWJveIJpHwOmZRh7NmuNy9Y+aZ0/B50Y5Z2fBcCUYVmqc5/a56Q/YBiZvJShnWWBCr33HdBMx+vxiwUWSruOeSqTEH+NncQnspQ/SJrzF7ca4BDMbnSWYMTGVd3bECx1q71lw7huCqc9Tgqi2fgc8pA5wAqm9CB2cC2a8sNNg1jXkk/V7piH4nasP17NZj3QE6tU1Ry0HGLKR6a3ZgsPcBcL4rYNoTT4wvRR/bKovjQUAeNuduFU1UREQcaCM+zdbFTCfmIrbFZR+8xebc8vnEL8ROXHrmjGoQ X-Forefront-PRVS: 02176E2458 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6069001)(6009001)(7916002)(39450400003)(199003)(24454002)(13464003)(189002)(53376002)(7736002)(97736004)(83506001)(4001350100001)(6116002)(53936002)(8656002)(6246003)(6306002)(110136004)(4326007)(6506006)(54906002)(38730400002)(229853002)(81156014)(81166006)(6666003)(50466002)(93886004)(66066001)(55016002)(3846002)(47776003)(92566002)(68736007)(1076002)(23726003)(966004)(305945005)(50986999)(9686003)(189998001)(54356999)(33656002)(76176999)(8676002)(106356001)(6916009)(25786008)(2950100002)(42882006)(61506002)(105586002)(5660300001)(2906002)(101416001)(42186005)(7099028)(18370500001); DIR:OUT; SFP:1101; SCL:1; SRVR:BN3PR0701MB1717; H:localhost.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; BN3PR0701MB1717; 23:2qVpUoqmbvB5ZqdnyGi01Q6GT/LMDZWW7u7AROI?= =?us-ascii?Q?YGJzlZ/cHc7jnh5R4nDhP6M/hn6EdKrjLYWAw8sYRPafUjYi5dlcmzQccMd3?= =?us-ascii?Q?n9abgsCmu3dhKNBmGu6i/iHf53P53jr7hDBpVp/ojE8nvFwESJfKyNqujHdv?= =?us-ascii?Q?EidKksSWnsplI4PJF+piK5Mp3FiasrBNJnuTLTGT0+K1RBZn3QtFL5yVrZFC?= =?us-ascii?Q?j5VPcGK9JIcqOr/8Ui1/wOCVDTGTG8gUAOxog7c7Wa3ZBHgyHe64v++02a6+?= =?us-ascii?Q?k/ND0igCJhoRCWs6qYzEmk3VHq2rcSYftwNCp11U9m6RXFICBnXZSUmB6Z2X?= =?us-ascii?Q?NSI0DCNaeo+/3qVmGfs1TsHFbTvEFQoiTNZm1sgh+HidwJ9Ud7ABmALCUoZl?= =?us-ascii?Q?+K8GMMH+Q6gplTNpT6yN2R4fdyylwdfxODKaxNwwfk8YIvKpbKvvDOpxz71g?= =?us-ascii?Q?ISHorYmIYcYoeZAyvo7coWdB2bgcSIWna/ymBcstekVT42hYIGRoUry9SJ0F?= =?us-ascii?Q?gRPxTk2E/SKiqUWeq018/c2KOeaQEq2iXHJdIrUoPBTMlo8ImmnjHVwK377h?= =?us-ascii?Q?OkeSRV1J41VM7tSPJ5JIgYu2gwcUSs9sb98BKW7gUEHL/Zx5ZrW+qPBqrGDp?= =?us-ascii?Q?OAU9ouc0q29+QJ1kMKg75Wya3OwTDcQsyyyxdeN6QS+iXWp8fQlyFFyS2Q6i?= =?us-ascii?Q?LB9F/9YwT7NCEt5DqGEns9U08oXjIdWIHoBAx1FnxZtL01sDIaCJHZd3YTs4?= =?us-ascii?Q?xo9KEdp8n9zwaHTtNWAvq1um2zl024lsXLA8q73EMdf70jEuHmaZ521407SG?= =?us-ascii?Q?d+7UZz8lVFLUp6rw4NNh1Oq7jc1v9h0mAddF6CT1m3rAkPc0X+20ZYavQc0m?= =?us-ascii?Q?olnC4mUrdX8TNcLA/Oktqp2YkQEZFasZ47qkmDJWRYcN0Rwa/m9tj7FNAKyG?= =?us-ascii?Q?oBxSBWXqfm/HQtjJX5LjWx+ma27gsjs4fVpflOLnHrRouBWNu1W5C3s/sHSB?= =?us-ascii?Q?y73m1hZmi3j1hTDtwHzA1OIf/x9IR0aMJOgaQdKc+9JK93KOaN4bhacwuiVl?= =?us-ascii?Q?v/fEEP3sunqriBgS828o7TyeYeceSx5nVEToFjtj87ijiADv7bn4YewM1WqF?= =?us-ascii?Q?WdwnpVlyw3KEF0S/uY51VKyO/DHVG5xKEx7MhATfsGrBekBcJu+4RYNrvBJr?= =?us-ascii?Q?tIYxDnw4RX8hN+JTatgE7Za3PM1vwkTXf7QcgOCu9iYT61K4Cgk6bCVWFKHj?= =?us-ascii?Q?fJ/gVQOOp9pn5Ma1DhLSW2DR/3LWuWrWn+hN3WIvXNN+32Flsdv/XJU7Iqt0?= =?us-ascii?Q?IO5GDNlDVK8lo/LEPbSiR4JjQRf6rZqyOvMQ1Q/LaxyaU6hxueJYYARPbS0J?= =?us-ascii?Q?uqMTRerCScoyEPlTjTEdfsjRBx+WU7WMM1XQC7HMAk11go8Ig?= X-Microsoft-Exchange-Diagnostics: 1; BN3PR0701MB1717; 6:naJ96xB69RdmD7JPoF3rEBIXdzEoWBb450dZtKu40zrFupi9cBhFK3v6PlFdn9uyJPkWIV4sfkTL37ohYBC99NXEijouaY2lbkeYOe15dQXE9jjy54m+JuCbD8CzfLi9UQ8bwaTVtOIpKE5nkRJMNbtCJ4mRWyS91a0QAwybMyMkbPPOxLInK5ngIf77RW2opHSGOAKpa1HOO44Q/+SC5y7hXE4g3nxkx/aCt8XCOBhNxzlCBPOnR4TIZQarR0k2f8D5T6oCQbR7vVINpN8sm400/d47fsKxN7uBXvNib+QZ0w/XkbbU8w9NleZWgZG/y/GiyqA80f3ggLebt2d8lgHZfURRkvyxa3rGrPgp7lPZ4ybLjYpbczfKhKsSSarkqs3N0mMIghpxD855rh6WgA==; 5:6cLhAUmfLxuflGlBzTpRrvxVKRj0Hc3rTdhfo3Zgu/3nkhxaLjZovGNAaXwOMvRQUWw5MClEQYcsVUPQ+cJHzSL6Z1MyQyMcMk++Izw+jf3m09fC8b2NpqlJePhitqkJ5QTnFGPAAKh3ujf/9Vhquw==; 24:D5zFaKApNQN5XIgI2X2nFYj8J7r8r2PkTiirjNRwyIHYH3p2nhYuuiuykNE/3x7mQAMnS9RKZfWfFXGmuhy6mLSn/x15sqv/MoVYhuxErNA= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN3PR0701MB1717; 7:VuPWkekGNinXRYYDrDqj9/u2ECqo7Hm2UxhaI3NCXmdO9bUinm1GPgCy4RIg2zIXUqHLN4+6Io9i4bQMCMnKXuiYMmpZT0vvLjLZkp5vm8oNHsJ4v8mn/j6S9rDBgViBgMq6MmqMACLo7N+D/H2SmB+0dlxrv82dYdExSah0Xb5TqAQgr/hKUurk3cqp3CxT7odkOT6du9Ok1uwFYeKxDzCEuOFKmNTpc5YEft4AMhnP6pUOS9ULG1cIvF4p5gLFs89YrQ7s3041Bg+p7YQOtDW9JXC+eTiwsM8neYWOIwUEA9xi911/hnnD3zPq0DRktnNtfAgxji0ykhh3umilwLXbLQlBsUPg0pGS5CuhIlc1Im9wI2PdzTjgMWLWS/yjjXjIfyH93fUHiE+JJV7yHE/Mt8/f7lM+51Z7t4ujCXUEDx6SsBaPENRJi3bM0IsaHAwnwRQh2TfnqOk01z27WwRbkGEXhOkRBkpSfX8iclOGAG2J7X7rONj4HLg6vT0c60qd63k396JkhjGO+5eoNw== X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Feb 2017 11:38:02.6608 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN3PR0701MB1717 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: , X-List-Received-Date: Mon, 13 Feb 2017 11:38:09 -0000 On Wed, Feb 08, 2017 at 06:02:26PM +0000, Nipun Gupta wrote: > > > > -----Original Message----- > > From: Jerin Jacob [mailto:jerin.jacob@caviumnetworks.com] > > Sent: Wednesday, February 08, 2017 15:53 > > To: Harry van Haaren > > Cc: dev@dpdk.org; Bruce Richardson ; David > > Hunt ; Nipun Gupta ; Hemant > > } > > > > on_each_cores_linked_to_queue2(stage2) > > while(1) > > { > > /* STAGE 2 processing */ > > nr_events = rte_event_dequeue_burst(ev,..); > > if (!nr_events); > > continue; > > > > 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; > > [Nipun] Queue1 has flow_id as an 'sa' with sched_type as RTE_SCHED_TYPE_ATOMIC and > Queue2 has same flow_id but with sched_type as RTE_SCHED_TYPE_ORDERED. > Does this mean that same flow_id be associated with separate RTE_SCHED_TYPE_* as sched_type? > > My understanding is that one flow can either be parallel or atomic or ordered. > The rte_eventdev.h states that sched_type is associated with flow_id, which also seems legitimate: Yes. flow_id per _event queue_. > uint8_t sched_type:2; > /**< Scheduler synchronization type (RTE_SCHED_TYPE_*) > * associated with flow id on a given event queue > * for the enqueue and dequeue operation. > */ > > > ev.op = RTE_EVENT_OP_FORWARD; > > ev.queue_id = 3; > > /* move to stage 3(event queue 3) */ > > rte_event_enqueue_burst(ev,..); > > } > > > > on_each_cores_linked_to_queue3(stage3) > > while(1) > > { > > /* STAGE 3 processing */ > > nr_events = rte_event_dequeue_burst(ev,..); > > if (!nr_events); > > continue; > > > > sa_specific_ordered_processing(sa /*ev.flow_id */);/* packets > > encryption 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; > > ev.queue_id = 4; > > /* move to stage 4(event queue 4) */ > > rte_event_enqueue_burst(ev,...); > > } > > > > on_each_cores_linked_to_queue4(stage4) > > while(1) > > { > > /* STAGE 4 processing */ > > nr_events = rte_event_dequeue_burst(ev,..); > > if (!nr_events); > > continue; > > > > rte_eth_tx_buffer(); > > } > > > > 2) flow-based event pipelining > > ============================= > > > > - No need to partition queues for different stages > > - All the cores can operate on all the stages, Thus enables > > automatic multicore scaling, true dynamic load balancing, > > - 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 */ > > [Nipun] I didn't got that in this case on which event queue (and eventually > its associated event ports) will the RTE_EVENT_TYPE_CPU type events be received on? Yes. The same queue which received the event. > > Adding on to what Harry also mentions in other mail, If same code is run in the case you > mentioned in '#1 - queue_id based event pipelining', after specifying the ev.queue_id > with appropriate value then also #1 would be good. Isn't it? See my earlier email > > > > > 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 >