From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Xueming(Steven) Li" Subject: Re: [PATCH v6 02/11] net/mlx5: support GRE tunnel flow Date: Tue, 24 Apr 2018 07:40:24 +0000 Message-ID: References: <20180420122340.113348-1-xuemingl@mellanox.com> <20180423123310.32991-3-xuemingl@mellanox.com> <20180423125553.xr2mbqd7pfqvil4j@laranjeiro-vm.dev.6wind.com> <20180423134614.ssgcy73idz52x4f6@laranjeiro-vm.dev.6wind.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: Shahaf Shuler , "dev@dpdk.org" To: =?utf-8?B?TsOpbGlvIExhcmFuamVpcm8=?= Return-path: Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01on0050.outbound.protection.outlook.com [104.47.2.50]) by dpdk.org (Postfix) with ESMTP id E8637E5D for ; Tue, 24 Apr 2018 09:40:26 +0200 (CEST) In-Reply-To: <20180423134614.ssgcy73idz52x4f6@laranjeiro-vm.dev.6wind.com> Content-Language: en-US List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTsOpbGlvIExhcmFuamVp cm8gPG5lbGlvLmxhcmFuamVpcm9ANndpbmQuY29tPg0KPiBTZW50OiBNb25kYXksIEFwcmlsIDIz LCAyMDE4IDk6NDYgUE0NCj4gVG86IFh1ZW1pbmcoU3RldmVuKSBMaSA8eHVlbWluZ2xAbWVsbGFu b3guY29tPg0KPiBDYzogU2hhaGFmIFNodWxlciA8c2hhaGFmc0BtZWxsYW5veC5jb20+OyBkZXZA ZHBkay5vcmcNCj4gU3ViamVjdDogUmU6IFtQQVRDSCB2NiAwMi8xMV0gbmV0L21seDU6IHN1cHBv cnQgR1JFIHR1bm5lbCBmbG93DQo+IA0KPiBPbiBNb24sIEFwciAyMywgMjAxOCBhdCAwMTozMjoy M1BNICswMDAwLCBYdWVtaW5nKFN0ZXZlbikgTGkgd3JvdGU6DQo+ID4gSGkgTmVsaW8sDQo+ID4N Cj4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiBGcm9tOiBOw6lsaW8gTGFy YW5qZWlybyA8bmVsaW8ubGFyYW5qZWlyb0A2d2luZC5jb20+DQo+ID4gPiBTZW50OiBNb25kYXks IEFwcmlsIDIzLCAyMDE4IDg6NTYgUE0NCj4gPiA+IFRvOiBYdWVtaW5nKFN0ZXZlbikgTGkgPHh1 ZW1pbmdsQG1lbGxhbm94LmNvbT4NCj4gPiA+IENjOiBTaGFoYWYgU2h1bGVyIDxzaGFoYWZzQG1l bGxhbm94LmNvbT47IGRldkBkcGRrLm9yZw0KPiA+ID4gU3ViamVjdDogUmU6IFtQQVRDSCB2NiAw Mi8xMV0gbmV0L21seDU6IHN1cHBvcnQgR1JFIHR1bm5lbCBmbG93DQo+ID4gPg0KPiA+ID4gT24g TW9uLCBBcHIgMjMsIDIwMTggYXQgMDg6MzM6MDFQTSArMDgwMCwgWHVlbWluZyBMaSB3cm90ZToN Cj4gPiA+ID4gU2lnbmVkLW9mZi1ieTogWHVlbWluZyBMaSA8eHVlbWluZ2xAbWVsbGFub3guY29t Pg0KPiA+ID4gPiAtLS0NCj4gPiA+ID4gIGRyaXZlcnMvbmV0L21seDUvbWx4NV9mbG93LmMgfCAx MDENCj4gPiA+ID4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQ0K PiA+ID4gPiAgMSBmaWxlIGNoYW5nZWQsIDk0IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0p DQo+ID4gPiA+DQo+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tbHg1L21seDVfZmxv dy5jDQo+ID4gPiA+IGIvZHJpdmVycy9uZXQvbWx4NS9tbHg1X2Zsb3cuYyBpbmRleCA1NDAyY2Ix NDguLmIzNjVmOTg2OCAxMDA2NDQNCj4gPiA+ID4gLS0tIGEvZHJpdmVycy9uZXQvbWx4NS9tbHg1 X2Zsb3cuYw0KPiA+ID4gPiArKysgYi9kcml2ZXJzL25ldC9tbHg1L21seDVfZmxvdy5jDQo+ID4g PiA+IEBAIC0zNyw2ICszNyw3IEBADQo+ID4gPiA+ICAvKiBJbnRlcm5ldCBQcm90b2NvbCB2ZXJz aW9ucy4gKi8gICNkZWZpbmUgTUxYNV9JUFY0IDQgICNkZWZpbmUNCj4gPiA+ID4gTUxYNV9JUFY2 IDYNCj4gPiA+ID4gKyNkZWZpbmUgTUxYNV9HUkUgNDcNCj4gPiA+ID4NCj4gPiA+ID4gICNpZm5k ZWYgSEFWRV9JQlZfREVWSUNFX0NPVU5URVJTX1NFVF9TVVBQT1JUDQo+ID4gPiA+ICBzdHJ1Y3Qg aWJ2X2Zsb3dfc3BlY19jb3VudGVyX2FjdGlvbiB7IEBAIC04OSw2ICs5MCwxMSBAQA0KPiA+ID4g PiBtbHg1X2Zsb3dfY3JlYXRlX3Z4bGFuKGNvbnN0IHN0cnVjdCBydGVfZmxvd19pdGVtICppdGVt LA0KPiA+ID4gPiAgCQkgICAgICAgY29uc3Qgdm9pZCAqZGVmYXVsdF9tYXNrLA0KPiA+ID4gPiAg CQkgICAgICAgc3RydWN0IG1seDVfZmxvd19kYXRhICpkYXRhKTsNCj4gPiA+ID4NCj4gPiA+ID4g K3N0YXRpYyBpbnQNCj4gPiA+ID4gK21seDVfZmxvd19jcmVhdGVfZ3JlKGNvbnN0IHN0cnVjdCBy dGVfZmxvd19pdGVtICppdGVtLA0KPiA+ID4gPiArCQkgICAgIGNvbnN0IHZvaWQgKmRlZmF1bHRf bWFzaywNCj4gPiA+ID4gKwkJICAgICBzdHJ1Y3QgbWx4NV9mbG93X2RhdGEgKmRhdGEpOw0KPiA+ ID4gPiArDQo+ID4gPiA+ICBzdHJ1Y3QgbWx4NV9mbG93X3BhcnNlOw0KPiA+ID4gPg0KPiA+ID4g PiAgc3RhdGljIHZvaWQNCj4gPiA+ID4gQEAgLTIzMSw2ICsyMzcsMTAgQEAgc3RydWN0IHJ0ZV9m bG93IHsNCj4gPiA+ID4gIAkJX19WQV9BUkdTX18sIFJURV9GTE9XX0lURU1fVFlQRV9FTkQsIFwN Cj4gPiA+ID4gIAl9DQo+ID4gPiA+DQo+ID4gPiA+ICsjZGVmaW5lIElTX1RVTk5FTCh0eXBlKSAo IFwNCj4gPiA+ID4gKwkodHlwZSkgPT0gUlRFX0ZMT1dfSVRFTV9UWVBFX1ZYTEFOIHx8IFwNCj4g PiA+ID4gKwkodHlwZSkgPT0gUlRFX0ZMT1dfSVRFTV9UWVBFX0dSRSkNCj4gPiA+ID4gKw0KPiA+ ID4gPiAgLyoqIFN0cnVjdHVyZSB0byBnZW5lcmF0ZSBhIHNpbXBsZSBncmFwaCBvZiBsYXllcnMg c3VwcG9ydGVkIGJ5DQo+ID4gPiA+IHRoZSBOSUMuICovICBzdHJ1Y3QgbWx4NV9mbG93X2l0ZW1z IHsNCj4gPiA+ID4gIAkvKiogTGlzdCBvZiBwb3NzaWJsZSBhY3Rpb25zIGZvciB0aGVzZSBpdGVt cy4gKi8gQEAgLTI4NCw3DQo+ID4gPiA+ICsyOTQsOCBAQCBzdGF0aWMgY29uc3QgZW51bSBydGVf Zmxvd19hY3Rpb25fdHlwZSB2YWxpZF9hY3Rpb25zW10gPQ0KPiA+ID4gPiB7ICBzdGF0aWMgY29u c3Qgc3RydWN0IG1seDVfZmxvd19pdGVtcyBtbHg1X2Zsb3dfaXRlbXNbXSA9IHsNCj4gPiA+ID4g IAlbUlRFX0ZMT1dfSVRFTV9UWVBFX0VORF0gPSB7DQo+ID4gPiA+ICAJCS5pdGVtcyA9IElURU1T KFJURV9GTE9XX0lURU1fVFlQRV9FVEgsDQo+ID4gPiA+IC0JCQkgICAgICAgUlRFX0ZMT1dfSVRF TV9UWVBFX1ZYTEFOKSwNCj4gPiA+ID4gKwkJCSAgICAgICBSVEVfRkxPV19JVEVNX1RZUEVfVlhM QU4sDQo+ID4gPiA+ICsJCQkgICAgICAgUlRFX0ZMT1dfSVRFTV9UWVBFX0dSRSksDQo+ID4gPiA+ ICAJfSwNCj4gPiA+ID4gIAlbUlRFX0ZMT1dfSVRFTV9UWVBFX0VUSF0gPSB7DQo+ID4gPiA+ICAJ CS5pdGVtcyA9IElURU1TKFJURV9GTE9XX0lURU1fVFlQRV9WTEFOLCBAQCAtMzE2LDcgKzMyNyw4 IEBADQo+ID4gPiA+IHN0YXRpYyBjb25zdCBzdHJ1Y3QgbWx4NV9mbG93X2l0ZW1zIG1seDVfZmxv d19pdGVtc1tdID0gew0KPiA+ID4gPiAgCX0sDQo+ID4gPiA+ICAJW1JURV9GTE9XX0lURU1fVFlQ RV9JUFY0XSA9IHsNCj4gPiA+ID4gIAkJLml0ZW1zID0gSVRFTVMoUlRFX0ZMT1dfSVRFTV9UWVBF X1VEUCwNCj4gPiA+ID4gLQkJCSAgICAgICBSVEVfRkxPV19JVEVNX1RZUEVfVENQKSwNCj4gPiA+ ID4gKwkJCSAgICAgICBSVEVfRkxPV19JVEVNX1RZUEVfVENQLA0KPiA+ID4gPiArCQkJICAgICAg IFJURV9GTE9XX0lURU1fVFlQRV9HUkUpLA0KPiA+ID4gPiAgCQkuYWN0aW9ucyA9IHZhbGlkX2Fj dGlvbnMsDQo+ID4gPiA+ICAJCS5tYXNrID0gJihjb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfaXRlbV9p cHY0KXsNCj4gPiA+ID4gIAkJCS5oZHIgPSB7DQo+ID4gPiA+IEBAIC0zMzMsNyArMzQ1LDggQEAg c3RhdGljIGNvbnN0IHN0cnVjdCBtbHg1X2Zsb3dfaXRlbXMgbWx4NV9mbG93X2l0ZW1zW10gPSB7 DQo+ID4gPiA+ICAJfSwNCj4gPiA+ID4gIAlbUlRFX0ZMT1dfSVRFTV9UWVBFX0lQVjZdID0gew0K PiA+ID4gPiAgCQkuaXRlbXMgPSBJVEVNUyhSVEVfRkxPV19JVEVNX1RZUEVfVURQLA0KPiA+ID4g PiAtCQkJICAgICAgIFJURV9GTE9XX0lURU1fVFlQRV9UQ1ApLA0KPiA+ID4gPiArCQkJICAgICAg IFJURV9GTE9XX0lURU1fVFlQRV9UQ1AsDQo+ID4gPiA+ICsJCQkgICAgICAgUlRFX0ZMT1dfSVRF TV9UWVBFX0dSRSksDQo+ID4gPiA+ICAJCS5hY3Rpb25zID0gdmFsaWRfYWN0aW9ucywNCj4gPiA+ ID4gIAkJLm1hc2sgPSAmKGNvbnN0IHN0cnVjdCBydGVfZmxvd19pdGVtX2lwdjYpew0KPiA+ID4g PiAgCQkJLmhkciA9IHsNCj4gPiA+ID4gQEAgLTM4Niw2ICszOTksMTkgQEAgc3RhdGljIGNvbnN0 IHN0cnVjdCBtbHg1X2Zsb3dfaXRlbXMgbWx4NV9mbG93X2l0ZW1zW10gPSB7DQo+ID4gPiA+ICAJ CS5jb252ZXJ0ID0gbWx4NV9mbG93X2NyZWF0ZV90Y3AsDQo+ID4gPiA+ICAJCS5kc3Rfc3ogPSBz aXplb2Yoc3RydWN0IGlidl9mbG93X3NwZWNfdGNwX3VkcCksDQo+ID4gPiA+ICAJfSwNCj4gPiA+ ID4gKwlbUlRFX0ZMT1dfSVRFTV9UWVBFX0dSRV0gPSB7DQo+ID4gPiA+ICsJCS5pdGVtcyA9IElU RU1TKFJURV9GTE9XX0lURU1fVFlQRV9FVEgsDQo+ID4gPiA+ICsJCQkgICAgICAgUlRFX0ZMT1df SVRFTV9UWVBFX0lQVjQsDQo+ID4gPiA+ICsJCQkgICAgICAgUlRFX0ZMT1dfSVRFTV9UWVBFX0lQ VjYpLA0KPiA+ID4gPiArCQkuYWN0aW9ucyA9IHZhbGlkX2FjdGlvbnMsDQo+ID4gPiA+ICsJCS5t YXNrID0gJihjb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfaXRlbV9ncmUpew0KPiA+ID4gPiArCQkJLnBy b3RvY29sID0gLTEsDQo+ID4gPiA+ICsJCX0sDQo+ID4gPiA+ICsJCS5kZWZhdWx0X21hc2sgPSAm cnRlX2Zsb3dfaXRlbV9ncmVfbWFzaywNCj4gPiA+ID4gKwkJLm1hc2tfc3ogPSBzaXplb2Yoc3Ry dWN0IHJ0ZV9mbG93X2l0ZW1fZ3JlKSwNCj4gPiA+ID4gKwkJLmNvbnZlcnQgPSBtbHg1X2Zsb3df Y3JlYXRlX2dyZSwNCj4gPiA+ID4gKwkJLmRzdF9zeiA9IHNpemVvZihzdHJ1Y3QgaWJ2X2Zsb3df c3BlY190dW5uZWwpLA0KPiA+ID4gPiArCX0sDQo+ID4gPiA+ICAJW1JURV9GTE9XX0lURU1fVFlQ RV9WWExBTl0gPSB7DQo+ID4gPiA+ICAJCS5pdGVtcyA9IElURU1TKFJURV9GTE9XX0lURU1fVFlQ RV9FVEgpLA0KPiA+ID4gPiAgCQkuYWN0aW9ucyA9IHZhbGlkX2FjdGlvbnMsDQo+ID4gPiA+IEBA IC00MDEsNyArNDI3LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtbHg1X2Zsb3dfaXRlbXMNCj4g PiA+ID4gbWx4NV9mbG93X2l0ZW1zW10gPSB7DQo+ID4gPiA+DQo+ID4gPiA+ICAvKiogU3RydWN0 dXJlIHRvIHBhc3MgdG8gdGhlIGNvbnZlcnNpb24gZnVuY3Rpb24uICovICBzdHJ1Y3QNCj4gPiA+ ID4gbWx4NV9mbG93X3BhcnNlIHsNCj4gPiA+ID4gLQl1aW50MzJfdCBpbm5lcjsgLyoqPCBTZXQg b25jZSBWWExBTiBpcyBlbmNvdW50ZXJlZC4gKi8NCj4gPiA+ID4gKwl1aW50MzJfdCBpbm5lcjsg LyoqPCBWZXJicyB2YWx1ZSwgc2V0IG9uY2UgdHVubmVsIGlzDQo+ID4gPiA+ICtlbmNvdW50ZXJl ZC4gKi8NCj4gPiA+ID4gIAl1aW50MzJfdCBjcmVhdGU6MTsNCj4gPiA+ID4gIAkvKio8IFdoZXRo ZXIgcmVzb3VyY2VzIHNob3VsZCByZW1haW4gYWZ0ZXIgYSB2YWxpZGF0ZS4gKi8NCj4gPiA+ID4g IAl1aW50MzJfdCBkcm9wOjE7IC8qKjwgVGFyZ2V0IGlzIGEgZHJvcCBxdWV1ZS4gKi8gQEAgLTgy OSwxMw0KPiA+ID4gPiArODU1LDEzIEBAIG1seDVfZmxvd19jb252ZXJ0X2l0ZW1zX3ZhbGlkYXRl KGNvbnN0IHN0cnVjdCBydGVfZmxvd19pdGVtIGl0ZW1zW10sDQo+ID4gPiA+ICAJCQkJCSAgICAg IGN1cl9pdGVtLT5tYXNrX3N6KTsNCj4gPiA+ID4gIAkJaWYgKHJldCkNCj4gPiA+ID4gIAkJCWdv dG8gZXhpdF9pdGVtX25vdF9zdXBwb3J0ZWQ7DQo+ID4gPiA+IC0JCWlmIChpdGVtcy0+dHlwZSA9 PSBSVEVfRkxPV19JVEVNX1RZUEVfVlhMQU4pIHsNCj4gPiA+ID4gKwkJaWYgKElTX1RVTk5FTChp dGVtcy0+dHlwZSkpIHsNCj4gPiA+ID4gIAkJCWlmIChwYXJzZXItPmlubmVyKSB7DQo+ID4gPiA+ ICAJCQkJcnRlX2Zsb3dfZXJyb3Jfc2V0KGVycm9yLCBFTk9UU1VQLA0KPiA+ID4gPiAgCQkJCQkJ ICAgUlRFX0ZMT1dfRVJST1JfVFlQRV9JVEVNLA0KPiA+ID4gPiAgCQkJCQkJICAgaXRlbXMsDQo+ ID4gPiA+IC0JCQkJCQkgICAiY2Fubm90IHJlY29nbml6ZSBtdWx0aXBsZSINCj4gPiA+ID4gLQkJ CQkJCSAgICIgVlhMQU4gZW5jYXBzdWxhdGlvbnMiKTsNCj4gPiA+ID4gKwkJCQkJCSAgICJDYW5u b3QgcmVjb2duaXplIG11bHRpcGxlIg0KPiA+ID4gPiArCQkJCQkJICAgIiB0dW5uZWwgZW5jYXBz dWxhdGlvbnMuIik7DQo+ID4gPiA+ICAJCQkJcmV0dXJuIC1ydGVfZXJybm87DQo+ID4gPiA+ICAJ CQl9DQo+ID4gPiA+ICAJCQlwYXJzZXItPmlubmVyID0gSUJWX0ZMT1dfU1BFQ19JTk5FUjsgQEAg LTE2NDEsNiArMTY2Nyw2NyBAQA0KPiA+ID4gPiBtbHg1X2Zsb3dfY3JlYXRlX3Z4bGFuKGNvbnN0 IHN0cnVjdCBydGVfZmxvd19pdGVtICppdGVtLCAgfQ0KPiA+ID4gPg0KPiA+ID4gPiAgLyoqDQo+ ID4gPiA+ICsgKiBDb252ZXJ0IEdSRSBpdGVtIHRvIFZlcmJzIHNwZWNpZmljYXRpb24uDQo+ID4g PiA+ICsgKg0KPiA+ID4gPiArICogQHBhcmFtIGl0ZW1baW5dDQo+ID4gPiA+ICsgKiAgIEl0ZW0g c3BlY2lmaWNhdGlvbi4NCj4gPiA+ID4gKyAqIEBwYXJhbSBkZWZhdWx0X21hc2tbaW5dDQo+ID4g PiA+ICsgKiAgIERlZmF1bHQgYml0LW1hc2tzIHRvIHVzZSB3aGVuIGl0ZW0tPm1hc2sgaXMgbm90 IHByb3ZpZGVkLg0KPiA+ID4gPiArICogQHBhcmFtIGRhdGFbaW4sIG91dF0NCj4gPiA+ID4gKyAq ICAgVXNlciBzdHJ1Y3R1cmUuDQo+ID4gPiA+ICsgKg0KPiA+ID4gPiArICogQHJldHVybg0KPiA+ ID4gPiArICogICAwIG9uIHN1Y2Nlc3MsIGEgbmVnYXRpdmUgZXJybm8gdmFsdWUgb3RoZXJ3aXNl IGFuZCBydGVfZXJybm8gaXMgc2V0Lg0KPiA+ID4gPiArICovDQo+ID4gPiA+ICtzdGF0aWMgaW50 DQo+ID4gPiA+ICttbHg1X2Zsb3dfY3JlYXRlX2dyZShjb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfaXRl bSAqaXRlbSBfX3J0ZV91bnVzZWQsDQo+ID4gPiA+ICsJCSAgICAgY29uc3Qgdm9pZCAqZGVmYXVs dF9tYXNrIF9fcnRlX3VudXNlZCwNCj4gPiA+ID4gKwkJICAgICBzdHJ1Y3QgbWx4NV9mbG93X2Rh dGEgKmRhdGEpIHsNCj4gPiA+ID4gKwlzdHJ1Y3QgbWx4NV9mbG93X3BhcnNlICpwYXJzZXIgPSBk YXRhLT5wYXJzZXI7DQo+ID4gPiA+ICsJdW5zaWduZWQgaW50IHNpemUgPSBzaXplb2Yoc3RydWN0 IGlidl9mbG93X3NwZWNfdHVubmVsKTsNCj4gPiA+ID4gKwlzdHJ1Y3QgaWJ2X2Zsb3dfc3BlY190 dW5uZWwgdHVubmVsID0gew0KPiA+ID4gPiArCQkudHlwZSA9IHBhcnNlci0+aW5uZXIgfCBJQlZf RkxPV19TUEVDX1ZYTEFOX1RVTk5FTCwNCj4gPiA+ID4gKwkJLnNpemUgPSBzaXplLA0KPiA+ID4g PiArCX07DQo+ID4gPiA+ICsJc3RydWN0IGlidl9mbG93X3NwZWNfaXB2NF9leHQgKmlwdjQ7DQo+ ID4gPiA+ICsJc3RydWN0IGlidl9mbG93X3NwZWNfaXB2NiAqaXB2NjsNCj4gPiA+ID4gKwl1bnNp Z25lZCBpbnQgaTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCXBhcnNlci0+aW5uZXIgPSBJQlZfRkxP V19TUEVDX0lOTkVSOw0KPiA+ID4gPiArCS8qIFVwZGF0ZSBlbmNhcHN1bGF0aW9uIElQIGxheWVy IHByb3RvY29sLiAqLw0KPiA+ID4gPiArCWZvciAoaSA9IDA7IGkgIT0gaGFzaF9yeHFfaW5pdF9u OyArK2kpIHsNCj4gPiA+ID4gKwkJaWYgKCFwYXJzZXItPnF1ZXVlW2ldLmlidl9hdHRyKQ0KPiA+ ID4gPiArCQkJY29udGludWU7DQo+ID4gPiA+ICsJCWlmIChwYXJzZXItPm91dF9sYXllciA9PSBI QVNIX1JYUV9JUFY0KSB7DQo+ID4gPiA+ICsJCQlpcHY0ID0gKHZvaWQgKikoKHVpbnRwdHJfdClw YXJzZXItPnF1ZXVlW2ldLmlidl9hdHRyICsNCj4gPiA+ID4gKwkJCQlwYXJzZXItPnF1ZXVlW2ld Lm9mZnNldCAtDQo+ID4gPiA+ICsJCQkJc2l6ZW9mKHN0cnVjdCBpYnZfZmxvd19zcGVjX2lwdjRf ZXh0KSk7DQo+ID4gPiA+ICsJCQlpZiAoaXB2NC0+bWFzay5wcm90byAmJiBpcHY0LT52YWwucHJv dG8gIT0gTUxYNV9HUkUpDQo+ID4gPiA+ICsJCQkJYnJlYWs7DQo+ID4gPiA+ICsJCQlpcHY0LT52 YWwucHJvdG8gPSBNTFg1X0dSRTsNCj4gPiA+ID4gKwkJCWlwdjQtPm1hc2sucHJvdG8gPSAweGZm Ow0KPiA+ID4gPiArCQl9IGVsc2UgaWYgKHBhcnNlci0+b3V0X2xheWVyID09IEhBU0hfUlhRX0lQ VjYpIHsNCj4gPiA+ID4gKwkJCWlwdjYgPSAodm9pZCAqKSgodWludHB0cl90KXBhcnNlci0+cXVl dWVbaV0uaWJ2X2F0dHIgKw0KPiA+ID4gPiArCQkJCXBhcnNlci0+cXVldWVbaV0ub2Zmc2V0IC0N Cj4gPiA+ID4gKwkJCQlzaXplb2Yoc3RydWN0IGlidl9mbG93X3NwZWNfaXB2NikpOw0KPiA+ID4g PiArCQkJaWYgKGlwdjYtPm1hc2submV4dF9oZHIgJiYNCj4gPiA+ID4gKwkJCSAgICBpcHY2LT52 YWwubmV4dF9oZHIgIT0gTUxYNV9HUkUpDQo+ID4gPiA+ICsJCQkJYnJlYWs7DQo+ID4gPiA+ICsJ CQlpcHY2LT52YWwubmV4dF9oZHIgPSBNTFg1X0dSRTsNCj4gPiA+ID4gKwkJCWlwdjYtPm1hc2su bmV4dF9oZHIgPSAweGZmOw0KPiA+ID4gPiArCQl9DQo+ID4gPiA+ICsJfQ0KPiA+ID4gPiArCWlm IChpICE9IGhhc2hfcnhxX2luaXRfbikNCj4gPiA+ID4gKwkJcmV0dXJuIHJ0ZV9mbG93X2Vycm9y X3NldChkYXRhLT5lcnJvciwgRUlOVkFMLA0KPiA+ID4gPiArCQkJCQkgIFJURV9GTE9XX0VSUk9S X1RZUEVfSVRFTSwNCj4gPiA+ID4gKwkJCQkJICBpdGVtLA0KPiA+ID4gPiArCQkJCQkgICJJUCBw cm90b2NvbCBvZiBHUkUgbXVzdCBiZSA0NyIpOw0KPiA+ID4gPiArCW1seDVfZmxvd19jcmVhdGVf Y29weShwYXJzZXIsICZ0dW5uZWwsIHNpemUpOw0KPiA+ID4gPiArCXJldHVybiAwOw0KPiA+ID4g PiArfQ0KPiA+ID4NCj4gPiA+IFRoZXJlIGlzIHNvbWV0aGluZyBzdHJhbmdlLCBpdGVtIGlzIG5v dCB1bnVzZWQgYXMgaXQgaXMgYXQgbGVhc3QgdXNlZCBpbiB0aGUgcnRlX2Zsb3dfZXJyb3Jfc2V0 KCkuDQo+ID4NCj4gPiBBIG5ldyBpc3N1ZSBpbnRyb2R1Y2VkIHdoZW4gYWRkaW5nIEdSRSBwcm90 b2NvbCBjaGVjay4NCj4gPiBJZiB5b3UgZmluaXNoZWQgdGhpcyBwYXRjaHNldCByZXZpZXcsIEkn bGwgdXBsb2FkIGEgbmV3IHZlcnNpb24gdG8gcmVtb3ZlIGl0Lg0KPiA+DQo+ID4gPg0KPiA+ID4g SW4gdGhlIG90aGVyIHNlcmllcyB5b3UgYXJlIHB1c2hpbmcsIHRoZXJlIGlzIG5vIG5ldw0KPiA+ ID4gUlRFX0ZMT1dfSVRFTV9HUkUgYW5kIGluIHRoZSBjdXJyZW50IGNvZGUgdGhlcmUgaXMgYWxz byBubyBSVEVfRkxPV19JVEVNX0dSRS4NCj4gPiA+DQo+ID4gPiBJIGRvbid0IHNlZSBob3cgdGhp cyBjb2RlIGNhbiBtYXRjaCB0aGUgbWlzc2luZyBpdGVtLCB3aGF0IGFtIEkgbWlzc2luZz8NCj4g Pg0KPiA+IEFyZSB5b3UgbG9va2luZyBmb3IgUlRFX0ZMT1dfSVRFTV9UWVBFX0dSRT8NCj4gDQo+ IFllcw0KDQpSVEVfRkxPV19JVEVNX1RZUEVfR1JFIGhhcyBiZWVuIGRlZmluZWQgaW4gcnRlX2Zs b3cuaCwgcGxlYXNlIGNoZWNrLg0KDQo+IA0KPiA+ID4NCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiAg ICogQ29udmVydCBtYXJrL2ZsYWcgYWN0aW9uIHRvIFZlcmJzIHNwZWNpZmljYXRpb24uDQo+ID4g PiA+ICAgKg0KPiA+ID4gPiAgICogQHBhcmFtIHBhcnNlcg0KPiA+ID4gPiAtLQ0KPiA+ID4gPiAy LjEzLjMNCj4gPiA+DQo+ID4gPiBUaGFua3MsDQo+ID4gPg0KPiA+ID4gLS0NCj4gPiA+IE7DqWxp byBMYXJhbmplaXJvDQo+ID4gPiA2V0lORA0KPiANCj4gLS0NCj4gTsOpbGlvIExhcmFuamVpcm8N Cj4gNldJTkQNCg==