From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from out0-138.mail.aliyun.com (out0-138.mail.aliyun.com [140.205.0.138]) by dpdk.org (Postfix) with ESMTP id 58EFA5B3C for ; Mon, 30 Jul 2018 21:01:39 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=alibaba-inc.com; s=default; t=1532977292; h=Date:From:To:Message-ID:Subject:MIME-Version:Content-Type; bh=UuUoEM+JwztvQjFLUSuSABj+Oc0LSO4USqsxEoHmMWk=; b=jX5uMhRQG0gIllTkl0hubKVJ6kT1sNAAkCfZ8rbx/hEHtBeRVq4hKgzrxFZKwfEP8MgWMU8EeJ//cYCDfbVwIAxDHQ1aGDVnNbeWusjHddQFNYQDLkkdaSYssakVBprmXL1btu9e1iNLfxGEQ8Wr91I95DjXniGNjgBji8zje/E= X-Alimail-AntiSpam: AC=PASS; BC=-1|-1; BR=01201311R131e4; CH=green; FP=0|-1|-1|-1|0|-1|-1|-1; HT=e02c03273; MF=h.liu@alibaba-inc.com; NM=1; PH=DW; RN=1; SR=0; TI=alimail_yun_mac.COREAPI8fa747da000240c8ba91ad03aeff0e23; Received: from WS-web (h.liu@alibaba-inc.com[alimail_yun_mac.COREAPI8fa747da000240c8ba91ad03aeff0e23]) by e01l07397.eu6 at Tue, 31 Jul 2018 03:01:31 +0800 Date: Tue, 31 Jul 2018 03:01:31 +0800 From: "=?UTF-8?B?5YiY6L6J?=" To: "dev@dpdk.org" Message-ID: X-Priority: 3 X-Mailer: [Alimail-Mailagent revision 7] MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: [dpdk-dev] =?utf-8?q?_Questions_about_TX_descriptors_run_out_occa?= =?utf-8?q?sionally?= 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, 30 Jul 2018 19:01:41 -0000 SGkgRXhwZXJ0cywKCkknbSBkZXZlbG9waW5nIG15IG93biBkcGRrLWJhc2VkIGFwcGxpY2F0aW9u IHZpYSBJbnRlbCA4MjU5OUVTIHBvcnQuIE15IEFwcGxpY2F0aW9uIGlzIGRvaW5nIGEgam9iIHRv IHNlbmQgSUNNUCByZXF1ZXN0cyAocGFja2V0IHNpemUgdmFyaWVzIGZyb20gNjQgYnl0ZXMgdG8g MTQ3MiBieXRlcywgMjAwLDAwMCBwcHMsIDEuMUdicHMpIGFuZCByZWNlaXZlIHJlc3BvbnNlcywg d2l0aCBBUlAgcmVxdWVzdC9yZXNwb25zZSBhbmQgSUNNUCByZXNwb25zZSBoYW5kbGluZyB3aGVu IG5lY2Vzc2FyeS4gSXQgd2FzIHdvcmtpbmcgcHJldHR5IGZpbmUgaW4gNSBob3VycyB0byAxMCBk YXlzICByYW5kb21seSBhbmQgdGhlbiBUWCBkZXNjcmlwdG9ycyBydW4gb3V0IGFuZCBjYW5ub3Qg YmUgZnJlZWQgYnkgaXhnYmVfdHhfZnJlZV9idWZzKCkgZHVlIHRvIEREIGJpdCBpcyBub3Qgc2V0 OgoKICAgICAgICAvKiBjaGVjayBERCBiaXQgb24gdGhyZXNob2xkIGRlc2NyaXB0b3IgKi8KICAg ICAgICBzdGF0dXMgPSB0eHEtPnR4X3JpbmdbdHhxLT50eF9uZXh0X2RkXS53Yi5zdGF0dXM7CiAg ICAgICAgaWYgKCEoc3RhdHVzICYgSVhHQkVfQURWVFhEX1NUQVRfREQpKQogICAgICAgICAgICAg ICAgcmV0dXJuIDA7CgpNeSB0eCBxdWV1ZSBzZXR1cCBpczoKICAgICAgICB0eF9jb25mLT50eF90 aHJlc2gucHRocmVzaCA9IDY0OwogICAgICAgIHR4X2NvbmYtPnR4X3RocmVzaC5odGhyZXNoID0g MDsKICAgICAgICB0eF9jb25mLT50eF90aHJlc2gud3RocmVzaCA9IDA7CiAgICAgICAgdHhfY29u Zi0+dHhfZnJlZV90aHJlc2ggPSAyNTY7CiAgICAgICAgdHhfY29uZi0+dHhfcnNfdGhyZXNoID0g MzI7CiAgICAgICAgdHhfY29uZi0+dHhxX2ZsYWdzID0gRVRIX1RYUV9GTEFHU19OT01VTFRTRUdT IHwgRVRIX1RYUV9GTEFHU19OT09GRkxPQURTOwoKCkkgdHJpZWQgdG8gcmVhZCBjb2RlIHRvIHNl ZSBpZiB0aGVyZSBpcyBhbnkgY2FzZSB0byB0YWtlIHRoZXNlIGRlc2NyaXB0b3JzIGFuZCBuZXZl ciBzZXQgSVhHQkVfQURWVFhEX1NUQVRfREQgYmFjayBidXQgbm8gbHVjayB5ZXQuIEFuZCBJIGhh dmUgbm90IGV2ZW4gZm91bmQgdGhlIHJlbGF0ZWQgY29kZSB3aGVuIElYR0JFX0FEVlRYRF9TVEFU X0REIGlzIHNldC91bnNldCB3aGVuIGRlc2NyaXB0b3IgaXMgdGFrZW4vcmVsZWFzZWQgb3RoZXIg dGhhbiByZXNldCBxdWV1ZXMuLi4gU28gbWF5IEkgYXNrOgoxLiB3aGVyZSBkbyB3ZSBzZXQvdW5z ZXQgSVhHQkVfQURWVFhEX1NUQVRfREQgd2hlbiBkZXNjcmlwdG9yIGlzIHRha2VuL3JlbGVhc2Vk PwoyLiBhbnkgc3VnZ2VzdGlvbiBvciBpbmZvcm1hdGlvbiBJIHNob3VsZCBmb2N1cyBvbiB0byBk ZWJ1ZyB0aGlzIGlzc3VlPyBJcyB0aGlzIHR5cGljYWxseSBiZWNhdXNlIG9mIG15IHVwcGVyIGFw cGxpY2F0aW9uIG5vdCBhbGxvYy9mcmVlIGNvcnJlY3RseSBvciBhbnkgb3RoZXIgcHJvYmxlbT8K My4gYW5vdGhlciBmcmllbmQgaW4gZHBkay11c2VyIGxpc3QgcmFpc2VkIHNhbWUgaXNzdWUgaW4g Zm0xMGsgZHJpdmVyLCBidXQgbGF0ZXIgaGUgbWVudGlvbmVkIGhpcyBwcm9ibGVtIHdhcyBiZWNh dXNlIG9mIG92ZXJoZWF0aW5nIG9mIE5JQyAodGVtcGVyYXR1cmUgd2FzIGNsb3NlIHRvIDg1IGRl Z3JlZSBDZWxzaXVzKS4gQWZ0ZXIgc2V0dGluZyBzeXN0ZW0gRkFOIHRvIGZ1bGwgc3BlZWQsIGhl IG1hZGUgaXQgd29yayBwZXJmZWN0bHkuIFNpbmNlIGluIG15IHN5c3RlbSBJIGRvbid0IGhhdmUg ZmFuL3RlbXAgc2Vuc29ycyBzbyBJIGNvdWxkIG5vdCBjaGVjayB0aGlzLiBNaWdodCB0aGlzIHBy b2JsZW0gYmUgY2F1c2VkIGJ5IGhpZ2ggdGVtcGVyYXR1cmUgaW4gY2FzZT8KClJlZ2FyZHMsCkh1 aSAKCmZyb20gQWxpbWFpbCBtYWNPUw== >From yipeng1.wang@intel.com Tue Jul 31 01:24:27 2018 Return-Path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by dpdk.org (Postfix) with ESMTP id 79E265B34 for ; Tue, 31 Jul 2018 01:24:26 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga106.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 30 Jul 2018 16:24:24 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.51,425,1526367600"; d="scan'208";a="60753239" Received: from orsmsx102.amr.corp.intel.com ([10.22.225.129]) by orsmga007.jf.intel.com with ESMTP; 30 Jul 2018 16:24:24 -0700 Received: from orsmsx105.amr.corp.intel.com ([169.254.2.59]) by ORSMSX102.amr.corp.intel.com ([169.254.3.209]) with mapi id 14.03.0319.002; Mon, 30 Jul 2018 16:24:23 -0700 From: "Wang, Yipeng1" To: "Wiles, Keith" , Qiaobin Fu CC: "Richardson, Bruce" , "De Lara Guarch, Pablo" , "dev@dpdk.org" , "michel@digirati.com.br" , "doucette@bu.edu" , "Gobriel, Sameh" , "Tai, Charlie" Thread-Topic: [dpdk-dev] [PATCH] hash table: add a bucket iterator function Thread-Index: AQHUJpuIvVZn3TGPwk+UdIhd8WkN66SmpQeAgAHFNVA= Date: Mon, 30 Jul 2018 23:24:23 +0000 Message-ID: References: <20180728174851.46422-1-qiaobinf@bu.edu> <5CCC4983-8B4F-480B-B6E1-3A01806BC416@intel.com> In-Reply-To: <5CCC4983-8B4F-480B-B6E1-3A01806BC416@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.0.400.15 dlp-reaction: no-action x-ctpclassification: CTP_NT x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiZDE0ODRjOWMtY2Q1OC00NmM0LWJkYTMtMTllNTBkY2I4OTAyIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiMkdzdG91bFpqbm5PMnREd01zXC93ekZFbUN1UFdSVjRxQ3lNeUxHUkFjSUFHRFNsbzU5NnBsbHNMdHhoTVVubDUifQ== x-originating-ip: [10.22.254.140] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH] hash table: add a bucket iterator function 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, 30 Jul 2018 23:24:27 -0000 SGksIFFpYW9iaW4sIA0KDQpUaGFua3MgZm9yIHRoZSBwYXRjaC4gSWYgSSB1bmRlcnN0YW5kIGNv cnJlY3RseSB5b3VyIHVzZSBjYXNlIGlzIHRvIHVzZSBoYXNoIHRhYmxlIGFzIGEgImNhY2hlIiB0 aGF0IG5ldyBlbnRyaWVzIHNob3VsZCBldmljdCBzdGFsZSBvbmVzIGF1dG9tYXRpY2FsbHkuIENv dWxkIHlvdSBiZSBtb3JlIHNwZWNpZmljIG9uIHlvdXIgdXNlIHNjZW5hcmlvcyBzbyB0aGF0IEkg Y2FuIGhhdmUgbW9yZSBjb250ZXh0PyANCg0KV2UgYXJlIGFjdHVhbGx5IHdvcmtpbmcgb24gYW4g ZXh0ZW5kYWJsZSB2ZXJzaW9uIG9mIHJ0ZV9oYXNoIHdoaWNoIHdpbGwgbGluayBleHRyYSBidWNr ZXRzIHRvIGN1cnJlbnQgdGFibGUgaWYgdGhlIHRhYmxlIGlzIGZ1bGwuIEFzIGxvbmcgYXMgdGhl IHRhYmxlIGlzIHNpemVkIGFwcHJvcHJpYXRlbHksIHRoZXJlIHdpbGwgYmUgbm8gY29uZmxpY3Qg aXNzdWVzIHRodXMgeW91IGRvbuKAmXQgbmVlZCB0byByZXBsYWNlIG9sZCBlbnRyaWVzLiBXaWxs IHRoaXMgc29sdmUgeW91ciBpc3N1ZT8gQWxzbywgaWYgdGhlIOKAnGNhY2hl4oCdIG1vZGUgaXMg d2hhdCB5b3Ugd2FudCwgd2UgaGF2ZSB0aGUgbWVtYmVyc2hpcCBsaWJyYXJ5IOKAnHJ0ZV9tZW1i ZXLigJ0uIElzIGl0IGFwcGxpY2FibGUgdG8geW91ciBjYXNlPyANCg0Kdy5yLnQuIHRoZSBwYXRj aCBzZXQgeW91IHByb3Bvc2VkLCBteSBjb25jZXJuIGlzIHRoYXQgdGhlIG5ldyBBUEkgd2lsbCBl eHBvc2UgdG9vIG11Y2ggaW50ZXJuYWxzIHRvIHRoZSB1c2VyLCBlLmcuIHRoZSBidWNrZXQvZW50 cmllcyBzdHJ1Y3R1cmUgc2hvdWxkIGJlIGltcGxlbWVudGF0aW9uIGRlcGVuZGVudC4gRXhwb3Np bmcgaW50ZXJuYWwgc3RydWN0dXJlcyB3b3VsZCBwcmV2ZW50IGltcHJvdmluZyB0aGUgaW1wbGVt ZW50YXRpb24gZG93biB0aGUgcm9hZCB1bmxlc3Mgd2Uga2VlcCBjaGFuZ2luZyBBUEkgd2hpY2gg aXMgbm90IHJlY29tbWVuZGVkLiAgDQoNCg0KPi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ RnJvbTogZGV2IFttYWlsdG86ZGV2LWJvdW5jZXNAZHBkay5vcmddIE9uIEJlaGFsZiBPZiBXaWxl cywgS2VpdGgNCj5TZW50OiBTdW5kYXksIEp1bHkgMjksIDIwMTggNjoxNyBBTQ0KPlRvOiBRaWFv YmluIEZ1IDxxaWFvYmluZkBidS5lZHU+DQo+Q2M6IFJpY2hhcmRzb24sIEJydWNlIDxicnVjZS5y aWNoYXJkc29uQGludGVsLmNvbT47IERlIExhcmEgR3VhcmNoLCBQYWJsbyA8cGFibG8uZGUubGFy YS5ndWFyY2hAaW50ZWwuY29tPjsgZGV2QGRwZGsub3JnOw0KPm1pY2hlbEBkaWdpcmF0aS5jb20u YnI7IGRvdWNldHRlQGJ1LmVkdQ0KPlN1YmplY3Q6IFJlOiBbZHBkay1kZXZdIFtQQVRDSF0gaGFz aCB0YWJsZTogYWRkIGEgYnVja2V0IGl0ZXJhdG9yIGZ1bmN0aW9uDQo+DQo+DQo+DQo+PiBPbiBK dWwgMjgsIDIwMTgsIGF0IDEyOjQ4IFBNLCBRaWFvYmluIEZ1IDxxaWFvYmluZkBidS5lZHU+IHdy b3RlOg0KPj4NCj4+IEZ1bmN0aW9uIHJ0ZV9oYXNoX2J1Y2tldF9pdGVyYXRlKCkgZW5hYmxlcyBj YWxsZXJzIHRvDQo+PiBpbmNyZW1lbnRhbGx5IGl0ZXJhdGUgb3ZlciB0aGUgaGFzaCB0YWJsZSBi dWNrZXQgYnkgYnVja2V0LA0KPj4gc28gdGhhdCBpdCBjYW4gYXZvaWQgY3JlYXRpbmcgaGljY3Vw cyBhbmQgdGhyYXNoaW5nIHRoZSBjYWNoZQ0KPj4gb2YgdGhlIHByb2Nlc3Nvci4NCj4+DQo+PiBU aGlzIHBhdGNoIG1haW5seSBkZWFscyB3aXRoIGNhc2VzIGluIHdoaWNoDQo+PiB0aGUgaGFzaCB0 YWJsZSBpcyBmdWxsIGFuZCBvbmUgbmVlZHMgdG8gZGVjaWRlIGlmIHRoZSBpbmNvbWluZw0KPj4g ZW50cnkgaXMgbW9yZSB2YWx1YWJsZSB0aGFuIHRoZSBlbnRyaWVzIGFscmVhZHkgaW4gdGhlIGhh c2ggdGFibGUuDQo+Pg0KPj4gU2lnbmVkLW9mZi1ieTogUWlhb2JpbiBGdSA8cWlhb2JpbmZAYnUu ZWR1Pg0KPj4gUmV2aWV3ZWQtYnk6IENvZHkgRG91Y2V0dGUgPGRvdWNldHRlQGJ1LmVkdT4NCj4+ IFJldmlld2VkLWJ5OiBNaWNoZWwgTWFjaGFkbyA8bWljaGVsQGRpZ2lyYXRpLmNvbS5icj4NCj4+ IC0tLQ0KPj4gbGliL2xpYnJ0ZV9oYXNoL3J0ZV9jdWNrb29faGFzaC5jICAgIHwgNjAgKysrKysr KysrKysrKysrKysrKysrKysrKw0KPj4gbGliL2xpYnJ0ZV9oYXNoL3J0ZV9oYXNoLmggICAgICAg ICAgIHwgNjYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPj4gbGliL2xpYnJ0ZV9oYXNo L3J0ZV9oYXNoX3ZlcnNpb24ubWFwIHwgIDQgKysNCj4+IDMgZmlsZXMgY2hhbmdlZCwgMTMwIGlu c2VydGlvbnMoKykNCj4+DQo+PiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9oYXNoL3J0ZV9jdWNr b29faGFzaC5jIGIvbGliL2xpYnJ0ZV9oYXNoL3J0ZV9jdWNrb29faGFzaC5jDQo+PiBpbmRleCBh MDc1NDNhMjkuLjJiOTBmMzU5MyAxMDA2NDQNCj4+IC0tLSBhL2xpYi9saWJydGVfaGFzaC9ydGVf Y3Vja29vX2hhc2guYw0KPj4gKysrIGIvbGliL2xpYnJ0ZV9oYXNoL3J0ZV9jdWNrb29faGFzaC5j DQo+PiBAQCAtMTE2MCwzICsxMTYwLDYzIEBAIHJ0ZV9oYXNoX2l0ZXJhdGUoY29uc3Qgc3RydWN0 IHJ0ZV9oYXNoICpoLCBjb25zdCB2b2lkICoqa2V5LCB2b2lkICoqZGF0YSwgdWludDMyDQo+Pg0K Pj4gCXJldHVybiBwb3NpdGlvbiAtIDE7DQo+PiB9DQo+PiArDQo+PiAraW50DQo+PiArcnRlX2hh c2hfZ2V0X251bV9idWNrZXRzKHN0cnVjdCBydGVfaGFzaCAqaCkNCj4+ICt7DQo+PiArCVJFVFVS Tl9JRl9UUlVFKChoID09IE5VTEwpLCAtRUlOVkFMKTsNCj4+ICsJcmV0dXJuIGgtPm51bV9idWNr ZXRzOw0KPj4gK30NCj4+ICsNCj4+ICt1aW50MzJfdA0KPj4gK3J0ZV9oYXNoX2dldF9wcmltYXJ5 X2J1Y2tldChjb25zdCBzdHJ1Y3QgcnRlX2hhc2ggKmgsIGhhc2hfc2lnX3Qgc2lnKQ0KPj4gK3sN Cj4+ICsJcmV0dXJuIHNpZyAmIGgtPmJ1Y2tldF9iaXRtYXNrOw0KPj4gK30NCj4+ICsNCj4+ICt1 aW50MzJfdA0KPj4gK3J0ZV9oYXNoX2dldF9zZWNvbmRhcnlfYnVja2V0KGNvbnN0IHN0cnVjdCBy dGVfaGFzaCAqaCwgaGFzaF9zaWdfdCBzaWcpDQo+PiArew0KPj4gKwlyZXR1cm4gcnRlX2hhc2hf c2Vjb25kYXJ5X2hhc2goc2lnKSAmIGgtPmJ1Y2tldF9iaXRtYXNrOw0KPj4gK30NCj4NCj5UaGUg YWJvdmUgdHdvIGZ1bmN0aW9ucyBzaG91bGQgaGF2ZSB0aGUgUkVUVVJOX0lGX1RSVUUoKGggPT0g TlVMTCksIC1FSU5WQUwpOyBzdGF0ZW1lbnRzIGp1c3QgbGlrZSB0aGUgZmlyc3Qgb25lLg0KPg0K Pj4gKw0KPj4gK2ludDMyX3QNCj4+ICtydGVfaGFzaF9idWNrZXRfaXRlcmF0ZShjb25zdCBzdHJ1 Y3QgcnRlX2hhc2ggKmgsDQo+PiArCWNvbnN0IHZvaWQgKiprZXksIHZvaWQgKipkYXRhLCB1aW50 MzJfdCAqYmlkeCwgdWludDMyX3QgKm5leHQpDQo+PiArew0KPj4gKwl1aW50MzJfdCBwb3NpdGlv bjsNCj4+ICsJc3RydWN0IHJ0ZV9oYXNoX2tleSAqbmV4dF9rZXk7DQo+PiArDQo+PiArCVJFVFVS Tl9JRl9UUlVFKCgoaCA9PSBOVUxMKSB8fCAoa2V5ID09IE5VTEwpIHx8IChkYXRhID09IE5VTEwp IHx8DQo+PiArCQkoYmlkeCA9PSBOVUxMKSB8fCAobmV4dCA9PSBOVUxMKSksIC1FSU5WQUwpOw0K Pj4gKw0KPj4gKwkvKiBPdXQgb2YgYm91bmRzLiAqLw0KPj4gKwlpZiAoKmJpZHggPj0gaC0+bnVt X2J1Y2tldHMgfHwgKm5leHQgPj0gUlRFX0hBU0hfQlVDS0VUX0VOVFJJRVMpDQo+PiArCQlnb3Rv IG5leHRfYnVja2V0Ow0KPj4gKw0KPj4gKwkvKiBJZiBjdXJyZW50IHBvc2l0aW9uIGlzIGVtcHR5 LCBnbyB0byB0aGUgbmV4dCBvbmUuICovDQo+PiArCXdoaWxlIChoLT5idWNrZXRzWypiaWR4XS5r ZXlfaWR4WypuZXh0XSA9PSBFTVBUWV9TTE9UKSB7DQo+PiArCQkoKm5leHQpKys7DQo+PiArCQkv KiBFbmQgb2YgYnVja2V0LiAqLw0KPj4gKwkJaWYgKCpuZXh0ID49IFJURV9IQVNIX0JVQ0tFVF9F TlRSSUVTKQ0KPj4gKwkJCWdvdG8gbmV4dF9idWNrZXQ7DQo+PiArCX0NCj4+ICsNCj4+ICsJLyog R2V0IHBvc2l0aW9uIG9mIGVudHJ5IGluIGtleSB0YWJsZS4gKi8NCj4+ICsJcG9zaXRpb24gPSBo LT5idWNrZXRzWypiaWR4XS5rZXlfaWR4WypuZXh0XTsNCj4+ICsJbmV4dF9rZXkgPSAoc3RydWN0 IHJ0ZV9oYXNoX2tleSAqKSAoKGNoYXIgKiloLT5rZXlfc3RvcmUgKw0KPj4gKwkJCQlwb3NpdGlv biAqIGgtPmtleV9lbnRyeV9zaXplKTsNCj4+ICsJLyogUmV0dXJuIGtleSBhbmQgZGF0YS4gKi8N Cj4+ICsJKmtleSA9IG5leHRfa2V5LT5rZXk7DQo+PiArCSpkYXRhID0gbmV4dF9rZXktPnBkYXRh Ow0KPj4gKw0KPj4gKwkvKiBJbmNyZW1lbnQgaXRlcmF0b3IuICovDQo+PiArCSgqbmV4dCkrKzsN Cj4+ICsNCj4+ICsJcmV0dXJuIHBvc2l0aW9uIC0gMTsNCj4+ICsNCj4+ICtuZXh0X2J1Y2tldDoN Cj4+ICsJKmJpZHggPSAoKmJpZHggKyAxKSA+PSBoLT5udW1fYnVja2V0cyA/IDAgOiAqYmlkeCAr IDE7DQo+PiArCSpuZXh0ID0gMDsNCj4NCj5JZiB0aGlzIGlzIGFuIGVycm9yIGNhc2Ugd2h5IGFy ZSB3ZSBzZXR0aW5nICpuZXh0IHRvIHplcm8gYW5kIGluY3JlbWVudGluZyAqYmlkeCA/DQo+SSB3 b3VsZCBleHBlY3Qgd2Ugc2hvdWxkIG5vdCBjaGFuZ2UgdGhlIHZhbHVlcyBvbiBhbiBlcnJvciBi ZWNhdXNlIHRoZXkgY2Fubm90IGRlYnVnIHRoZSB2YWx1ZXMgb24gcmV0dXJuLg0KPg0KPj4gKwly ZXR1cm4gLUVOT0VOVDsNCj4+ICt9DQo+PiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9oYXNoL3J0 ZV9oYXNoLmggYi9saWIvbGlicnRlX2hhc2gvcnRlX2hhc2guaA0KPj4gaW5kZXggZjcxY2E5ZmJm Li4zMjliZjQyZDYgMTAwNjQ0DQo+PiAtLS0gYS9saWIvbGlicnRlX2hhc2gvcnRlX2hhc2guaA0K Pj4gKysrIGIvbGliL2xpYnJ0ZV9oYXNoL3J0ZV9oYXNoLmgNCj4+IEBAIC05NCw2ICs5NCwxNyBA QCBydGVfaGFzaF9jcmVhdGUoY29uc3Qgc3RydWN0IHJ0ZV9oYXNoX3BhcmFtZXRlcnMgKnBhcmFt cyk7DQo+PiAgKi8NCj4+IHZvaWQgcnRlX2hhc2hfc2V0X2NtcF9mdW5jKHN0cnVjdCBydGVfaGFz aCAqaCwgcnRlX2hhc2hfY21wX2VxX3QgZnVuYyk7DQo+Pg0KPj4gKy8qKg0KPj4gKyAqIEdldCB0 aGUgbnVtYmVyIG9mIGJ1Y2tldHMgaW4gdGhlIGhhc2ggdGFibGUuDQo+PiArICogQHBhcmFtIGgN Cj4+ICsgKiAgIEhhc2ggdGFibGUgZm9yIHdoaWNoIHRoZSBmdW5jdGlvbiBxdWVyaWVzLg0KPj4g KyAqIEByZXR1cm4NCj4+ICsgKiAgIFRoZSBudW1iZXIgb2YgYnVja2V0cyBpbiB0aGUgaGFzaCB0 YWJsZSBoLg0KPj4gKyAqICAgIC0gRUlOVkFMIC0gaW52YWxpZCBwYXJhbWV0ZXIgcGFzc2VkIHRv IGZ1bmN0aW9uDQo+PiArICovDQo+PiAraW50DQo+DQo+TmVlZHMgdG8gY2hhbmdlIHRvIOKAmGlu dCBfX3J0ZV9leHBlcmltZW50YWzigJkNCj4NCj4+ICtydGVfaGFzaF9nZXRfbnVtX2J1Y2tldHMo c3RydWN0IHJ0ZV9oYXNoICpoKTsNCj4+ICsNCj4+IC8qKg0KPj4gICogRmluZCBhbiBleGlzdGlu ZyBoYXNoIHRhYmxlIG9iamVjdCBhbmQgcmV0dXJuIGEgcG9pbnRlciB0byBpdC4NCj4+ICAqDQo+ PiBAQCAtMjYxLDYgKzI3MiwzNCBAQCBpbnQNCj4+IHJ0ZV9oYXNoX2dldF9rZXlfd2l0aF9wb3Np dGlvbihjb25zdCBzdHJ1Y3QgcnRlX2hhc2ggKmgsIGNvbnN0IGludDMyX3QgcG9zaXRpb24sDQo+ PiAJCQkgICAgICAgdm9pZCAqKmtleSk7DQo+Pg0KPj4gKy8qKg0KPj4gKyAqIEdldCB0aGUgcHJp bWFyeSBidWNrZXQgaW5kZXggZ2l2ZW4gdGhlIHByZWNvbXB1dGVkIGhhc2ggdmFsdWUuDQo+PiAr ICogVGhpcyBvcGVyYXRpb24gaXMgbXVsdGktdGhyZWFkIHNhZmUuDQo+PiArICoNCj4+ICsgKiBA cGFyYW0gaA0KPj4gKyAqICAgSGFzaCB0YWJsZSB0byBnZXQgdGhlIGtleSBmcm9tLg0KPj4gKyAq IEBwYXJhbSBzaWcNCj4+ICsgKiAgIFByZWNvbXB1dGVkIGhhc2ggdmFsdWUuDQo+PiArICogQHJl dHVybg0KPj4gKyAqICAgVGhlIHByaW1hcnkgYnVja2V0IGluZGV4Lg0KPg0KPkNvbW1lbnQgdGhl IGVycm9yIGNhc2UgaGVyZS4NCj4+ICsgKi8NCj4+ICt1aW50MzJfdA0KPg0KPk5lZWRzIHRvIGNo YW5nZSB0byDigJh1aW50MzJfdCBfX3J0ZV9leHBlcmltZW50YWzigJkNCj4+ICtydGVfaGFzaF9n ZXRfcHJpbWFyeV9idWNrZXQoY29uc3Qgc3RydWN0IHJ0ZV9oYXNoICpoLCBoYXNoX3NpZ190IHNp Zyk7DQo+PiArDQo+PiArLyoqDQo+PiArICogR2V0IHRoZSBzZWNvbmRhcnkgYnVja2V0IGluZGV4 IGdpdmVuIHRoZSBwcmVjb21wdXRlZCBoYXNoIHZhbHVlLg0KPj4gKyAqIFRoaXMgb3BlcmF0aW9u IGlzIG11bHRpLXRocmVhZCBzYWZlLg0KPj4gKyAqDQo+PiArICogQHBhcmFtIGgNCj4+ICsgKiAg IEhhc2ggdGFibGUgdG8gZ2V0IHRoZSBrZXkgZnJvbS4NCj4+ICsgKiBAcGFyYW0gc2lnDQo+PiAr ICogICBQcmVjb21wdXRlZCBoYXNoIHZhbHVlLg0KPj4gKyAqIEByZXR1cm4NCj4+ICsgKiAgIFRo ZSBwcmltYXJ5IGJ1Y2tldCBpbmRleC4NCj4NCj5Db21tZW50IHRoZSBlcnJvciBjYXNlIGhlcmUu DQo+PiArICovDQo+PiArdWludDMyX3QNCj4NCj5OZWVkcyB0byBjaGFuZ2UgdG8g4oCYdWludDMy X3QgX19ydGVfZXhwZXJpbWVudGFs4oCZDQo+PiArcnRlX2hhc2hfZ2V0X3NlY29uZGFyeV9idWNr ZXQoY29uc3Qgc3RydWN0IHJ0ZV9oYXNoICpoLCBoYXNoX3NpZ190IHNpZyk7DQo+PiArDQo+PiAv KioNCj4+ICAqIEZpbmQgYSBrZXktdmFsdWUgcGFpciBpbiB0aGUgaGFzaCB0YWJsZS4NCj4+ICAq IFRoaXMgb3BlcmF0aW9uIGlzIG11bHRpLXRocmVhZCBzYWZlLg0KPj4gQEAgLTQxOSw2ICs0NTgs MzMgQEAgcnRlX2hhc2hfbG9va3VwX2J1bGsoY29uc3Qgc3RydWN0IHJ0ZV9oYXNoICpoLCBjb25z dCB2b2lkICoqa2V5cywNCj4+ICAqLw0KPj4gaW50MzJfdA0KPj4gcnRlX2hhc2hfaXRlcmF0ZShj b25zdCBzdHJ1Y3QgcnRlX2hhc2ggKmgsIGNvbnN0IHZvaWQgKiprZXksIHZvaWQgKipkYXRhLCB1 aW50MzJfdCAqbmV4dCk7DQo+PiArDQo+PiArLyoqDQo+PiArICogSXRlcmF0ZSB0aHJvdWdoIHRo ZSBidWNrZXRzIGluIGhhc2ggdGFibGUsIHJldHVybmluZyBrZXktdmFsdWUgcGFpcnMuDQo+PiAr ICoNCj4+ICsgKiBAcGFyYW0gaA0KPj4gKyAqICAgSGFzaCB0YWJsZSB0byBpdGVyYXRlDQo+PiAr ICogQHBhcmFtIGtleQ0KPj4gKyAqICAgT3V0cHV0IGNvbnRhaW5pbmcgdGhlIGtleSB3aGVyZSBj dXJyZW50IGl0ZXJhdG9yDQo+PiArICogICB3YXMgcG9pbnRpbmcgYXQNCj4+ICsgKiBAcGFyYW0g ZGF0YQ0KPj4gKyAqICAgT3V0cHV0IGNvbnRhaW5pbmcgdGhlIGRhdGEgYXNzb2NpYXRlZCB3aXRo IGtleS4NCj4+ICsgKiAgIFJldHVybnMgTlVMTCBpZiBkYXRhIHdhcyBub3Qgc3RvcmVkLg0KPj4g KyAqIEBwYXJhbSBiaWR4DQo+PiArICogICBQb2ludGVyIHRvIHRoZSBjdXJyZW50IGJ1Y2tldCBp bmRleC4gU2hvdWxkIGJlIDAgdG8gc3RhcnQNCj4+ICsgKiAgIGl0ZXJhdGluZyB0aGUgaGFzaCB0 YWJsZS4gSXRlcmF0b3IgaXMgaW5jcmVtZW50ZWQgYWZ0ZXINCj4+ICsgKiAgIFJURV9IQVNIX0JV Q0tFVF9FTlRSSUVTIGNhbGxzIG9mIHRoaXMgZnVuY3Rpb24uDQo+DQo+VGhlIHdvcmRpbmcgb2Yg dGhlIGxhc3QgbGluZSBzZWVtIG9kZCB0byBtZSwgc2hvdWxkIHRoZSDigJhvZuKAmSBiZSByZW1v dmVkPw0KPg0KPj4gKyAqIEBwYXJhbSBuZXh0DQo+PiArICogICBQb2ludGVyIHRvIGl0ZXJhdG9y LiBTaG91bGQgYmUgMCB0byBzdGFydCBpdGVyYXRpbmcgdGhlIGJ1Y2tldC4NCj4+ICsgKiAgIEl0 ZXJhdG9yIGlzIGluY3JlbWVudGVkIGFmdGVyIGVhY2ggY2FsbCBvZiB0aGlzIGZ1bmN0aW9uLg0K Pj4gKyAqIEByZXR1cm4NCj4+ICsgKiAgIFBvc2l0aW9uIHdoZXJlIGtleSB3YXMgc3RvcmVkLCBp ZiBzdWNjZXNzZnVsLg0KPj4gKyAqICAgLSAtRUlOVkFMIGlmIHRoZSBwYXJhbWV0ZXJzIGFyZSBp bnZhbGlkLg0KPj4gKyAqICAgLSAtRU5PRU5UIGlmIGVuZCBvZiB0aGUgYnVja2V0Lg0KPj4gKyAq Lw0KPj4gK2ludDMyX3QNCj4NCj5OZWVkcyB0byBjaGFuZ2UgdG8g4oCYaW50MzJfdCBfX3J0ZV9l eHBlcmltZW50YWzigJkgYW5kIHdoeSB1c2Ug4oCYaW50MzJfdCcgd2hlbiBldmVyeXdoZXJlIGVs c2Ugd2UgYXJlIHVzaW5nIOKAmGludCc/DQo+DQo+PiArcnRlX2hhc2hfYnVja2V0X2l0ZXJhdGUo Y29uc3Qgc3RydWN0IHJ0ZV9oYXNoICpoLA0KPj4gKwljb25zdCB2b2lkICoqa2V5LCB2b2lkICoq ZGF0YSwgdWludDMyX3QgKmJpZHgsIHVpbnQzMl90ICpuZXh0KTsNCj4NCj5TaG91bGQgaGF2ZSBh IGJsYW5rIGxpbmUgaGVyZSBiZWZvcmUgdGhlICNpZmRlZi4NCj4+ICNpZmRlZiBfX2NwbHVzcGx1 cw0KPj4gfQ0KPj4gI2VuZGlmDQo+PiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9oYXNoL3J0ZV9o YXNoX3ZlcnNpb24ubWFwIGIvbGliL2xpYnJ0ZV9oYXNoL3J0ZV9oYXNoX3ZlcnNpb24ubWFwDQo+ PiBpbmRleCA1MmEyNTc2ZjkuLjdkNDhmMzJjOSAxMDA2NDQNCj4+IC0tLSBhL2xpYi9saWJydGVf aGFzaC9ydGVfaGFzaF92ZXJzaW9uLm1hcA0KPj4gKysrIGIvbGliL2xpYnJ0ZV9oYXNoL3J0ZV9o YXNoX3ZlcnNpb24ubWFwDQo+PiBAQCAtMTUsNiArMTUsMTAgQEAgRFBES18yLjAgew0KPj4gCXJ0 ZV9oYXNoX2xvb2t1cDsNCj4+IAlydGVfaGFzaF9sb29rdXBfYnVsazsNCj4+IAlydGVfaGFzaF9s b29rdXBfd2l0aF9oYXNoOw0KPj4gKwlydGVfaGFzaF9nZXRfbnVtX2J1Y2tldHM7DQo+PiArCXJ0 ZV9oYXNoX2dldF9wcmltYXJ5X2J1Y2tldDsNCj4+ICsJcnRlX2hhc2hfZ2V0X3NlY29uZGFyeV9i dWNrZXQ7DQo+PiArCXJ0ZV9oYXNoX2J1Y2tldF9pdGVyYXRlOw0KPg0KPlRoZXNlIG11c3QgYmUg YWRkZWQgdG8gYSBFWFBFUklNRU5UQUwgY2xhdXNlIGluIHRoZSBmaWxlIGFuZCBsYXRlciB5b3Ug Y2FuIHJlbW92ZSB0aGUgZXhwZXJpbWVudGFsIGluZGljdG9yLg0KPg0KPj4NCj4+IAlsb2NhbDog KjsNCj4+IH07DQo+PiAtLQ0KPj4gMi4xNy4xDQo+Pg0KPg0KPlJlZ2FyZHMsDQo+S2VpdGgNCg0K