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 BB71346289; Fri, 21 Feb 2025 09:45:43 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8E69140647; Fri, 21 Feb 2025 09:45:43 +0100 (CET) Received: from szxga05-in.huawei.com (szxga05-in.huawei.com [45.249.212.191]) by mails.dpdk.org (Postfix) with ESMTP id CBFDA4029A for ; Fri, 21 Feb 2025 09:45:40 +0100 (CET) Received: from mail.maildlp.com (unknown [172.19.88.234]) by szxga05-in.huawei.com (SkyGuard) with ESMTP id 4YzkFK5l7TzRxxH; Fri, 21 Feb 2025 16:44:05 +0800 (CST) Received: from kwepemk500008.china.huawei.com (unknown [7.202.194.93]) by mail.maildlp.com (Postfix) with ESMTPS id 77D6B14011B; Fri, 21 Feb 2025 16:45:38 +0800 (CST) Received: from frapeml500007.china.huawei.com (7.182.85.172) by kwepemk500008.china.huawei.com (7.202.194.93) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 21 Feb 2025 16:45:37 +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; Fri, 21 Feb 2025 09:45:35 +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+n7EwBUKzpTry848FSbNGbswAgAjkvyCAAjUGgIAAZL4w Date: Fri, 21 Feb 2025 08:45:34 +0000 Message-ID: <64b206a0090347a8b321928eb21544e7@huawei.com> References: <20241122071336.18470-1-haijie1@huawei.com> <20241204020622.977156-1-haijie1@huawei.com> <2d5511d1-f1d8-8410-e2ec-f6aced5a1f65@huawei.com> <4447f9ff97ad481996d74e26ea481f53@huawei.com> In-Reply-To: Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.195.35.11] 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 DQoNCj4gPj4gT24gMjAyNC8xMi80IDEwOjA2LCBKaWUgSGFpIHdyb3RlOg0KPiA+Pj4gVGhlIGFw cGxpY2F0aW9uIHNlbmQgcGFja2V0cyBvbmx5IHdoZW4gdGhlIGJ1ZmZlciBpcyBmdWxsLCBvciB0 aGUNCj4gPj4+IGJ1ZmZlciBpcyBlbXB0eSBhbmQgdGhlIHBhY2tldHMgdG8gYmUgc2VudCBleHRl bmRzIFRYX1BLVF9CVVJTVC4NCj4gPj4+IFRoZSBjaGFuZ2Ugb2YgTUFYX1BLVF9CVVJTVCBtYWtl IFRYIGJ1ZmZlciBzaXplIGFuZCBUWF9QS1RfQlVSU1QNCj4gPj4+IGluY3JlYXNlLCB3aGlsZSB0 aGUgZGVmYXVsdCBjYWNoZSBzaXplIGlzIDI1Ni4gVGhlIHBhY2tldHMgaW4NCj4gPj4+IHRoZSBU WCBkaXJlY3Rpb24gb2NjdXB5IHRoZSBjYWNoZS4gQXMgYSByZXN1bHQsIHRoZSBwZXJmb3JtYW5j ZQ0KPiA+Pj4gZGV0ZXJpb3JhdGVzLg0KPiA+Pj4NCj4gPj4+IFJlc3RvcmUgdGhlIGRlZmF1bHQg VHggYnVyc3QgYW5kIGFkZCBvcHRpb24gJy0tdHgtYnVyc3QnIHRvIHNldA0KPiA+Pj4gdGhlIFR4 IGJ1cnN0IHNpemUuIFRvIGVuc3VyZSBjb25zaXN0ZW5jeSwgcmVuYW1lIHRoZSBvcHRpb24NCj4g Pj4+ICctLWJ1cnN0JyB0byAnLS1yeC1idXJzdCcuIFRoZSB2YWxpZCByYW5nZSBvZiB0aGUgdXNl ci1wcm92aWRlZA0KPiA+Pj4gdmFsdWUgaXMgKDAsIE1BWF9QS1RfQlVSU1RdIGZvciBib3RoIGRp cmVjdGlvbnMuDQo+ID4+Pg0KPiA+Pj4gRml4ZXM6IGQ1YzQ4OTdlY2ZiMiAoImV4YW1wbGVzL2wz ZndkOiBhZGQgb3B0aW9uIHRvIHNldCBSWCBidXJzdCBzaXplIikNCj4gPj4+IENjOiBzdGFibGVA ZHBkay5vcmcNCj4gPg0KPiA+IFdvdWxkbid0IHRoYXQgcGF0Y2g6DQo+ID4gaHR0cHM6Ly9wYXRj aHdvcmsuZHBkay5vcmcvcHJvamVjdC9kcGRrL3BhdGNoLzIwMjUwMjEyMDQ1NDE2LjIzOTMwMDEt MS1zaXZhcHJhc2FkLnR1bW1hbGFAYW1kLmNvbS8NCj4gPiBmaXggdGhhdCBpc3N1ZSB0b28/DQo+ ID4gQW5kIHByb2JhYmx5IGluIGEgbGVzcyBkaXNydXB0aXZlIG1hbm5lcj8NCj4gPg0KPiBUaGFu a3MgZm9yIHlvdXIgY29tbWVudC4NCj4gDQo+IEkgdGhpbmsgZGlmZmVyZW50IGRyaXZlcnMgbWF5 IG5lZWQgZGlmZmVyZW50IHZhbHVlcyBmb3IgYmV0dGVyDQo+IHBlcmZvcm1hbmNlLCBpdCBtYWtl cyBzZW5zZSB0byBhZGQgb3B0aW9ucy4NCg0KIFdlbGwsIHdlIHVzZWQgdG8gcnVuIGwzZndkIGZv ciBtb3JlIHRoZW4gMTAgeWVhcnMgYnkgbm93LA0KYW5kIEkgZG9u4oCZdCcgcmVtZW1iZXIgdGhh dCBhbnlvbmUgY2xhaW0gdGhhdCBpdCBpcyBuZWVkZWQuDQpBZ2FpbiwgQUZBSVIsIG91ciBvdGhl ciBzYW1wbGUgYXBwcyBpbmNsdWRpbmcgdGVzdC1wbWQgdXNlcw0Kb25lIGJ1cnN0IHNpemUgZm9y IGJvdGggUlggYW5kIFRYLg0KRG8geW91IGhhdmUgYW55IHBlcmYgbnVtYmVycyB0byBiYWNrLXVw IHlvdXIgY2xhaW0/ICANCiANCj4gDQo+ID4+PiBTaWduZWQtb2ZmLWJ5OiBKaWUgSGFpIDxoYWlq aWUxQGh1YXdlaS5jb20+DQo+ID4+PiAtLS0NCj4gPj4+ICAgIGV4YW1wbGVzL2wzZndkL2wzZndk LmggICAgICAgIHwgMTQgKysrLS0tDQo+ID4+PiAgICBleGFtcGxlcy9sM2Z3ZC9sM2Z3ZF9hY2wu YyAgICB8ICAyICstDQo+ID4+PiAgICBleGFtcGxlcy9sM2Z3ZC9sM2Z3ZF9jb21tb24uaCB8ICAy ICstDQo+ID4+PiAgICBleGFtcGxlcy9sM2Z3ZC9sM2Z3ZF9lbS5jICAgICB8ICAyICstDQo+ID4+ PiAgICBleGFtcGxlcy9sM2Z3ZC9sM2Z3ZF9maWIuYyAgICB8ICAyICstDQo+ID4+PiAgICBleGFt cGxlcy9sM2Z3ZC9sM2Z3ZF9scG0uYyAgICB8ICAyICstDQo+ID4+PiAgICBleGFtcGxlcy9sM2Z3 ZC9tYWluLmMgICAgICAgICB8IDg5ICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0t DQo+ID4+PiAgICA3IGZpbGVzIGNoYW5nZWQsIDU5IGluc2VydGlvbnMoKyksIDU0IGRlbGV0aW9u cygtKQ0KPiA+Pj4NCj4gPj4+IGRpZmYgLS1naXQgYS9leGFtcGxlcy9sM2Z3ZC9sM2Z3ZC5oIGIv ZXhhbXBsZXMvbDNmd2QvbDNmd2QuaA0KPiA+Pj4gaW5kZXggMGNjZTM0MDZlZTdkLi5hNGUyM2I4 MTdlZGYgMTAwNjQ0DQo+ID4+PiAtLS0gYS9leGFtcGxlcy9sM2Z3ZC9sM2Z3ZC5oDQo+ID4+PiAr KysgYi9leGFtcGxlcy9sM2Z3ZC9sM2Z3ZC5oDQo+ID4+PiBAQCAtMzIsMTAgKzMyLDYgQEANCj4g Pj4+DQo+ID4+PiAgICAjZGVmaW5lIFZFQ1RPUl9TSVpFX0RFRkFVTFQgICBNQVhfUEtUX0JVUlNU DQo+ID4+PiAgICAjZGVmaW5lIFZFQ1RPUl9UTU9fTlNfREVGQVVMVCAxRTYgLyogMW1zICovDQo+ ID4+PiAtLyoNCj4gPj4+IC0gKiBUcnkgdG8gYXZvaWQgVFggYnVmZmVyaW5nIGlmIHdlIGhhdmUg YXQgbGVhc3QgTUFYX1RYX0JVUlNUIHBhY2tldHMgdG8gc2VuZC4NCj4gPj4+IC0gKi8NCj4gPj4+ IC0jZGVmaW5lCU1BWF9UWF9CVVJTVAkgIChNQVhfUEtUX0JVUlNUIC8gMikNCj4gPj4+DQo+ID4+ PiAgICAjZGVmaW5lIE5CX1NPQ0tFVFMgICAgICAgIDgNCj4gPj4+DQo+ID4+PiBAQCAtMTE2LDcg KzExMiwxMSBAQCBleHRlcm4gc3RydWN0IGFjbF9hbGdvcml0aG1zIGFjbF9hbGdbXTsNCj4gPj4+ DQo+ID4+PiAgICBleHRlcm4gdWludDMyX3QgbWF4X3BrdF9sZW47DQo+ID4+Pg0KPiA+Pj4gLWV4 dGVybiB1aW50MzJfdCBuYl9wa3RfcGVyX2J1cnN0Ow0KPiA+Pj4gK2V4dGVybiB1aW50MzJfdCBy eF9wa3RfYnVyc3Q7DQo+ID4+PiArLyoNCj4gPj4+ICsgKiBUcnkgdG8gYXZvaWQgVFggYnVmZmVy aW5nIGlmIHdlIGhhdmUgYXQgbGVhc3QgdHhfcGt0X2J1cnN0IHBhY2tldHMgdG8gc2VuZC4NCj4g Pj4+ICsgKi8NCj4gPj4+ICtleHRlcm4gdWludDMyX3QgdHhfcGt0X2J1cnN0Ow0KPiA+Pj4gICAg ZXh0ZXJuIHVpbnQzMl90IG1iX21lbXBvb2xfY2FjaGVfc2l6ZTsNCj4gPj4+DQo+ID4+PiAgICAv KiBTZW5kIGJ1cnN0IG9mIHBhY2tldHMgb24gYW4gb3V0cHV0IGludGVyZmFjZSAqLw0KPiA+Pj4g QEAgLTE1Miw4ICsxNTIsOCBAQCBzZW5kX3NpbmdsZV9wYWNrZXQoc3RydWN0IGxjb3JlX2NvbmYg KnFjb25mLA0KPiA+Pj4gICAgCWxlbisrOw0KPiA+Pj4NCj4gPj4+ICAgIAkvKiBlbm91Z2ggcGt0 cyB0byBiZSBzZW50ICovDQo+ID4+PiAtCWlmICh1bmxpa2VseShsZW4gPT0gTUFYX1BLVF9CVVJT VCkpIHsNCj4gPj4+IC0JCXNlbmRfYnVyc3QocWNvbmYsIE1BWF9QS1RfQlVSU1QsIHBvcnQpOw0K PiA+Pj4gKwlpZiAodW5saWtlbHkobGVuID09IHR4X3BrdF9idXJzdCkpIHsNCj4gPj4+ICsJCXNl bmRfYnVyc3QocWNvbmYsIHR4X3BrdF9idXJzdCwgcG9ydCk7DQo+ID4+PiAgICAJCWxlbiA9IDA7 DQo+ID4+PiAgICAJfQ0KPiA+Pj4NCj4gPj4+IGRpZmYgLS1naXQgYS9leGFtcGxlcy9sM2Z3ZC9s M2Z3ZF9hY2wuYyBiL2V4YW1wbGVzL2wzZndkL2wzZndkX2FjbC5jDQo+ID4+PiBpbmRleCA0ZmM0 Yjk4NmNjZTYuLmE1YWY4MjM1N2EwMyAxMDA2NDQNCj4gPj4+IC0tLSBhL2V4YW1wbGVzL2wzZndk L2wzZndkX2FjbC5jDQo+ID4+PiArKysgYi9leGFtcGxlcy9sM2Z3ZC9sM2Z3ZF9hY2wuYw0KPiA+ Pj4gQEAgLTExMzYsNyArMTEzNiw3IEBAIGFjbF9tYWluX2xvb3AoX19ydGVfdW51c2VkIHZvaWQg KmR1bW15KQ0KPiA+Pj4gICAgCQkJcG9ydGlkID0gcWNvbmYtPnJ4X3F1ZXVlX2xpc3RbaV0ucG9y dF9pZDsNCj4gPj4+ICAgIAkJCXF1ZXVlaWQgPSBxY29uZi0+cnhfcXVldWVfbGlzdFtpXS5xdWV1 ZV9pZDsNCj4gPj4+ICAgIAkJCW5iX3J4ID0gcnRlX2V0aF9yeF9idXJzdChwb3J0aWQsIHF1ZXVl aWQsDQo+ID4+PiAtCQkJCXBrdHNfYnVyc3QsIG5iX3BrdF9wZXJfYnVyc3QpOw0KPiA+Pj4gKwkJ CQlwa3RzX2J1cnN0LCByeF9wa3RfYnVyc3QpOw0KPiA+Pj4NCj4gPj4+ICAgIAkJCWlmIChuYl9y eCA+IDApIHsNCj4gPj4+ICAgIAkJCQluYl9kcm9wID0gYWNsX3Byb2Nlc3NfcGt0cyhwa3RzX2J1 cnN0LCBob3BzLA0KPiA+Pj4gZGlmZiAtLWdpdCBhL2V4YW1wbGVzL2wzZndkL2wzZndkX2NvbW1v bi5oIGIvZXhhbXBsZXMvbDNmd2QvbDNmd2RfY29tbW9uLmgNCj4gPj4+IGluZGV4IGQ5NGU1ZjEz NTc5MS4uMzRmZTcwYjk0MTVjIDEwMDY0NA0KPiA+Pj4gLS0tIGEvZXhhbXBsZXMvbDNmd2QvbDNm d2RfY29tbW9uLmgNCj4gPj4+ICsrKyBiL2V4YW1wbGVzL2wzZndkL2wzZndkX2NvbW1vbi5oDQo+ ID4+PiBAQCAtNzEsNyArNzEsNyBAQCBzZW5kX3BhY2tldHN4NChzdHJ1Y3QgbGNvcmVfY29uZiAq cWNvbmYsIHVpbnQxNl90IHBvcnQsIHN0cnVjdCBydGVfbWJ1ZiAqbVtdLA0KPiA+Pj4gICAgCSAq IElmIFRYIGJ1ZmZlciBmb3IgdGhhdCBxdWV1ZSBpcyBlbXB0eSwgYW5kIHdlIGhhdmUgZW5vdWdo IHBhY2tldHMsDQo+ID4+PiAgICAJICogdGhlbiBzZW5kIHRoZW0gc3RyYWlnaHR3YXkuDQo+ID4+ PiAgICAJICovDQo+ID4+PiAtCWlmIChudW0gPj0gTUFYX1RYX0JVUlNUICYmIGxlbiA9PSAwKSB7 DQo+ID4+PiArCWlmIChudW0gPj0gdHhfcGt0X2J1cnN0IC8gMiAmJiBsZW4gPT0gMCkgew0KPiA+ Pj4gICAgCQluID0gcnRlX2V0aF90eF9idXJzdChwb3J0LCBxY29uZi0+dHhfcXVldWVfaWRbcG9y dF0sIG0sIG51bSk7DQo+ID4+PiAgICAJCWlmICh1bmxpa2VseShuIDwgbnVtKSkgew0KPiA+Pj4g ICAgCQkJZG8gew0KPiA+Pj4gZGlmZiAtLWdpdCBhL2V4YW1wbGVzL2wzZndkL2wzZndkX2VtLmMg Yi9leGFtcGxlcy9sM2Z3ZC9sM2Z3ZF9lbS5jDQo+ID4+PiBpbmRleCBkYTljNDVlM2E0ODIuLmVh NzQ1MDZlZDk3MSAxMDA2NDQNCj4gPj4+IC0tLSBhL2V4YW1wbGVzL2wzZndkL2wzZndkX2VtLmMN Cj4gPj4+ICsrKyBiL2V4YW1wbGVzL2wzZndkL2wzZndkX2VtLmMNCj4gPj4+IEBAIC02NDQsNyAr NjQ0LDcgQEAgZW1fbWFpbl9sb29wKF9fcnRlX3VudXNlZCB2b2lkICpkdW1teSkNCj4gPj4+ICAg IAkJCXBvcnRpZCA9IHFjb25mLT5yeF9xdWV1ZV9saXN0W2ldLnBvcnRfaWQ7DQo+ID4+PiAgICAJ CQlxdWV1ZWlkID0gcWNvbmYtPnJ4X3F1ZXVlX2xpc3RbaV0ucXVldWVfaWQ7DQo+ID4+PiAgICAJ CQluYl9yeCA9IHJ0ZV9ldGhfcnhfYnVyc3QocG9ydGlkLCBxdWV1ZWlkLCBwa3RzX2J1cnN0LA0K PiA+Pj4gLQkJCQluYl9wa3RfcGVyX2J1cnN0KTsNCj4gPj4+ICsJCQkJcnhfcGt0X2J1cnN0KTsN Cj4gPj4+ICAgIAkJCWlmIChuYl9yeCA9PSAwKQ0KPiA+Pj4gICAgCQkJCWNvbnRpbnVlOw0KPiA+ Pj4NCj4gPj4+IGRpZmYgLS1naXQgYS9leGFtcGxlcy9sM2Z3ZC9sM2Z3ZF9maWIuYyBiL2V4YW1w bGVzL2wzZndkL2wzZndkX2ZpYi5jDQo+ID4+PiBpbmRleCA4MmYxNzM5ZGY3NzguLjQyMjM1NDBi MzBhZSAxMDA2NDQNCj4gPj4+IC0tLSBhL2V4YW1wbGVzL2wzZndkL2wzZndkX2ZpYi5jDQo+ID4+ PiArKysgYi9leGFtcGxlcy9sM2Z3ZC9sM2Z3ZF9maWIuYw0KPiA+Pj4gQEAgLTIzOSw3ICsyMzks NyBAQCBmaWJfbWFpbl9sb29wKF9fcnRlX3VudXNlZCB2b2lkICpkdW1teSkNCj4gPj4+ICAgIAkJ CXBvcnRpZCA9IHFjb25mLT5yeF9xdWV1ZV9saXN0W2ldLnBvcnRfaWQ7DQo+ID4+PiAgICAJCQlx dWV1ZWlkID0gcWNvbmYtPnJ4X3F1ZXVlX2xpc3RbaV0ucXVldWVfaWQ7DQo+ID4+PiAgICAJCQlu Yl9yeCA9IHJ0ZV9ldGhfcnhfYnVyc3QocG9ydGlkLCBxdWV1ZWlkLCBwa3RzX2J1cnN0LA0KPiA+ Pj4gLQkJCQkJbmJfcGt0X3Blcl9idXJzdCk7DQo+ID4+PiArCQkJCQlyeF9wa3RfYnVyc3QpOw0K PiA+Pj4gICAgCQkJaWYgKG5iX3J4ID09IDApDQo+ID4+PiAgICAJCQkJY29udGludWU7DQo+ID4+ Pg0KPiA+Pj4gZGlmZiAtLWdpdCBhL2V4YW1wbGVzL2wzZndkL2wzZndkX2xwbS5jIGIvZXhhbXBs ZXMvbDNmd2QvbDNmd2RfbHBtLmMNCj4gPj4+IGluZGV4IGZlYzBhZWI3OWM2YS4uYmQxMzA3YzQz ZTcwIDEwMDY0NA0KPiA+Pj4gLS0tIGEvZXhhbXBsZXMvbDNmd2QvbDNmd2RfbHBtLmMNCj4gPj4+ ICsrKyBiL2V4YW1wbGVzL2wzZndkL2wzZndkX2xwbS5jDQo+ID4+PiBAQCAtMjA1LDcgKzIwNSw3 IEBAIGxwbV9tYWluX2xvb3AoX19ydGVfdW51c2VkIHZvaWQgKmR1bW15KQ0KPiA+Pj4gICAgCQkJ cG9ydGlkID0gcWNvbmYtPnJ4X3F1ZXVlX2xpc3RbaV0ucG9ydF9pZDsNCj4gPj4+ICAgIAkJCXF1 ZXVlaWQgPSBxY29uZi0+cnhfcXVldWVfbGlzdFtpXS5xdWV1ZV9pZDsNCj4gPj4+ICAgIAkJCW5i X3J4ID0gcnRlX2V0aF9yeF9idXJzdChwb3J0aWQsIHF1ZXVlaWQsIHBrdHNfYnVyc3QsDQo+ID4+ PiAtCQkJCW5iX3BrdF9wZXJfYnVyc3QpOw0KPiA+Pj4gKwkJCQlyeF9wa3RfYnVyc3QpOw0KPiA+ Pj4gICAgCQkJaWYgKG5iX3J4ID09IDApDQo+ID4+PiAgICAJCQkJY29udGludWU7DQo+ID4+Pg0K PiA+Pj4gZGlmZiAtLWdpdCBhL2V4YW1wbGVzL2wzZndkL21haW4uYyBiL2V4YW1wbGVzL2wzZndk L21haW4uYw0KPiA+Pj4gaW5kZXggOTk0YjdkZDhlNTk2Li40ODQ1M2ZhZjdjNTYgMTAwNjQ0DQo+ ID4+PiAtLS0gYS9leGFtcGxlcy9sM2Z3ZC9tYWluLmMNCj4gPj4+ICsrKyBiL2V4YW1wbGVzL2wz ZndkL21haW4uYw0KPiA+Pj4gQEAgLTU3LDcgKzU3LDggQEANCj4gPj4+ICAgIHN0YXRpY19hc3Nl cnQoTUVNUE9PTF9DQUNIRV9TSVpFID49IE1BWF9QS1RfQlVSU1QsICJNQVhfUEtUX0JVUlNUIHNo b3VsZCBiZSBhdCBtb3N0IE1FTVBPT0xfQ0FDSEVfU0laRSIpOw0KPiA+Pj4gICAgdWludDE2X3Qg bmJfcnhkID0gUlhfREVTQ19ERUZBVUxUOw0KPiA+Pj4gICAgdWludDE2X3QgbmJfdHhkID0gVFhf REVTQ19ERUZBVUxUOw0KPiA+Pj4gLXVpbnQzMl90IG5iX3BrdF9wZXJfYnVyc3QgPSBERUZBVUxU X1BLVF9CVVJTVDsNCj4gPj4+ICt1aW50MzJfdCByeF9wa3RfYnVyc3QgPSBERUZBVUxUX1BLVF9C VVJTVDsNCj4gPj4+ICt1aW50MzJfdCB0eF9wa3RfYnVyc3QgPSBERUZBVUxUX1BLVF9CVVJTVDsN Cj4gPj4+ICAgIHVpbnQzMl90IG1iX21lbXBvb2xfY2FjaGVfc2l6ZSA9IE1FTVBPT0xfQ0FDSEVf U0laRTsNCj4gPj4+DQo+ID4+PiAgICAvKio8IFBvcnRzIHNldCBpbiBwcm9taXNjdW91cyBtb2Rl IG9mZiBieSBkZWZhdWx0LiAqLw0KPiA+Pj4gQEAgLTM5OSw3ICs0MDAsOCBAQCBwcmludF91c2Fn ZShjb25zdCBjaGFyICpwcmduYW1lKQ0KPiA+Pj4gICAgCQkiIC0tY29uZmlnIChwb3J0LHF1ZXVl LGxjb3JlKVssKHBvcnQscXVldWUsbGNvcmUpXSINCj4gPj4+ICAgIAkJIiBbLS1yeC1xdWV1ZS1z aXplIE5QS1RTXSINCj4gPj4+ICAgIAkJIiBbLS10eC1xdWV1ZS1zaXplIE5QS1RTXSINCj4gPj4+ IC0JCSIgWy0tYnVyc3QgTlBLVFNdIg0KPiA+Pj4gKwkJIiBbLS1yeC1idXJzdCBOUEtUU10iDQo+ ID4+PiArCQkiIFstLXR4LWJ1cnN0IE5QS1RTXSINCj4gPj4+ICAgIAkJIiBbLS1tYmNhY2hlIENB Q0hFU1pdIg0KPiA+Pj4gICAgCQkiIFstLWV0aC1kZXN0PVgsTU06TU06TU06TU06TU06TU1dIg0K PiA+Pj4gICAgCQkiIFstLW1heC1wa3QtbGVuIFBLVExFTl0iDQo+ID4+PiBAQCAtNDI2LDggKzQy OCwxMCBAQCBwcmludF91c2FnZShjb25zdCBjaGFyICpwcmduYW1lKQ0KPiA+Pj4gICAgCQkiICAg ICAgICAgICAgRGVmYXVsdDogJWRcbiINCj4gPj4+ICAgIAkJIiAgLS10eC1xdWV1ZS1zaXplIE5Q S1RTOiBUeCBxdWV1ZSBzaXplIGluIGRlY2ltYWxcbiINCj4gPj4+ICAgIAkJIiAgICAgICAgICAg IERlZmF1bHQ6ICVkXG4iDQo+ID4+PiAtCQkiICAtLWJ1cnN0IE5QS1RTOiBCdXJzdCBzaXplIGlu IGRlY2ltYWxcbiINCj4gPj4+IC0JCSIgICAgICAgICAgICBEZWZhdWx0OiAlZFxuIg0KPiA+Pj4g KwkJIiAgLS1yeC1idXJzdCBOUEtUUzogUlggQnVyc3Qgc2l6ZSBpbiBkZWNpbWFsXG4iDQo+ID4+ PiArCQkiICAgICAgICAgICAgRGVmYXVsdDogJWQsIE1heGltdW06ICVkXG4iDQo+ID4+PiArCQki ICAtLXR4LWJ1cnN0IE5QS1RTOiBUWCBCdXJzdCBzaXplIGluIGRlY2ltYWxcbiINCj4gPj4+ICsJ CSIgICAgICAgICAgICBEZWZhdWx0OiAlZCwgTWF4aW11bTogJWRcbiINCj4gPj4+ICAgIAkJIiAg LS1tYmNhY2hlIENBQ0hFU1o6IE1idWYgY2FjaGUgc2l6ZSBpbiBkZWNpbWFsXG4iDQo+ID4+PiAg ICAJCSIgICAgICAgICAgICBEZWZhdWx0OiAlZFxuIg0KPiA+Pj4gICAgCQkiICAtLWV0aC1kZXN0 PVgsTU06TU06TU06TU06TU06TU06IEV0aGVybmV0IGRlc3RpbmF0aW9uIGZvciBwb3J0IFhcbiIN Cj4gPj4+IEBAIC00NTksNyArNDYzLDEwIEBAIHByaW50X3VzYWdlKGNvbnN0IGNoYXIgKnByZ25h bWUpDQo+ID4+PiAgICAJCSIgICAgICAgICAgICAgICAgICAgIGFub3RoZXIgaXMgcm91dGUgZW50 cnkgYXQgd2hpbGUgbGluZSBsZWFkcyB3aXRoIGNoYXJhY3RlciAnJWMnLlxuIg0KPiA+Pj4gICAg CQkiICAtLXJ1bGVfaXB2Nj1GSUxFOiBTcGVjaWZ5IHRoZSBpcHY2IHJ1bGVzIGVudHJpZXMgZmls ZS5cbiINCj4gPj4+ICAgIAkJIiAgLS1hbGc6IEFDTCBjbGFzc2lmeSBtZXRob2QgdG8gdXNlLCBv bmUgb2Y6ICVzLlxuXG4iLA0KPiA+Pj4gLQkJcHJnbmFtZSwgUlhfREVTQ19ERUZBVUxULCBUWF9E RVNDX0RFRkFVTFQsIERFRkFVTFRfUEtUX0JVUlNULCBNRU1QT09MX0NBQ0hFX1NJWkUsDQo+ID4+ PiArCQlwcmduYW1lLCBSWF9ERVNDX0RFRkFVTFQsIFRYX0RFU0NfREVGQVVMVCwNCj4gPj4+ICsJ CURFRkFVTFRfUEtUX0JVUlNULCBNQVhfUEtUX0JVUlNULA0KPiA+Pj4gKwkJREVGQVVMVF9QS1Rf QlVSU1QsIE1BWF9QS1RfQlVSU1QsDQo+ID4+PiArCQlNRU1QT09MX0NBQ0hFX1NJWkUsDQo+ID4+ PiAgICAJCUFDTF9MRUFEX0NIQVIsIFJPVVRFX0xFQURfQ0hBUiwgYWxnKTsNCj4gPj4+ICAgIH0N Cj4gPj4+DQo+ID4+PiBAQCAtNjkzLDQ3ICs3MDAsMzAgQEAgcGFyc2VfbWJjYWNoZV9zaXplKGNv bnN0IGNoYXIgKm9wdGFyZykNCj4gPj4+ICAgIAkJCSBSVEVfTUVNUE9PTF9DQUNIRV9NQVhfU0la RSk7DQo+ID4+PiAgICB9DQo+ID4+Pg0KPiA+Pj4gLXN0YXRpYyB2b2lkDQo+ID4+PiAtcGFyc2Vf cGt0X2J1cnN0KGNvbnN0IGNoYXIgKm9wdGFyZykNCj4gPj4+ICtzdGF0aWMgaW50DQo+ID4+PiAr cGFyc2VfcGt0X2J1cnN0KGNvbnN0IGNoYXIgKm9wdGFyZywgYm9vbCBpc19yeCkNCj4gPj4+ICAg IHsNCj4gPj4+IC0Jc3RydWN0IHJ0ZV9ldGhfZGV2X2luZm8gZGV2X2luZm87DQo+ID4+PiAgICAJ dW5zaWduZWQgbG9uZyBwa3RfYnVyc3Q7DQo+ID4+PiAtCXVpbnQxNl90IGJ1cnN0X3NpemU7DQo+ ID4+PiAgICAJY2hhciAqZW5kID0gTlVMTDsNCj4gPj4+IC0JaW50IHJldDsNCj4gPj4+DQo+ID4+ PiAgICAJLyogcGFyc2UgZGVjaW1hbCBzdHJpbmcgKi8NCj4gPj4+ICAgIAlwa3RfYnVyc3QgPSBz dHJ0b3VsKG9wdGFyZywgJmVuZCwgMTApOw0KPiA+Pj4gLQlpZiAoKG9wdGFyZ1swXSA9PSAnXDAn KSB8fCAoZW5kID09IE5VTEwpIHx8ICgqZW5kICE9ICdcMCcpKQ0KPiA+Pj4gLQkJcmV0dXJuOw0K PiA+Pj4gLQ0KPiA+Pj4gLQlpZiAocGt0X2J1cnN0ID4gTUFYX1BLVF9CVVJTVCkgew0KPiA+Pj4g LQkJUlRFX0xPRyhJTkZPLCBMM0ZXRCwgIlVzZXIgcHJvdmlkZWQgYnVyc3QgbXVzdCBiZSA8PSAl ZC4gVXNpbmcgZGVmYXVsdCB2YWx1ZSAlZFxuIiwNCj4gPj4+IC0JCQlNQVhfUEtUX0JVUlNULCBu Yl9wa3RfcGVyX2J1cnN0KTsNCj4gPj4+IC0JCXJldHVybjsNCj4gPj4+IC0JfSBlbHNlIGlmIChw a3RfYnVyc3QgPiAwKSB7DQo+ID4+PiAtCQluYl9wa3RfcGVyX2J1cnN0ID0gKHVpbnQzMl90KXBr dF9idXJzdDsNCj4gPj4+IC0JCXJldHVybjsNCj4gPj4+ICsJaWYgKChvcHRhcmdbMF0gPT0gJ1ww JykgfHwgKGVuZCA9PSBOVUxMKSB8fCAoKmVuZCAhPSAnXDAnKSkgew0KPiA+Pj4gKwkJUlRFX0xP RyhFUlIsIEwzRldELCAiSW52YWxpZCAlcy1idXJzdFxuIiwgaXNfcnggPyAicngiIDogInR4Iik7 DQo+ID4+PiArCQlyZXR1cm4gLTE7DQo+ID4+PiAgICAJfQ0KPiA+Pj4NCj4gPj4+IC0JLyogSWYg dXNlciBnaXZlcyBhIHZhbHVlIG9mIHplcm8sIHF1ZXJ5IHRoZSBQTUQgZm9yIGl0cyByZWNvbW1l bmRlZCBSeCBidXJzdCBzaXplLiAqLw0KPiA+Pj4gLQlyZXQgPSBydGVfZXRoX2Rldl9pbmZvX2dl dCgwLCAmZGV2X2luZm8pOw0KPiA+Pj4gLQlpZiAocmV0ICE9IDApDQo+ID4+PiAtCQlyZXR1cm47 DQo+ID4+PiAtCWJ1cnN0X3NpemUgPSBkZXZfaW5mby5kZWZhdWx0X3J4cG9ydGNvbmYuYnVyc3Rf c2l6ZTsNCj4gPj4+IC0JaWYgKGJ1cnN0X3NpemUgPT0gMCkgew0KPiA+Pj4gLQkJUlRFX0xPRyhJ TkZPLCBMM0ZXRCwgIlBNRCBkb2VzIG5vdCByZWNvbW1lbmQgYSBidXJzdCBzaXplLiBVc2luZyBk ZWZhdWx0IHZhbHVlICVkLiAiDQo+ID4+PiAtCQkJIlVzZXIgcHJvdmlkZWQgdmFsdWUgbXVzdCBi ZSBpbiBbMSwgJWRdXG4iLA0KPiA+Pj4gLQkJCW5iX3BrdF9wZXJfYnVyc3QsIE1BWF9QS1RfQlVS U1QpOw0KPiA+Pj4gLQkJcmV0dXJuOw0KPiA+Pj4gLQl9IGVsc2UgaWYgKGJ1cnN0X3NpemUgPiBN QVhfUEtUX0JVUlNUKSB7DQo+ID4+PiAtCQlSVEVfTE9HKElORk8sIEwzRldELCAiUE1EIHJlY29t bWVuZGVkIGJ1cnN0IHNpemUgJWQgZXhjZWVkcyBtYXhpbXVtIHZhbHVlICVkLiAiDQo+ID4+PiAt CQkJIlVzaW5nIGRlZmF1bHQgdmFsdWUgJWRcbiIsDQo+ID4+PiAtCQkJYnVyc3Rfc2l6ZSwgTUFY X1BLVF9CVVJTVCwgbmJfcGt0X3Blcl9idXJzdCk7DQo+ID4+PiAtCQlyZXR1cm47DQo+ID4+PiAr CWlmIChwa3RfYnVyc3QgPiBNQVhfUEtUX0JVUlNUIHx8IHBrdF9idXJzdCA9PSAwKSB7DQo+ID4+ PiArCQlSVEVfTE9HKEVSUiwgTDNGV0QsICJVc2VyLXByb3ZpZGVkICVzIGJ1cnN0IG11c3QgYmUg aW4gKDAsICVkXS5cbiIsDQo+ID4+PiArCQkJaXNfcnggPyAiUngiIDogIlR4IiwgTUFYX1BLVF9C VVJTVCk7DQo+ID4+PiArCQlyZXR1cm4gLTE7DQo+ID4+PiArCX0gZWxzZSBpZiAocGt0X2J1cnN0 ID4gMCkgew0KPiA+Pj4gKwkJaWYgKGlzX3J4KQ0KPiA+Pj4gKwkJCXJ4X3BrdF9idXJzdCA9ICh1 aW50MTZfdClwa3RfYnVyc3Q7DQo+ID4+PiArCQllbHNlDQo+ID4+PiArCQkJdHhfcGt0X2J1cnN0 ID0gKHVpbnQxNl90KXBrdF9idXJzdDsNCj4gPj4+ICAgIAl9DQo+ID4+PiAtCW5iX3BrdF9wZXJf YnVyc3QgPSBidXJzdF9zaXplOw0KPiA+Pj4gLQlSVEVfTE9HKElORk8sIEwzRldELCAiVXNpbmcg UE1ELXByb3ZpZGVkIGJ1cnN0IHZhbHVlICVkXG4iLCBidXJzdF9zaXplKTsNCj4gPj4+ICsJcmV0 dXJuIDA7DQo+ID4+PiAgICB9DQo+ID4+Pg0KPiA+Pj4gICAgI2RlZmluZSBNQVhfSlVNQk9fUEtU X0xFTiAgOTYwMA0KPiA+Pj4gQEAgLTc2Nyw3ICs3NTcsOCBAQCBzdGF0aWMgY29uc3QgY2hhciBz aG9ydF9vcHRpb25zW10gPQ0KPiA+Pj4gICAgI2RlZmluZSBDTURfTElORV9PUFRfUlVMRV9JUFY0 ICJydWxlX2lwdjQiDQo+ID4+PiAgICAjZGVmaW5lIENNRF9MSU5FX09QVF9SVUxFX0lQVjYgInJ1 bGVfaXB2NiINCj4gPj4+ICAgICNkZWZpbmUgQ01EX0xJTkVfT1BUX0FMRyAiYWxnIg0KPiA+Pj4g LSNkZWZpbmUgQ01EX0xJTkVfT1BUX1BLVF9CVVJTVCAiYnVyc3QiDQo+ID4+PiArI2RlZmluZSBD TURfTElORV9PUFRfUEtUX1JYX0JVUlNUICJyeC1idXJzdCINCj4gPj4+ICsjZGVmaW5lIENNRF9M SU5FX09QVF9QS1RfVFhfQlVSU1QgInR4LWJ1cnN0Ig0KPiA+Pj4gICAgI2RlZmluZSBDTURfTElO RV9PUFRfTUJfQ0FDSEVfU0laRSAibWJjYWNoZSINCj4gPj4+DQo+ID4+PiAgICBlbnVtIHsNCj4g Pj4+IEBAIC03OTgsNyArNzg5LDggQEAgZW51bSB7DQo+ID4+PiAgICAJQ01EX0xJTkVfT1BUX0VO QUJMRV9WRUNUT1JfTlVNLA0KPiA+Pj4gICAgCUNNRF9MSU5FX09QVF9WRUNUT1JfU0laRV9OVU0s DQo+ID4+PiAgICAJQ01EX0xJTkVfT1BUX1ZFQ1RPUl9UTU9fTlNfTlVNLA0KPiA+Pj4gLQlDTURf TElORV9PUFRfUEtUX0JVUlNUX05VTSwNCj4gPj4+ICsJQ01EX0xJTkVfT1BUX1JYX1BLVF9CVVJT VF9OVU0sDQo+ID4+PiArCUNNRF9MSU5FX09QVF9UWF9QS1RfQlVSU1RfTlVNLA0KPiA+Pj4gICAg CUNNRF9MSU5FX09QVF9NQl9DQUNIRV9TSVpFX05VTSwNCj4gPj4+ICAgIH07DQo+ID4+Pg0KPiA+ Pj4gQEAgLTgyNiw3ICs4MTgsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG9wdGlvbiBsZ29wdHNb XSA9IHsNCj4gPj4+ICAgIAl7Q01EX0xJTkVfT1BUX1JVTEVfSVBWNCwgICAxLCAwLCBDTURfTElO RV9PUFRfUlVMRV9JUFY0X05VTX0sDQo+ID4+PiAgICAJe0NNRF9MSU5FX09QVF9SVUxFX0lQVjYs ICAgMSwgMCwgQ01EX0xJTkVfT1BUX1JVTEVfSVBWNl9OVU19LA0KPiA+Pj4gICAgCXtDTURfTElO RV9PUFRfQUxHLCAgIDEsIDAsIENNRF9MSU5FX09QVF9BTEdfTlVNfSwNCj4gPj4+IC0Je0NNRF9M SU5FX09QVF9QS1RfQlVSU1QsICAgMSwgMCwgQ01EX0xJTkVfT1BUX1BLVF9CVVJTVF9OVU19LA0K PiA+Pj4gKwl7Q01EX0xJTkVfT1BUX1BLVF9SWF9CVVJTVCwgICAxLCAwLCBDTURfTElORV9PUFRf UlhfUEtUX0JVUlNUX05VTX0sDQo+ID4+PiArCXtDTURfTElORV9PUFRfUEtUX1RYX0JVUlNULCAg IDEsIDAsIENNRF9MSU5FX09QVF9UWF9QS1RfQlVSU1RfTlVNfSwNCj4gPj4+ICAgIAl7Q01EX0xJ TkVfT1BUX01CX0NBQ0hFX1NJWkUsICAgMSwgMCwgQ01EX0xJTkVfT1BUX01CX0NBQ0hFX1NJWkVf TlVNfSwNCj4gPj4+ICAgIAl7TlVMTCwgMCwgMCwgMH0NCj4gPj4+ICAgIH07DQo+ID4+PiBAQCAt OTE2LDggKzkwOSwyMCBAQCBwYXJzZV9hcmdzKGludCBhcmdjLCBjaGFyICoqYXJndikNCj4gPj4+ ICAgIAkJCXBhcnNlX3F1ZXVlX3NpemUob3B0YXJnLCAmbmJfdHhkLCAwKTsNCj4gPj4+ICAgIAkJ CWJyZWFrOw0KPiA+Pj4NCj4gPj4+IC0JCWNhc2UgQ01EX0xJTkVfT1BUX1BLVF9CVVJTVF9OVU06 DQo+ID4+PiAtCQkJcGFyc2VfcGt0X2J1cnN0KG9wdGFyZyk7DQo+ID4+PiArCQljYXNlIENNRF9M SU5FX09QVF9UWF9QS1RfQlVSU1RfTlVNOg0KPiA+Pj4gKwkJCXJldCA9IHBhcnNlX3BrdF9idXJz dChvcHRhcmcsIGZhbHNlKTsNCj4gPj4+ICsJCQlpZiAocmV0KSB7DQo+ID4+PiArCQkJCXByaW50 X3VzYWdlKHByZ25hbWUpOw0KPiA+Pj4gKwkJCQlyZXR1cm4gLTE7DQo+ID4+PiArCQkJfQ0KPiA+ Pj4gKwkJCWJyZWFrOw0KPiA+Pj4gKw0KPiA+Pj4gKwkJY2FzZSBDTURfTElORV9PUFRfUlhfUEtU X0JVUlNUX05VTToNCj4gPj4+ICsJCQlyZXQgPSBwYXJzZV9wa3RfYnVyc3Qob3B0YXJnLCB0cnVl KTsNCj4gPj4+ICsJCQlpZiAocmV0KSB7DQo+ID4+PiArCQkJCXByaW50X3VzYWdlKHByZ25hbWUp Ow0KPiA+Pj4gKwkJCQlyZXR1cm4gLTE7DQo+ID4+PiArCQkJfQ0KPiA+Pj4gICAgCQkJYnJlYWs7 DQo+ID4+Pg0KPiA+Pj4gICAgCQljYXNlIENNRF9MSU5FX09QVF9NQl9DQUNIRV9TSVpFX05VTToN Cg==