From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-bl2nam02on0066.outbound.protection.outlook.com [104.47.38.66]) by dpdk.org (Postfix) with ESMTP id BA21247D2 for ; Tue, 22 Nov 2016 10:03:16 +0100 (CET) Received: from BN6PR03CA0006.namprd03.prod.outlook.com (10.168.230.144) by BY2PR0301MB0743.namprd03.prod.outlook.com (10.160.63.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.734.8; Tue, 22 Nov 2016 09:03:14 +0000 Received: from BL2FFO11FD030.protection.gbl (2a01:111:f400:7c09::154) by BN6PR03CA0006.outlook.office365.com (2603:10b6:404:23::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.734.8 via Frontend Transport; Tue, 22 Nov 2016 09:03:14 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; linux.intel.com; dkim=none (message not signed) header.d=none;linux.intel.com; dmarc=fail action=none header.from=nxp.com; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net; Received: from tx30smr01.am.freescale.net (192.88.168.50) by BL2FFO11FD030.mail.protection.outlook.com (10.173.161.40) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.721.5 via Frontend Transport; Tue, 22 Nov 2016 09:03:10 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:; UpperCasedChecksum:; SizeAsReceived:1227; Count:13 Received: from [10.232.14.87] ([10.232.14.87]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id uAM935N2024391; Tue, 22 Nov 2016 02:03:06 -0700 To: Yuanhan Liu , Jerin Jacob References: <1479447902-3700-1-git-send-email-jerin.jacob@caviumnetworks.com> <20161118152518.GA121080@bricha3-MOBL3.ger.corp.intel.com> <20161118160428.GA123692@bricha3-MOBL3.ger.corp.intel.com> <20161118192715.GA8674@localhost.localdomain> <20161122020014.GU5048@yliu-dev.sh.intel.com> CC: Bruce Richardson , , , , , From: Shreyansh Jain Message-ID: <4f5ca36a-fd9f-7589-bf6d-2a9d9639f2e8@nxp.com> Date: Tue, 22 Nov 2016 14:35:20 +0530 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.0 MIME-Version: 1.0 In-Reply-To: <20161122020014.GU5048@yliu-dev.sh.intel.com> Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit X-IncomingHeaderCount: 13 X-EOPAttributedMessage: 0 X-Matching-Connectors: 131242789940104352; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(7916002)(2980300002)(1109001)(1110001)(3190300001)(339900001)(336004)(24454002)(199003)(377454003)(189002)(15395725005)(54356999)(8676002)(81166006)(104016004)(81156014)(76176999)(50986999)(626004)(230700001)(8936002)(47776003)(65806001)(65956001)(8666005)(105606002)(65826007)(106466001)(2906002)(229853002)(38730400001)(50466002)(77096005)(92566002)(87936001)(31686004)(36756003)(356003)(93886004)(6666003)(2950100002)(4326007)(5660300001)(97736004)(85426001)(4001350100001)(64126003)(33646002)(83506001)(189998001)(7846002)(86362001)(68736007)(31696002)(23746002)(305945005)(5001770100001)(7059030); DIR:OUT; SFP:1101; SCL:1; SRVR:BY2PR0301MB0743; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11FD030; 1:xWcA4JUL1H4QyNxrtoR6nIOwfcsBqnjcmlutGdwrkd/D6DKbLALVptusvIZ5uT/O5WHSWNy6TucCQxe7CZVnnER1zN5aA8Ai+/drPlFLRprR9oNzTucOO+T4OEJvjkrwrZd1Lvqvjnin0CRlPlw0UPuNSRIeG5YM2bM+fPS2OAz+6fFKLYEfQ9pPAGTmaVfHp6JuCIJ+V43aHi7LfJ67e32OdS8uRt+RIAgpniiMYg0ICKkKaQtZeJCa0FWrHWEkCvDTTazVTTidFgRoAJftzqi1pyN2KZ7n3m7bdjZUIc+l8Y81htZgQug3lnvTy31QAdVMtHbXsviUypM/3fwMiqLh0mK3oyDYdbPJYMvUHLr1XqUPSBTYcQmJseDNaRr8GCK582lT5UDI7OPQxkrAn2YxQ93Ejd2mxqEZ9H/1m913Bf4dxW8lR79hEPGoZmszWfTlmxw4blm6iShEKfWHjOp3aRolohz5XT9QYRIIxu2FbIeiAbPUOmXooigJkD6u9bLA3QE0TFL18HYiUaZrzwekMukOgu98sVJdkkSv/PsBjjEZhq3w4CsPX239P17ge4Z4gD1I5C8GN7593d6QIeWLyv5RYbDH/164bRKueMLHoGOi8w4gvx3uCWIfE/hJj5sJhz8onTJnH5DGrdT6wx88/paTYGncz8X1EcouYgU= X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB0743; 2:LzH4etI1TocEhyog8cUZy/WF8NYOjm671sMZ5EH1eJ22iyVFaUUGqEFPjJtQERXcKon+cQSCHWMH9kS2CCZOhuc0p11mfpnkXijVPaUp8ObNUwZ3kvP/3ho/aWr9T7TnXbBLbuJXb1QoXoygtYUkHdFu1thgfxoPhAZzMFp4NRs=; 3:9++aa62ZLJ849QOFkBosyYPymtE0ttwuBoxWkaGfQvD9/RgTAsY+81XTfyoe8P/Kvah8qSmuZ5AdDATRNH3+fQYrhpS4T2eCmt5u+aY/4lVanlCjPOrDSX62Rz9Od+0HTXZEqPReqT6zan2vgVX1m8XiBML0PrsxPMS+1WzE2uqkrxaw14PCf/tXU3JZLpApI07GoPpzHd85dD7U/C8EMrqYojtveXaVzr/wvFaN+GNMzhyjvhFG2eF08Y2mlnFUIWrxX0SrCFcVhYV6arkryQ== X-MS-Office365-Filtering-Correlation-Id: fd74fe12-9d02-404e-0ca0-08d412b6642d X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:BY2PR0301MB0743; X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB0743; 25:aEHvY7mFTS6b2LCZQCjNmCiFAhKXt3L30g4/XrSootrnkauj6G4TwZopBnKOdOioSRCwTRJ2Cj4LyVDoTVurRA2l/9l9jH6WUfDGSoo89/9KzfhowS1Zh2PQrfo6yj6XFs1/OmLV5reFnqRPmYy8WH/6cY2E+Ci6uSz+gZsruHUdaQNNf6Er881NKtiHToPILxX8b2BgU7LMi2MV8ormx5uG5uyPcjT2isUSpYDZcLrBbGSImKTCRgDBH7ytfBeUJkv+FPMZgvv6jAaX9WD0ei8gKVjGaa6be/iO04Dzhen7Uhudxb3/XhhGjvLeXd/J9eQ7WOgAtMDhIE/cDX6r9C9X65q8D8/SxKzj1r7IhT3eDaFiPPdhD63mZyroKwmYnndKYtjJdk5pICs0ySnAnx54F62v+FCUJNvdi3kZYr8dH9WfqrlN4dzxlnH13XnPtOxO0BnjFBz/7wxV8GNwURI7DZbGBo+9adSKPM0zjPUO6wlUtP71vBZKUDGKp/TIhiR8JdnlLTX5y5sFYXRZOL0Dr6MMrBFSBGLafQAUdGPKXcq43ioIAVkzKZqiGqTwCLFk1aphrVXJF0ZIcL2PToz8+sz2mLbZGDfZTqssfE2f3B9TBfQpPSLDf747g3YQAXx3nucl9gmJ+bRMhtw/LEtVkTylnDmRi4VgU5SCfUe1L2HgKgFRurMvhOq9Y1EgSuKVVk1KkzQG71N7A1O+vTtHEk3JJa5hGBeu788qdE3k7JyzD434DxoaffHMYqupREVSWzIc9Fl841RoghQoZ294M59gWy6xnwntr1QB60JuDSm0WbzKVsOipKYft41mP9EszImRGI9VJO+77oT5+yhJwiAhDil22CCwJKLAseCOUrA075d1PWlZ5w8jk4+w X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB0743; 31:SBTJgF3xpwOPVaUPyQCPjSZ+jJcG2dpd0G17f7/AKIj3Rdg4HTZCwlMTVFRJbzH1XGX11g1kNRHh327vFx4SCYxBn8q/owJqX7N4rohIXW+e3pH3rvUx577MgGCIgLL13ERAk8FTIznC0kPffFgKqk88QxqQ/0cynatNTnJieoOkwx3aqqRhQAzSuH+HZ8HVyHDponVzlS9mfql9EX0hPmnUz+Bu+XmPrgzRvDqI5pDzpzlqOX1dDBPfP0iUC1xI39x8LAV0g8aJj+ey/G8VgT8NnWLZb7Cpac5Q5l4FBKQ=; 4:6ilu9HFc0vZCRi9XM7hczOGnrUfnLxhV8C2n/4w06lJlQsvT4reUsp47F6Mm+o2ntBk+0EA6h1yv9zXgoJiUftPKwTM6VTV2Yj6HBudG6dkASO4wx/75fS2qj8kPbI87OiqqzIDIW0z6rNDCGr/znAvoPWxJ+8txchJgiRnuQhXDW66KQS2u9oX4lozrwYrBHAfYH6FIqK6/GBc8Aw1kPo8ZCsqJ6sgM9ofK+edIvvPqrBkNAsV7vtVwdCMNdrKuRkEngt5dgmffkpPlBu2yOfMlo6F3/xFk2fmWasOg/rLpugSYQKSowHV3cHt0EomebggD5OvuKCPdWrwcPvXNpYwWfkesJHJBY+GXFES2CqL51CN0ngoSUb5fUq4QEiF+aRHniuKTGvRc4Y5F3xJnaInnb6gNVL/1r0NDene7bgSEm7aa9VaFSyJqdLRMpR2QUhM/oez3sltAixuFZvz4Thyt+5Jv7+hX9M8f1AUe/X2ADiMn9b8S+JLZ+wWcx8wUFKLnXRYHx+tYHfoioWC6a4kFz8Nz+rkHqD/NYGaRE+XQ7ct/4er6zUEq0kf5qkH2wF46KTSmX9nCLPMACQh9UQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(278428928389397); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095035)(601004)(2401047)(13023025)(13017025)(13024025)(13018025)(13015025)(5005006)(8121501046)(10201501046)(3002001)(6055026)(6096035); SRVR:BY2PR0301MB0743; BCL:0; PCL:0; RULEID:(400006); SRVR:BY2PR0301MB0743; X-Forefront-PRVS: 0134AD334F X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1; BY2PR0301MB0743; 23:PUPoYyDSP65st523UnKdfN3nEAxDxVxkTks?= =?Windows-1252?Q?yIN704MkPDR7EPUeZ1s6qVErfKxJnXqsFNDAGXikUJpZ+JhrWXyIpa+e?= =?Windows-1252?Q?TjDYzj1CZvE6du++gaaMmFe/EArUG1qQmh0b4Ax34j9S5Jp/0IFL6cgW?= =?Windows-1252?Q?tu+1ZZBi63iTm2uVTE5EbuqPkJgglV6HFHBxOd47i3DfLEXluxdkAn+Q?= =?Windows-1252?Q?RDfmplLtKJnCGm3ZesR1Upm/F9/fg0yLlrFKvQF9BNF1DJWmWx6s50vi?= =?Windows-1252?Q?YiEIaPi19uOhWQuLbWg7GoLwjror7Hv0MxK7odzJNUaKQfPPlaj81TLq?= =?Windows-1252?Q?RUlYeh4Ru/KaQTUuDfENge+mG8DXSXbEEhnLLfYMWG8BzcephClKZhn+?= =?Windows-1252?Q?o4a6rmCaYQi/QzFY9O7Qz8JzbjvCe5NbU5R2+j++R1EO3zY5d1dk/g24?= =?Windows-1252?Q?d0STxl3y/d9pZO5e13vRbDA/gkz8tNpK17oppNr2mB8tDo4OcMV8nlwB?= =?Windows-1252?Q?77650zKY1P83I0hc0buwSdD+Dvouhd0dTzCy239JWaU632RwfoV3Emx+?= =?Windows-1252?Q?TDfcJMEk0sf10ubVUxQhpJZw3O3NQz0hReihq8MYGsM0hxGISLOjxb6I?= =?Windows-1252?Q?4M2Y4NYy3uek9hJUvqUPrWxhMyT4EcaSZXnovmBs5lE8vS+5ICnGQ6+K?= =?Windows-1252?Q?meYjj2jYtJa1wV0CPXiRU2sS4GjH2b33XaC8PgDXROSG4vSvPOpI2KV1?= =?Windows-1252?Q?f3CPmXVRzRDr1hsNeZdCNsw6dn4UM7NxUpwd6KbhxL8xHOz/sqJUMfmS?= =?Windows-1252?Q?CG/qcmmy+PgKd1ao4VK3l9DcmxRRnybca+ievJ/6/ffOAzYs/sD0IwxQ?= =?Windows-1252?Q?SumRB6sQG8HUHuyxwQZ/WcMgF/a/niDiUUDA8s61Mrdk9zlfAcThuoOj?= =?Windows-1252?Q?yZXWLADU8kEIPE7OYKG3MbKukeGX1Jo9kSgYI04I0bOe2TC7n6qvKFSD?= =?Windows-1252?Q?Qv5Dkpa0s1vACSEYWgiZFEn3jg43ORF4SCZm30x9nxwhl2zbM2CdXqZg?= =?Windows-1252?Q?hBZQJ8NOw9W/+Vp/+i6diAxJ9nd0eQVprpoLi4D8t6aV0bl+I5i1QS+U?= =?Windows-1252?Q?gZ6vAu+v1imMl9JdDTClalMMJ8TzztqOEv7voIN54bsnxvrRVf3r5E1z?= =?Windows-1252?Q?MDnADvYf4YSXS961isu9qXdunQEy4zv4gpCiTBTeE/FhX/H11Uh7VLfZ?= =?Windows-1252?Q?TUBZUEMPrKu2qrYviQvsM9SB232aA+6F9pEeHYsuRAfYSRheVcOOSXh1?= =?Windows-1252?Q?9CMISEANJvjWYp5nJf/T7PBCay4dym3L+pL6nQhPds5fi5GMxzSFgePM?= =?Windows-1252?Q?tR+axSR6ylAaBfMzSMuEl6xdO7h9z+KEeEtWb5fZbRrgA7nt9HwXiwHi?= =?Windows-1252?Q?yqrAXtLP+KOLZ+R+rLz6Br2dL95U9bhLOhJKOi+VRcfRtjHLcHf2/t94?= =?Windows-1252?Q?AiQETp8Q0goHgZ1FddD8B/relpBHpI6qIDYBZKRxdOPl1aDyC0A=3D?= =?Windows-1252?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB0743; 6:jPBJBaceVXaYsCwJLRuF/RHk+vWOJptaoNWG7Canl+yxz9hIx6ZtdpELFLs+s+TOT0a6iF1q0k7wwyKgpPXWpeMHLIRVYY3+CBzoMQBxYR/Ljw3tjzhbfaNmoHrWZrPsHTUn/IWUR4qT+q/ZBGR09OhnpZM9jWMLd3/bcKrvxA17i6xE4DRAusJBPUy5T1nH/ZtV66c+WRzdWjobFpqLbNxDoV8Hf0aNQeQpqFvdo3Lb3Acax7BJ4vZF+vQt8NLKm4IIaEgv6K52xqqIHb7uMl7pHFRB6lt6CQTsb3kdfCRcxxPp9ZuQ8jDeicbxq604hrIq4PWSL4uvppBTceCm8w==; 5:L30uEr0geqli5DX9BB2qdskhd+3PFiux9UlnUQl9G8/JHMK6zn2dVmfE26xPu+8Zo38Pq8oWIBKk/ODz/SCDGkpRAZkYKdnXB6+O4ZaD8qMjs1mtydmxpumhn28dAB4sFTCq9tD88tPL3GynuCACvLLQ2tgd12oupeYI9nUSWOXVIY4eJ9aMJ7SThUyvZAOt; 24:zWUoToweG+C/lVvzPmFbP8s5Z7gCexN+zNTu0CCH+wAb7tQTsEPmnbAui/bLVmCLloTBIBIQtK9Pnjqv9MOvizKn6rI883cs1PstvMc2n1g= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB0743; 7:mz6KYcFpe7sPRO5iIfnzHPwmXk2DChqLG7UKMVywJxBDdIaK5o+HQSPwqguBvdcOx7fBHnUAWM2yUH8z+luVV0E968FDZEuwVE+DicvhndIiXoX+dpckl165VrCedRgmmlKqSu/2VKT5gUyGZRVV5sUhKxIaGrD1wdV5Y8SvOmur0MnvNTYNmU7r3Xrgw+ekEslnXR7DpacirW47udbQ8EVVC9yig7mhye5opkx2Y27Zg87QnhqNpST7cRv69gL5PYgyhlJynDKWTldHrXEAtU0bHd9nWJXdr6vjf/fAlRZpjQEjIszymaHv6ihFiN6ZfWCtQMlnm1XDwDP4XM2boBDYxOKZR2i8fMdN1VXbFbE= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Nov 2016 09:03:10.7188 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR0301MB0743 Subject: Re: [dpdk-dev] [PATCH 0/4] libeventdev API and northbound implementation X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 22 Nov 2016 09:03:17 -0000 On Tuesday 22 November 2016 07:30 AM, Yuanhan Liu wrote: > On Sat, Nov 19, 2016 at 12:57:15AM +0530, Jerin Jacob wrote: >> On Fri, Nov 18, 2016 at 04:04:29PM +0000, Bruce Richardson wrote: >>> +Thomas >>> >>> On Fri, Nov 18, 2016 at 03:25:18PM +0000, Bruce Richardson wrote: >>>> On Fri, Nov 18, 2016 at 11:14:58AM +0530, Jerin Jacob wrote: >>>>> 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 >>>>> >>>>> 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 >>>>> >>>>> >>>>> Possible next steps: >>>>> 1) Review this patch set >>>>> 2) Integrate Intel's SW driver[http://dpdk.org/dev/patchwork/patch/17049/] >>>>> 3) Review proposed examples/eventdev_pipeline application[http://dpdk.org/dev/patchwork/patch/17053/] >>>>> 4) Review proposed functional tests[http://dpdk.org/dev/patchwork/patch/17051/] >>>>> 5) Cavium's HW based eventdev driver >>>>> >>>>> I am planning to work on (3),(4) and (5) >>>>> >>>> Thanks Jerin, >>>> >>>> we'll review and get back to you with any comments or feedback (1), and >>>> obviously start working on item (2) also! :-) >>>> >>>> I'm also wonder whether we should have a staging tree for this work to >>>> make interaction between us easier. Although this may not be >>>> finalised enough for 17.02 release, do you think having an >>>> dpdk-eventdev-next tree would be a help? My thinking is that once we get >>>> the eventdev library itself in reasonable shape following our review, we >>>> could commit that and make any changes thereafter as new patches, rather >>>> than constantly respinning the same set. It also gives us a clean git >>>> tree to base the respective driver implementations on from our two sides. >>>> >>>> Thomas, any thoughts here on your end - or from anyone else? >> >> I was thinking more or less along the same lines. To avoid re-spinning the >> same set, it is better to have libeventdev library mark as EXPERIMENTAL >> and commit it somewhere on dpdk-eventdev-next or main tree >> >> I think, EXPERIMENTAL status can be changed only when >> - At least two event drivers available >> - Functional test applications fine with at least two drivers >> - Portable example application to showcase the features of the library >> - eventdev integration with another dpdk subsystem such as ethdev > > I'm wondering maybe we could have a staging tree, for all features like > this one (and one branch for each feature)? > > --yliu > +1 It would help a lot of 'experimental' stuff reach a wider audience without waiting for a complete cycle of upstreaming. Though, I am not sure how would we limit the branches - or if that is even required. -- - Shreyansh