From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id 515818D9B for ; Wed, 19 Aug 2015 19:29:28 +0200 (CEST) Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga102.fm.intel.com with ESMTP; 19 Aug 2015 10:29:27 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.15,711,1432623600"; d="scan'208,217";a="544875967" Received: from pgsmsx102.gar.corp.intel.com ([10.221.44.80]) by FMSMGA003.fm.intel.com with ESMTP; 19 Aug 2015 10:29:25 -0700 Received: from shsmsx102.ccr.corp.intel.com (10.239.4.154) by PGSMSX102.gar.corp.intel.com (10.221.44.80) with Microsoft SMTP Server (TLS) id 14.3.224.2; Thu, 20 Aug 2015 01:29:24 +0800 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.210]) by shsmsx102.ccr.corp.intel.com ([169.254.2.206]) with mapi id 14.03.0224.002; Thu, 20 Aug 2015 01:29:23 +0800 From: "Zhang, Helin" To: Vladislav Zolotarov Thread-Topic: [dpdk-dev] [PATCH v1] ixgbe_pmd: forbid tx_rs_thresh above 1 for all NICs but 82598 Thread-Index: AQHQ1fLetlF10YIG/kWzzVYFXNo2ap4KX8ywgAAU3oCAB4kdgIAARtIAgAFYG3A= Date: Wed, 19 Aug 2015 17:29:22 +0000 Message-ID: References: <1439489195-31553-1-git-send-email-vladz@cloudius-systems.com> <55CD7EA5.6060100@cloudius-systems.com> <6A0DE07E22DDAD4C9103DF62FEBC0909D3E116@shsmsx102.ccr.corp.intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Cc: "dev@dpdk.org" Subject: Re: [dpdk-dev] [PATCH v1] ixgbe_pmd: forbid tx_rs_thresh above 1 for all NICs but 82598 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: Wed, 19 Aug 2015 17:29:29 -0000 SGkgVmxhZA0KDQpUaGFuayB5b3UgdmVyeSBtdWNoIGZvciB0aGUgcGF0Y2hlcyEgR2l2ZSBtZSBh IGZldyBtb3JlIHRpbWUgdG8gZG91YmxlIGNoZWNrIHdpdGggbW9yZSBndXlzLCBhbmQgcG9zc2li bHkgaGFyZHdhcmUgZXhwZXJ0cy4NCg0KUmVnYXJkcywNCkhlbGluDQoNCkZyb206IFZsYWRpc2xh diBab2xvdGFyb3YgW21haWx0bzp2bGFkekBjbG91ZGl1cy1zeXN0ZW1zLmNvbV0NClNlbnQ6IFR1 ZXNkYXksIEF1Z3VzdCAxOCwgMjAxNSA5OjU2IFBNDQpUbzogTHUsIFdlbnpodW8NCkNjOiBkZXZA ZHBkay5vcmc7IFpoYW5nLCBIZWxpbg0KU3ViamVjdDogUkU6IFtkcGRrLWRldl0gW1BBVENIIHYx XSBpeGdiZV9wbWQ6IGZvcmJpZCB0eF9yc190aHJlc2ggYWJvdmUgMSBmb3IgYWxsIE5JQ3MgYnV0 IDgyNTk4DQoNCg0KT24gQXVnIDE5LCAyMDE1IDAzOjQyLCAiTHUsIFdlbnpodW8iIDx3ZW56aHVv Lmx1QGludGVsLmNvbTxtYWlsdG86d2Vuemh1by5sdUBpbnRlbC5jb20+PiB3cm90ZToNCj4NCj4g SGkgSGVsaW4sDQo+DQo+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiBGcm9tOiBk ZXYgW21haWx0bzpkZXYtYm91bmNlc0BkcGRrLm9yZzxtYWlsdG86ZGV2LWJvdW5jZXNAZHBkay5v cmc+XSBPbiBCZWhhbGYgT2YgVmxhZCBab2xvdGFyb3YNCj4gPiBTZW50OiBGcmlkYXksIEF1Z3Vz dCAxNCwgMjAxNSAxOjM4IFBNDQo+ID4gVG86IFpoYW5nLCBIZWxpbjsgZGV2QGRwZGsub3JnPG1h aWx0bzpkZXZAZHBkay5vcmc+DQo+ID4gU3ViamVjdDogUmU6IFtkcGRrLWRldl0gW1BBVENIIHYx XSBpeGdiZV9wbWQ6IGZvcmJpZCB0eF9yc190aHJlc2ggYWJvdmUgMSBmb3INCj4gPiBhbGwgTklD cyBidXQgODI1OTgNCj4gPg0KPiA+DQo+ID4NCj4gPiBPbiAwOC8xMy8xNSAyMzoyOCwgWmhhbmcs IEhlbGluIHdyb3RlOg0KPiA+ID4gSGkgVmxhZA0KPiA+ID4NCj4gPiA+IEkgZG9uJ3QgdGhpbmsg dGhlIGNoYW5nZXMgYXJlIG5lZWRlZC4gSXQgc2F5cyBpbiBkYXRhc2hlZXQgdGhhdCB0aGUgUlMN Cj4gPiA+IGJpdCBzaG91bGQgYmUgc2V0IG9uIHRoZSBsYXN0IGRlc2NyaXB0b3Igb2YgZXZlcnkg cGFja2V0LCBPTkxZIFdIRU4NCj4gPiBUWERDVEwuV1RIUkVTSCBlcXVhbHMgdG8gWkVSTy4NCj4g Pg0KPiA+IE9mIGNvdXJzZSBpdCdzIG5lZWRlZCEgU2VlIGJlbG93Lg0KPiA+IEV4YWN0bHkgdGhl IHNhbWUgc3BlYyBhIGZldyBsaW5lcyBhYm92ZSB0aGUgcGxhY2UgdSd2ZSBqdXN0IHF1b3RlZCBz dGF0ZXM6DQo+ID4NCj4gPiAiU29mdHdhcmUgc2hvdWxkIG5vdCBzZXQgdGhlIFJTIGJpdCB3aGVu IFRYRENUTC5XVEhSRVNIIGlzIGdyZWF0ZXIgdGhhbg0KPiA+IHplcm8uIg0KPiA+DQo+ID4gQW5k IHNpbmNlIGFsbCB0aHJlZSAoMykgaXhnYmUgeG1pdCBjYWxsYmFja3MgYXJlIHV0aWxpemluZyBS UyBiaXQgbm90YXRpb24gaXhnYmUgUE1EDQo+ID4gaXMgYWN0dWFsbHkgbm90IHN1cHBvcnRpbmcg YW55IHZhbHVlIG9mIFdUSFJFU0ggZGlmZmVyZW50IGZyb20gemVyby4NCj4gSSB0aGluayBWbGFk IGlzIHJpZ2h0LiBXZSBuZWVkIHRvIGZpeCB0aGlzIGlzc3VlLiBBbnkgc3VnZ2VzdGlvbj8gSWYg bm90LCBJJ2QgbGlrZSB0byBhY2sgdGhpcyBwYXRjaC4NCg0KUGxzLiwgbm90ZSB0aGF0IHRoZXJl IGlzIGEgdjIgb2YgdGhpcyBwYXRjaCBvbiB0aGUgbGlzdC4gSSBmb3Jnb3QgdG8gcGF0Y2ggaXhn YmV2Zl9kZXZfaW5mb19nZXQoKSBpbiB2MS4NCg0KPg0KPiA+DQo+ID4gPg0KPiA+ID4gUmVnYXJk cywNCj4gPiA+IEhlbGluDQo+ID4gPg0KPiA+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0t DQo+ID4gPj4gRnJvbTogVmxhZCBab2xvdGFyb3YgW21haWx0bzp2bGFkekBjbG91ZGl1cy1zeXN0 ZW1zLmNvbTxtYWlsdG86dmxhZHpAY2xvdWRpdXMtc3lzdGVtcy5jb20+XQ0KPiA+ID4+IFNlbnQ6 IFRodXJzZGF5LCBBdWd1c3QgMTMsIDIwMTUgMTE6MDcgQU0NCj4gPiA+PiBUbzogZGV2QGRwZGsu b3JnPG1haWx0bzpkZXZAZHBkay5vcmc+DQo+ID4gPj4gQ2M6IFpoYW5nLCBIZWxpbjsgQW5hbnll diwgS29uc3RhbnRpbjsgYXZpQGNsb3VkaXVzLXN5c3RlbXMuY29tPG1haWx0bzphdmlAY2xvdWRp dXMtc3lzdGVtcy5jb20+OyBWbGFkDQo+ID4gPj4gWm9sb3Rhcm92DQo+ID4gPj4gU3ViamVjdDog W2RwZGstZGV2XSBbUEFUQ0ggdjFdIGl4Z2JlX3BtZDogZm9yYmlkIHR4X3JzX3RocmVzaCBhYm92 ZSAxIGZvcg0KPiA+IGFsbA0KPiA+ID4+IE5JQ3MgYnV0IDgyNTk4DQo+ID4gPj4NCj4gPiA+PiBB Y2NvcmRpbmcgdG8gODI1OTkgYW5kIHg1NDAgSFcgc3BlY2lmaWNhdGlvbnMgUlMgYml0ICptdXN0 KiBiZSBzZXQgaW4gdGhlDQo+ID4gbGFzdA0KPiA+ID4+IGRlc2NyaXB0b3Igb2YgKmV2ZXJ5KiBw YWNrZXQuDQo+ID4gPiBUaGVyZSBpcyBhIGNvbmRpdGlvbiB0aGF0IGlmIFRYRENUTC5XVEhSRVNI IGVxdWFsIHRvIHplcm8uDQo+ID4NCj4gPiBSaWdodCBhbmQgaXhnYmUgUE1EIHJlcXVpcmVzIHRo aXMgY29uZGl0aW9uIHRvIGJlIGZ1bGZpbGxlZCBpbiBvcmRlciB0bw0KPiA+IGZ1bmN0aW9uLiBT ZWUgYWJvdmUuDQo+ID4NCj4gPiA+DQo+ID4gPj4gVGhpcyBwYXRjaCBmaXhlcyB0aGUgVHggaGFu ZyB3ZSB3ZXJlIGNvbnN0YW50bHkgaGl0dGluZyB3aXRoIGEgc2Vhc3Rhci1iYXNlZA0KPiA+ID4+ IGFwcGxpY2F0aW9uIG9uIHg1NDAgTklDLg0KPiA+ID4gQ291bGQgeW91IGhlbHAgdG8gc2hhcmUg d2l0aCB1cyBob3cgdG8gcmVwcm9kdWNlIHRoZSB0eCBoYW5nIGlzc3VlLCB3aXRoIHVzaW5nDQo+ ID4gPiB0eXBpY2FsIERQREsgZXhhbXBsZXM/DQo+ID4NCj4gPiBTb3JyeS4gSSdtIG5vdCB2ZXJ5 IGZhbWlsaWFyIHdpdGggdGhlIHR5cGljYWwgRFBESyBleGFtcGxlcyB0byBoZWxwIHUNCj4gPiBo ZXJlLiBIb3dldmVyIHRoaXMgaXMgcXVpdGUgaXJyZWxldmFudCBzaW5jZSB3aXRob3V0IHRoaXMg dGhpcyBwYXRjaA0KPiA+IGl4Z2JlIFBNRCBvYnZpb3VzbHkgYWJ1c2VzIHRoZSBIVyBzcGVjIGFz IGhhcyBiZWVuIGV4cGxhaW5lZCBhYm92ZS4NCj4gPg0KPiA+IFdlIHNhdyB0aGUgaXNzdWUgd2hl biB1IHN0cmVzc2VkIHRoZSB4bWl0IHBhdGggd2l0aCBhIGxvdCBvZiBoaWdobHkNCj4gPiBmcmFn bWVudGVkIFRDUCBmcmFtZXMgKHBhY2tldHMgd2l0aCB1cCB0byAzMyBmcmFnbWVudHMgd2l0aCBu b24taGVhZGVycw0KPiA+IGZyYWdtZW50cyBhcyBzbWFsbCBhcyA0IGJ5dGVzKSB3aXRoIGFsbCBv ZmZsb2FkIGZlYXR1cmVzIGVuYWJsZWQuDQo+ID4NCj4gPiBUaGFua3MsDQo+ID4gdmxhZA0KPiA+ ID4NCj4gPiA+PiBTaWduZWQtb2ZmLWJ5OiBWbGFkIFpvbG90YXJvdiA8dmxhZHpAY2xvdWRpdXMt c3lzdGVtcy5jb208bWFpbHRvOnZsYWR6QGNsb3VkaXVzLXN5c3RlbXMuY29tPj4NCj4gPiA+PiAt LS0NCj4gPiA+PiAgIGRyaXZlcnMvbmV0L2l4Z2JlL2l4Z2JlX2V0aGRldi5jIHwgIDkgKysrKysr KysrDQo+ID4gPj4gICBkcml2ZXJzL25ldC9peGdiZS9peGdiZV9yeHR4LmMgICB8IDIzICsrKysr KysrKysrKysrKysrKysrKystDQo+ID4gPj4gICAyIGZpbGVzIGNoYW5nZWQsIDMxIGluc2VydGlv bnMoKyksIDEgZGVsZXRpb24oLSkNCj4gPiA+Pg0KPiA+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L25ldC9peGdiZS9peGdiZV9ldGhkZXYuYw0KPiA+ID4+IGIvZHJpdmVycy9uZXQvaXhnYmUvaXhn YmVfZXRoZGV2LmMNCj4gPiA+PiBpbmRleCBiOGVlMWU5Li42NzE0ZmQ5IDEwMDY0NA0KPiA+ID4+ IC0tLSBhL2RyaXZlcnMvbmV0L2l4Z2JlL2l4Z2JlX2V0aGRldi5jDQo+ID4gPj4gKysrIGIvZHJp dmVycy9uZXQvaXhnYmUvaXhnYmVfZXRoZGV2LmMNCj4gPiA+PiBAQCAtMjQxNCw2ICsyNDE0LDE1 IEBAIGl4Z2JlX2Rldl9pbmZvX2dldChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4gPiBzdHJ1 Y3QNCj4gPiA+PiBydGVfZXRoX2Rldl9pbmZvICpkZXZfaW5mbykNCj4gPiA+PiAgICAgICAgICAg IC50eHFfZmxhZ3MgPSBFVEhfVFhRX0ZMQUdTX05PTVVMVFNFR1MgfA0KPiA+ID4+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEVUSF9UWFFfRkxBR1NfTk9PRkZMT0FEUywNCj4gPiA+PiAgICB9 Ow0KPiA+ID4+ICsNCj4gPiA+PiArICAvKg0KPiA+ID4+ICsgICAqIEFjY29yZGluZyB0byA4MjU5 OSBhbmQgeDU0MCBzcGVjaWZpY2F0aW9ucyBSUyBiaXQgKm11c3QqIGJlIHNldCBvbg0KPiA+IHRo ZQ0KPiA+ID4+ICsgICAqIGxhc3QgZGVzY3JpcHRvciBvZiAqZXZlcnkqIHBhY2tldC4gVGhlcmVm b3JlIHdlIHdpbGwgbm90IGFsbG93IHRoZQ0KPiA+ID4+ICsgICAqIHR4X3JzX3RocmVzaCBhYm92 ZSAxIGZvciBhbGwgTklDcyBuZXdlciB0aGFuIDgyNTk4Lg0KPiA+ID4+ICsgICAqLw0KPiA+ID4+ ICsgIGlmIChody0+bWFjLnR5cGUgPiBpeGdiZV9tYWNfODI1OThFQikNCj4gPiA+PiArICAgICAg ICAgIGRldl9pbmZvLT5kZWZhdWx0X3R4Y29uZi50eF9yc190aHJlc2ggPSAxOw0KPiA+ID4+ICsN Cj4gPiA+PiAgICBkZXZfaW5mby0+aGFzaF9rZXlfc2l6ZSA9IElYR0JFX0hLRVlfTUFYX0lOREVY ICogc2l6ZW9mKHVpbnQzMl90KTsNCj4gPiA+PiAgICBkZXZfaW5mby0+cmV0YV9zaXplID0gRVRI X1JTU19SRVRBX1NJWkVfMTI4Ow0KPiA+ID4+ICAgIGRldl9pbmZvLT5mbG93X3R5cGVfcnNzX29m ZmxvYWRzID0gSVhHQkVfUlNTX09GRkxPQURfQUxMOyBkaWZmIC0tDQo+ID4gZ2l0DQo+ID4gPj4g YS9kcml2ZXJzL25ldC9peGdiZS9peGdiZV9yeHR4LmMgYi9kcml2ZXJzL25ldC9peGdiZS9peGdi ZV9yeHR4LmMgaW5kZXgNCj4gPiA+PiA5MTAyM2I5Li44ZGJkZmZjIDEwMDY0NA0KPiA+ID4+IC0t LSBhL2RyaXZlcnMvbmV0L2l4Z2JlL2l4Z2JlX3J4dHguYw0KPiA+ID4+ICsrKyBiL2RyaXZlcnMv bmV0L2l4Z2JlL2l4Z2JlX3J4dHguYw0KPiA+ID4+IEBAIC0yMDg1LDExICsyMDg1LDE5IEBAIGl4 Z2JlX2Rldl90eF9xdWV1ZV9zZXR1cChzdHJ1Y3QgcnRlX2V0aF9kZXYNCj4gPiA+PiAqZGV2LA0K PiA+ID4+ICAgIHN0cnVjdCBpeGdiZV90eF9xdWV1ZSAqdHhxOw0KPiA+ID4+ICAgIHN0cnVjdCBp eGdiZV9odyAgICAgKmh3Ow0KPiA+ID4+ICAgIHVpbnQxNl90IHR4X3JzX3RocmVzaCwgdHhfZnJl ZV90aHJlc2g7DQo+ID4gPj4gKyAgYm9vbCByc19kZWZlcnJpbmdfYWxsb3dlZDsNCj4gPiA+Pg0K PiA+ID4+ICAgIFBNRF9JTklUX0ZVTkNfVFJBQ0UoKTsNCj4gPiA+PiAgICBodyA9IElYR0JFX0RF Vl9QUklWQVRFX1RPX0hXKGRldi0+ZGF0YS0+ZGV2X3ByaXZhdGUpOw0KPiA+ID4+DQo+ID4gPj4g ICAgLyoNCj4gPiA+PiArICAgKiBBY2NvcmRpbmcgdG8gODI1OTkgYW5kIHg1NDAgc3BlY2lmaWNh dGlvbnMgUlMgYml0ICptdXN0KiBiZSBzZXQgb24NCj4gPiB0aGUNCj4gPiA+PiArICAgKiBsYXN0 IGRlc2NyaXB0b3Igb2YgKmV2ZXJ5KiBwYWNrZXQuIFRoZXJlZm9yZSB3ZSB3aWxsIG5vdCBhbGxv dyB0aGUNCj4gPiA+PiArICAgKiB0eF9yc190aHJlc2ggYWJvdmUgMSBmb3IgYWxsIE5JQ3MgbmV3 ZXIgdGhhbiA4MjU5OC4NCj4gPiA+PiArICAgKi8NCj4gPiA+PiArICByc19kZWZlcnJpbmdfYWxs b3dlZCA9IChody0+bWFjLnR5cGUgPD0gaXhnYmVfbWFjXzgyNTk4RUIpOw0KPiA+ID4+ICsNCj4g PiA+PiArICAvKg0KPiA+ID4+ICAgICAqIFZhbGlkYXRlIG51bWJlciBvZiB0cmFuc21pdCBkZXNj cmlwdG9ycy4NCj4gPiA+PiAgICAgKiBJdCBtdXN0IG5vdCBleGNlZWQgaGFyZHdhcmUgbWF4aW11 bSwgYW5kIG11c3QgYmUgbXVsdGlwbGUNCj4gPiA+PiAgICAgKiBvZiBJWEdCRV9BTElHTi4NCj4g PiA+PiBAQCAtMjExMCw2ICsyMTE4LDggQEAgaXhnYmVfZGV2X3R4X3F1ZXVlX3NldHVwKHN0cnVj dCBydGVfZXRoX2Rldg0KPiA+ICpkZXYsDQo+ID4gPj4gICAgICogdG8gdHJhbnNtaXQgYSBwYWNr ZXQgaXMgZ3JlYXRlciB0aGFuIHRoZSBudW1iZXIgb2YgZnJlZSBUWA0KPiA+ID4+ICAgICAqIGRl c2NyaXB0b3JzLg0KPiA+ID4+ICAgICAqIFRoZSBmb2xsb3dpbmcgY29uc3RyYWludHMgbXVzdCBi ZSBzYXRpc2ZpZWQ6DQo+ID4gPj4gKyAgICogIHR4X3JzX3RocmVzaCBtdXN0IGJlIGxlc3MgdGhh biAyIGZvciBOSUNzIGZvciB3aGljaCBSUyBkZWZlcnJpbmcgaXMNCj4gPiA+PiArICAgKiAgZm9y YmlkZGVuIChhbGwgYnV0IDgyNTk4KS4NCj4gPiA+PiAgICAgKiAgdHhfcnNfdGhyZXNoIG11c3Qg YmUgZ3JlYXRlciB0aGFuIDAuDQo+ID4gPj4gICAgICogIHR4X3JzX3RocmVzaCBtdXN0IGJlIGxl c3MgdGhhbiB0aGUgc2l6ZSBvZiB0aGUgcmluZyBtaW51cyAyLg0KPiA+ID4+ICAgICAqICB0eF9y c190aHJlc2ggbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdHhfZnJlZV90aHJlc2guDQo+ ID4gPj4gQEAgLTIxMjEsOSArMjEzMSwyMCBAQCBpeGdiZV9kZXZfdHhfcXVldWVfc2V0dXAoc3Ry dWN0IHJ0ZV9ldGhfZGV2DQo+ID4gKmRldiwNCj4gPiA+PiAgICAgKiBXaGVuIHNldCB0byB6ZXJv IHVzZSBkZWZhdWx0IHZhbHVlcy4NCj4gPiA+PiAgICAgKi8NCj4gPiA+PiAgICB0eF9yc190aHJl c2ggPSAodWludDE2X3QpKCh0eF9jb25mLT50eF9yc190aHJlc2gpID8NCj4gPiA+PiAtICAgICAg ICAgICAgICAgICAgdHhfY29uZi0+dHhfcnNfdGhyZXNoIDogREVGQVVMVF9UWF9SU19USFJFU0gp Ow0KPiA+ID4+ICsgICAgICAgICAgICAgICAgICB0eF9jb25mLT50eF9yc190aHJlc2ggOg0KPiA+ ID4+ICsgICAgICAgICAgICAgICAgICAocnNfZGVmZXJyaW5nX2FsbG93ZWQgPyBERUZBVUxUX1RY X1JTX1RIUkVTSCA6IDEpKTsNCj4gPiA+PiAgICB0eF9mcmVlX3RocmVzaCA9ICh1aW50MTZfdCko KHR4X2NvbmYtPnR4X2ZyZWVfdGhyZXNoKSA/DQo+ID4gPj4gICAgICAgICAgICAgICAgICAgIHR4 X2NvbmYtPnR4X2ZyZWVfdGhyZXNoIDogREVGQVVMVF9UWF9GUkVFX1RIUkVTSCk7DQo+ID4gPj4g Kw0KPiA+ID4+ICsgIGlmICghcnNfZGVmZXJyaW5nX2FsbG93ZWQgJiYgdHhfcnNfdGhyZXNoID4g MSkgew0KPiA+ID4+ICsgICAgICAgICAgUE1EX0lOSVRfTE9HKEVSUiwgInR4X3JzX3RocmVzaCBt dXN0IGJlIGxlc3MgdGhhbiAyIHNpbmNlIFJTDQo+ID4gIg0KPiA+ID4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIm11c3QgYmUgc2V0IGZvciBldmVyeSBwYWNrZXQgZm9yIHRoaXMgSFcu ICINCj4gPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICIodHhfcnNfdGhyZXNoPSV1 IHBvcnQ9JWQgcXVldWU9JWQpIiwNCj4gPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAodW5z aWduZWQgaW50KXR4X3JzX3RocmVzaCwNCj4gPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAo aW50KWRldi0+ZGF0YS0+cG9ydF9pZCwgKGludClxdWV1ZV9pZHgpOw0KPiA+ID4+ICsgICAgICAg ICAgcmV0dXJuIC0oRUlOVkFMKTsNCj4gPiA+PiArICB9DQo+ID4gPj4gKw0KPiA+ID4+ICAgIGlm ICh0eF9yc190aHJlc2ggPj0gKG5iX2Rlc2MgLSAyKSkgew0KPiA+ID4+ICAgICAgICAgICAgUE1E X0lOSVRfTE9HKEVSUiwgInR4X3JzX3RocmVzaCBtdXN0IGJlIGxlc3MgdGhhbiB0aGUNCj4gPiBu dW1iZXIgIg0KPiA+ID4+ICAgICAgICAgICAgICAgICAgICAgICAgICJvZiBUWCBkZXNjcmlwdG9y cyBtaW51cyAyLiAodHhfcnNfdGhyZXNoPSV1ICINCj4gPiA+PiAtLQ0KPiA+ID4+IDIuMS4wDQo+ DQo=