From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <wenzhuo.lu@intel.com>
Received: from mga14.intel.com (mga14.intel.com [192.55.52.115])
 by dpdk.org (Postfix) with ESMTP id EE7F02A5B
 for <dev@dpdk.org>; Tue, 24 Jan 2017 01:43:07 +0100 (CET)
Received: from orsmga003.jf.intel.com ([10.7.209.27])
 by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;
 23 Jan 2017 16:43:02 -0800
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="5.33,276,1477983600"; 
 d="scan'208,217";a="925859525"
Received: from fmsmsx107.amr.corp.intel.com ([10.18.124.205])
 by orsmga003.jf.intel.com with ESMTP; 23 Jan 2017 16:43:02 -0800
Received: from shsmsx104.ccr.corp.intel.com (10.239.4.70) by
 fmsmsx107.amr.corp.intel.com (10.18.124.205) with Microsoft SMTP Server (TLS)
 id 14.3.248.2; Mon, 23 Jan 2017 16:43:01 -0800
Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.88]) by
 SHSMSX104.ccr.corp.intel.com ([10.239.4.70]) with mapi id 14.03.0248.002;
 Tue, 24 Jan 2017 08:42:59 +0800
From: "Lu, Wenzhuo" <wenzhuo.lu@intel.com>
To: Billy McFall <bmcfall@redhat.com>
CC: "thomas.monjalon@6wind.com" <thomas.monjalon@6wind.com>, "dev@dpdk.org"
 <dev@dpdk.org>
Thread-Topic: [PATCH v3 2/3] net/e1000: e1000 igb support to free consumed
 buffers
Thread-Index: AQHSczaBpBs0713TmEOqgKSsuKWfyqFD3LIggAG1rICAATyVsA==
Date: Tue, 24 Jan 2017 00:42:59 +0000
Message-ID: <6A0DE07E22DDAD4C9103DF62FEBC09093B55D593@shsmsx102.ccr.corp.intel.com>
References: <20170120160109.1088-1-bmcfall@redhat.com>
 <20170120160109.1088-3-bmcfall@redhat.com>
 <6A0DE07E22DDAD4C9103DF62FEBC09093B55CADD@shsmsx102.ccr.corp.intel.com>
 <CAKLkqD6nfmm1rGfDtDYO+oV7_NE3twruhkHc3+=7T5r84yCtEg@mail.gmail.com>
In-Reply-To: <CAKLkqD6nfmm1rGfDtDYO+oV7_NE3twruhkHc3+=7T5r84yCtEg@mail.gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.239.127.40]
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: Re: [dpdk-dev] [PATCH v3 2/3] net/e1000: e1000 igb support to free
 consumed buffers
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <http://dpdk.org/ml/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://dpdk.org/ml/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <http://dpdk.org/ml/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Tue, 24 Jan 2017 00:43:09 -0000

