From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id DAA644626B; Wed, 19 Feb 2025 18:01:32 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C74CB427A0; Wed, 19 Feb 2025 18:01:32 +0100 (CET) Received: from szxga06-in.huawei.com (szxga06-in.huawei.com [45.249.212.32]) by mails.dpdk.org (Postfix) with ESMTP id CBFDB4028B for ; Wed, 19 Feb 2025 18:01:30 +0100 (CET) Received: from mail.maildlp.com (unknown [172.19.88.214]) by szxga06-in.huawei.com (SkyGuard) with ESMTP id 4YyjNl6Q8SzpWSN; Thu, 20 Feb 2025 01:01:59 +0800 (CST) Received: from kwepemf500006.china.huawei.com (unknown [7.202.181.244]) by mail.maildlp.com (Postfix) with ESMTPS id 029371A016C; Thu, 20 Feb 2025 01:01:29 +0800 (CST) Received: from frapeml500007.china.huawei.com (7.182.85.172) by kwepemf500006.china.huawei.com (7.202.181.244) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Thu, 20 Feb 2025 01:01:27 +0800 Received: from frapeml500007.china.huawei.com ([7.182.85.172]) by frapeml500007.china.huawei.com ([7.182.85.172]) with mapi id 15.01.2507.039; Wed, 19 Feb 2025 18:01:25 +0100 From: Konstantin Ananyev To: haijie , "dev@dpdk.org" , "thomas@monjalon.net" , "ferruh.yigit@amd.com" , "stephen@networkplumber.org" , "lihuisong (C)" , Fengchengwen , =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= CC: huangdengdui Subject: RE: [PATCH v2] examples/l3fwd: add option to set Tx burst size Thread-Topic: [PATCH v2] examples/l3fwd: add option to set Tx burst size Thread-Index: AQHbRfJCWZO+n7EwBUKzpTry848FSbNGbswAgAjkvyA= Date: Wed, 19 Feb 2025 17:01:25 +0000 Message-ID: <4447f9ff97ad481996d74e26ea481f53@huawei.com> References: <20241122071336.18470-1-haijie1@huawei.com> <20241204020622.977156-1-haijie1@huawei.com> <2d5511d1-f1d8-8410-e2ec-f6aced5a1f65@huawei.com> In-Reply-To: <2d5511d1-f1d8-8410-e2ec-f6aced5a1f65@huawei.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.206.138.73] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org DQoNCg0KPiBPbiAyMDI0LzEyLzQgMTA6MDYsIEppZSBIYWkgd3JvdGU6DQo+ID4gVGhlIGFwcGxp Y2F0aW9uIHNlbmQgcGFja2V0cyBvbmx5IHdoZW4gdGhlIGJ1ZmZlciBpcyBmdWxsLCBvciB0aGUN Cj4gPiBidWZmZXIgaXMgZW1wdHkgYW5kIHRoZSBwYWNrZXRzIHRvIGJlIHNlbnQgZXh0ZW5kcyBU WF9QS1RfQlVSU1QuDQo+ID4gVGhlIGNoYW5nZSBvZiBNQVhfUEtUX0JVUlNUIG1ha2UgVFggYnVm ZmVyIHNpemUgYW5kIFRYX1BLVF9CVVJTVA0KPiA+IGluY3JlYXNlLCB3aGlsZSB0aGUgZGVmYXVs dCBjYWNoZSBzaXplIGlzIDI1Ni4gVGhlIHBhY2tldHMgaW4NCj4gPiB0aGUgVFggZGlyZWN0aW9u IG9jY3VweSB0aGUgY2FjaGUuIEFzIGEgcmVzdWx0LCB0aGUgcGVyZm9ybWFuY2UNCj4gPiBkZXRl cmlvcmF0ZXMuDQo+ID4NCj4gPiBSZXN0b3JlIHRoZSBkZWZhdWx0IFR4IGJ1cnN0IGFuZCBhZGQg b3B0aW9uICctLXR4LWJ1cnN0JyB0byBzZXQNCj4gPiB0aGUgVHggYnVyc3Qgc2l6ZS4gVG8gZW5z dXJlIGNvbnNpc3RlbmN5LCByZW5hbWUgdGhlIG9wdGlvbg0KPiA+ICctLWJ1cnN0JyB0byAnLS1y eC1idXJzdCcuIFRoZSB2YWxpZCByYW5nZSBvZiB0aGUgdXNlci1wcm92aWRlZA0KPiA+IHZhbHVl IGlzICgwLCBNQVhfUEtUX0JVUlNUXSBmb3IgYm90aCBkaXJlY3Rpb25zLg0KPiA+DQo+ID4gRml4 ZXM6IGQ1YzQ4OTdlY2ZiMiAoImV4YW1wbGVzL2wzZndkOiBhZGQgb3B0aW9uIHRvIHNldCBSWCBi dXJzdCBzaXplIikNCj4gPiBDYzogc3RhYmxlQGRwZGsub3JnDQoNCldvdWxkbid0IHRoYXQgcGF0 Y2g6DQpodHRwczovL3BhdGNod29yay5kcGRrLm9yZy9wcm9qZWN0L2RwZGsvcGF0Y2gvMjAyNTAy MTIwNDU0MTYuMjM5MzAwMS0xLXNpdmFwcmFzYWQudHVtbWFsYUBhbWQuY29tLw0KZml4IHRoYXQg aXNzdWUgdG9vPw0KQW5kIHByb2JhYmx5IGluIGEgbGVzcyBkaXNydXB0aXZlIG1hbm5lcj8NCg0K PiA+IFNpZ25lZC1vZmYtYnk6IEppZSBIYWkgPGhhaWppZTFAaHVhd2VpLmNvbT4NCj4gPiAtLS0N Cj4gPiAgIGV4YW1wbGVzL2wzZndkL2wzZndkLmggICAgICAgIHwgMTQgKysrLS0tDQo+ID4gICBl eGFtcGxlcy9sM2Z3ZC9sM2Z3ZF9hY2wuYyAgICB8ICAyICstDQo+ID4gICBleGFtcGxlcy9sM2Z3 ZC9sM2Z3ZF9jb21tb24uaCB8ICAyICstDQo+ID4gICBleGFtcGxlcy9sM2Z3ZC9sM2Z3ZF9lbS5j ICAgICB8ICAyICstDQo+ID4gICBleGFtcGxlcy9sM2Z3ZC9sM2Z3ZF9maWIuYyAgICB8ICAyICst DQo+ID4gICBleGFtcGxlcy9sM2Z3ZC9sM2Z3ZF9scG0uYyAgICB8ICAyICstDQo+ID4gICBleGFt cGxlcy9sM2Z3ZC9tYWluLmMgICAgICAgICB8IDg5ICsrKysrKysrKysrKysrKysrKy0tLS0tLS0t LS0tLS0tLS0tDQo+ID4gICA3IGZpbGVzIGNoYW5nZWQsIDU5IGluc2VydGlvbnMoKyksIDU0IGRl bGV0aW9ucygtKQ0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL2V4YW1wbGVzL2wzZndkL2wzZndkLmgg Yi9leGFtcGxlcy9sM2Z3ZC9sM2Z3ZC5oDQo+ID4gaW5kZXggMGNjZTM0MDZlZTdkLi5hNGUyM2I4 MTdlZGYgMTAwNjQ0DQo+ID4gLS0tIGEvZXhhbXBsZXMvbDNmd2QvbDNmd2QuaA0KPiA+ICsrKyBi L2V4YW1wbGVzL2wzZndkL2wzZndkLmgNCj4gPiBAQCAtMzIsMTAgKzMyLDYgQEANCj4gPg0KPiA+ ICAgI2RlZmluZSBWRUNUT1JfU0laRV9ERUZBVUxUICAgTUFYX1BLVF9CVVJTVA0KPiA+ICAgI2Rl ZmluZSBWRUNUT1JfVE1PX05TX0RFRkFVTFQgMUU2IC8qIDFtcyAqLw0KPiA+IC0vKg0KPiA+IC0g KiBUcnkgdG8gYXZvaWQgVFggYnVmZmVyaW5nIGlmIHdlIGhhdmUgYXQgbGVhc3QgTUFYX1RYX0JV UlNUIHBhY2tldHMgdG8gc2VuZC4NCj4gPiAtICovDQo+ID4gLSNkZWZpbmUJTUFYX1RYX0JVUlNU CSAgKE1BWF9QS1RfQlVSU1QgLyAyKQ0KPiA+DQo+ID4gICAjZGVmaW5lIE5CX1NPQ0tFVFMgICAg ICAgIDgNCj4gPg0KPiA+IEBAIC0xMTYsNyArMTEyLDExIEBAIGV4dGVybiBzdHJ1Y3QgYWNsX2Fs Z29yaXRobXMgYWNsX2FsZ1tdOw0KPiA+DQo+ID4gICBleHRlcm4gdWludDMyX3QgbWF4X3BrdF9s ZW47DQo+ID4NCj4gPiAtZXh0ZXJuIHVpbnQzMl90IG5iX3BrdF9wZXJfYnVyc3Q7DQo+ID4gK2V4 dGVybiB1aW50MzJfdCByeF9wa3RfYnVyc3Q7DQo+ID4gKy8qDQo+ID4gKyAqIFRyeSB0byBhdm9p ZCBUWCBidWZmZXJpbmcgaWYgd2UgaGF2ZSBhdCBsZWFzdCB0eF9wa3RfYnVyc3QgcGFja2V0cyB0 byBzZW5kLg0KPiA+ICsgKi8NCj4gPiArZXh0ZXJuIHVpbnQzMl90IHR4X3BrdF9idXJzdDsNCj4g PiAgIGV4dGVybiB1aW50MzJfdCBtYl9tZW1wb29sX2NhY2hlX3NpemU7DQo+ID4NCj4gPiAgIC8q IFNlbmQgYnVyc3Qgb2YgcGFja2V0cyBvbiBhbiBvdXRwdXQgaW50ZXJmYWNlICovDQo+ID4gQEAg LTE1Miw4ICsxNTIsOCBAQCBzZW5kX3NpbmdsZV9wYWNrZXQoc3RydWN0IGxjb3JlX2NvbmYgKnFj b25mLA0KPiA+ICAgCWxlbisrOw0KPiA+DQo+ID4gICAJLyogZW5vdWdoIHBrdHMgdG8gYmUgc2Vu dCAqLw0KPiA+IC0JaWYgKHVubGlrZWx5KGxlbiA9PSBNQVhfUEtUX0JVUlNUKSkgew0KPiA+IC0J CXNlbmRfYnVyc3QocWNvbmYsIE1BWF9QS1RfQlVSU1QsIHBvcnQpOw0KPiA+ICsJaWYgKHVubGlr ZWx5KGxlbiA9PSB0eF9wa3RfYnVyc3QpKSB7DQo+ID4gKwkJc2VuZF9idXJzdChxY29uZiwgdHhf cGt0X2J1cnN0LCBwb3J0KTsNCj4gPiAgIAkJbGVuID0gMDsNCj4gPiAgIAl9DQo+ID4NCj4gPiBk aWZmIC0tZ2l0IGEvZXhhbXBsZXMvbDNmd2QvbDNmd2RfYWNsLmMgYi9leGFtcGxlcy9sM2Z3ZC9s M2Z3ZF9hY2wuYw0KPiA+IGluZGV4IDRmYzRiOTg2Y2NlNi4uYTVhZjgyMzU3YTAzIDEwMDY0NA0K PiA+IC0tLSBhL2V4YW1wbGVzL2wzZndkL2wzZndkX2FjbC5jDQo+ID4gKysrIGIvZXhhbXBsZXMv bDNmd2QvbDNmd2RfYWNsLmMNCj4gPiBAQCAtMTEzNiw3ICsxMTM2LDcgQEAgYWNsX21haW5fbG9v cChfX3J0ZV91bnVzZWQgdm9pZCAqZHVtbXkpDQo+ID4gICAJCQlwb3J0aWQgPSBxY29uZi0+cnhf cXVldWVfbGlzdFtpXS5wb3J0X2lkOw0KPiA+ICAgCQkJcXVldWVpZCA9IHFjb25mLT5yeF9xdWV1 ZV9saXN0W2ldLnF1ZXVlX2lkOw0KPiA+ICAgCQkJbmJfcnggPSBydGVfZXRoX3J4X2J1cnN0KHBv cnRpZCwgcXVldWVpZCwNCj4gPiAtCQkJCXBrdHNfYnVyc3QsIG5iX3BrdF9wZXJfYnVyc3QpOw0K PiA+ICsJCQkJcGt0c19idXJzdCwgcnhfcGt0X2J1cnN0KTsNCj4gPg0KPiA+ICAgCQkJaWYgKG5i X3J4ID4gMCkgew0KPiA+ICAgCQkJCW5iX2Ryb3AgPSBhY2xfcHJvY2Vzc19wa3RzKHBrdHNfYnVy c3QsIGhvcHMsDQo+ID4gZGlmZiAtLWdpdCBhL2V4YW1wbGVzL2wzZndkL2wzZndkX2NvbW1vbi5o IGIvZXhhbXBsZXMvbDNmd2QvbDNmd2RfY29tbW9uLmgNCj4gPiBpbmRleCBkOTRlNWYxMzU3OTEu LjM0ZmU3MGI5NDE1YyAxMDA2NDQNCj4gPiAtLS0gYS9leGFtcGxlcy9sM2Z3ZC9sM2Z3ZF9jb21t b24uaA0KPiA+ICsrKyBiL2V4YW1wbGVzL2wzZndkL2wzZndkX2NvbW1vbi5oDQo+ID4gQEAgLTcx LDcgKzcxLDcgQEAgc2VuZF9wYWNrZXRzeDQoc3RydWN0IGxjb3JlX2NvbmYgKnFjb25mLCB1aW50 MTZfdCBwb3J0LCBzdHJ1Y3QgcnRlX21idWYgKm1bXSwNCj4gPiAgIAkgKiBJZiBUWCBidWZmZXIg Zm9yIHRoYXQgcXVldWUgaXMgZW1wdHksIGFuZCB3ZSBoYXZlIGVub3VnaCBwYWNrZXRzLA0KPiA+ ICAgCSAqIHRoZW4gc2VuZCB0aGVtIHN0cmFpZ2h0d2F5Lg0KPiA+ICAgCSAqLw0KPiA+IC0JaWYg KG51bSA+PSBNQVhfVFhfQlVSU1QgJiYgbGVuID09IDApIHsNCj4gPiArCWlmIChudW0gPj0gdHhf cGt0X2J1cnN0IC8gMiAmJiBsZW4gPT0gMCkgew0KPiA+ICAgCQluID0gcnRlX2V0aF90eF9idXJz dChwb3J0LCBxY29uZi0+dHhfcXVldWVfaWRbcG9ydF0sIG0sIG51bSk7DQo+ID4gICAJCWlmICh1 bmxpa2VseShuIDwgbnVtKSkgew0KPiA+ICAgCQkJZG8gew0KPiA+IGRpZmYgLS1naXQgYS9leGFt cGxlcy9sM2Z3ZC9sM2Z3ZF9lbS5jIGIvZXhhbXBsZXMvbDNmd2QvbDNmd2RfZW0uYw0KPiA+IGlu ZGV4IGRhOWM0NWUzYTQ4Mi4uZWE3NDUwNmVkOTcxIDEwMDY0NA0KPiA+IC0tLSBhL2V4YW1wbGVz L2wzZndkL2wzZndkX2VtLmMNCj4gPiArKysgYi9leGFtcGxlcy9sM2Z3ZC9sM2Z3ZF9lbS5jDQo+ ID4gQEAgLTY0NCw3ICs2NDQsNyBAQCBlbV9tYWluX2xvb3AoX19ydGVfdW51c2VkIHZvaWQgKmR1 bW15KQ0KPiA+ICAgCQkJcG9ydGlkID0gcWNvbmYtPnJ4X3F1ZXVlX2xpc3RbaV0ucG9ydF9pZDsN Cj4gPiAgIAkJCXF1ZXVlaWQgPSBxY29uZi0+cnhfcXVldWVfbGlzdFtpXS5xdWV1ZV9pZDsNCj4g PiAgIAkJCW5iX3J4ID0gcnRlX2V0aF9yeF9idXJzdChwb3J0aWQsIHF1ZXVlaWQsIHBrdHNfYnVy c3QsDQo+ID4gLQkJCQluYl9wa3RfcGVyX2J1cnN0KTsNCj4gPiArCQkJCXJ4X3BrdF9idXJzdCk7 DQo+ID4gICAJCQlpZiAobmJfcnggPT0gMCkNCj4gPiAgIAkJCQljb250aW51ZTsNCj4gPg0KPiA+ IGRpZmYgLS1naXQgYS9leGFtcGxlcy9sM2Z3ZC9sM2Z3ZF9maWIuYyBiL2V4YW1wbGVzL2wzZndk L2wzZndkX2ZpYi5jDQo+ID4gaW5kZXggODJmMTczOWRmNzc4Li40MjIzNTQwYjMwYWUgMTAwNjQ0 DQo+ID4gLS0tIGEvZXhhbXBsZXMvbDNmd2QvbDNmd2RfZmliLmMNCj4gPiArKysgYi9leGFtcGxl cy9sM2Z3ZC9sM2Z3ZF9maWIuYw0KPiA+IEBAIC0yMzksNyArMjM5LDcgQEAgZmliX21haW5fbG9v cChfX3J0ZV91bnVzZWQgdm9pZCAqZHVtbXkpDQo+ID4gICAJCQlwb3J0aWQgPSBxY29uZi0+cnhf cXVldWVfbGlzdFtpXS5wb3J0X2lkOw0KPiA+ICAgCQkJcXVldWVpZCA9IHFjb25mLT5yeF9xdWV1 ZV9saXN0W2ldLnF1ZXVlX2lkOw0KPiA+ICAgCQkJbmJfcnggPSBydGVfZXRoX3J4X2J1cnN0KHBv cnRpZCwgcXVldWVpZCwgcGt0c19idXJzdCwNCj4gPiAtCQkJCQluYl9wa3RfcGVyX2J1cnN0KTsN Cj4gPiArCQkJCQlyeF9wa3RfYnVyc3QpOw0KPiA+ICAgCQkJaWYgKG5iX3J4ID09IDApDQo+ID4g ICAJCQkJY29udGludWU7DQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvbDNmd2QvbDNm d2RfbHBtLmMgYi9leGFtcGxlcy9sM2Z3ZC9sM2Z3ZF9scG0uYw0KPiA+IGluZGV4IGZlYzBhZWI3 OWM2YS4uYmQxMzA3YzQzZTcwIDEwMDY0NA0KPiA+IC0tLSBhL2V4YW1wbGVzL2wzZndkL2wzZndk X2xwbS5jDQo+ID4gKysrIGIvZXhhbXBsZXMvbDNmd2QvbDNmd2RfbHBtLmMNCj4gPiBAQCAtMjA1 LDcgKzIwNSw3IEBAIGxwbV9tYWluX2xvb3AoX19ydGVfdW51c2VkIHZvaWQgKmR1bW15KQ0KPiA+ ICAgCQkJcG9ydGlkID0gcWNvbmYtPnJ4X3F1ZXVlX2xpc3RbaV0ucG9ydF9pZDsNCj4gPiAgIAkJ CXF1ZXVlaWQgPSBxY29uZi0+cnhfcXVldWVfbGlzdFtpXS5xdWV1ZV9pZDsNCj4gPiAgIAkJCW5i X3J4ID0gcnRlX2V0aF9yeF9idXJzdChwb3J0aWQsIHF1ZXVlaWQsIHBrdHNfYnVyc3QsDQo+ID4g LQkJCQluYl9wa3RfcGVyX2J1cnN0KTsNCj4gPiArCQkJCXJ4X3BrdF9idXJzdCk7DQo+ID4gICAJ CQlpZiAobmJfcnggPT0gMCkNCj4gPiAgIAkJCQljb250aW51ZTsNCj4gPg0KPiA+IGRpZmYgLS1n aXQgYS9leGFtcGxlcy9sM2Z3ZC9tYWluLmMgYi9leGFtcGxlcy9sM2Z3ZC9tYWluLmMNCj4gPiBp bmRleCA5OTRiN2RkOGU1OTYuLjQ4NDUzZmFmN2M1NiAxMDA2NDQNCj4gPiAtLS0gYS9leGFtcGxl cy9sM2Z3ZC9tYWluLmMNCj4gPiArKysgYi9leGFtcGxlcy9sM2Z3ZC9tYWluLmMNCj4gPiBAQCAt NTcsNyArNTcsOCBAQA0KPiA+ICAgc3RhdGljX2Fzc2VydChNRU1QT09MX0NBQ0hFX1NJWkUgPj0g TUFYX1BLVF9CVVJTVCwgIk1BWF9QS1RfQlVSU1Qgc2hvdWxkIGJlIGF0IG1vc3QgTUVNUE9PTF9D QUNIRV9TSVpFIik7DQo+ID4gICB1aW50MTZfdCBuYl9yeGQgPSBSWF9ERVNDX0RFRkFVTFQ7DQo+ ID4gICB1aW50MTZfdCBuYl90eGQgPSBUWF9ERVNDX0RFRkFVTFQ7DQo+ID4gLXVpbnQzMl90IG5i X3BrdF9wZXJfYnVyc3QgPSBERUZBVUxUX1BLVF9CVVJTVDsNCj4gPiArdWludDMyX3QgcnhfcGt0 X2J1cnN0ID0gREVGQVVMVF9QS1RfQlVSU1Q7DQo+ID4gK3VpbnQzMl90IHR4X3BrdF9idXJzdCA9 IERFRkFVTFRfUEtUX0JVUlNUOw0KPiA+ICAgdWludDMyX3QgbWJfbWVtcG9vbF9jYWNoZV9zaXpl ID0gTUVNUE9PTF9DQUNIRV9TSVpFOw0KPiA+DQo+ID4gICAvKio8IFBvcnRzIHNldCBpbiBwcm9t aXNjdW91cyBtb2RlIG9mZiBieSBkZWZhdWx0LiAqLw0KPiA+IEBAIC0zOTksNyArNDAwLDggQEAg cHJpbnRfdXNhZ2UoY29uc3QgY2hhciAqcHJnbmFtZSkNCj4gPiAgIAkJIiAtLWNvbmZpZyAocG9y dCxxdWV1ZSxsY29yZSlbLChwb3J0LHF1ZXVlLGxjb3JlKV0iDQo+ID4gICAJCSIgWy0tcngtcXVl dWUtc2l6ZSBOUEtUU10iDQo+ID4gICAJCSIgWy0tdHgtcXVldWUtc2l6ZSBOUEtUU10iDQo+ID4g LQkJIiBbLS1idXJzdCBOUEtUU10iDQo+ID4gKwkJIiBbLS1yeC1idXJzdCBOUEtUU10iDQo+ID4g KwkJIiBbLS10eC1idXJzdCBOUEtUU10iDQo+ID4gICAJCSIgWy0tbWJjYWNoZSBDQUNIRVNaXSIN Cj4gPiAgIAkJIiBbLS1ldGgtZGVzdD1YLE1NOk1NOk1NOk1NOk1NOk1NXSINCj4gPiAgIAkJIiBb LS1tYXgtcGt0LWxlbiBQS1RMRU5dIg0KPiA+IEBAIC00MjYsOCArNDI4LDEwIEBAIHByaW50X3Vz YWdlKGNvbnN0IGNoYXIgKnByZ25hbWUpDQo+ID4gICAJCSIgICAgICAgICAgICBEZWZhdWx0OiAl ZFxuIg0KPiA+ICAgCQkiICAtLXR4LXF1ZXVlLXNpemUgTlBLVFM6IFR4IHF1ZXVlIHNpemUgaW4g ZGVjaW1hbFxuIg0KPiA+ICAgCQkiICAgICAgICAgICAgRGVmYXVsdDogJWRcbiINCj4gPiAtCQki ICAtLWJ1cnN0IE5QS1RTOiBCdXJzdCBzaXplIGluIGRlY2ltYWxcbiINCj4gPiAtCQkiICAgICAg ICAgICAgRGVmYXVsdDogJWRcbiINCj4gPiArCQkiICAtLXJ4LWJ1cnN0IE5QS1RTOiBSWCBCdXJz dCBzaXplIGluIGRlY2ltYWxcbiINCj4gPiArCQkiICAgICAgICAgICAgRGVmYXVsdDogJWQsIE1h eGltdW06ICVkXG4iDQo+ID4gKwkJIiAgLS10eC1idXJzdCBOUEtUUzogVFggQnVyc3Qgc2l6ZSBp biBkZWNpbWFsXG4iDQo+ID4gKwkJIiAgICAgICAgICAgIERlZmF1bHQ6ICVkLCBNYXhpbXVtOiAl ZFxuIg0KPiA+ICAgCQkiICAtLW1iY2FjaGUgQ0FDSEVTWjogTWJ1ZiBjYWNoZSBzaXplIGluIGRl Y2ltYWxcbiINCj4gPiAgIAkJIiAgICAgICAgICAgIERlZmF1bHQ6ICVkXG4iDQo+ID4gICAJCSIg IC0tZXRoLWRlc3Q9WCxNTTpNTTpNTTpNTTpNTTpNTTogRXRoZXJuZXQgZGVzdGluYXRpb24gZm9y IHBvcnQgWFxuIg0KPiA+IEBAIC00NTksNyArNDYzLDEwIEBAIHByaW50X3VzYWdlKGNvbnN0IGNo YXIgKnByZ25hbWUpDQo+ID4gICAJCSIgICAgICAgICAgICAgICAgICAgIGFub3RoZXIgaXMgcm91 dGUgZW50cnkgYXQgd2hpbGUgbGluZSBsZWFkcyB3aXRoIGNoYXJhY3RlciAnJWMnLlxuIg0KPiA+ ICAgCQkiICAtLXJ1bGVfaXB2Nj1GSUxFOiBTcGVjaWZ5IHRoZSBpcHY2IHJ1bGVzIGVudHJpZXMg ZmlsZS5cbiINCj4gPiAgIAkJIiAgLS1hbGc6IEFDTCBjbGFzc2lmeSBtZXRob2QgdG8gdXNlLCBv bmUgb2Y6ICVzLlxuXG4iLA0KPiA+IC0JCXByZ25hbWUsIFJYX0RFU0NfREVGQVVMVCwgVFhfREVT Q19ERUZBVUxULCBERUZBVUxUX1BLVF9CVVJTVCwgTUVNUE9PTF9DQUNIRV9TSVpFLA0KPiA+ICsJ CXByZ25hbWUsIFJYX0RFU0NfREVGQVVMVCwgVFhfREVTQ19ERUZBVUxULA0KPiA+ICsJCURFRkFV TFRfUEtUX0JVUlNULCBNQVhfUEtUX0JVUlNULA0KPiA+ICsJCURFRkFVTFRfUEtUX0JVUlNULCBN QVhfUEtUX0JVUlNULA0KPiA+ICsJCU1FTVBPT0xfQ0FDSEVfU0laRSwNCj4gPiAgIAkJQUNMX0xF QURfQ0hBUiwgUk9VVEVfTEVBRF9DSEFSLCBhbGcpOw0KPiA+ICAgfQ0KPiA+DQo+ID4gQEAgLTY5 Myw0NyArNzAwLDMwIEBAIHBhcnNlX21iY2FjaGVfc2l6ZShjb25zdCBjaGFyICpvcHRhcmcpDQo+ ID4gICAJCQkgUlRFX01FTVBPT0xfQ0FDSEVfTUFYX1NJWkUpOw0KPiA+ICAgfQ0KPiA+DQo+ID4g LXN0YXRpYyB2b2lkDQo+ID4gLXBhcnNlX3BrdF9idXJzdChjb25zdCBjaGFyICpvcHRhcmcpDQo+ ID4gK3N0YXRpYyBpbnQNCj4gPiArcGFyc2VfcGt0X2J1cnN0KGNvbnN0IGNoYXIgKm9wdGFyZywg Ym9vbCBpc19yeCkNCj4gPiAgIHsNCj4gPiAtCXN0cnVjdCBydGVfZXRoX2Rldl9pbmZvIGRldl9p bmZvOw0KPiA+ICAgCXVuc2lnbmVkIGxvbmcgcGt0X2J1cnN0Ow0KPiA+IC0JdWludDE2X3QgYnVy c3Rfc2l6ZTsNCj4gPiAgIAljaGFyICplbmQgPSBOVUxMOw0KPiA+IC0JaW50IHJldDsNCj4gPg0K PiA+ICAgCS8qIHBhcnNlIGRlY2ltYWwgc3RyaW5nICovDQo+ID4gICAJcGt0X2J1cnN0ID0gc3Ry dG91bChvcHRhcmcsICZlbmQsIDEwKTsNCj4gPiAtCWlmICgob3B0YXJnWzBdID09ICdcMCcpIHx8 IChlbmQgPT0gTlVMTCkgfHwgKCplbmQgIT0gJ1wwJykpDQo+ID4gLQkJcmV0dXJuOw0KPiA+IC0N Cj4gPiAtCWlmIChwa3RfYnVyc3QgPiBNQVhfUEtUX0JVUlNUKSB7DQo+ID4gLQkJUlRFX0xPRyhJ TkZPLCBMM0ZXRCwgIlVzZXIgcHJvdmlkZWQgYnVyc3QgbXVzdCBiZSA8PSAlZC4gVXNpbmcgZGVm YXVsdCB2YWx1ZSAlZFxuIiwNCj4gPiAtCQkJTUFYX1BLVF9CVVJTVCwgbmJfcGt0X3Blcl9idXJz dCk7DQo+ID4gLQkJcmV0dXJuOw0KPiA+IC0JfSBlbHNlIGlmIChwa3RfYnVyc3QgPiAwKSB7DQo+ ID4gLQkJbmJfcGt0X3Blcl9idXJzdCA9ICh1aW50MzJfdClwa3RfYnVyc3Q7DQo+ID4gLQkJcmV0 dXJuOw0KPiA+ICsJaWYgKChvcHRhcmdbMF0gPT0gJ1wwJykgfHwgKGVuZCA9PSBOVUxMKSB8fCAo KmVuZCAhPSAnXDAnKSkgew0KPiA+ICsJCVJURV9MT0coRVJSLCBMM0ZXRCwgIkludmFsaWQgJXMt YnVyc3RcbiIsIGlzX3J4ID8gInJ4IiA6ICJ0eCIpOw0KPiA+ICsJCXJldHVybiAtMTsNCj4gPiAg IAl9DQo+ID4NCj4gPiAtCS8qIElmIHVzZXIgZ2l2ZXMgYSB2YWx1ZSBvZiB6ZXJvLCBxdWVyeSB0 aGUgUE1EIGZvciBpdHMgcmVjb21tZW5kZWQgUnggYnVyc3Qgc2l6ZS4gKi8NCj4gPiAtCXJldCA9 IHJ0ZV9ldGhfZGV2X2luZm9fZ2V0KDAsICZkZXZfaW5mbyk7DQo+ID4gLQlpZiAocmV0ICE9IDAp DQo+ID4gLQkJcmV0dXJuOw0KPiA+IC0JYnVyc3Rfc2l6ZSA9IGRldl9pbmZvLmRlZmF1bHRfcnhw b3J0Y29uZi5idXJzdF9zaXplOw0KPiA+IC0JaWYgKGJ1cnN0X3NpemUgPT0gMCkgew0KPiA+IC0J CVJURV9MT0coSU5GTywgTDNGV0QsICJQTUQgZG9lcyBub3QgcmVjb21tZW5kIGEgYnVyc3Qgc2l6 ZS4gVXNpbmcgZGVmYXVsdCB2YWx1ZSAlZC4gIg0KPiA+IC0JCQkiVXNlciBwcm92aWRlZCB2YWx1 ZSBtdXN0IGJlIGluIFsxLCAlZF1cbiIsDQo+ID4gLQkJCW5iX3BrdF9wZXJfYnVyc3QsIE1BWF9Q S1RfQlVSU1QpOw0KPiA+IC0JCXJldHVybjsNCj4gPiAtCX0gZWxzZSBpZiAoYnVyc3Rfc2l6ZSA+ IE1BWF9QS1RfQlVSU1QpIHsNCj4gPiAtCQlSVEVfTE9HKElORk8sIEwzRldELCAiUE1EIHJlY29t bWVuZGVkIGJ1cnN0IHNpemUgJWQgZXhjZWVkcyBtYXhpbXVtIHZhbHVlICVkLiAiDQo+ID4gLQkJ CSJVc2luZyBkZWZhdWx0IHZhbHVlICVkXG4iLA0KPiA+IC0JCQlidXJzdF9zaXplLCBNQVhfUEtU X0JVUlNULCBuYl9wa3RfcGVyX2J1cnN0KTsNCj4gPiAtCQlyZXR1cm47DQo+ID4gKwlpZiAocGt0 X2J1cnN0ID4gTUFYX1BLVF9CVVJTVCB8fCBwa3RfYnVyc3QgPT0gMCkgew0KPiA+ICsJCVJURV9M T0coRVJSLCBMM0ZXRCwgIlVzZXItcHJvdmlkZWQgJXMgYnVyc3QgbXVzdCBiZSBpbiAoMCwgJWRd LlxuIiwNCj4gPiArCQkJaXNfcnggPyAiUngiIDogIlR4IiwgTUFYX1BLVF9CVVJTVCk7DQo+ID4g KwkJcmV0dXJuIC0xOw0KPiA+ICsJfSBlbHNlIGlmIChwa3RfYnVyc3QgPiAwKSB7DQo+ID4gKwkJ aWYgKGlzX3J4KQ0KPiA+ICsJCQlyeF9wa3RfYnVyc3QgPSAodWludDE2X3QpcGt0X2J1cnN0Ow0K PiA+ICsJCWVsc2UNCj4gPiArCQkJdHhfcGt0X2J1cnN0ID0gKHVpbnQxNl90KXBrdF9idXJzdDsN Cj4gPiAgIAl9DQo+ID4gLQluYl9wa3RfcGVyX2J1cnN0ID0gYnVyc3Rfc2l6ZTsNCj4gPiAtCVJU RV9MT0coSU5GTywgTDNGV0QsICJVc2luZyBQTUQtcHJvdmlkZWQgYnVyc3QgdmFsdWUgJWRcbiIs IGJ1cnN0X3NpemUpOw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gICB9DQo+ID4NCj4gPiAgICNkZWZp bmUgTUFYX0pVTUJPX1BLVF9MRU4gIDk2MDANCj4gPiBAQCAtNzY3LDcgKzc1Nyw4IEBAIHN0YXRp YyBjb25zdCBjaGFyIHNob3J0X29wdGlvbnNbXSA9DQo+ID4gICAjZGVmaW5lIENNRF9MSU5FX09Q VF9SVUxFX0lQVjQgInJ1bGVfaXB2NCINCj4gPiAgICNkZWZpbmUgQ01EX0xJTkVfT1BUX1JVTEVf SVBWNiAicnVsZV9pcHY2Ig0KPiA+ICAgI2RlZmluZSBDTURfTElORV9PUFRfQUxHICJhbGciDQo+ ID4gLSNkZWZpbmUgQ01EX0xJTkVfT1BUX1BLVF9CVVJTVCAiYnVyc3QiDQo+ID4gKyNkZWZpbmUg Q01EX0xJTkVfT1BUX1BLVF9SWF9CVVJTVCAicngtYnVyc3QiDQo+ID4gKyNkZWZpbmUgQ01EX0xJ TkVfT1BUX1BLVF9UWF9CVVJTVCAidHgtYnVyc3QiDQo+ID4gICAjZGVmaW5lIENNRF9MSU5FX09Q VF9NQl9DQUNIRV9TSVpFICJtYmNhY2hlIg0KPiA+DQo+ID4gICBlbnVtIHsNCj4gPiBAQCAtNzk4 LDcgKzc4OSw4IEBAIGVudW0gew0KPiA+ICAgCUNNRF9MSU5FX09QVF9FTkFCTEVfVkVDVE9SX05V TSwNCj4gPiAgIAlDTURfTElORV9PUFRfVkVDVE9SX1NJWkVfTlVNLA0KPiA+ICAgCUNNRF9MSU5F X09QVF9WRUNUT1JfVE1PX05TX05VTSwNCj4gPiAtCUNNRF9MSU5FX09QVF9QS1RfQlVSU1RfTlVN LA0KPiA+ICsJQ01EX0xJTkVfT1BUX1JYX1BLVF9CVVJTVF9OVU0sDQo+ID4gKwlDTURfTElORV9P UFRfVFhfUEtUX0JVUlNUX05VTSwNCj4gPiAgIAlDTURfTElORV9PUFRfTUJfQ0FDSEVfU0laRV9O VU0sDQo+ID4gICB9Ow0KPiA+DQo+ID4gQEAgLTgyNiw3ICs4MTgsOCBAQCBzdGF0aWMgY29uc3Qg c3RydWN0IG9wdGlvbiBsZ29wdHNbXSA9IHsNCj4gPiAgIAl7Q01EX0xJTkVfT1BUX1JVTEVfSVBW NCwgICAxLCAwLCBDTURfTElORV9PUFRfUlVMRV9JUFY0X05VTX0sDQo+ID4gICAJe0NNRF9MSU5F X09QVF9SVUxFX0lQVjYsICAgMSwgMCwgQ01EX0xJTkVfT1BUX1JVTEVfSVBWNl9OVU19LA0KPiA+ ICAgCXtDTURfTElORV9PUFRfQUxHLCAgIDEsIDAsIENNRF9MSU5FX09QVF9BTEdfTlVNfSwNCj4g PiAtCXtDTURfTElORV9PUFRfUEtUX0JVUlNULCAgIDEsIDAsIENNRF9MSU5FX09QVF9QS1RfQlVS U1RfTlVNfSwNCj4gPiArCXtDTURfTElORV9PUFRfUEtUX1JYX0JVUlNULCAgIDEsIDAsIENNRF9M SU5FX09QVF9SWF9QS1RfQlVSU1RfTlVNfSwNCj4gPiArCXtDTURfTElORV9PUFRfUEtUX1RYX0JV UlNULCAgIDEsIDAsIENNRF9MSU5FX09QVF9UWF9QS1RfQlVSU1RfTlVNfSwNCj4gPiAgIAl7Q01E X0xJTkVfT1BUX01CX0NBQ0hFX1NJWkUsICAgMSwgMCwgQ01EX0xJTkVfT1BUX01CX0NBQ0hFX1NJ WkVfTlVNfSwNCj4gPiAgIAl7TlVMTCwgMCwgMCwgMH0NCj4gPiAgIH07DQo+ID4gQEAgLTkxNiw4 ICs5MDksMjAgQEAgcGFyc2VfYXJncyhpbnQgYXJnYywgY2hhciAqKmFyZ3YpDQo+ID4gICAJCQlw YXJzZV9xdWV1ZV9zaXplKG9wdGFyZywgJm5iX3R4ZCwgMCk7DQo+ID4gICAJCQlicmVhazsNCj4g Pg0KPiA+IC0JCWNhc2UgQ01EX0xJTkVfT1BUX1BLVF9CVVJTVF9OVU06DQo+ID4gLQkJCXBhcnNl X3BrdF9idXJzdChvcHRhcmcpOw0KPiA+ICsJCWNhc2UgQ01EX0xJTkVfT1BUX1RYX1BLVF9CVVJT VF9OVU06DQo+ID4gKwkJCXJldCA9IHBhcnNlX3BrdF9idXJzdChvcHRhcmcsIGZhbHNlKTsNCj4g PiArCQkJaWYgKHJldCkgew0KPiA+ICsJCQkJcHJpbnRfdXNhZ2UocHJnbmFtZSk7DQo+ID4gKwkJ CQlyZXR1cm4gLTE7DQo+ID4gKwkJCX0NCj4gPiArCQkJYnJlYWs7DQo+ID4gKw0KPiA+ICsJCWNh c2UgQ01EX0xJTkVfT1BUX1JYX1BLVF9CVVJTVF9OVU06DQo+ID4gKwkJCXJldCA9IHBhcnNlX3Br dF9idXJzdChvcHRhcmcsIHRydWUpOw0KPiA+ICsJCQlpZiAocmV0KSB7DQo+ID4gKwkJCQlwcmlu dF91c2FnZShwcmduYW1lKTsNCj4gPiArCQkJCXJldHVybiAtMTsNCj4gPiArCQkJfQ0KPiA+ICAg CQkJYnJlYWs7DQo+ID4NCj4gPiAgIAkJY2FzZSBDTURfTElORV9PUFRfTUJfQ0FDSEVfU0laRV9O VU06DQo=