From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id B9060A00BE; Tue, 29 Oct 2019 14:51:42 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id EAD0D3423; Tue, 29 Oct 2019 14:51:41 +0100 (CET) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by dpdk.org (Postfix) with ESMTP id 3BA752BF4 for ; Tue, 29 Oct 2019 14:51:40 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga105.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 29 Oct 2019 06:51:39 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,244,1569308400"; d="scan'208";a="189948203" Received: from fmsmsx107.amr.corp.intel.com ([10.18.124.205]) by orsmga007.jf.intel.com with ESMTP; 29 Oct 2019 06:51:38 -0700 Received: from fmsmsx602.amr.corp.intel.com (10.18.126.82) by fmsmsx107.amr.corp.intel.com (10.18.124.205) with Microsoft SMTP Server (TLS) id 14.3.439.0; Tue, 29 Oct 2019 06:51:38 -0700 Received: from fmsmsx602.amr.corp.intel.com (10.18.126.82) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Tue, 29 Oct 2019 06:51:37 -0700 Received: from shsmsx105.ccr.corp.intel.com (10.239.4.158) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1713.5 via Frontend Transport; Tue, 29 Oct 2019 06:51:37 -0700 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.108]) by SHSMSX105.ccr.corp.intel.com ([169.254.11.225]) with mapi id 14.03.0439.000; Tue, 29 Oct 2019 21:51:35 +0800 From: "Wang, Haiyue" To: Jerin Jacob CC: Thomas Monjalon , "Yigit, Ferruh" , dpdk-dev , "Ye, Xiaolong" , "Kinsella, Ray" , "Iremonger, Bernard" , "Sun, Chenmin" , Andrew Rybchenko , "Slava Ovsiienko" , Stephen Hemminger , David Marchand , Jerin Jacob Thread-Topic: [dpdk-dev] [PATCH v4 1/4] ethdev: add the API for getting burst mode information Thread-Index: AQHVgy4vnIA7MA5UA0Sl3pLNFwDOY6dqovQAgABMCACAABr4gIAABOkAgABrZQCAAI7MAIAAsVSwgAPNloCAAJdSMP//hTIAgACJQAD//35gAIAAiTrQ//+loQAAFmznwP//lcUA//9zM5A= Date: Tue, 29 Oct 2019 13:51:34 +0000 Message-ID: References: <20191015075133.38560-1-haiyue.wang@intel.com> <1811898.7XjjD7ZjLQ@xps> <12001140.UMXFOKstgs@xps> In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiZjRkYTI1ZDQtYTcyOS00NWU2LWI3NjYtYzdiNmI5MDRlZmY2IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiU0psZFIyN0VaYUVTd1Y0Tldxbm9rR041YjgzSW16MlByWUZLemROXC9haklKOWhBQ1RMQ08zWk5zRUpPRDZ3TjEifQ== x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.2.0.6 dlp-reaction: no-action x-originating-ip: [10.239.127.40] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH v4 1/4] ethdev: add the API for getting burst mode information 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" PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBKZXJpbiBKYWNvYiA8amVyaW5q YWNvYmtAZ21haWwuY29tPg0KPiBTZW50OiBUdWVzZGF5LCBPY3RvYmVyIDI5LCAyMDE5IDIwOjU3 DQo+IFRvOiBXYW5nLCBIYWl5dWUgPGhhaXl1ZS53YW5nQGludGVsLmNvbT4NCj4gQ2M6IFRob21h cyBNb25qYWxvbiA8dGhvbWFzQG1vbmphbG9uLm5ldD47IFlpZ2l0LCBGZXJydWggPGZlcnJ1aC55 aWdpdEBpbnRlbC5jb20+OyBkcGRrLWRldg0KPiA8ZGV2QGRwZGsub3JnPjsgWWUsIFhpYW9sb25n IDx4aWFvbG9uZy55ZUBpbnRlbC5jb20+OyBLaW5zZWxsYSwgUmF5IDxyYXkua2luc2VsbGFAaW50 ZWwuY29tPjsNCj4gSXJlbW9uZ2VyLCBCZXJuYXJkIDxiZXJuYXJkLmlyZW1vbmdlckBpbnRlbC5j b20+OyBTdW4sIENoZW5taW4gPGNoZW5taW4uc3VuQGludGVsLmNvbT47IEFuZHJldw0KPiBSeWJj aGVua28gPGFyeWJjaGVua29Ac29sYXJmbGFyZS5jb20+OyBTbGF2YSBPdnNpaWVua28gPHZpYWNo ZXNsYXZvQG1lbGxhbm94LmNvbT47IFN0ZXBoZW4gSGVtbWluZ2VyDQo+IDxzdGVwaGVuQG5ldHdv cmtwbHVtYmVyLm9yZz47IERhdmlkIE1hcmNoYW5kIDxkYXZpZC5tYXJjaGFuZEByZWRoYXQuY29t PjsgSmVyaW4gSmFjb2INCj4gPGplcmluakBtYXJ2ZWxsLmNvbT4NCj4gU3ViamVjdDogUmU6IFtk cGRrLWRldl0gW1BBVENIIHY0IDEvNF0gZXRoZGV2OiBhZGQgdGhlIEFQSSBmb3IgZ2V0dGluZyBi dXJzdCBtb2RlIGluZm9ybWF0aW9uDQo+IA0KPiBPbiBUdWUsIE9jdCAyOSwgMjAxOSBhdCA0OjU2 IFBNIFdhbmcsIEhhaXl1ZSA8aGFpeXVlLndhbmdAaW50ZWwuY29tPiB3cm90ZToNCj4gPg0KPiA+ IEhpIEplcmluLA0KPiANCj4gSGkgV2FuZw0KPiANCj4gPg0KPiA+ID4gLS0tLS1PcmlnaW5hbCBN ZXNzYWdlLS0tLS0NCj4gPiA+IEZyb206IEplcmluIEphY29iIDxqZXJpbmphY29ia0BnbWFpbC5j b20+DQo+ID4gPiBTZW50OiBUdWVzZGF5LCBPY3RvYmVyIDI5LCAyMDE5IDE2OjM1DQo+ID4gPiBU bzogV2FuZywgSGFpeXVlIDxoYWl5dWUud2FuZ0BpbnRlbC5jb20+DQo+ID4gPiBDYzogVGhvbWFz IE1vbmphbG9uIDx0aG9tYXNAbW9uamFsb24ubmV0PjsgWWlnaXQsIEZlcnJ1aCA8ZmVycnVoLnlp Z2l0QGludGVsLmNvbT47IGRwZGstZGV2DQo+ID4gPiA8ZGV2QGRwZGsub3JnPjsgWWUsIFhpYW9s b25nIDx4aWFvbG9uZy55ZUBpbnRlbC5jb20+OyBLaW5zZWxsYSwgUmF5IDxyYXkua2luc2VsbGFA aW50ZWwuY29tPjsNCj4gPiA+IElyZW1vbmdlciwgQmVybmFyZCA8YmVybmFyZC5pcmVtb25nZXJA aW50ZWwuY29tPjsgU3VuLCBDaGVubWluIDxjaGVubWluLnN1bkBpbnRlbC5jb20+OyBBbmRyZXcN Cj4gPiA+IFJ5YmNoZW5rbyA8YXJ5YmNoZW5rb0Bzb2xhcmZsYXJlLmNvbT47IFNsYXZhIE92c2lp ZW5rbyA8dmlhY2hlc2xhdm9AbWVsbGFub3guY29tPjsgU3RlcGhlbg0KPiBIZW1taW5nZXINCj4g PiA+IDxzdGVwaGVuQG5ldHdvcmtwbHVtYmVyLm9yZz47IERhdmlkIE1hcmNoYW5kIDxkYXZpZC5t YXJjaGFuZEByZWRoYXQuY29tPjsgSmVyaW4gSmFjb2INCj4gPiA+IDxqZXJpbmpAbWFydmVsbC5j b20+DQo+ID4gPiBTdWJqZWN0OiBSZTogW2RwZGstZGV2XSBbUEFUQ0ggdjQgMS80XSBldGhkZXY6 IGFkZCB0aGUgQVBJIGZvciBnZXR0aW5nIGJ1cnN0IG1vZGUgaW5mb3JtYXRpb24NCj4gPiA+DQo+ ID4gPiA+ID4gPiA+ID4gPiAxKSBXZSBjYW4gbm90IHN0YW5kYXJkaXplIGFsbCBmbGFncyB3aGVu IGl0IGNvbWVzIHRvIEhXIHNwZWNpZmljDQo+ID4gPiA+ID4gPiA+ID4gPiBkZXRhaWxzLiBXZSBz aG91bGQgTk9UIHBvbGx1dGUgcHVibGljIEFQSSB3aXRoIEhXIHNwZWNpZmljIGRldGFpbHMuDQo+ ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiBDdXJyZW50bHksIG5vIGRldGFpbCB0byBI VyBOSUMgc3BlY2lmaWMuDQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IFllcy4gV2hhdCBp ZiBJIHdhbnQgdG8gYWRkIGEgIlN0cmluZyIgdGhleSByZXByZXNlbnQgYSBzcGVjaWZpYyBtb2Rl IG9mIFBNRCwNCj4gPiA+ID4gPiA+ID4gc28gdGhhdCBJIGtub3cgd2hhdCBtb2RlIFBNRCByZWFs bHkgcnVucy4NCj4gPiA+ID4gPiA+ID4gSXQgaXMgbm90IHdvcnRoIGFkZGluZyBhIGZsYWcgZm9y IHRoYXQgaW4gcHVibGljIEFQSSBmb3IgSFcgc3BlY2lmaWMgbm90aW9uLg0KPiA+ID4gPiA+ID4g PiBUaGF0J3MgdGhlIHByb2JsZW0uDQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4NCj4g PiA+ID4gPiA+ID4gPiA+IDIpIFRoZXJlIGlzIGEgZGFuZ2VyIGlmIGFwcGxpY2F0aW9uIHN0YXJ0 cyB0YWtpbmcgYW55IGFjdGlvbiBiYXNlZCBvbg0KPiA+ID4gPiA+ID4gPiA+ID4gZmxhZ3MuIEl0 IHNob3VsZCBiZSBvbmx5IGZvciBkaXNwbGF5IHB1cnBvc2Ugc28gaW4gdGhhdCBjYXNlIHB1Ymxp Yw0KPiA+ID4gPiA+ID4gPiA+ID4gQVBJIHNob3VsZCBiZSB0aGUgc3RyaW5nIHRvIGF2b2lkIG1p c3VzZSBvZiB0aGUgQVBJKGV2ZW50dWFsbHkgdGhlIGFwcA0KPiA+ID4gPiA+ID4gPiA+ID4gd2ls bCBmYWlsIG9uIHNvbWUgUE1EDQo+ID4gPiA+ID4gPiA+ID4gPiBpZiBpdCB0YWtlcyBhbnkgYWN0 aW9uIGJhc2VkIG9uIHRoZSBmbGFnKQ0KPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4g VGhlc2UgZmxhZ3MgYXJlICpyZWFkIG9ubHkqIGZvciBpbmZvcm1hdGlvbi4gQ2FuJ3QgaW1hZ2Ug aG93IHRvIGhhY2sgRFBESy4gOy0pDQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IFRvIGNs YXJpZnk6DQo+ID4gPiA+ID4gPiA+IElmIHdlIGV4cG9zZSBmbGFnIHNheSBSVEVfRVRIX0JVUlNU X1NJTVBMRSB0aGVuIHRoZSBhcHBsaWNhdGlvbiBjYW4gdGFrZQ0KPiA+ID4gPiA+ID4gPiBzb21l IGFjdGlvbiBiYXNlZCBvbg0KPiA+ID4gPiA+ID4gPiBpZiAoZmxhZyA9PSBSVEVfRVRIX0JVUlNU X1NJTVBMRSkNCj4gPiA+ID4gPiA+ID4gICAgIGRvX3NvbWVfdGhpbmcoKTsNCj4gPiA+ID4gPiA+ ID4NCj4gPiA+ID4gPiA+ID4gSWYgdGhlIHB1cnBvc2UgaXMgT05MWSBmb3IgImRpc3BsYXkiIGFz IGluZm8gdGhlbiBleHBvc2luZyBhcyB0aGUgc3RyaW5nIHdpbGwNCj4gPiA+ID4gPiA+ID4gZW5h YmxlIHRvIE5PVCBzdGFuZGFyZGl6ZSBpLmUgYXBwbGljYXRpb24gY2FuIG5ldmVyIGNoZWNrIGJh c2VkIG9uDQo+ID4gPiA+ID4gPiA+IHRoZSBzdHJpbmcgbmFtZShhcyBpdCBpcyBub3Qgc3RhbmRh cmRpemVkKSBoZW5jZSBubyBkYW5nZXIuDQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IFNv IHdoYXQgaXMgdGhlIHB1cnBvc2Ugb2YgdGhpcyBBUEk/IEp1c3QgZGlzcGxheSBvciBhcmUgeW91 IGV4cGVjdGluZw0KPiA+ID4gPiA+ID4gPiB0aGUgYXBwbGljYXRpb24gY2FuIGRvIGFueSBhY3Rp b24gYmFzZWQgb24gdGhpcz8NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBPaCwgSSBzZWUuIE1h aW5seSBmb3Igc2hvd2luZyB3aGljaCBidXJzdCByeC90eCBtb2R1bGUgcnVubmluZzoNCj4gPiA+ ID4gPg0KPiA+ID4gPiA+IElmIHNvLCB0aGUgcHVibGljIEFQSSBzaG91bGQgYmUgYXMgc3RyaW5n IHRvIGF2b2lkIGFueSBvdGhlciBpbnRlcnByZWF0aW9uIG9mDQo+ID4gPiA+ID4gZmxhZ3MgaW4g YXBwbGljYXRpb24uDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBBbmQgaXQgbWFrZXMgYXBwbGljYXRp b24gbGlmZSBlYXN5IHRvby4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+ IEF0IGZpcnN0LCB3ZSBkbyB1c2Ugc3RyaW5nLCBidXQgc3RyaW5nIGNvbnRhaW5zIHNhbWUgd29y ZHMuIE9mZiBjb3Vyc2UsIHRoaXMNCj4gPiA+ID4gaXMgZnJvbSBDUFUncyB2aWV3LiBPdXIgdHdv IFBNRHMgc3RyaW5nIGFyZSBuZWFybHkgdGhlIHNhbWUsIHNvIHdlIHVzZSBiaXQNCj4gPiA+ID4g aW5zdGVhZC4gQW5kIHBlb3BsZSBtYXkgY2hlY2sgd2hpY2ggQ1BVJ3MgdmVydG9yIHVzaW5nLiBB bmQgd2UgcHJvdmlkZSB0b19zdHJpbmcNCj4gPiA+ID4gdG8gaGVscCBtYWtlIGJvdGggaGFwcHku IE5vdCBzdXJlIHdlIHJlYWxseSBtYWtlIHRoZW0gaGFwcHkuDQo+ID4gPg0KPiA+ID4gIyBJIHVu ZGVyc3RhbmQgdGhlIGZsYWdzIGNhbiBlbmFibGUgdXMgdG8gcmV1c2Ugc29tZSBvZiB0aGUgY29k ZSBhbmQgSQ0KPiA+ID4gYWdyZWUgd2l0aCB0aGF0Lg0KPiA+ID4gQnV0IGl0IGhhcyB0aGUgZG93 bnNpZGUgbWVudGlvbmVkIGFib3ZlLg0KPiA+ID4NCj4gPiA+IEhvdyBhYm91dCB0aGUgZm9sbG93 aW5nIHRvIGhhdmUgdGhlIGJlc3Qgb2YgYm90aCB3b3JsZHMuDQo+ID4gPg0KPiA+ID4gMSkgVGhl IHB1YmxpYyBldGhkZXYgQVBJIHNob3VsZCByZXR1cm4gb25seSAic3RyaW5nIiBpLmUgdGhlIGZs YWdzDQo+ID4gPiBTSE9VTEQgTk9UIGJlIGV4cG9zZWQgYXMgZXRoZGV2IEFQSQ0KPiA+ID4gaS5l DQo+ID4gPiBpbnQgcnRlX2V0aF90eF9idXJzdF9tb2RlX25hbWUodWludDE2X3QgcG9ydF9pZCwg dWludDE2X3QgcXVldWVfaWQsIGNoYXIgKm5hbWUpOw0KPiA+ID4NCj4gPg0KPiA+IEhvdyBhYm91 dCAqX3N0cl8qIHN0eWxlID8NCj4gDQo+IF9uYW1lIGtpbmQgb2YgaW1wbGllcyBpdCB0aGUgc3Ry aW5nLiBtYXkgYmUgX21vZGUgaXMgZ29vZCBhcyBpdCBpcyBzaG9ydC4NCj4gDQo+ID4gaW50DQo+ ID4gcnRlX2V0aF9yeF9idXJzdF9tb2RlX3N0cl9nZXQodWludDE2X3QgcG9ydF9pZCwgdWludDE2 X3QgcXVldWVfaWQsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj aGFyICpidWYsIGludCBidWZsZW4pDQo+IA0KDQpBYm91dCB0aGUgZnVuY3Rpb24sIGtlZXAgdGhl IHNhbWUgaXMgYmV0dGVyID8gVGhlbiB3ZSBuZWVkIG5vIHdob2xlDQpyZXBsYWNlLCBqdXN0IHVw ZGF0ZSB0aGUgcGFyYW1ldGVycywgYW5kIHRoZSBwYXJhbWV0ZXJzIGluZGljYXRlZCB0aGF0DQpp dCBpcyBpbiBzdHJpbmcgZm9ybWF0Lg0KDQo+IFdlIGRvbid0IG5lZWQgYnVmbGVuIGFzIGl0IGlz IG5vdCBrbm93biB0byB0aGUgYXBwbGljYXRpb24uIFRoZQ0KPiB0eXBpY2FsIHBhdHRlcm4sIHdl IGZvbGxvd2VkLA0KPiBpbiBkcGRrIGlzLCB3aGVuIGZ1bmN0aW9uIGNhbGxlZCBidWYgYXMgTlVM TCB0aGVuIHRoZSBmdW5jdGlvbiByZXR1cm5zDQo+IHRoZSBleHBlY3RlZCBzaXplIHNvIHRoYXQN Cj4gdGhlIGFwcGxpY2F0aW9uIGNhbiBhbGxvYyBhbmQgZ2V0IHRoZSBidWZmZXIgZnJvbSBldGhk ZXYgbGF5ZXIgb24gdGhlDQo+IG5leHQgaXRlcmF0aW9uLg0KPiANCj4gDQoNCkEgbGl0dGxlIGNv bXBsaWNhdGVkIGFuZCB0b28gaGVhdnkgZm9yIHVzaW5nID8gd2hlcmUgaXMgdGhlIGV4YW1wbGUg Y29kZSA/DQpJIGZvdW5kIHRoYXQgJ3NucHJpbnRmJyBoYWQgdGhpcyBmZWF0dXJlLCBidXQgJ3Nw cmludGYnIGRpZG4ndC4gQW5kIHdlIG5lZWQNCnRvIGxvb3AgYWxsIHRoZSBvcHRpb25zLCBoYXJk IHRvIGRvIGxpa2U6ICdidWYgKyBsZW4nIGZvciBuZXh0IHN0cmluZyA/DQoNCmludCBtYWluKHZv aWQpDQp7DQogICAgICAgIGludCBsZW47DQogICAgICAgIGNoYXIgKmJ1ZiA9IE5VTEw7DQoNCiAg ICAgICAgbGVuID0gc3ByaW50ZihidWYsICJ0ZXN0ICVkIiwgMik7DQoNCiAgICAgICAgcHJpbnRm KCJsZW4gPSAlZFxuIiwgbGVuKTsNCg0KICAgICAgICByZXR1cm4gMDsNCn0NCg0KU2VnbWVudGF0 aW9uIGZhdWx0IChjb3JlIGR1bXBlZCkNCg0KPT09PT09PT09PT09PT0NCg0KI2luY2x1ZGUgPHN0 ZGlvLmg+DQoNCg0KaW50IG1haW4odm9pZCkNCnsNCiAgICAgICAgaW50IGxlbjsNCiAgICAgICAg Y2hhciAqYnVmID0gTlVMTDsNCg0KICAgICAgICBsZW4gPSBzbnByaW50ZihidWYsIDAsICJ0ZXN0 ICVkIiwgMik7DQoNCiAgICAgICAgcHJpbnRmKCJsZW4gPSAlZFxuIiwgbGVuKTsNCg0KICAgICAg ICByZXR1cm4gMDsNCn0NCg0KbGVuID0gNg0KDQo+IA0KPiANCj4gDQo+ID4NCj4gPg0KPiA+ID4g MikgVGhlIFBNRCBpbnRlcmZhY2UgIHRvIHRoZSBjb21tb24gY29kZSBjYW4gYmUgZm9sbG93aW5n DQo+ID4gPg0KPiA+ID4gIHN0cnVjdCBldGhfcG1kX2J1cnN0X21vZGUgew0KPiA+ID4gICAgICAg ICB1aW50NjRfdCBvcHRpb25zOw0KPiA+ID4gICAgICAgICAgY2hhciBuYW1lWzEyOF07IC8qIFBN RCBzcGVjaWZpYyBidXJzdCBtb2RlIGluZm9ybWF0aW9uICovDQo+ID4gPiB9Ow0KPiA+ID4NCj4g Pg0KPiA+IHN0cnVjdCBldGhfcG1kX2J1cnN0X21vZGUgew0KPiA+ICAgICAgICAgdWludDY0X3Qg b3B0aW9uczsNCj4gPiAgICAgICAgIGNoYXIgZGV2X3NwZWNpZmljWzEyOF07IC8qIFBNRCBzcGVj aWZpYyBidXJzdCBtb2RlIGluZm9ybWF0aW9uICovDQo+ID4gfTsNCj4gPg0KPiA+IFN0aWxsIHVz ZSAnZGV2X3NwZWNpZmljJyA/IFNpbmNlIHdob2xlIHN0cnVjdHVyZSAnc3RydWN0IGV0aF9wbWRf YnVyc3RfbW9kZScNCj4gPiB3aWxsIGJlIHRyYW5zbGF0ZWQgaW50byBzdHJpbmcgbmFtZS4NCj4g DQo+IFllcy4NCj4gb3B0aW9ucyAtIGZvciBnZW5lcmljIGZsYWdzIHRvIHJldXNlIHRoZSBjb2Rl DQo+IGRldl9zcGVjaWZpYyAtIGZvciBQTUQgc3BlY2lmaWMgc3RyaW5nL25hbWUNCj4gDQo+ID4N Cj4gPiA+IHR5cGVkZWYgaW50ICgqZXRoX2J1cnN0X21vZGVfZ2V0X3QpKHN0cnVjdCBydGVfZXRo X2RldiAqZGV2LA0KPiA+ID4gICAgICAgICB1aW50MTZfdCBxdWV1ZV9pZCwgc3RydWN0IGV0aF9i dXJzdF9tb2RlICptb2RlKQ0KPiA+ID4NCj4gPiA+IDMpIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBy dGVfZXRoX3R4X2J1cnN0X21vZGVfbmFtZSgpIHNoYWxsIGRvIG9wdG9ucw0KPiA+ID4gZmxhZyB0 byBzdHJpbmcgY29udmVyaW9uKGFnYWluIGludGVybmFsIHRvIGNvbW1vbiBjb2RlIGltcGxlbWV0 YXRpb24pDQo+ID4gPiBhbmQgY29uY2F0ZW5hdGUgd2l0aCBldGhfcG1kX2J1cnN0X21vZGU6Om5h bWUNCj4gPiA+DQo+ID4NCj4gPiBTaG91bGQgYmUgYmV0dGVyIHRvIHVzZSB0aGUgdXNlciBpbnB1 dCBidWZmZXIgdy8gc2l6ZSA/IFNpbmNlIG5vdyAnb3B0aW9uJw0KPiA+IGlzIHByaXZhdGUgdG8g UE1ELg0KPiANCj4gc2VlIGFib3ZlLiBObyBuZWVkIGZvciBhIHNlcGFyYXRlIGFyZ3VtZW50LiBO VUxMIGNhc2UgaXQgY2FuIHJldHVybg0KPiB0aGUgZXhwZWN0ZWQgc2l6ZS4NCj4gDQo+ID4gaW50 DQo+ID4gcnRlX2V0aF9yeF9idXJzdF9tb2RlX3N0cl9nZXQodWludDE2X3QgcG9ydF9pZCwgdWlu dDE2X3QgcXVldWVfaWQsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjaGFyICpidWYsIGludCBidWZsZW4pDQo+ID4NCj4gPiBBbmQgdGhlIGNvbmNhdGVuYXRlIGZv cm1hdCA6ICJvcHRpb25zIHN0cmluZywgZGV2X3NwZWNpZmljIg0KPiA+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXg0KPiA+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgSWYgb3B0aW9uIGlzIG5vbi16ZXJvLCBhbmQgaGFzIGRl dmljZSBzcGVjaWZpYywgYWRkIHRoaXMNCj4gJywnDQo+ID4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBhcyBzZXBhcmF0aW9uID8NCj4gDQo+IExvb2tzIGdvb2Qg dG8gbWUuDQo+IA0KPiA+DQo+ID4gPiBUaGlzIHdvdWxkIGhlbHAgdG8gcmV1c2Ugc29tZSBvZiB0 aGUgZmxhZ3MgdG8gbmFtZSBjb252ZXJzaW9uIGxvZ2ljDQo+ID4gPiBhY3Jvc3MgYWxsIFBNRHMu DQo+ID4gPiBBbmQgUE1EIGFyZSBmcmVlIHRvIHJldHVybiAgZXRoX3BtZF9idXJzdF9tb2RlOjpv cHRpb25zIGFzIHplcm8gaW4NCj4gPiA+IHRoYXQgY2FzZSBmaW5hbA0KPiA+ID4gc3RyaW5nIG9u bHkgYmUgZXRoX3BtZF9idXJzdF9tb2RlOjpuYW1lLg0KPiA+ID4NCj4gPiA+DQo+ID4gPiA+DQo+ ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gaHR0cHM6Ly9kb2NzLmZkLmlvL3ZwcC8xOC4xMS9kNy9k MWQvcGx1Z2luc18yZHBka18yZGV2aWNlXzJmb3JtYXRfOGNfc291cmNlLmh0bWwNCj4gPiA+ID4g PiA+DQo+ID4gPiA+ID4gPiBzID0gZm9ybWF0IChzLCAiJVV0eCBidXJzdCBmdW5jdGlvbjogJXNc biIsDQo+ID4gPiA+ID4gPiAgIDU3OSAgICAgICAgICAgICAgICAgICBmb3JtYXRfd2hpdGVfc3Bh Y2UsIGluZGVudCArIDIsDQo+ID4gPiA+ID4gPiAgIDU4MCAgICAgICAgICAgICAgICAgICBwdHIy c25hbWUgKHJ0ZV9ldGhfZGV2aWNlc1t4ZC0+cG9ydF9pZF0udHhfcGt0X2J1cnN0KSk7DQo+ID4g PiA+ID4gPiAgIDU4MSAgICAgICBzID0gZm9ybWF0IChzLCAiJVVyeCBidXJzdCBmdW5jdGlvbjog JXNcbiIsDQo+ID4gPiA+ID4gPiAgIDU4MiAgICAgICAgICAgICAgICAgICBmb3JtYXRfd2hpdGVf c3BhY2UsIGluZGVudCArIDIsDQo+ID4gPiA+ID4gPiAgIDU4MyAgICAgICAgICAgICAgICAgICBw dHIyc25hbWUgKHJ0ZV9ldGhfZGV2aWNlc1t4ZC0+cG9ydF9pZF0ucnhfcGt0X2J1cnN0KSk7DQo+ ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gaHR0cHM6Ly9kb2NzLmZkLmlvL3ZwcC8xOC4xMS9kNy9k MWQvcGx1Z2luc18yZHBka18yZGV2aWNlXzJmb3JtYXRfOGNfc291cmNlLmh0bWwNCj4gPiA+ID4g PiA+DQo+ID4gPiA+ID4gPiA0ODggc3RhdGljIGNvbnN0IGNoYXIgKg0KPiA+ID4gPiA+ID4gICA0 ODkgcHRyMnNuYW1lICh2b2lkICpwKQ0KPiA+ID4gPiA+ID4gICA0OTAgew0KPiA+ID4gPiA+ID4g ICA0OTEgICBEbF9pbmZvIGluZm8gPSB7IDAgfTsNCj4gPiA+ID4gPiA+ICAgNDkyDQo+ID4gPiA+ ID4gPiAgIDQ5MyAgIGlmIChkbGFkZHIgKHAsICZpbmZvKSA9PSAwKQ0KPiA+ID4gPiA+ID4gICA0 OTQgICAgIHJldHVybiAwOw0KPiA+ID4gPiA+ID4gICA0OTUNCj4gPiA+ID4gPiA+ICAgNDk2ICAg cmV0dXJuIGluZm8uZGxpX3NuYW1lOw0KPiA+ID4gPiA+ID4gICA0OTcgfQ0KPiA+ID4gPiA+ID4N Cj4gPiA+ID4gPiA+ICAgICB0eCBidXJzdCBmdW5jdGlvbjogaXhnYmVfeG1pdF9wa3RzDQo+ID4g PiA+ID4gPiAgICAgcnggYnVyc3QgZnVuY3Rpb246IGl4Z2JlX3JlY3ZfcGt0cw0KPiA+ID4gPiA+ ID4NCj4gPiA+ID4gPiA+IElmIHRoZSBQTUQncyByeC90eCBpcyAqc3RhdGljKiBmdW5jdGlvbiwg J3B0cjJuYW1lJyByZXR1cm5zICduaWwnLg0K