From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on0082.outbound.protection.outlook.com [104.47.36.82]) by dpdk.org (Postfix) with ESMTP id F082D2B8C for ; Wed, 7 Dec 2016 19:53:10 +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=G2aPWq7nuBECOX8vXe0msCi7D/4lBfAfH8Ewbf1+wVg=; b=ZwcUL1WcYptXL9HIeC/aMVpxQGwTNslzXPwKc83tg3uQol5sJLdNPhzBxgvAVp/7TuI/IYyI4YFjp8fx8vS+l4m8QGEKyPrRPMekdEfeeq9ulUwxINLP4woevJ9m66mQvwygjXRm8O8dIR23zIO4TzDYnB8vbURIqVp4IBUwTxo= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Jerin.Jacob@cavium.com; Received: from svelivela-lt.caveonetworks.com (50.233.148.156) by CY1PR0701MB1727.namprd07.prod.outlook.com (10.163.21.141) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.693.12; Wed, 7 Dec 2016 18:53:06 +0000 Date: Thu, 8 Dec 2016 00:23:03 +0530 From: Jerin Jacob To: Bruce Richardson CC: , , , , Message-ID: <20161207185303.GA7001@svelivela-lt.caveonetworks.com> References: <1479447902-3700-2-git-send-email-jerin.jacob@caviumnetworks.com> <1480996340-29871-1-git-send-email-jerin.jacob@caviumnetworks.com> <1480996340-29871-2-git-send-email-jerin.jacob@caviumnetworks.com> <20161206165119.GB22224@bricha3-MOBL3.ger.corp.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: <20161206165119.GB22224@bricha3-MOBL3.ger.corp.intel.com> User-Agent: Mutt/1.7.1 (2016-10-04) X-Originating-IP: [50.233.148.156] X-ClientProxiedBy: CY1PR01CA0005.prod.exchangelabs.com (10.163.94.15) To CY1PR0701MB1727.namprd07.prod.outlook.com (10.163.21.141) X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB1727; 2:tn44uqAjmPv1gVaCC9AATK02RIHP5DLHNPqUBI2+fAJ5F8Z+EahYyxsJcXYDks8V1TcC00phco7YkYbc/y1RuR/Rv8gpw3WyqggPrvj4C1ECz0yKkXuAVy+MN7jM/k/h5KKCFzCvXSksn0+XCKw0qb1CgiVzW/NlhdnGXo2D+mE=; 3:2DBkgBDcua8iJ+HrmOu/k9WkNqdtFrZhVrpS60oOizgHYaY50en9p4NbHE7/TRVFKeZrPhiMWw78jFj5e535GekHloiXa4nhLoAc+gXBi+Vjidk5DWcHFGzQtD6byp3oaO0PqummV05MxWMAyKbixODd99rOLQEOr7Le7uOjjvo= X-MS-Office365-Filtering-Correlation-Id: 0dba2c35-5f37-4421-63f1-08d41ed24857 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:CY1PR0701MB1727; X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB1727; 25:3t8sRrDnQ7IRnvy6FiFuoB9840HUCwDJ7/Lgckkzrw0/rFjSh2roLIC/PLVDgboDawcdPDMpUXcv7E5dc5vp6L4E4/qL89QF0waGWLSKCHA795rcFQJa1/8ZzBHoS5L8WrbIzTQRQ94VC2svROgcCNvHwEANh/P4F8cZP/TfYQD/nzqW29mTrCB69QOGFS4bOpM9kw0itCYV5LVvUpQKa/dI4IcW4FBzLMQOHnx/ZYHL2iDLrB0dJNL1onOAjS87ivHRXlCafdCcES7wUT5zK4OYLfDbapD/kNggNwaG9247y/Weqg9XyGEDkG1qKqQpsty4ZxGgD/20TzZfnzAfodO3Fhj1nQDbPkGnFmTDNtcyNX6BlIZJaugCjB+ofKziCNkWykiY7eqx3ZjTJjOOKsj00iz6tsMyGchLUQ4iiXwoTfdYmzzgF9AIEaWP/o5OL0dE+zCuiH1uSVJ/LNiydSkULw0ha6oLN7ZLuFsLwy6FiJ2jTi2upeF0M+LKRX6RqCjOVyL4X0MEwWXjmfc5blkx5R1zZAaDlXX3UIzgQSw46RCCKjWz7/KSZYEAvw9DcMTgxwzldUTYRRxZj+bJWukEaOcUv1m6p7AcTJh4GgaseDBB7n7MZ4dt//+822fNTMOnP33/5vtrTqcztnh1x8qlWkXgTFQWP9J0ybfO6y5DZfOpVZQmdbi9TZd7cRjYBC1LQ1LTqn7z2oSoDYwWQLG55h9IhTBX3SJO1CAcygP4nZrcGzHDXxmHSMuHp8z7ZM+aPGES/1fwRGUt+M3IyA== X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB1727; 31:GYj+Wy8shi36wNEhIovuvp/G4lmId6F3xcxES1nBVPMDVHPohlux3oJgEJjU9JEM7oxAVt8XWtC5Sg/vjsUyO3l5smfRIo2TmPc7Ld3vjeQGStwyLEd24mIN8MrrYNLi5sdrPgbJcL4kOYkzm9ld6Jveu+vr5laJsnmvNifK24YSEShiDIdMb4ABuX1cfFs6QnCTiNpjU1Bj6TR4ZWtzzvdRnwSwuhuP/UrseTkyFNg4aPeIcWqjQL5B2l+3sWzLUndzBRF8NBNC82rzh2YDBA==; 20:wujtkx16lyT4CFYgkO4rq4BSbznnjTdn7cdt+KorJN7uqj3RVKH1lI99R4sGrXTjzS/waS/BLc7nb4tModKAZURxWtRZe+RRvKYwMa3GqfGBj11sOpFOYJszGD/o364nXd03Q+3TNOz1ytdslj2y/oyrrSEbABcrH2W33lsz3G7TGVT79qNN/QYKVSYmFRDJHRfyhEgufzm0KSEjw+JLb7SpjqSyH9IZUe+EJLQdadzQvwn1/owutRDRFd/8f8seI6jpjePxmeucVGPjoxCFwNV2eYYkU3bza9rXM1Q+f2E9dV0LJGNnoFQIY4sHWgTIPr5M3cuzVMX1aa4Ik+eADzk9U2HE1CAPyrrVqFA8/c9zvXLxcard0ZkbqaWoa34OeCnGmRvFoWGFJGmZ5FFe4L/l9/ndztmkiKfadQ9sB6VBs+pYD+h9tyA3Ia5COMTscblUiPAXdfvZU3EDWovnBk4c4zNkhANJlNrGwYuj3u98d+ygD4jwACBze501YAtYo1Cc3JRxSDLcu0UPLYbRScvt+4A6lC86ZcDDRkjX/CiJSOEVGBEr+cjotT9rRnUNvCwIU8NSdqWUcwalDWJQfkheG8Qsz1527WyhNP3iV4E= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(278428928389397); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001)(6041248)(20161123564025)(20161123560025)(20161123555025)(20161123558021)(20161123562025)(6072148); SRVR:CY1PR0701MB1727; BCL:0; PCL:0; RULEID:; SRVR:CY1PR0701MB1727; X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB1727; 4:HmTXcvG1H6B+3/ZVNG1UGDd745U/Tkx0Zy1r5P+m0fQmBDZla77b02yrZHKjjp3HY0aN70xGkREp4wcJ10EbA1vfrvsHjSRTs48OlyVKaJBo7gsFlsgciEBoolDwRHmU3vmehc+kSRM8LxYK6UcW+MZygN8cY4VT5QmH/lesnE/LzmTt45JE43l0rdMoxDJY4ZxEvd8VG3ZQiTHTmbg5FWkkoEeet+DQE1xFi/MBsW5CDl290HBCptSBBiCEzTko9p3okntGuAwr/B5ChQhxB7OQCacBRlMQ9QHePPQLE4ntZOIJQ/fSJTLfMrFPRC8Vl4heaiREM2KpORkYqWTztbnAjJClkl3+FCejXBVA8Ad4xCExHR0DiTzoESh0+GR9pA/P7wPFCM+vVVTy7V0WljdMVzvJXhrL3LsabYuAteAG7f4IhnLABUEABqmJFqj0Kguvoq3/utXB5dMELvLQox7TNViG+ahbtRfgVkGWzog9i7XCl8tX5UXy0xParz72g6SkKLu7P6G0IIUuvVNKPHGg9HIDHaUbFIyB7xu0e91elfvRiNg02K/ICHataqTDutAkr23vDu9a9Q+/6buqfDMIIkmXvbFIKqb2wMHghaO6cd5Gm5C1ksZUYsaoGZr6xc4nYsOJ/U3R5lCF/MmZfA== X-Forefront-PRVS: 01494FA7F7 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(7916002)(39840400002)(39850400002)(39410400002)(39450400003)(189002)(24454002)(199003)(92566002)(97736004)(47776003)(53416004)(42186005)(81166006)(1076002)(33656002)(69596002)(93886004)(23726003)(229853002)(3846002)(97756001)(4326007)(733004)(6116002)(189998001)(38730400001)(305945005)(68736007)(106356001)(9686002)(5660300001)(76176999)(110136003)(66066001)(6666003)(54356999)(81156014)(105586002)(4001350100001)(6506006)(8666005)(83506001)(50986999)(101416001)(2950100002)(7846002)(42882006)(2906002)(6916009)(7736002)(50466002)(8676002)(46406003)(18370500001)(7059030); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR0701MB1727; H:svelivela-lt.caveonetworks.com; 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; CY1PR0701MB1727; 23:rkTorEpRvUMonDLBj9tRsa5klN7lG0htk4C1EIo?= =?us-ascii?Q?lnkMQO31fahKNAEDb/FdPfcyMWyWa8f2QBxXvqqdGzjcv4CNoJeoMGnD2DEY?= =?us-ascii?Q?Zfq2vDX6sATqng0nlRSvep8ziNQga1hDlosR3lhaCu+3d7FQZPT2cZPMXrPX?= =?us-ascii?Q?kVKuDltFNqrxfkiogEsGuAb7dIpb04ItuhYyN5M26K1a2PN/X+923IJuto4v?= =?us-ascii?Q?Xj8gkj95N7Jpza785XpNNq4RRCfe8FPDbyeiQoQ5qpVBrEAcmsn4BngZLB+K?= =?us-ascii?Q?elsuW3gdMFCqXHr8+tDO5IThmFLeU5uIS06QuAi8fwEXaC0fK2NZe3xLa/Dv?= =?us-ascii?Q?PvMXzhRxCzwGvrUwVFEOimJe/xZJPAvNdwJe6vuhNgGxHFKcgcpItyVWXo3o?= =?us-ascii?Q?owZsbKDbHcRXDJVfqONLSfh/OLOXa1940adW5QdP2k2eD4s42gZC5WnGHpnn?= =?us-ascii?Q?Q6DnRNqAak/5RG7L70joI7W1quDvomuY9MmSQ+omxViKcFfDI8FKAlnT6Lkx?= =?us-ascii?Q?cvPg8FIHqCXVEatg81c8CQb700ehzx3Qaw4mvCT3cCkwsJcI+FCxMBliftYI?= =?us-ascii?Q?pbJ9oGjEiv/7ofDrtPtDfBKt6aLtos8+xatZ6S6MF8RwsEXM1zJBdH5uCe64?= =?us-ascii?Q?hUWv9o9wW3bdbvvHjBG+mBsALBXD81lWpmMd+X991kZ0hDCSBp2jtM6Yj3c6?= =?us-ascii?Q?r9DJQxNA1Y3JP1E/2vbpd8qFlqtNoAkWQVlQTdQJxsT3p8jS1khGmm4ke71M?= =?us-ascii?Q?vKwsgfggzxF5804h3ov0ZnrdUoGh3nJ0kJjPskJZW4bJytxoF61sadIOadFO?= =?us-ascii?Q?zaLCNyDpPv2feAflckhxlXMLMUxRSi2AKzzmXKtYs+lQB+u+vl1i8/QuxkEP?= =?us-ascii?Q?V4Fn4SqHoGwuRFPpjKu3H+wKXqyJYiJDzauhYPCh2YEncI59291VbyX7zXXp?= =?us-ascii?Q?jon3ZV2o/OyELraqPIVKsweZQaAAWZTSaqt1XwHzNu3nn0vYCHZwJQ550TXp?= =?us-ascii?Q?DjictJZmjk//w4naCNgGPwjzSbOsPgJ/V7ZrFXVbMGDvi+jCx0XBB1Yb7nHC?= =?us-ascii?Q?CIHI1DD8XXqHeO04ZBx/4tTO9tVZ1gyNz3WGpeS/5pmk+ElawglKRL6afCmb?= =?us-ascii?Q?dJFhxU2dZ8awuvJNp7yjLEeU+h6Zh6LBqYRJzyfWRkDRkwNt0Zg8VtTl3ZFR?= =?us-ascii?Q?lxi1OVVeyPP6PB1shucDPj+ZOaIBjTGINMR1b9JhxTdNBmPGNq3OjQoscHa7?= =?us-ascii?Q?P2a+t0kCFWYzg39olWaAiMryhiBZF13CUtxUmXhI0oRZTIxIOzLhDXI46gVS?= =?us-ascii?Q?FNh+HVwytOx4r7JFtDZPLM197KFncUcaxT1Pk393srIxl6WE2+eTkq55FPA1?= =?us-ascii?Q?yAtV9VzpldIk2hfmPlYVIlbgHxvK8Wnkl13bQdg6EhLReDfuqnWf4pSRWlwp?= =?us-ascii?Q?1rGu/0s6Rdw=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB1727; 6:crbzACbzKE/qsvuCc7+vFrCE6104GSMFDsBVEFCgln1EGa1ukXJ7j/oDCgjCSnydn5x4z3Q73ikie+lya2kQh+COb4BH9CIObD+44d/lTcSeQnp0pF8D5F4Vffre04fQ8J4qGzMd9ZCZHOf0Odc+k4hLQOnj8Rv4MqAMuHBYzuqUyMfa4M3cyOboq4cKF9Oc6C0PnR/UBpzqCFpa7g1W+M1Bkh0fMiw655bazzizAemd53i+so0aqN5jVdcbSezsb7KKFfo+swNT3sn9yKkvyDr5V6Y5fuefgNWg+h8JubbqKmtIT55vGfL9bwfd0DBttioSOol/t3KAttNOU7RFtcXueVpZpBjpvH5rj44amKE=; 5:TeUapFTPZ4HaYjCKTVVwOxCk3LvQKJm4Scsz2r5CB93M8YfwWQ1aBYXCHCUrkd1c027jYqrebB9miI58/x5r/Nb+zk0vjLGFh2C5SwbzhmDqJsyChJ4aRZMGzI4FSW0qbn9rl8GJPBo25ifpNFAiBA==; 24:AMAmmHsY7RcEs7QU5V+Ntbhcm4o9E8ePMJVSB2WtI1GMbTenO3Md7yJqv/pZasg/jEiCEE5pOIjt7mgXZUSmpegztGZ/2UKQGhQJEBUnwqE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB1727; 7:prArL+M/WW2iqn8V2+oD1oJIC/wUpL1qwgI6KQ6+SzWE+9SPed8iWpO5Be0/dzuklkLSuijGisz2HUop4i6a8pjM6/2TScSo5i4+3DIyYjjxfz0HFsuoVN26Y5xlUCU6YkmBTN0Wqwbspgxwu5Pk72fwYTUkeLx5vUvaiCHuHva7mCA1PYD2bwGy6OX+nhsC9GS11BWayBz3DPOFoZUpXC8VHy8nJsUw+xOO7EchtjVygmeRsGEvz76tsEeHDD+PeQIP7o/e7HvzAfAQeXmkexAE7O6ZZDkxK7nKboWcgV62cOdy1T5uwu5FiQ62bnBMbHGpOUvpzfGdZVXAo+Yqu3JFRtNwWNn/0Txi73rtLmc= X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Dec 2016 18:53:06.8742 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR0701MB1727 Subject: Re: [dpdk-dev] [PATCH v2 1/6] eventdev: introduce event driven programming model 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, 07 Dec 2016 18:53:11 -0000 On Tue, Dec 06, 2016 at 04:51:19PM +0000, Bruce Richardson wrote: > On Tue, Dec 06, 2016 at 09:22:15AM +0530, Jerin Jacob wrote: > > In a polling model, lcores poll ethdev ports and associated > > rx queues directly to look for packet. In an event driven model, > > by contrast, lcores call the scheduler that selects packets for > > them based on programmer-specified criteria. Eventdev library > > adds support for event driven programming model, which offer > > applications automatic multicore scaling, dynamic load balancing, > > pipelining, packet ingress order maintenance and > > synchronization services to simplify application packet processing. > > > > By introducing event driven programming model, DPDK can support > > both polling and event driven programming models for packet processing, > > and applications are free to choose whatever model > > (or combination of the two) that best suits their needs. > > > > This patch adds the eventdev specification header file. > > > > Signed-off-by: Jerin Jacob > > --- > > + /** WORD1 */ > > + RTE_STD_C11 > > + union { > > + uint64_t u64; > > + /**< Opaque 64-bit value */ > > + uintptr_t event_ptr; > > + /**< Opaque event pointer */ > > Since we have a uint64_t member of the union, might this be better as a > void * rather than uintptr_t? No strong opinion here. For me, uintptr_t looks clean. But, It is OK to change to void* as per your input. > > > + struct rte_mbuf *mbuf; > > + /**< mbuf pointer if dequeued event is associated with mbuf */ > > + }; > > +}; > > + > > > +/** > > + * Link multiple source event queues supplied in *rte_event_queue_link* > > + * structure as *queue_id* to the destination event port designated by its > > + * *port_id* on the event device designated by its *dev_id*. > > + * > > + * The link establishment shall enable the event port *port_id* from > > + * receiving events from the specified event queue *queue_id* > > + * > > + * An event queue may link to one or more event ports. > > + * The number of links can be established from an event queue to event port is > > + * implementation defined. > > + * > > + * Event queue(s) to event port link establishment can be changed at runtime > > + * without re-configuring the device to support scaling and to reduce the > > + * latency of critical work by establishing the link with more event ports > > + * at runtime. > > I think this might need to be clarified. The device doesn't need to be > reconfigured, but does it need to be stopped? In SW implementation, this > affects how much we have to make things thread-safe. At minimum I think > we should limit this to having only one thread call the function at a > time, but we may allow enqueue dequeue ops from the data plane to run > in parallel. Cavium implementation can change it at runtime without re-configuring or stopping the device to support runtime load balancing from the application perspective. AFAIK, link establishment is _NOT_ fast path API. But the application can invoke it from worker thread whenever there is a need for re-wiring the queue to port connection for better explicit load balancing. IMO, A software implementation with lock is fine here as we don't use this in fastpath. Thoughts? > > > + * > > + * @param dev_id > > + * The identifier of the device. > > + * > > + * > > + */ > > +int > > +rte_event_port_link(uint8_t dev_id, uint8_t port_id, > > + const struct rte_event_queue_link link[], > > + uint16_t nb_links); > > + > > +/** > > + * Unlink multiple source event queues supplied in *queues* from the destination > > + * event port designated by its *port_id* on the event device designated > > + * by its *dev_id*. > > + * > > + * The unlink establishment shall disable the event port *port_id* from > > + * receiving events from the specified event queue *queue_id* > > + * > > + * Event queue(s) to event port unlink establishment can be changed at runtime > > + * without re-configuring the device. > > Clarify, as above with link call. Same as above. > > > + *