SGkgQmlsbHksDQpUaGFua3MgZm9yIHlvdXIgZXhwbGFuYXRpb24uIEl0IG1ha2VzIGEgcGljdHVy
ZSB0byBtZSDimLoNCg0KDQpCZXN0IHJlZ2FyZHMNCldlbnpodW8gTHUNCg0KRnJvbTogQmlsbHkg
TWNGYWxsIFttYWlsdG86Ym1jZmFsbEByZWRoYXQuY29tXQ0KU2VudDogTW9uZGF5LCBKYW51YXJ5
IDIzLCAyMDE3IDk6NDkgUE0NClRvOiBMdSwgV2Vuemh1bw0KQ2M6IHRob21hcy5tb25qYWxvbkA2
d2luZC5jb207IGRldkBkcGRrLm9yZw0KU3ViamVjdDogUmU6IFtQQVRDSCB2MyAyLzNdIG5ldC9l
MTAwMDogZTEwMDAgaWdiIHN1cHBvcnQgdG8gZnJlZSBjb25zdW1lZCBidWZmZXJzDQoNClRoZXJl
IGFyZSB0d28gc2NlbmFyaW9zIHRoZSBBUFAgY2FsbHMgdGhpcyBBUEkgKHRoZXJlIG1heSBiZSBv
dGhlcnMsIGJ1dCB0aGUgQVBJIHdhcyBkZXNpZ25lZCB3aXRoIHRoZXNlIHR3byBpbiBtaW5kKToN
Cg0KMSkgQVBQIHJlY2VpdmVzIGEgcGFja2V0IHRoYXQgbmVlZHMgdG8gYmUgZmxvb2RlZC4gSW5z
dGVhZCBvZiBtYWtpbmcgYSBjb3B5IG9mIHRoZSBwYWNrZXQgKHdoZXRoZXIgaXQgaXMgdGhlIHdo
b2xlIHBhY2tldCwganVzdCB0aGUgaGVhZGVyIG9yIGEgY2xvbmUgYnVmZmVyIGlzIHVzZWQsIGFz
IGRvbmUgdG9kYXkpLCB0aGUgQVBQIGluY3JlbWVudHMgdGhlIHJlZmVyZW5jZSBjb3VudCwgYWRq
dXN0cyB0aGUgaGVhZGVyIGFuZCB0aGVuIHNlbmRzIHRoZSBwYWNrZXQgdG8gb25lIG9mIHRoZSBk
ZXN0aW5hdGlvbiBwb3J0cy4gVGhlIEFQUCB0aGVuIHBvbGxzIHRoaXMgQVBJIHVudGlsIHRoZSBy
ZWZlcmVuY2UgY291bnQgaXMgZGVjcmVtZW50ZWQsIGFuZCBmb3J3YXJkcyB0byB0aGUgbmV4dCBk
ZXN0aW5hdGlvbiBwb3J0IHdpdGggYW55IGhlYWRlciBtb2RpZmljYXRpb25zIG5lZWRlZC4NCg0K
MikgQW4gQVBQIGxpa2UgYSBwYWNrZXQgZ2VuZXJhdGlvbiBjb21wbGV0ZXMgYSBydW4gYW5kIHRo
ZW4gd2FudHMgdG8gcmVzZXQgZm9yIGFub3RoZXIgcnVuLiBJdCBjYW4gY2FsbCB0aGlzIEFQSSB0
byBmcmVlIGFuZCBtYnVmcyB0aGF0IGhhdmUgYmVlbiBjYWNoZSBieSB0aGUgZHJpdmVyIHNvIGl0
IGNhbiBzdGFydCBhbm90aGVyIHJ1biB3aXRoIHRoZSBmdWxsIHNldCBvZiBtYnVmcy4gTWF5YmUg
aXQgaXMgc3dpdGNoaW5nIGludGVyZmFjZXMgdGhhdCBhcmUgb24gYW5vdGhlciBjb3JlIGFuZCB3
YW50IHRvIHJlY2xhaW0gYW55IG1idWZzIHRoYXQgaGF2ZSBiZWVuIGNhY2hlZC4NCg0KU28gdGhp
cyBBUEkgaXMgaW50ZW5kZWQgdG8gYmUgY2FsbGVkIG9uIGFuIGFzIG5lZWQgYmFzaXMsIG5vdCBv
biBldmVyeSBwYWNrZXQuIFdoZW4gZWl0aGVyIGEgcGFydGljdWxhciBtYnVmIGlzIGRlc2lyZWQg
b3IgdGhlIG1idWZzIGZvciBhIHBhcnRpY3VsYXIgaW50ZXJmYWNlIG5lZWQgdG8gYmUgcmVsZWFz
ZWQuDQoNCkhvcGUgdGhpcyBoZWxwcywNCkJpbGx5IE1jRmFsbA0KDQpPbiBTYXQsIEphbiAyMSwg
MjAxNyBhdCAxMDo0NyBQTSwgTHUsIFdlbnpodW8gPHdlbnpodW8ubHVAaW50ZWwuY29tPG1haWx0
bzp3ZW56aHVvLmx1QGludGVsLmNvbT4+IHdyb3RlOg0KSGkgQmlsbHksDQoNCj4gLS0tLS1Pcmln
aW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQmlsbHkgTWNGYWxsIFttYWlsdG86Ym1jZmFsbEBy
ZWRoYXQuY29tPG1haWx0bzpibWNmYWxsQHJlZGhhdC5jb20+XQ0KPiBTZW50OiBTYXR1cmRheSwg
SmFudWFyeSAyMSwgMjAxNyAxMjowMSBBTQ0KPiBUbzogdGhvbWFzLm1vbmphbG9uQDZ3aW5kLmNv
bTxtYWlsdG86dGhvbWFzLm1vbmphbG9uQDZ3aW5kLmNvbT47IEx1LCBXZW56aHVvDQo+IENjOiBk
ZXZAZHBkay5vcmc8bWFpbHRvOmRldkBkcGRrLm9yZz47IEJpbGx5IE1jRmFsbA0KPiBTdWJqZWN0
OiBbUEFUQ0ggdjMgMi8zXSBuZXQvZTEwMDA6IGUxMDAwIGlnYiBzdXBwb3J0IHRvIGZyZWUgY29u
c3VtZWQNCj4gYnVmZmVycw0KPg0KPiBBZGQgc3VwcG9ydCB0byB0aGUgZTEwMDAgaWdiIGRyaXZl
ciBmb3IgdGhlIG5ldyBBUEkgdG8gZm9yY2UgZnJlZSBjb25zdW1lZA0KPiBidWZmZXJzIG9uIFR4
IHJpbmcuIGUxMDAwIGlnYiBkcml2ZXIgZG9lcyBub3QgaW1wbGVtZW50IGEgdHhfcnNfdGhyZXNo
IHRvIGZyZWUNCj4gbWJ1ZnMsIGl0IGZyZWVzIGEgc2xvdCBpbiB0aGUgcmluZyBhcyBuZWVkZWQs
IHNvIGEgbmV3IGZ1bmN0aW9uIG5lZWRlZCB0byBiZQ0KPiB3cml0dGVuLg0KPg0KPiBTaWduZWQt
b2ZmLWJ5OiBCaWxseSBNY0ZhbGwgPGJtY2ZhbGxAcmVkaGF0LmNvbTxtYWlsdG86Ym1jZmFsbEBy
ZWRoYXQuY29tPj4NCj4gLS0tDQo+ICBkcml2ZXJzL25ldC9lMTAwMC9lMTAwMF9ldGhkZXYuaCB8
ICAgMiArDQo+ICBkcml2ZXJzL25ldC9lMTAwMC9pZ2JfZXRoZGV2LmMgICB8ICAgMSArDQo+ICBk
cml2ZXJzL25ldC9lMTAwMC9pZ2Jfcnh0eC5jICAgICB8IDEyNg0KPiArKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysNCj4gIDMgZmlsZXMgY2hhbmdlZCwgMTI5IGluc2VydGlv
bnMoKykNCj4NCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2UxMDAwL2UxMDAwX2V0aGRldi5o
DQo+IGIvZHJpdmVycy9uZXQvZTEwMDAvZTEwMDBfZXRoZGV2LmgNCj4gaW5kZXggODFhNmRiYi4u
MzliMmY0MyAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9uZXQvZTEwMDAvZTEwMDBfZXRoZGV2LmgN
Cj4gKysrIGIvZHJpdmVycy9uZXQvZTEwMDAvZTEwMDBfZXRoZGV2LmgNCj4gQEAgLTMxNSw2ICsz
MTUsOCBAQCBpbnQgZXRoX2lnYl90eF9xdWV1ZV9zZXR1cChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRl
diwNCj4gdWludDE2X3QgdHhfcXVldWVfaWQsDQo+ICAgICAgICAgICAgICAgdWludDE2X3QgbmJf
dHhfZGVzYywgdW5zaWduZWQgaW50IHNvY2tldF9pZCwNCj4gICAgICAgICAgICAgICBjb25zdCBz
dHJ1Y3QgcnRlX2V0aF90eGNvbmYgKnR4X2NvbmYpOw0KPg0KPiAraW50IGV0aF9pZ2JfdHhfZG9u
ZV9jbGVhbnVwKHZvaWQgKnR4cSwgdWludDMyX3QgZnJlZV9jbnQpOw0KPiArDQo+ICBpbnQgZXRo
X2lnYl9yeF9pbml0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2KTsNCj4NCj4gIHZvaWQgZXRoX2ln
Yl90eF9pbml0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2KTsgZGlmZiAtLWdpdA0KPiBhL2RyaXZl
cnMvbmV0L2UxMDAwL2lnYl9ldGhkZXYuYyBiL2RyaXZlcnMvbmV0L2UxMDAwL2lnYl9ldGhkZXYu
YyBpbmRleA0KPiA4ODQzZGQxLi4xMmExYTMwIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL25ldC9l
MTAwMC9pZ2JfZXRoZGV2LmMNCj4gKysrIGIvZHJpdmVycy9uZXQvZTEwMDAvaWdiX2V0aGRldi5j
DQo+IEBAIC00MDgsNiArNDA4LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBldGhfZGV2X29wcyBl
dGhfaWdiX29wcyA9IHsNCj4gICAgICAgLnJ4X2Rlc2NyaXB0b3JfZG9uZSAgID0gZXRoX2lnYl9y
eF9kZXNjcmlwdG9yX2RvbmUsDQo+ICAgICAgIC50eF9xdWV1ZV9zZXR1cCAgICAgICA9IGV0aF9p
Z2JfdHhfcXVldWVfc2V0dXAsDQo+ICAgICAgIC50eF9xdWV1ZV9yZWxlYXNlICAgICA9IGV0aF9p
Z2JfdHhfcXVldWVfcmVsZWFzZSwNCj4gKyAgICAgLnR4X2RvbmVfY2xlYW51cCAgICAgID0gZXRo
X2lnYl90eF9kb25lX2NsZWFudXAsDQo+ICAgICAgIC5kZXZfbGVkX29uICAgICAgICAgICA9IGV0
aF9pZ2JfbGVkX29uLA0KPiAgICAgICAuZGV2X2xlZF9vZmYgICAgICAgICAgPSBldGhfaWdiX2xl
ZF9vZmYsDQo+ICAgICAgIC5mbG93X2N0cmxfZ2V0ICAgICAgICA9IGV0aF9pZ2JfZmxvd19jdHJs
X2dldCwNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2UxMDAwL2lnYl9yeHR4LmMgYi9kcml2
ZXJzL25ldC9lMTAwMC9pZ2Jfcnh0eC5jIGluZGV4DQo+IDQ1ZjNmMjQuLjAwY2QyYWEgMTAwNjQ0
DQo+IC0tLSBhL2RyaXZlcnMvbmV0L2UxMDAwL2lnYl9yeHR4LmMNCj4gKysrIGIvZHJpdmVycy9u
ZXQvZTEwMDAvaWdiX3J4dHguYw0KPiBAQCAtMTI3Nyw2ICsxMjc3LDEzMiBAQCBldGhfaWdiX3R4
X3F1ZXVlX3JlbGVhc2Uodm9pZCAqdHhxKQ0KPiAgICAgICBpZ2JfdHhfcXVldWVfcmVsZWFzZSh0
eHEpOw0KPiAgfQ0KPg0KPiArc3RhdGljIGludA0KPiAraWdiX3R4X2RvbmVfY2xlYW51cChzdHJ1
Y3QgaWdiX3R4X3F1ZXVlICp0eHEsIHVpbnQzMl90IGZyZWVfY250KSB7DQo+ICsgICAgIHN0cnVj
dCBpZ2JfdHhfZW50cnkgKnN3X3Jpbmc7DQo+ICsgICAgIHZvbGF0aWxlIHVuaW9uIGUxMDAwX2Fk
dl90eF9kZXNjICp0eHI7DQo+ICsgICAgIHVpbnQxNl90IHR4X2ZpcnN0OyAvKiBGaXJzdCBzZWdt
ZW50IGFuYWx5emVkLiAqLw0KPiArICAgICB1aW50MTZfdCB0eF9pZDsgICAgLyogQ3VycmVudCBz
ZWdtZW50IGJlaW5nIHByb2Nlc3NlZC4gKi8NCj4gKyAgICAgdWludDE2X3QgdHhfbGFzdDsgIC8q
IExhc3Qgc2VnbWVudCBpbiB0aGUgY3VycmVudCBwYWNrZXQuICovDQo+ICsgICAgIHVpbnQxNl90
IHR4X25leHQ7ICAvKiBGaXJzdCBzZWdtZW50IG9mIHRoZSBuZXh0IHBhY2tldC4gKi8NCj4gKyAg
ICAgaW50IGNvdW50Ow0KPiArDQo+ICsgICAgIGlmICh0eHEgIT0gTlVMTCkgew0KPiArICAgICAg
ICAgICAgIGNvdW50ID0gMDsNCj4gKyAgICAgICAgICAgICBzd19yaW5nID0gdHhxLT5zd19yaW5n
Ow0KPiArICAgICAgICAgICAgIHR4ciA9IHR4cS0+dHhfcmluZzsNCj4gKw0KPiArICAgICAgICAg
ICAgIC8qDQo+ICsgICAgICAgICAgICAgICogdHhfdGFpbCBpcyB0aGUgbGFzdCBzZW50IHBhY2tl
dCBvbiB0aGUgc3dfcmluZy4gR290byB0aGUgZW5kDQo+ICsgICAgICAgICAgICAgICogb2YgdGhh
dCBwYWNrZXQgKHRoZSBsYXN0IHNlZ21lbnQgaW4gdGhlIHBhY2tldCBjaGFpbikgYW5kDQo+ICsg
ICAgICAgICAgICAgICogdGhlbiB0aGUgbmV4dCBzZWdtZW50IHdpbGwgYmUgdGhlIHN0YXJ0IG9m
IHRoZSBvbGRlc3QNCj4gc2VnbWVudA0KPiArICAgICAgICAgICAgICAqIGluIHRoZSBzd19yaW5n
LiBUaGlzIGlzIHRoZSBmaXJzdCBwYWNrZXQgdGhhdCB3aWxsIGJlDQo+ICsgICAgICAgICAgICAg
ICogYXR0ZW1wdGVkIHRvIGJlIGZyZWVkLg0KPiArICAgICAgICAgICAgICAqLw0KPiArDQo+ICsg
ICAgICAgICAgICAgLyogR2V0IGxhc3Qgc2VnbWVudCBpbiBtb3N0IHJlY2VudGx5IGFkZGVkIHBh
Y2tldC4gKi8NCj4gKyAgICAgICAgICAgICB0eF9maXJzdCA9IHN3X3JpbmdbdHhxLT50eF90YWls
XS5sYXN0X2lkOw0KPiArDQo+ICsgICAgICAgICAgICAgLyogR2V0IHRoZSBuZXh0IHNlZ21lbnQs
IHdoaWNoIGlzIHRoZSBvbGRlc3Qgc2VnbWVudCBpbiByaW5nLg0KPiAqLw0KPiArICAgICAgICAg
ICAgIHR4X2ZpcnN0ID0gc3dfcmluZ1t0eF9maXJzdF0ubmV4dF9pZDsNCj4gKw0KPiArICAgICAg
ICAgICAgIC8qIFNldCB0aGUgY3VycmVudCBpbmRleCB0byB0aGUgZmlyc3QuICovDQo+ICsgICAg
ICAgICAgICAgdHhfaWQgPSB0eF9maXJzdDsNCj4gKw0KPiArICAgICAgICAgICAgIC8qDQo+ICsg
ICAgICAgICAgICAgICogTG9vcCB0aHJvdWdoIGVhY2ggcGFja2V0LiBGb3IgZWFjaCBwYWNrZXQs
IHZlcmlmeSB0aGF0IGFuDQo+ICsgICAgICAgICAgICAgICogbWJ1ZiBleGlzdHMgYW5kIHRoYXQg
dGhlIGxhc3Qgc2VnbWVudCBpcyBmcmVlLiBJZiBzbywgZnJlZQ0KPiArICAgICAgICAgICAgICAq
IGl0IGFuZCBtb3ZlIG9uLg0KPiArICAgICAgICAgICAgICAqLw0KPiArICAgICAgICAgICAgIHdo
aWxlICgxKSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICB0eF9sYXN0ID0gc3dfcmluZ1t0eF9p
ZF0ubGFzdF9pZDsNCj4gKw0KPiArICAgICAgICAgICAgICAgICAgICAgaWYgKHN3X3JpbmdbdHhf
bGFzdF0ubWJ1Zikgew0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHhyW3R4
X2xhc3RdLndiLnN0YXR1cyAmDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBFMTAwMF9UWERfU1RBVF9ERCkgew0KPiArICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICogSW5jcmVtZW50IHRoZSBudW1iZXIgb2YgcGFja2V0cw0KPiArICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAqIGZyZWVkLg0KPiArICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqLw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvdW50Kys7DQo+ICsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiBHZXQgdGhlIHN0YXJ0IG9mIHRoZSBuZXh0IHBhY2tldC4gKi8NCj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0eF9uZXh0ID0gc3dfcmluZ1t0eF9sYXN0XS5uZXh0
X2lkOw0KPiArDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoNCj4g
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBMb29wIHRocm91Z2ggYWxs
IHNlZ21lbnRzIGluIGENCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KiBwYWNrZXQuDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQo+
ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8gew0KPiArDQo+ICAgICAg
IHJ0ZV9wa3RtYnVmX2ZyZWVfc2VnKHN3X3JpbmdbdHhfaWRdLm1idWYpOw0KPiArICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dfcmluZ1t0eF9pZF0ubWJ1ZiA9
IE5VTEw7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
d19yaW5nW3R4X2lkXS5sYXN0X2lkID0gdHhfaWQ7DQo+ICsNCj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE1vdmUgdG8gbmV4dCBzZWdlbW50LiAqLw0K
PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHhfaWQgPSBz
d19yaW5nW3R4X2lkXS5uZXh0X2lkOw0KPiArDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSB3aGlsZSAodHhfaWQgIT0gdHhfbmV4dCk7DQo+ICsNCj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodW5saWtlbHkoY291bnQgPT0gKGludClm
cmVlX2NudCkpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlDQo+ICsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoNCj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKiBtYnVmIHN0aWxsIGluIHVzZSwgbm90aGluZyBsZWZ0IHRv
DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogZnJlZS4NCj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCj4gKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gKyAgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qDQo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqIFRoZXJlIGFyZSBtdWx0aXBsZSByZWFzb25zIHRvIGJlIGhl
cmU6DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIDEpIEFsbCB0aGUgcGFja2V0
cyBvbiB0aGUgcmluZyBoYXZlIGJlZW4NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICogICAgZnJlZWQgLSB0eF9pZCBpcyBlcXVhbCB0byB0eF9maXJzdA0KPiArICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKiAgICBhbmQgc29tZSBwYWNrZXRzIGhhdmUgYmVlbiBmcmVlZC4N
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICAgLSBEb25lLCBleGl0DQo+ICsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIDIpIEludGVyZmFjZXMgaGFzIG5vdCBzZW50
IGEgcmluZ3Mgd29ydGggb2YNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICAg
cGFja2V0cyB5ZXQsIHNvIHRoZSBzZWdtZW50IGFmdGVyIHRhaWwgaXMNCj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICogICAgc3RpbGwgZW1wdHkuIE9yIGEgcHJldmlvdXMgY2FsbCB0
byB0aGlzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgIGZ1bmN0aW9uIGZy
ZWVkIHNvbWUgb2YgdGhlIHNlZ21lbnRzIGJ1dA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKiAgICBub3QgYWxsIHNvIHRoZXJlIGlzIGEgaG9sZSBpbiB0aGUgbGlzdC4NCj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICAgSG9wZWZ1bGx5IHRoaXMgaXMgYSByYXJl
IGNhc2UuDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgIC0gV2FsayB0aGUg
bGlzdCBhbmQgZmluZCB0aGUgbmV4dCBtYnVmLiBJZg0KPiArICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKiAgICAgIHRoZXJlIGlzbid0IG9uZSwgdGhlbiBkb25lLg0KPiArICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKi8NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGxpa2VseSgodHhfaWQgPT0gdHhfZmlyc3QpICYmIChjb3VudCAhPSAwKSkpDQo+ICsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ICsNCj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyoNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICogV2FsayB0aGUgbGlzdCBhbmQgZmluZCB0aGUgbmV4dCBtYnVmLCBpZiBhbnkuDQo+ICsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkbyB7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTW92
ZSB0byBuZXh0IHNlZ2VtbnQuICovDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdHhfaWQgPSBzd19yaW5nW3R4X2lkXS5uZXh0X2lkOw0KPiArDQo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN3X3JpbmdbdHhfaWRdLm1idWYpDQo+ICsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gKw0K
PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IHdoaWxlICh0eF9pZCAhPSB0eF9maXJz
dCk7DQo+ICsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoNCj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICogRGV0ZXJtaW5lIHdoeSBwcmV2aW91cyBsb29wIGJhaWxl
ZC4gSWYNCj4gdGhlcmUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaXMgbm90
IGFuIG1idWYsIGRvbmUuDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KPiAr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3dfcmluZ1t0eF9pZF0ubWJ1ZiA9PSBO
VUxMKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiAr
ICAgICAgICAgICAgICAgICAgICAgfQ0KPiArICAgICAgICAgICAgIH0NCj4gKyAgICAgfSBlbHNl
DQo+ICsgICAgICAgICAgICAgY291bnQgPSAtRU5PREVWOw0KPiArDQo+ICsgICAgIHJldHVybiBj
b3VudDsNCj4gK30NCj4gKw0KPiAraW50DQo+ICtldGhfaWdiX3R4X2RvbmVfY2xlYW51cCh2b2lk
ICp0eHEsIHVpbnQzMl90IGZyZWVfY250KSB7DQo+ICsgICAgIHJldHVybiBpZ2JfdHhfZG9uZV9j
bGVhbnVwKHR4cSwgZnJlZV9jbnQpOyB9DQo+ICsNCj4gIHN0YXRpYyB2b2lkDQo+ICBpZ2JfcmVz
ZXRfdHhfcXVldWVfc3RhdChzdHJ1Y3QgaWdiX3R4X3F1ZXVlICp0eHEpICB7DQo+IC0tDQo+IDIu
OS4zDQpJIHRoaW5rIHRoZSBjb2RlIGlzIGdvb2QuIEJ1dCBJIGRvbid0IHVuZGVyc3RhbmQgdGhl
IHdob2xlIGlkZWEuIEFuIEFQSSBtZWFucyBBUFAgbmVlZCBjYWxsIGl0LiBXaGVuIHNob3VsZCBB
UFAgY2FsbCBUaGlzIEFQST8gRG9lcyBBUFAgbmVlZCB0byBjaGVjayBhZnRlciBzZW5kaW5nIGV2
ZXJ5IHBhY2tldD8gT3IganVzdCBjYWxsIGl0IHBlcmlvZGljYWxseT8NCg0K