From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01on0053.outbound.protection.outlook.com [104.47.0.53]) by dpdk.org (Postfix) with ESMTP id 4A85C5B1C for ; Mon, 23 Apr 2018 15:32:31 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=8WDbsNbIS43tomZpqMvcSZMIbNSJH3DwrGkVf1zDQDU=; b=GJr5qaap6h+nFTfJuGsAh3pPBE9E5j16V4OB3+MXD8RqYVug5h32VLsMOcqGUzbKV4ax8WWnOPpCHEezU0gaqMRk6P1G0JB5El+A0Dy9gajq05ya00LQK33a2SNS4axp6wBwrBARERKBFLa3tlQdrT3C/hN1m6DC/CEp0CNgV8A= Received: from VI1PR05MB1678.eurprd05.prod.outlook.com (10.165.235.152) by VI1PR05MB3248.eurprd05.prod.outlook.com (10.170.238.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.696.15; Mon, 23 Apr 2018 13:32:29 +0000 Received: from VI1PR05MB1678.eurprd05.prod.outlook.com ([fe80::6da4:14c3:f5d8:3f4a]) by VI1PR05MB1678.eurprd05.prod.outlook.com ([fe80::6da4:14c3:f5d8:3f4a%14]) with mapi id 15.20.0696.017; Mon, 23 Apr 2018 13:32:23 +0000 From: "Xueming(Steven) Li" To: =?utf-8?B?TsOpbGlvIExhcmFuamVpcm8=?= CC: Shahaf Shuler , "dev@dpdk.org" Thread-Topic: [PATCH v6 02/11] net/mlx5: support GRE tunnel flow Thread-Index: AQHT2v9WZfySiFW//0CPejrrjXqO7KQOTtSAgAAJF8A= Date: Mon, 23 Apr 2018 13:32:23 +0000 Message-ID: References: <20180420122340.113348-1-xuemingl@mellanox.com> <20180423123310.32991-3-xuemingl@mellanox.com> <20180423125553.xr2mbqd7pfqvil4j@laranjeiro-vm.dev.6wind.com> In-Reply-To: <20180423125553.xr2mbqd7pfqvil4j@laranjeiro-vm.dev.6wind.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: 6wind.com; dkim=none (message not signed) header.d=none;6wind.com; dmarc=none action=none header.from=mellanox.com; x-originating-ip: [180.174.142.249] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; VI1PR05MB3248; 7:SqS0V9+UTvUzPAxPiE5Vv+z/mpV1er34/PjrAjh3ZkTYPShCQSC2Ot3yj/RcNs8tH+Vkp3f5ghc95nckkOZEjYNlKDO7WAcMmO2nMceCypC8PUz2v8LoOfjDzWEH+dLL3YYMAv7eZJ6d0mLPB/Rr+sFjdW2ZWnSpKSoS2eYP7iSSqq/3RHJ6SVafjZFtVn5xNFE9FrFfvqMjV7WMgbVb7lrx+d28/gtA5WC5Zi/5YHDdjSEUcUkjdkTKM/YCkgnA x-ms-exchange-antispam-srfa-diagnostics: SOS; x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(48565401081)(4534165)(4627221)(201703031133081)(201702281549075)(5600026)(2017052603328)(7153060)(7193020); SRVR:VI1PR05MB3248; x-ms-traffictypediagnostic: VI1PR05MB3248: x-ld-processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:; x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3002001)(93006095)(93001095)(10201501046)(3231232)(944501410)(52105095)(6055026)(6041310)(20161123560045)(20161123558120)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(6072148)(201708071742011); SRVR:VI1PR05MB3248; BCL:0; PCL:0; RULEID:; SRVR:VI1PR05MB3248; x-forefront-prvs: 06515DA04B x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(346002)(376002)(39380400002)(366004)(39860400002)(396003)(13464003)(31014005)(7736002)(53546011)(2906002)(25786009)(74316002)(478600001)(8676002)(8936002)(6916009)(229853002)(5250100002)(6436002)(53936002)(33656002)(3660700001)(66066001)(81166006)(3846002)(2900100001)(6116002)(6246003)(55016002)(316002)(54906003)(3280700002)(11346002)(446003)(9686003)(5660300001)(476003)(4326008)(186003)(305945005)(26005)(76176011)(59450400001)(102836004)(86362001)(7696005)(6506007); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB3248; H:VI1PR05MB1678.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; MLV:sfv; x-microsoft-antispam-message-info: GQD8S+cmBoTnnOG+3frs4WTVkTpTOzVpNrlsFmjk6iWzXBdE/4+AbDbZkazPiZaFQbf0OAVbzgocnm2lehIkbHTqPiYhqXgm+zS8NGKHTxAnVjGHPp/ZqLobdFL6guS3dBxE2I0O4jyk105aH7aF7LgzqsBwIF/WEWhQDLTRvosGB959nfmP/SilCMWUTI0W spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: 36497c93-6749-4eb3-acc2-08d5a91ea5cd X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 36497c93-6749-4eb3-acc2-08d5a91ea5cd X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Apr 2018 13:32:23.6594 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB3248 Subject: Re: [dpdk-dev] [PATCH v6 02/11] net/mlx5: support GRE tunnel flow 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: , X-List-Received-Date: Mon, 23 Apr 2018 13:32:31 -0000 SGkgTmVsaW8sDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTsOpbGlv IExhcmFuamVpcm8gPG5lbGlvLmxhcmFuamVpcm9ANndpbmQuY29tPg0KPiBTZW50OiBNb25kYXks IEFwcmlsIDIzLCAyMDE4IDg6NTYgUE0NCj4gVG86IFh1ZW1pbmcoU3RldmVuKSBMaSA8eHVlbWlu Z2xAbWVsbGFub3guY29tPg0KPiBDYzogU2hhaGFmIFNodWxlciA8c2hhaGFmc0BtZWxsYW5veC5j b20+OyBkZXZAZHBkay5vcmcNCj4gU3ViamVjdDogUmU6IFtQQVRDSCB2NiAwMi8xMV0gbmV0L21s eDU6IHN1cHBvcnQgR1JFIHR1bm5lbCBmbG93DQo+IA0KPiBPbiBNb24sIEFwciAyMywgMjAxOCBh dCAwODozMzowMVBNICswODAwLCBYdWVtaW5nIExpIHdyb3RlOg0KPiA+IFNpZ25lZC1vZmYtYnk6 IFh1ZW1pbmcgTGkgPHh1ZW1pbmdsQG1lbGxhbm94LmNvbT4NCj4gPiAtLS0NCj4gPiAgZHJpdmVy cy9uZXQvbWx4NS9tbHg1X2Zsb3cuYyB8IDEwMQ0KPiA+ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKystLS0NCj4gPiAgMSBmaWxlIGNoYW5nZWQsIDk0IGluc2VydGlvbnMo KyksIDcgZGVsZXRpb25zKC0pDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWx4 NS9tbHg1X2Zsb3cuYw0KPiA+IGIvZHJpdmVycy9uZXQvbWx4NS9tbHg1X2Zsb3cuYyBpbmRleCA1 NDAyY2IxNDguLmIzNjVmOTg2OCAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL25ldC9tbHg1L21s eDVfZmxvdy5jDQo+ID4gKysrIGIvZHJpdmVycy9uZXQvbWx4NS9tbHg1X2Zsb3cuYw0KPiA+IEBA IC0zNyw2ICszNyw3IEBADQo+ID4gIC8qIEludGVybmV0IFByb3RvY29sIHZlcnNpb25zLiAqLw0K PiA+ICAjZGVmaW5lIE1MWDVfSVBWNCA0DQo+ID4gICNkZWZpbmUgTUxYNV9JUFY2IDYNCj4gPiAr I2RlZmluZSBNTFg1X0dSRSA0Nw0KPiA+DQo+ID4gICNpZm5kZWYgSEFWRV9JQlZfREVWSUNFX0NP VU5URVJTX1NFVF9TVVBQT1JUDQo+ID4gIHN0cnVjdCBpYnZfZmxvd19zcGVjX2NvdW50ZXJfYWN0 aW9uIHsgQEAgLTg5LDYgKzkwLDExIEBADQo+ID4gbWx4NV9mbG93X2NyZWF0ZV92eGxhbihjb25z dCBzdHJ1Y3QgcnRlX2Zsb3dfaXRlbSAqaXRlbSwNCj4gPiAgCQkgICAgICAgY29uc3Qgdm9pZCAq ZGVmYXVsdF9tYXNrLA0KPiA+ICAJCSAgICAgICBzdHJ1Y3QgbWx4NV9mbG93X2RhdGEgKmRhdGEp Ow0KPiA+DQo+ID4gK3N0YXRpYyBpbnQNCj4gPiArbWx4NV9mbG93X2NyZWF0ZV9ncmUoY29uc3Qg c3RydWN0IHJ0ZV9mbG93X2l0ZW0gKml0ZW0sDQo+ID4gKwkJICAgICBjb25zdCB2b2lkICpkZWZh dWx0X21hc2ssDQo+ID4gKwkJICAgICBzdHJ1Y3QgbWx4NV9mbG93X2RhdGEgKmRhdGEpOw0KPiA+ ICsNCj4gPiAgc3RydWN0IG1seDVfZmxvd19wYXJzZTsNCj4gPg0KPiA+ICBzdGF0aWMgdm9pZA0K PiA+IEBAIC0yMzEsNiArMjM3LDEwIEBAIHN0cnVjdCBydGVfZmxvdyB7DQo+ID4gIAkJX19WQV9B UkdTX18sIFJURV9GTE9XX0lURU1fVFlQRV9FTkQsIFwNCj4gPiAgCX0NCj4gPg0KPiA+ICsjZGVm aW5lIElTX1RVTk5FTCh0eXBlKSAoIFwNCj4gPiArCSh0eXBlKSA9PSBSVEVfRkxPV19JVEVNX1RZ UEVfVlhMQU4gfHwgXA0KPiA+ICsJKHR5cGUpID09IFJURV9GTE9XX0lURU1fVFlQRV9HUkUpDQo+ ID4gKw0KPiA+ICAvKiogU3RydWN0dXJlIHRvIGdlbmVyYXRlIGEgc2ltcGxlIGdyYXBoIG9mIGxh eWVycyBzdXBwb3J0ZWQgYnkgdGhlDQo+ID4gTklDLiAqLyAgc3RydWN0IG1seDVfZmxvd19pdGVt cyB7DQo+ID4gIAkvKiogTGlzdCBvZiBwb3NzaWJsZSBhY3Rpb25zIGZvciB0aGVzZSBpdGVtcy4g Ki8gQEAgLTI4NCw3ICsyOTQsOCBAQA0KPiA+IHN0YXRpYyBjb25zdCBlbnVtIHJ0ZV9mbG93X2Fj dGlvbl90eXBlIHZhbGlkX2FjdGlvbnNbXSA9IHsgIHN0YXRpYw0KPiA+IGNvbnN0IHN0cnVjdCBt bHg1X2Zsb3dfaXRlbXMgbWx4NV9mbG93X2l0ZW1zW10gPSB7DQo+ID4gIAlbUlRFX0ZMT1dfSVRF TV9UWVBFX0VORF0gPSB7DQo+ID4gIAkJLml0ZW1zID0gSVRFTVMoUlRFX0ZMT1dfSVRFTV9UWVBF X0VUSCwNCj4gPiAtCQkJICAgICAgIFJURV9GTE9XX0lURU1fVFlQRV9WWExBTiksDQo+ID4gKwkJ CSAgICAgICBSVEVfRkxPV19JVEVNX1RZUEVfVlhMQU4sDQo+ID4gKwkJCSAgICAgICBSVEVfRkxP V19JVEVNX1RZUEVfR1JFKSwNCj4gPiAgCX0sDQo+ID4gIAlbUlRFX0ZMT1dfSVRFTV9UWVBFX0VU SF0gPSB7DQo+ID4gIAkJLml0ZW1zID0gSVRFTVMoUlRFX0ZMT1dfSVRFTV9UWVBFX1ZMQU4sIEBA IC0zMTYsNyArMzI3LDggQEAgc3RhdGljDQo+ID4gY29uc3Qgc3RydWN0IG1seDVfZmxvd19pdGVt cyBtbHg1X2Zsb3dfaXRlbXNbXSA9IHsNCj4gPiAgCX0sDQo+ID4gIAlbUlRFX0ZMT1dfSVRFTV9U WVBFX0lQVjRdID0gew0KPiA+ICAJCS5pdGVtcyA9IElURU1TKFJURV9GTE9XX0lURU1fVFlQRV9V RFAsDQo+ID4gLQkJCSAgICAgICBSVEVfRkxPV19JVEVNX1RZUEVfVENQKSwNCj4gPiArCQkJICAg ICAgIFJURV9GTE9XX0lURU1fVFlQRV9UQ1AsDQo+ID4gKwkJCSAgICAgICBSVEVfRkxPV19JVEVN X1RZUEVfR1JFKSwNCj4gPiAgCQkuYWN0aW9ucyA9IHZhbGlkX2FjdGlvbnMsDQo+ID4gIAkJLm1h c2sgPSAmKGNvbnN0IHN0cnVjdCBydGVfZmxvd19pdGVtX2lwdjQpew0KPiA+ICAJCQkuaGRyID0g ew0KPiA+IEBAIC0zMzMsNyArMzQ1LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtbHg1X2Zsb3df aXRlbXMgbWx4NV9mbG93X2l0ZW1zW10gPSB7DQo+ID4gIAl9LA0KPiA+ICAJW1JURV9GTE9XX0lU RU1fVFlQRV9JUFY2XSA9IHsNCj4gPiAgCQkuaXRlbXMgPSBJVEVNUyhSVEVfRkxPV19JVEVNX1RZ UEVfVURQLA0KPiA+IC0JCQkgICAgICAgUlRFX0ZMT1dfSVRFTV9UWVBFX1RDUCksDQo+ID4gKwkJ CSAgICAgICBSVEVfRkxPV19JVEVNX1RZUEVfVENQLA0KPiA+ICsJCQkgICAgICAgUlRFX0ZMT1df SVRFTV9UWVBFX0dSRSksDQo+ID4gIAkJLmFjdGlvbnMgPSB2YWxpZF9hY3Rpb25zLA0KPiA+ICAJ CS5tYXNrID0gJihjb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfaXRlbV9pcHY2KXsNCj4gPiAgCQkJLmhk ciA9IHsNCj4gPiBAQCAtMzg2LDYgKzM5OSwxOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG1seDVf Zmxvd19pdGVtcyBtbHg1X2Zsb3dfaXRlbXNbXSA9IHsNCj4gPiAgCQkuY29udmVydCA9IG1seDVf Zmxvd19jcmVhdGVfdGNwLA0KPiA+ICAJCS5kc3Rfc3ogPSBzaXplb2Yoc3RydWN0IGlidl9mbG93 X3NwZWNfdGNwX3VkcCksDQo+ID4gIAl9LA0KPiA+ICsJW1JURV9GTE9XX0lURU1fVFlQRV9HUkVd ID0gew0KPiA+ICsJCS5pdGVtcyA9IElURU1TKFJURV9GTE9XX0lURU1fVFlQRV9FVEgsDQo+ID4g KwkJCSAgICAgICBSVEVfRkxPV19JVEVNX1RZUEVfSVBWNCwNCj4gPiArCQkJICAgICAgIFJURV9G TE9XX0lURU1fVFlQRV9JUFY2KSwNCj4gPiArCQkuYWN0aW9ucyA9IHZhbGlkX2FjdGlvbnMsDQo+ ID4gKwkJLm1hc2sgPSAmKGNvbnN0IHN0cnVjdCBydGVfZmxvd19pdGVtX2dyZSl7DQo+ID4gKwkJ CS5wcm90b2NvbCA9IC0xLA0KPiA+ICsJCX0sDQo+ID4gKwkJLmRlZmF1bHRfbWFzayA9ICZydGVf Zmxvd19pdGVtX2dyZV9tYXNrLA0KPiA+ICsJCS5tYXNrX3N6ID0gc2l6ZW9mKHN0cnVjdCBydGVf Zmxvd19pdGVtX2dyZSksDQo+ID4gKwkJLmNvbnZlcnQgPSBtbHg1X2Zsb3dfY3JlYXRlX2dyZSwN Cj4gPiArCQkuZHN0X3N6ID0gc2l6ZW9mKHN0cnVjdCBpYnZfZmxvd19zcGVjX3R1bm5lbCksDQo+ ID4gKwl9LA0KPiA+ICAJW1JURV9GTE9XX0lURU1fVFlQRV9WWExBTl0gPSB7DQo+ID4gIAkJLml0 ZW1zID0gSVRFTVMoUlRFX0ZMT1dfSVRFTV9UWVBFX0VUSCksDQo+ID4gIAkJLmFjdGlvbnMgPSB2 YWxpZF9hY3Rpb25zLA0KPiA+IEBAIC00MDEsNyArNDI3LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVj dCBtbHg1X2Zsb3dfaXRlbXMNCj4gPiBtbHg1X2Zsb3dfaXRlbXNbXSA9IHsNCj4gPg0KPiA+ICAv KiogU3RydWN0dXJlIHRvIHBhc3MgdG8gdGhlIGNvbnZlcnNpb24gZnVuY3Rpb24uICovICBzdHJ1 Y3QNCj4gPiBtbHg1X2Zsb3dfcGFyc2Ugew0KPiA+IC0JdWludDMyX3QgaW5uZXI7IC8qKjwgU2V0 IG9uY2UgVlhMQU4gaXMgZW5jb3VudGVyZWQuICovDQo+ID4gKwl1aW50MzJfdCBpbm5lcjsgLyoq PCBWZXJicyB2YWx1ZSwgc2V0IG9uY2UgdHVubmVsIGlzIGVuY291bnRlcmVkLiAqLw0KPiA+ICAJ dWludDMyX3QgY3JlYXRlOjE7DQo+ID4gIAkvKio8IFdoZXRoZXIgcmVzb3VyY2VzIHNob3VsZCBy ZW1haW4gYWZ0ZXIgYSB2YWxpZGF0ZS4gKi8NCj4gPiAgCXVpbnQzMl90IGRyb3A6MTsgLyoqPCBU YXJnZXQgaXMgYSBkcm9wIHF1ZXVlLiAqLyBAQCAtODI5LDEzICs4NTUsMTMNCj4gPiBAQCBtbHg1 X2Zsb3dfY29udmVydF9pdGVtc192YWxpZGF0ZShjb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfaXRlbSBp dGVtc1tdLA0KPiA+ICAJCQkJCSAgICAgIGN1cl9pdGVtLT5tYXNrX3N6KTsNCj4gPiAgCQlpZiAo cmV0KQ0KPiA+ICAJCQlnb3RvIGV4aXRfaXRlbV9ub3Rfc3VwcG9ydGVkOw0KPiA+IC0JCWlmIChp dGVtcy0+dHlwZSA9PSBSVEVfRkxPV19JVEVNX1RZUEVfVlhMQU4pIHsNCj4gPiArCQlpZiAoSVNf VFVOTkVMKGl0ZW1zLT50eXBlKSkgew0KPiA+ICAJCQlpZiAocGFyc2VyLT5pbm5lcikgew0KPiA+ ICAJCQkJcnRlX2Zsb3dfZXJyb3Jfc2V0KGVycm9yLCBFTk9UU1VQLA0KPiA+ICAJCQkJCQkgICBS VEVfRkxPV19FUlJPUl9UWVBFX0lURU0sDQo+ID4gIAkJCQkJCSAgIGl0ZW1zLA0KPiA+IC0JCQkJ CQkgICAiY2Fubm90IHJlY29nbml6ZSBtdWx0aXBsZSINCj4gPiAtCQkJCQkJICAgIiBWWExBTiBl bmNhcHN1bGF0aW9ucyIpOw0KPiA+ICsJCQkJCQkgICAiQ2Fubm90IHJlY29nbml6ZSBtdWx0aXBs ZSINCj4gPiArCQkJCQkJICAgIiB0dW5uZWwgZW5jYXBzdWxhdGlvbnMuIik7DQo+ID4gIAkJCQly ZXR1cm4gLXJ0ZV9lcnJubzsNCj4gPiAgCQkJfQ0KPiA+ICAJCQlwYXJzZXItPmlubmVyID0gSUJW X0ZMT1dfU1BFQ19JTk5FUjsgQEAgLTE2NDEsNiArMTY2Nyw2NyBAQA0KPiA+IG1seDVfZmxvd19j cmVhdGVfdnhsYW4oY29uc3Qgc3RydWN0IHJ0ZV9mbG93X2l0ZW0gKml0ZW0sICB9DQo+ID4NCj4g PiAgLyoqDQo+ID4gKyAqIENvbnZlcnQgR1JFIGl0ZW0gdG8gVmVyYnMgc3BlY2lmaWNhdGlvbi4N Cj4gPiArICoNCj4gPiArICogQHBhcmFtIGl0ZW1baW5dDQo+ID4gKyAqICAgSXRlbSBzcGVjaWZp Y2F0aW9uLg0KPiA+ICsgKiBAcGFyYW0gZGVmYXVsdF9tYXNrW2luXQ0KPiA+ICsgKiAgIERlZmF1 bHQgYml0LW1hc2tzIHRvIHVzZSB3aGVuIGl0ZW0tPm1hc2sgaXMgbm90IHByb3ZpZGVkLg0KPiA+ ICsgKiBAcGFyYW0gZGF0YVtpbiwgb3V0XQ0KPiA+ICsgKiAgIFVzZXIgc3RydWN0dXJlLg0KPiA+ ICsgKg0KPiA+ICsgKiBAcmV0dXJuDQo+ID4gKyAqICAgMCBvbiBzdWNjZXNzLCBhIG5lZ2F0aXZl IGVycm5vIHZhbHVlIG90aGVyd2lzZSBhbmQgcnRlX2Vycm5vIGlzIHNldC4NCj4gPiArICovDQo+ ID4gK3N0YXRpYyBpbnQNCj4gPiArbWx4NV9mbG93X2NyZWF0ZV9ncmUoY29uc3Qgc3RydWN0IHJ0 ZV9mbG93X2l0ZW0gKml0ZW0gX19ydGVfdW51c2VkLA0KPiA+ICsJCSAgICAgY29uc3Qgdm9pZCAq ZGVmYXVsdF9tYXNrIF9fcnRlX3VudXNlZCwNCj4gPiArCQkgICAgIHN0cnVjdCBtbHg1X2Zsb3df ZGF0YSAqZGF0YSkNCj4gPiArew0KPiA+ICsJc3RydWN0IG1seDVfZmxvd19wYXJzZSAqcGFyc2Vy ID0gZGF0YS0+cGFyc2VyOw0KPiA+ICsJdW5zaWduZWQgaW50IHNpemUgPSBzaXplb2Yoc3RydWN0 IGlidl9mbG93X3NwZWNfdHVubmVsKTsNCj4gPiArCXN0cnVjdCBpYnZfZmxvd19zcGVjX3R1bm5l bCB0dW5uZWwgPSB7DQo+ID4gKwkJLnR5cGUgPSBwYXJzZXItPmlubmVyIHwgSUJWX0ZMT1dfU1BF Q19WWExBTl9UVU5ORUwsDQo+ID4gKwkJLnNpemUgPSBzaXplLA0KPiA+ICsJfTsNCj4gPiArCXN0 cnVjdCBpYnZfZmxvd19zcGVjX2lwdjRfZXh0ICppcHY0Ow0KPiA+ICsJc3RydWN0IGlidl9mbG93 X3NwZWNfaXB2NiAqaXB2NjsNCj4gPiArCXVuc2lnbmVkIGludCBpOw0KPiA+ICsNCj4gPiArCXBh cnNlci0+aW5uZXIgPSBJQlZfRkxPV19TUEVDX0lOTkVSOw0KPiA+ICsJLyogVXBkYXRlIGVuY2Fw c3VsYXRpb24gSVAgbGF5ZXIgcHJvdG9jb2wuICovDQo+ID4gKwlmb3IgKGkgPSAwOyBpICE9IGhh c2hfcnhxX2luaXRfbjsgKytpKSB7DQo+ID4gKwkJaWYgKCFwYXJzZXItPnF1ZXVlW2ldLmlidl9h dHRyKQ0KPiA+ICsJCQljb250aW51ZTsNCj4gPiArCQlpZiAocGFyc2VyLT5vdXRfbGF5ZXIgPT0g SEFTSF9SWFFfSVBWNCkgew0KPiA+ICsJCQlpcHY0ID0gKHZvaWQgKikoKHVpbnRwdHJfdClwYXJz ZXItPnF1ZXVlW2ldLmlidl9hdHRyICsNCj4gPiArCQkJCXBhcnNlci0+cXVldWVbaV0ub2Zmc2V0 IC0NCj4gPiArCQkJCXNpemVvZihzdHJ1Y3QgaWJ2X2Zsb3dfc3BlY19pcHY0X2V4dCkpOw0KPiA+ ICsJCQlpZiAoaXB2NC0+bWFzay5wcm90byAmJiBpcHY0LT52YWwucHJvdG8gIT0gTUxYNV9HUkUp DQo+ID4gKwkJCQlicmVhazsNCj4gPiArCQkJaXB2NC0+dmFsLnByb3RvID0gTUxYNV9HUkU7DQo+ ID4gKwkJCWlwdjQtPm1hc2sucHJvdG8gPSAweGZmOw0KPiA+ICsJCX0gZWxzZSBpZiAocGFyc2Vy LT5vdXRfbGF5ZXIgPT0gSEFTSF9SWFFfSVBWNikgew0KPiA+ICsJCQlpcHY2ID0gKHZvaWQgKiko KHVpbnRwdHJfdClwYXJzZXItPnF1ZXVlW2ldLmlidl9hdHRyICsNCj4gPiArCQkJCXBhcnNlci0+ cXVldWVbaV0ub2Zmc2V0IC0NCj4gPiArCQkJCXNpemVvZihzdHJ1Y3QgaWJ2X2Zsb3dfc3BlY19p cHY2KSk7DQo+ID4gKwkJCWlmIChpcHY2LT5tYXNrLm5leHRfaGRyICYmDQo+ID4gKwkJCSAgICBp cHY2LT52YWwubmV4dF9oZHIgIT0gTUxYNV9HUkUpDQo+ID4gKwkJCQlicmVhazsNCj4gPiArCQkJ aXB2Ni0+dmFsLm5leHRfaGRyID0gTUxYNV9HUkU7DQo+ID4gKwkJCWlwdjYtPm1hc2submV4dF9o ZHIgPSAweGZmOw0KPiA+ICsJCX0NCj4gPiArCX0NCj4gPiArCWlmIChpICE9IGhhc2hfcnhxX2lu aXRfbikNCj4gPiArCQlyZXR1cm4gcnRlX2Zsb3dfZXJyb3Jfc2V0KGRhdGEtPmVycm9yLCBFSU5W QUwsDQo+ID4gKwkJCQkJICBSVEVfRkxPV19FUlJPUl9UWVBFX0lURU0sDQo+ID4gKwkJCQkJICBp dGVtLA0KPiA+ICsJCQkJCSAgIklQIHByb3RvY29sIG9mIEdSRSBtdXN0IGJlIDQ3Iik7DQo+ID4g KwltbHg1X2Zsb3dfY3JlYXRlX2NvcHkocGFyc2VyLCAmdHVubmVsLCBzaXplKTsNCj4gPiArCXJl dHVybiAwOw0KPiA+ICt9DQo+IA0KPiBUaGVyZSBpcyBzb21ldGhpbmcgc3RyYW5nZSwgaXRlbSBp cyBub3QgdW51c2VkIGFzIGl0IGlzIGF0IGxlYXN0IHVzZWQgaW4gdGhlIHJ0ZV9mbG93X2Vycm9y X3NldCgpLg0KDQpBIG5ldyBpc3N1ZSBpbnRyb2R1Y2VkIHdoZW4gYWRkaW5nIEdSRSBwcm90b2Nv bCBjaGVjay4NCklmIHlvdSBmaW5pc2hlZCB0aGlzIHBhdGNoc2V0IHJldmlldywgSSdsbCB1cGxv YWQgYSBuZXcgdmVyc2lvbiB0byByZW1vdmUgaXQuDQoNCj4gDQo+IEluIHRoZSBvdGhlciBzZXJp ZXMgeW91IGFyZSBwdXNoaW5nLCB0aGVyZSBpcyBubyBuZXcgUlRFX0ZMT1dfSVRFTV9HUkUgYW5k IGluIHRoZSBjdXJyZW50IGNvZGUgdGhlcmUNCj4gaXMgYWxzbyBubyBSVEVfRkxPV19JVEVNX0dS RS4NCj4gDQo+IEkgZG9uJ3Qgc2VlIGhvdyB0aGlzIGNvZGUgY2FuIG1hdGNoIHRoZSBtaXNzaW5n IGl0ZW0sIHdoYXQgYW0gSSBtaXNzaW5nPw0KDQpBcmUgeW91IGxvb2tpbmcgZm9yIFJURV9GTE9X X0lURU1fVFlQRV9HUkU/DQoNCj4gDQo+ID4gKy8qKg0KPiA+ICAgKiBDb252ZXJ0IG1hcmsvZmxh ZyBhY3Rpb24gdG8gVmVyYnMgc3BlY2lmaWNhdGlvbi4NCj4gPiAgICoNCj4gPiAgICogQHBhcmFt IHBhcnNlcg0KPiA+IC0tDQo+ID4gMi4xMy4zDQo+IA0KPiBUaGFua3MsDQo+IA0KPiAtLQ0KPiBO w6lsaW8gTGFyYW5qZWlybw0KPiA2V0lORA0K