From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 5EC48A04F1; Mon, 6 Jan 2020 14:26:36 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 83F701D66A; Mon, 6 Jan 2020 14:26:35 +0100 (CET) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by dpdk.org (Postfix) with ESMTP id 6FD091D668 for ; Mon, 6 Jan 2020 14:26:34 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Jan 2020 05:26:33 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.69,402,1571727600"; d="scan'208";a="422122062" Received: from orsmsx106.amr.corp.intel.com ([10.22.225.133]) by fmsmga006.fm.intel.com with ESMTP; 06 Jan 2020 05:26:33 -0800 Received: from orsmsx122.amr.corp.intel.com (10.22.225.227) by ORSMSX106.amr.corp.intel.com (10.22.225.133) with Microsoft SMTP Server (TLS) id 14.3.439.0; Mon, 6 Jan 2020 05:26:33 -0800 Received: from ORSEDG001.ED.cps.intel.com (10.7.248.4) by ORSMSX122.amr.corp.intel.com (10.22.225.227) with Microsoft SMTP Server (TLS) id 14.3.439.0; Mon, 6 Jan 2020 05:26:32 -0800 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.48) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (TLS) id 14.3.439.0; Mon, 6 Jan 2020 05:26:32 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MkkiY316+DL9cGWkDkQfj0Z2zD82q9sOHhRWxLcyZvq11lBARj4zYr/W/S1tt+5NWGZR/bHOYndNwyU6ZUEBg8O/mkK/5CVxZrj0hrcpbnnaK1tpay7s0fA7eYXfERFBADFk4iVyY+L0UeCf8mGGx6KNVzjK6rDJF2VlEFpJ6pwNfxMSLi4xWblDNaQoWEz0j0XNienFBHzPhOGkrlPBcP+xAfwH2u9YPssbPvsVUgBtxOb4mIekFsWjLl4y9Vc/fjLXFIIw2Yc14WlIVGY5iHkO+TBuDahAUWUsDK55IdLVoQcONPNpWHN1pqxmE2ZtsZayG45qEBA32jP3YdwXcQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=udq3RnfO3+Mpk6cz38ZJj180/A51Bfy+w/7b0rP1lXw=; b=ey0Zi2StotsTNZa2ZaMd1jQg9lMPtnwxLX4BgftuRFA3yln6mkoiBTvFJ8Ps7lhmZPEPIcuLyEIjdQXCr13ZGQ140KmizjUJe40izLbIAtta5oTVruGlwkf+xsdbY79QazwD6vMUdYEhF5DtQuIM5GsempqYyD8yCrUzgSLoNdY6HNvlw9gCMSA6r1Sek2MIGn0bgFqkagKqAVSsjtf28tpQSS4JatwfjyYHJYOPMW/5DM3Tl2P8+2MKJ2sx1B2YPNKO9Pxr344t/gzDVFkzDs6L4gd1QaDCx/7qsKS8N/3CMswatLruusPgtqngKbYym7qIsVHPbqE0lOpTxsUb0A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=udq3RnfO3+Mpk6cz38ZJj180/A51Bfy+w/7b0rP1lXw=; b=vdCkYx+gH49lMGHgfMV8LsVc+/E66/ZC1GT0aaM/hRnCj5ffyKgdONW9il8veDauR+yWRKdP1fCFVhMyxEBlQjsUjernDvh/aX0NIotQjdXaTlqV3oFcmmB0yiCxiMoxEoI1p6PDPcUzP/yLb1M3CgOLThv8O99zxehlRjhtfXE= Received: from SN6PR11MB2558.namprd11.prod.outlook.com (52.135.94.19) by SN6PR11MB3247.namprd11.prod.outlook.com (52.135.110.11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2602.12; Mon, 6 Jan 2020 13:26:29 +0000 Received: from SN6PR11MB2558.namprd11.prod.outlook.com ([fe80::4d86:362a:13c3:8386]) by SN6PR11MB2558.namprd11.prod.outlook.com ([fe80::4d86:362a:13c3:8386%7]) with mapi id 15.20.2602.015; Mon, 6 Jan 2020 13:26:29 +0000 From: "Ananyev, Konstantin" To: "Di, ChenxuX" , "dev@dpdk.org" CC: "Yang, Qiming" Thread-Topic: [dpdk-dev] [PATCH v6 3/4] net/ixgbe: cleanup Tx buffers Thread-Index: AQHVvvUp6LlAIfvCjkGBZ/4yGRUggKfSnF5QgAYOaoCABAZmYIAAsTkAgAA70ZA= Date: Mon, 6 Jan 2020 13:26:29 +0000 Message-ID: References: <20191203055134.72874-1-chenxux.di@intel.com> <20191230093840.17701-1-chenxux.di@intel.com> <20191230093840.17701-4-chenxux.di@intel.com> <3B926E44943CB04AA3A39AC16328CE39B9262D@SHSMSX101.ccr.corp.intel.com> <3B926E44943CB04AA3A39AC16328CE39B93D08@SHSMSX101.ccr.corp.intel.com> In-Reply-To: <3B926E44943CB04AA3A39AC16328CE39B93D08@SHSMSX101.ccr.corp.intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiOTU5MGZhNzItZTFiMS00MzBlLTllMjUtMDY3OGJlZTQ0MzExIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoidmFYVHRGTU9USm5nT2JYcElzRmRhWkpnVm9VRnc4ZDRcLzhFM0ZCRGxlY0k3Nk1iWTNqTVwvcUNqTTM3TkgyY3RhIn0= dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.2.0.6 x-ctpclassification: CTP_NT authentication-results: spf=none (sender IP is ) smtp.mailfrom=konstantin.ananyev@intel.com; x-originating-ip: [192.198.151.163] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: b913a160-7e47-4f92-80d9-08d792ac09f4 x-ms-traffictypediagnostic: SN6PR11MB3247: x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-forefront-prvs: 0274272F87 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(396003)(39860400002)(346002)(136003)(376002)(366004)(189003)(199004)(316002)(33656002)(478600001)(110136005)(107886003)(52536014)(9686003)(6506007)(8936002)(81166006)(76116006)(81156014)(8676002)(66446008)(66556008)(66476007)(66946007)(186003)(64756008)(55016002)(86362001)(7696005)(2906002)(26005)(30864003)(5660300002)(71200400001)(4326008); DIR:OUT; SFP:1102; SCL:1; SRVR:SN6PR11MB3247; H:SN6PR11MB2558.namprd11.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: tdqjgpjRUqoSuMmb07E+Fl6h69wXuv/Q7kBjas0VqlTpGZuxcSvCQTnxO27Tv5pOEaAEwiPPHeajLoStYYI+Z19Sb0UudYTWGoh8zj0kIiNJh1D21JZxkhIGq8WhIiD+kxfgT+Fhm3Hs+/HKyQ0ydQmm44oQpBkPdYzwVJwON/kbM39nkYVx77zI+2w0Yt/6YDYgQEwjcD3+dWpFcZOqRykzpEdaQ9vwOWipOEK/ysf2HXVjWGHjYVeLsKnFHWxoZ1+XBQkzni7+aIZXPa87yxZfZeesslp/oKPq61P11ezH8TaF/+mnjk1m1fRFD0HNxpOeLgjjA9pQNrCR+EDci6fA/+diQKtsPe+HNUhvWqRJSVCdgv5B99fBiPRKu2F6mz9kMarjpEHddsrQxV8/2aq+8fTdZF6pP/6icoVXN6BbtvwZKWkreaVoZMgv8/qd Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: b913a160-7e47-4f92-80d9-08d792ac09f4 X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Jan 2020 13:26:29.3664 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: UUPYB7Ypnb/z8Z2shWjRNZyaBkv+sVPsdOfppewyfD4cvL1Kc0djgrcWjtdHjmOdfFKOA269+90d44/qT3fgjSiz18ynT7BuW06eDFtGJJY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR11MB3247 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH v6 3/4] net/ixgbe: cleanup Tx buffers 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" DQoNCj4gPiA+ID4gPiArICogdHhfdGFpbCBpcyB0aGUgbGFzdCBzZW50IHBhY2tldCBvbiB0aGUg c3dfcmluZy4gR290byB0aGUgZW5kDQo+ID4gPiA+ID4gKyAqIG9mIHRoYXQgcGFja2V0ICh0aGUg bGFzdCBzZWdtZW50IGluIHRoZSBwYWNrZXQgY2hhaW4pIGFuZA0KPiA+ID4gPiA+ICsgKiB0aGVu IHRoZSBuZXh0IHNlZ21lbnQgd2lsbCBiZSB0aGUgc3RhcnQgb2YgdGhlIG9sZGVzdCBzZWdtZW50 DQo+ID4gPiA+ID4gKyAqIGluIHRoZSBzd19yaW5nLg0KPiA+ID4gPg0KPiA+ID4gPiBOb3Qgc3Vy ZSBJIHVuZGVyc3RhbmQgdGhlIHNlbnRlbmNlIGFib3ZlLg0KPiA+ID4gPiB0eF90YWlsIGlzIHRo ZSB2YWx1ZSBvZiBURFQgSFcgcmVnaXN0ZXIgKG1vc3QgcmVjZW50bHkgYXJtZWQgYnkgU1cgVEQp Lg0KPiA+ID4gPiBsYXN0X2lkICBpcyB0aGUgaW5kZXggb2YgbGFzdCBkZXNjcmlwdG9yIGZvciBt dWx0aS1zZWcgcGFja2V0Lg0KPiA+ID4gPiBuZXh0X2lkIGlzIGp1c3QgdGhlIGluZGV4IG9mIG5l eHQgZGVzY3JpcHRvciBpbiBIVyBURCByaW5nLg0KPiA+ID4gPiBIb3cgZG8geW91IGNvbmNsdWRl IHRoYXQgaXQgd2lsbCBiZSB0aGUgJyBvbGRlc3Qgc2VnbWVudCBpbiB0aGUgc3dfcmluZyc/DQo+ ID4gPiA+DQo+ID4gPg0KPiA+ID4gVGhlIHR4X3RhaWwgaXMgdGhlIGxhc3Qgc2VudCBwYWNrZXQg b24gdGhlIHN3X3JpbmcuIFdoaWxlIHRoZQ0KPiA+ID4geG1pdF9jbGVhbnVwIG9yIFR4X2ZyZWVf YnVmcyB3aWxsIGJlIGNhbGwgd2hlbiB0aGUgbmJfdHhfZnJlZSA8DQo+ID4gdHhfZnJlZV90aHJl c2ggLg0KPiA+ID4gU28gdGhlIHN3X3JpbmdbdHhfdGFpbF0ubmV4dF9pZCBtdXN0IGJlIHRoZSBi ZWdpbiBvZiBtYnVmcyB3aGljaCBhcmUNCj4gPiA+IG5vdCB1c2VkIG9yICBBbHJlYWR5IGZyZWVk IC4gdGhlbiBiZWdpbiB0aGUgbG9vcCB1bnRpbCB0aGUgbWJ1ZiBpcyB1c2VkIGFuZA0KPiA+IGJl Z2luIHRvIGZyZWUgdGhlbS4NCj4gPiA+DQo+ID4gPg0KPiA+ID4NCj4gPiA+ID4gQW5vdGhlciBx dWVzdGlvbiB3aHkgZG8geW91IG5lZWQgdG8gd3JpdGUgeW91ciBvd24gZnVuY3Rpb25zPw0KPiA+ ID4gPiBXaHkgY2FuJ3QgeW91IHJldXNlIGV4aXN0aW5nIGl4Z2JlX3htaXRfY2xlYW51cCgpIGZv ciBmdWxsKG9mZmxvYWQpDQo+ID4gPiA+IHBhdGggYW5kDQo+ID4gPiA+IGl4Z2JlX3R4X2ZyZWVf YnVmcygpIGZvciBzaW1wbGUgcGF0aD8NCj4gPiA+ID4gWWVzLCAgaXhnYmVfeG1pdF9jbGVhbnVw KCkgZG9lc24ndCBmcmVlIG1idWZzLCBidXQgYXQgbGVhc3QgaXQgY291bGQNCj4gPiA+ID4gYmUg dXNlZCB0byBkZXRlcm1pbmUgZmluaXNoZWQgVFggZGVzY3JpcHRvcnMuDQo+ID4gPiA+IEJhc2Vk IG9uIHRoYXQgeW91IGNhbiB5b3UgY2FuIGZyZWUgYXBwcm9wcmlhdGUgc3dfcmluZ1tdIGVudHJp ZXMuDQo+ID4gPiA+DQo+ID4gPg0KPiA+ID4gVGhlIHJlYXNvbiB3aHkgSSBkb24ndCByZXVzZSBl eGlzdGluZyBmdW5jdGlvbiBpcyB0aGF0IHRoZXkgYWxsIGZyZWUNCj4gPiA+IHNldmVyYWwgbWJ1 ZnMgV2hpbGUgdGhlIGZyZWVfY250IG9mIHRoZSBBUEkgcnRlX2V0aF90eF9kb25lX2NsZWFudXAo KSBpcyB0aGUNCj4gPiBudW1iZXIgb2YgcGFja2V0cy4NCj4gPiA+IEl0IGFsc28gbmVlZCB0byBi ZSBkb25lIHRoYXQgY2hlY2sgd2hpY2ggbWJ1ZmZzIGFyZSBmcm9tIHRoZSBzYW1lIHBhY2tldC4N Cj4gPg0KPiA+IEF0IGZpcnN0LCBJIGRvbid0IHNlZSBhbnl0aGluZyBiYWQgaWYgdHhfZG9uZV9j bGVhbnVwKCkgd2lsbCBmcmVlIG9ubHkgc29tZQ0KPiA+IHNlZ21lbnRzIGZyb20gdGhlIHBhY2tl dC4gQXMgbG9uZyBhcyBpdCBpcyBzYWZlIC0gdGhlcmUgaXMgbm8gcHJvYmxlbSB3aXRoIHRoYXQu DQo+ID4gSSB0aGluayBydGVfZXRoX3R4X2RvbmVfY2xlYW51cCgpIG9wZXJhdGVzIG9uIG1idWYs IG5vdCBwYWNrZXQgcXVhbnRpdGllcy4NCj4gPiBCdXQgaW4gb3VyIGNhc2UgSSB0aGluayBpdCBk b2Vzbid0IG1hdHRlciwgYXMgaXhnYmVfeG1pdF9jbGVhbnVwKCkgbWFyayBUWERzIGFzDQo+ID4g ZnJlZSBvbmx5IHdoZW4gSFcgaXMgZG9uZSB3aXRoIGFsbCBUWERzIGZvciB0aGF0IHBhY2tldC4N Cj4gPiBBcyBsb25nIGFzIHRoZXJlIGlzIGEgd2F5IHRvIHJldXNlIGV4aXN0aW5nIGNvZGUgYW5k IGF2b2lkIGR1cGxpY2F0aW9uICh3aXRob3V0DQo+ID4gaW50cm9kdWNpbmcgYW55IGRlZ3JhZGF0 aW9uKSAtIHdlIHNob3VsZCB1c2UgaXQuDQo+ID4gQW5kIEkgdGhpbmsgdGhlcmUgaXMgYSB2ZXJ5 IGdvb2Qgb3Bwb3J0dW5pdHkgaGVyZSB0byByZXVzZSBleGlzdGluZw0KPiA+IGl4Z2JlX3htaXRf Y2xlYW51cCgpIGZvciB0eF9kb25lX2NsZWFudXAoKSBpbXBsZW1lbnRhdGlvbi4NCj4gPiBNb3Jl b3ZlciBiZWNhdXNlIHlvdXIgY29kZSBkb2VzbuKAmXQgZm9sbG93DQo+ID4gaXhnYmVfeG1pdF9w a3RzKCkvaXhnYmVfeG1pdF9jbGVhbnVwKCkNCj4gPiBsb2dpYyBhbmQgaW5mcmFzdHJ1Y3R1cmUs IGl0IGludHJvZHVjZXMgdW5uZWNlc3Nhcnkgc2NhbnMgb3ZlciBUWEQgcmluZywgYW5kIGluDQo+ ID4gc29tZSBjYXNlcyBkb2Vzbid0IHdvcmsgYXMgZXhwZWN0ZWQ6DQo+ID4NCj4gPiArd2hpbGUg KDEpIHsNCj4gPiArdHhfbGFzdCA9IHN3X3JpbmdbdHhfaWRdLmxhc3RfaWQ7DQo+ID4gKw0KPiA+ ICtpZiAoc3dfcmluZ1t0eF9sYXN0XS5tYnVmKSB7DQo+ID4gK2lmICh0eHJbdHhfbGFzdF0ud2Iu c3RhdHVzICYNCj4gPiArSVhHQkVfVFhEX1NUQVRfREQpIHsNCj4gPiAuLi4NCj4gPiArfSBlbHNl IHsNCj4gPiArLyoNCj4gPiArICogbWJ1ZiBzdGlsbCBpbiB1c2UsIG5vdGhpbmcgbGVmdCB0bw0K PiA+ICsgKiBmcmVlLg0KPiA+ICsgKi8NCj4gPiArYnJlYWs7DQo+ID4NCj4gPiBJdCBpcyBub3Qg Y29ycmVjdCB0byBleHBlY3QgdGhhdCBJWEdCRV9UWERfU1RBVF9ERCB3aWxsIGJlIHNldCBvbiBs YXN0IFRYRCBmb3INCj4gPiAqZXZlcnkqIHBhY2tldC4NCj4gPiBXZSBzZXQgSVhHQkVfVFhEX0NN RF9SUyBiaXQgb25seSBvbiB0aHJlc2hvbGQgcGFja2V0IGxhc3QgZGVzY3JpcHRvci4NCj4gPiBQ bHVzIGl4Z2JlX3htaXRfY2xlYW51cCgpIGNhbiBjbGVhbnVwIFRYRCB3Yi5zdGF0dXMuDQo+ID4N Cj4gPiBTbyBJIHN0cm9uZ2x5IHJlY29tbWVuZCB0byByZXVzZSBpeGdiZV94bWl0X2NsZWFudXAo KSBoZXJlLg0KPiA+IEl0IHdvdWxkIGJlIG11Y2ggbGVzcyBlcnJvciBwcm9uZSBhbmQgd2lsbCBo ZWxwIHRvIGF2b2lkIGNvZGUgZHVwbGljYXRpb24uDQo+ID4NCj4gPiBLb25zdGFudGluDQo+ID4N Cj4gDQo+IEF0IGZpcnN0Lg0KPiBUaGUgZnVuY3Rpb24gaXhnYmVfeG1pdF9jbGVhbnVwKHN0cnVj dCBpeGdiZV90eF9xdWV1ZSAqdHhxKSB3aWxsIGNsZWFudXAgIFRYRCB3Yi5zdGF0dXMuDQo+IHRo ZSBudW1iZXIgb2Ygc3RhdHVzIGNsZWFudXBlZCBpcyBhbHdheXMgdHhxLT50eF9yc190aHJlc2gu DQoNClllcywgYW5kIHdoYXQncyB3cm9uZyB3aXRoIGl0Pw0KDQo+IA0KPiBUaGUgIEFQSSBydGVf ZXRoX3R4X2RvbmVfY2xlYW51cCgpIGluIHJ0ZV9ldGhfZGV2Lmggc2hvdyB0aGF0DQo+IAlAcGFy YW0gZnJlZV9jbnQNCj4gIAkqICAgTWF4aW11bSBudW1iZXIgb2YgcGFja2V0cyB0byBmcmVlLiBV c2UgMCB0byBpbmRpY2F0ZSBhbGwgcG9zc2libGUgcGFja2V0cw0KPiAgCSogICBzaG91bGQgYmUg ZnJlZWQuIE5vdGUgdGhhdCBhIHBhY2tldCBtYXkgYmUgdXNpbmcgbXVsdGlwbGUgbWJ1ZnMuDQoN CkkgZG9uJ3QgdGhpbmsgaXQgaXMgYSBnb29kIGFwcHJvYWNoLCBiZXR0ZXIgd291bGQgYmUgdG8g cmVwb3J0IG51bWJlciBvZiBmcmVlZCBtYnVmcywNCmJ1dCBvaywgYXMgaXQgaXMgYSBwdWJsaWMg QVBJLCB3ZSBwcm9iYWJseSBuZWVkIHRvIGtlZXAgaXQgYXMgaXQgaXMuDQoNCj4gYSBudW1iZXIg bXVzdCBiZSBzZXQgd2hpbGUgaXhnYmVfeG1pdF9jbGVhbnVwIGFuZCBpeGdiZV90eF9mcmVlX2J1 ZnMgb25seSBoYXZlIG9uZSBwYXJhbWV0ZXIgdHhxLg0KDQpZZXMsIGl4Z2JlX3htaXRfY2xlYW51 cCgpIGNsZWFucyB1cCBhdCBsZWFzdCB0eHEtPnR4X3JzX3RocmVzaCBUWERzLg0KU28gaWYgdXNl ciByZXF1ZXN0ZWQgbW9yZSBwYWNrZXRzIHRvIGJlIGZyZWVkIHdlIGNhbiBjYWxsIGl4Z2JlX3ht aXRfY2xlYW51cCgpDQppbiBhIGxvb3AuIA0KDQo+IEFuZCB3aGF0IHNob3VsZCBkbyBpcyBub3Qg b25seSBmcmVlIGJ1ZmZlcnMgYW5kIHN0YXR1cyBidXQgYWxzbyBjaGVjayB3aGljaCBidWZzIGFy ZSBmcm9tDQo+ICBPbmUgcGFja2V0IGFuZCBjb3VudCB0aGUgcGFja2V0IGZyZWVkLg0KDQppeGdi ZV94bWl0X2NsZWFudXAoKSBpdHNlbGYgZG9lc24ndCBmcmVlIG1idWZzIGl0c2VsZi4NCkl0IG9u bHkgY2xlYW5zIHVwIFRYRHMuIA0KU28gaW4gdHhfZG9uZV9jbGVhbnVwKCkgYWZ0ZXIgY2FsbGlu ZyBpeGdiZV94bWl0X2NsZWFudXAoKQ0KeW91J2xsIHN0aWxsIG5lZWQgdG8gZ28gdGhyb3VnaCBz d19yaW5nW10NCmVudHJpZXMgdGhhdCBjb3JyZXNwb25kIHRvIGZyZWUgVFhEcyBhbmQgY2FsbCBt YnVmX3NlZ19mcmVlKCkuDQpZb3UgY2FuIGNvdW50IG51bWJlciBvZiBmdWxsIHBhY2tldHMgaGVy ZS4gDQoNCj4gU28gSSB0aGluayBpdCBjYW4ndCBiZSBpbXBsZW1lbnRlZCB0aGF0IHJldXNlIGZ1 bmN0aW9uIHhtaXRfY2xlYW51cCB3aXRob3V0IGNoYW5nZSBpdC4NCj4gQW5kIGNyZWF0ZSBhIG5l dyBmdW5jdGlvbiB3aXRoIHRoZSBjb2RlIG9mIHhtaXRfY2xlYW51cCB3aWxsIGNhdXNlIG1hbnkg ZHVwbGljYXRpb24uDQoNCkkgZG9uJ3QgdGhpbmsgaXQgd291bGQuDQpJIHRoaW5rIGFsbCB3ZSBu ZWVkIGhlcmUgaXMgc29tZXRoaW5nIGxpa2UgdGhhdA0KKG5vdGUgaXQgaXMgc2NoZW1hdGljIG9u ZSwgZG9lc24ndCB0YWtlIGludG8gYWNjb3VuZiB0aGF0IFRYRCByaW5nIGlzIGNpcmN1bGFyKToN Cg0KdHhfZG9uZV9jbGVhbnVwKC4uLiwgdWludDMyX3QgY250KQ0Kew0KICAgICAgLyogd2UgaGF2 ZSB0eHEtPm5iX3R4X2ZyZWUgVFhEcyBzdGFydGluZyBmcm9tIHR4cS0+dHhfdGFpbC4NCiAgICAg ICAgICAgU2NhbiB0aGVtIGZpcnN0IGFuZCBmcmVlIGFzIG1hbnkgbWJ1ZnMgYXMgd2UgY2FuLg0K ICAgICAgICAgICBJZiB3ZSBuZWVkIG1vcmUgbWJ1ZnMgdG8gZnJlZSBjYWxsICBpeGdiZV94bWl0 X2NsZWFudXAoKQ0KICAgICAgICAgICB0byBmcmVlIG1vcmUgVFhEcy4gKi8gDQoNCiAgICAgICBz d3IgPSB0eHEtPnN3X3Jpbmc7DQogICAgICAgdHhyICAgICA9IHR4cS0+dHhfcmluZzsNCiAgICAg ICBpZCAgID0gdHhxLT50eF90YWlsOw0KICAgICAgIGZyZWUgPSAgdHhxLT5uYl90eF9mcmVlOyAg ICAgICANCiAgDQogICAgICAgZm9yIChuID0gMDsgbiA8IGNudCAmJiBmcmVlICE9IDA7ICkgew0K DQogICAgICAgICAgZm9yIChqID0gMDsgaiAhPSBmcmVlICYmIG4gPCBjbnQ7IGorKykgew0KICAg ICAgICAgICAgIHN3ZSA9ICZzd3JbaWQgKyBqXTsNCiAgICAgICAgICAgICBpZiAoc3dlLT5tYnVm ICE9IE5VTEwpIHsNCiAgICAgICAgICAgICAgICAgICBydGVfcGt0bWJ1Zl9mcmVlX3NlZyhzd2Ut Pm1idWYpOw0KICAgICAgICAgICAgICAgICAgIHN3ZS0+bWJ1ZiA9IE5VTEw7DQogICAgICAgICAg ICAgfQ0KICAgICAgICAgICAgIG4gKz0gKHN3ZS0+bGFzdF9pZCA9PSBpZCArIGopDQogICAgICAg ICAgfSANCg0KICAgICAgICAgIGlmIChuIDwgY250KSB7IA0KICAgICAgICAgICAgICAgaXhnYmVf eG1pdF9jbGVhbnVwKHR4cSk7DQogICAgICAgICAgICAgICBmcmVlID0gICB0eHEtPm5iX3R4X2Zy ZWUgLSBmcmVlOw0KICAgICAgICAgIH0NCiAgICAgfQ0KICAgICByZXR1cm4gbjsNCn0NCg0KPiAN Cj4gQWJvdmUgYWxsICwgaXQgc2VlbSBub3QgYSBwZXJmZWN0IGlkZWEgdG8gcmV1c2UgaXhnYmVf eG1pdF9jbGVhbnVwKCkuDQoNClRvdGFsbHkgZGlzYWdyZWUsIHNlZSBhYm92ZS4NCg0KPiANCj4g U2Vjb25kLg0KPiBUaGUgZnVuY3Rpb24gaW4gcGF0Y2ggaXMgY29weSBmcm9tIGNvZGUgaW4gaWdi X3J4dHguYy4gaXQgYWxyZWFkeSB1cGRhdGVkIGluIDIwMTcsDQo+IFRoZSBjb21taXQgaWQgaXMg OGQ5MDdkMmI3OWY3YTU0YzgwOWYxYzQ0OTcwZmY0NTVmYTI4NjVlMS4NCg0KSSByZWFsaXplZCB0 aGF0Lg0KQnV0IEkgdGhpbmsgaXQgYXMgYSBwcm9ibGVtLCBub3QgYSBwb3NpdGl2ZSB0aGluZy4N CldoaWxlIHRoZXkgZG8gaGF2ZSBzb21lIHNpbWlsYXJpdGllcywgaWdiIGFiZCBpeGdiZSBhcmUg UE1EcyBmb3IgZGlmZmVyZW50IGRldmljZXMsDQphbmQgdGhlaXIgVFggY29kZSBkaWZmZXJzIHF1 aXRlIGEgbG90LiBMZXQgc2F5IGlnYiBkb2Vzbid0IHVzZSB0eF9yc190aHJlc2hvbGQsDQpidXQg aW5zdGVhZCBzZXQgUlMgYml0IGZvciBlYWNoIGxhc3QgVFhELg0KU28sIGp1c3QgYmxpbmRseSBj b3B5aW5nIHR4X2RvbmVfY2xlYW51cCgpIGZyb20gaWdiIHRvIGl4Z2JlIGRvZXNuJ3QgbG9vayBs aWtlIGEgZ29vZA0KaWRlYSB0byBtZS4NCg0KPiBJIHRydXN0IHRoZSBsb2dpYyBvZiBjb2RlIGlz IHJpZ2h0Lg0KPiBBY3R1YWxseSBpdCBkb24ndCBjb21wbGV0ZSBmb3IgaXhnYmUsIGk0MGUgYW5k IGljZSwgd2hpbGUgaXQgZG9uJ3QgY2hhbmdlIHRoZSB2YWx1ZSBvZg0KPiBsYXN0X2Rlc2NfY2xl YW5lZCBhbmQgdHhfbmV4dF9kZC4gQW5kIGl0J3MgYmVnaW5uaW5nIHByZWZlciBsYXN0X2Rlc2Nf Y2xlYW5lZCBvcg0KPiAgdHhfbmV4dF9kZChmb3Igb2ZmbG9hZCBvciBzaW1wbGUpIHRvIHR4X3Rh aWwuDQo+IA0KPiBTbywgSSBzdWdnZXN0IHRvIHVzZSB0aGUgb2xkIGZ1bmN0aW9uIGFuZCBmaXgg dGhlIGlzc3VlLg0KPiANCj4gPiA+DQo+ID4gPg0KPiA+ID4gPiA+VGhpcyBpcyB0aGUgZmlyc3Qg cGFja2V0IHRoYXQgd2lsbCBiZQ0KPiA+ID4gPiA+ICsgKiBhdHRlbXB0ZWQgdG8gYmUgZnJlZWQu DQo+ID4gPiA+ID4gKyAqLw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArLyogR2V0IGxhc3Qgc2Vn bWVudCBpbiBtb3N0IHJlY2VudGx5IGFkZGVkIHBhY2tldC4gKi8gdHhfbGFzdCA9DQo+ID4gPiA+ ID4gK3N3X3JpbmdbdHhxLT50eF90YWlsXS5sYXN0X2lkOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiArLyogR2V0IHRoZSBuZXh0IHNlZ21lbnQsIHdoaWNoIGlzIHRoZSBvbGRlc3Qgc2VnbWVudCBp biByaW5nLiAqLw0KPiA+ID4gPiA+ICt0eF9maXJzdCA9IHN3X3JpbmdbdHhfbGFzdF0ubmV4dF9p ZDsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKy8qIFNldCB0aGUgY3VycmVudCBpbmRleCB0byB0 aGUgZmlyc3QuICovIHR4X2lkID0gdHhfZmlyc3Q7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsv Kg0KPiA+ID4gPiA+ICsgKiBMb29wIHRocm91Z2ggZWFjaCBwYWNrZXQuIEZvciBlYWNoIHBhY2tl dCwgdmVyaWZ5IHRoYXQgYW4NCj4gPiA+ID4gPiArICogbWJ1ZiBleGlzdHMgYW5kIHRoYXQgdGhl IGxhc3Qgc2VnbWVudCBpcyBmcmVlLiBJZiBzbywgZnJlZQ0KPiA+ID4gPiA+ICsgKiBpdCBhbmQg bW92ZSBvbi4NCj4gPiA+ID4gPiArICovDQo+ID4gPiA+ID4gK3doaWxlICgxKSB7DQo+ID4gPiA+ ID4gK3R4X2xhc3QgPSBzd19yaW5nW3R4X2lkXS5sYXN0X2lkOw0KPiA+ID4gPiA+ICsNCj4gPiA+ ID4gPiAraWYgKHN3X3JpbmdbdHhfbGFzdF0ubWJ1Zikgew0KPiA+ID4gPiA+ICtpZiAoISh0eHJb dHhfbGFzdF0ud2Iuc3RhdHVzICYNCj4gPiA+ID4gPiArSVhHQkVfVFhEX1NUQVRfREQpKQ0KPiA+ ID4gPiA+ICticmVhazsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKy8qIEdldCB0aGUgc3RhcnQg b2YgdGhlIG5leHQgcGFja2V0LiAqLyB0eF9uZXh0ID0NCj4gPiA+ID4gPiArc3dfcmluZ1t0eF9s YXN0XS5uZXh0X2lkOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArLyoNCj4gPiA+ID4gPiArICog TG9vcCB0aHJvdWdoIGFsbCBzZWdtZW50cyBpbiBhDQo+ID4gPiA+ID4gKyAqIHBhY2tldC4NCj4g PiA+ID4gPiArICovDQo+ID4gPiA+ID4gK2RvIHsNCj4gPiA+ID4gPiArcnRlX3BrdG1idWZfZnJl ZV9zZWcoc3dfcmluZ1t0eF9pZF0ubWJ1Zik7DQo+ID4gPiA+ID4gK3N3X3JpbmdbdHhfaWRdLm1i dWYgPSBOVUxMOw0KPiA+ID4gPiA+ICtzd19yaW5nW3R4X2lkXS5sYXN0X2lkID0gdHhfaWQ7DQo+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsvKiBNb3ZlIHRvIG5leHQgc2VnbWVudC4gKi8NCj4gPiA+ ID4gPiArdHhfaWQgPSBzd19yaW5nW3R4X2lkXS5uZXh0X2lkOw0KPiA+ID4gPiA+ICsNCj4gPiA+ ID4gPiArfSB3aGlsZSAodHhfaWQgIT0gdHhfbmV4dCk7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ICsvKg0KPiA+ID4gPiA+ICsgKiBJbmNyZW1lbnQgdGhlIG51bWJlciBvZiBwYWNrZXRzDQo+ID4g PiA+ID4gKyAqIGZyZWVkLg0KPiA+ID4gPiA+ICsgKi8NCj4gPiA+ID4gPiArY291bnQrKzsNCj4g PiA+ID4gPiArDQo+ID4gPiA+ID4gK2lmICh1bmxpa2VseShjb3VudCA9PSAoaW50KWZyZWVfY250 KSkgYnJlYWs7IH0gZWxzZSB7DQo+ID4gPiA+ID4gKy8qDQo+ID4gPiA+ID4gKyAqIFRoZXJlIGFy ZSBtdWx0aXBsZSByZWFzb25zIHRvIGJlIGhlcmU6DQo+ID4gPiA+ID4gKyAqIDEpIEFsbCB0aGUg cGFja2V0cyBvbiB0aGUgcmluZyBoYXZlIGJlZW4NCj4gPiA+ID4gPiArICogICAgZnJlZWQgLSB0 eF9pZCBpcyBlcXVhbCB0byB0eF9maXJzdA0KPiA+ID4gPiA+ICsgKiAgICBhbmQgc29tZSBwYWNr ZXRzIGhhdmUgYmVlbiBmcmVlZC4NCj4gPiA+ID4gPiArICogICAgLSBEb25lLCBleGl0DQo+ID4g PiA+ID4gKyAqIDIpIEludGVyZmFjZXMgaGFzIG5vdCBzZW50IGEgcmluZ3Mgd29ydGggb2YNCj4g PiA+ID4gPiArICogICAgcGFja2V0cyB5ZXQsIHNvIHRoZSBzZWdtZW50IGFmdGVyIHRhaWwgaXMN Cj4gPiA+ID4gPiArICogICAgc3RpbGwgZW1wdHkuIE9yIGEgcHJldmlvdXMgY2FsbCB0byB0aGlz DQo+ID4gPiA+ID4gKyAqICAgIGZ1bmN0aW9uIGZyZWVkIHNvbWUgb2YgdGhlIHNlZ21lbnRzIGJ1 dA0KPiA+ID4gPiA+ICsgKiAgICBub3QgYWxsIHNvIHRoZXJlIGlzIGEgaG9sZSBpbiB0aGUgbGlz dC4NCj4gPiA+ID4gPiArICogICAgSG9wZWZ1bGx5IHRoaXMgaXMgYSByYXJlIGNhc2UuDQo+ID4g PiA+ID4gKyAqICAgIC0gV2FsayB0aGUgbGlzdCBhbmQgZmluZCB0aGUgbmV4dCBtYnVmLiBJZg0K PiA+ID4gPiA+ICsgKiAgICAgIHRoZXJlIGlzbid0IG9uZSwgdGhlbiBkb25lLg0KPiA+ID4gPiA+ ICsgKi8NCj4gPiA+ID4gPiAraWYgKGxpa2VseSh0eF9pZCA9PSB0eF9maXJzdCAmJiBjb3VudCAh PSAwKSkgYnJlYWs7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsvKg0KPiA+ID4gPiA+ICsgKiBX YWxrIHRoZSBsaXN0IGFuZCBmaW5kIHRoZSBuZXh0IG1idWYsIGlmIGFueS4NCj4gPiA+ID4gPiAr ICovDQo+ID4gPiA+ID4gK2RvIHsNCj4gPiA+ID4gPiArLyogTW92ZSB0byBuZXh0IHNlZ21lbnQu ICovDQo+ID4gPiA+ID4gK3R4X2lkID0gc3dfcmluZ1t0eF9pZF0ubmV4dF9pZDsNCj4gPiA+ID4g PiArDQo+ID4gPiA+ID4gK2lmIChzd19yaW5nW3R4X2lkXS5tYnVmKQ0KPiA+ID4gPiA+ICticmVh azsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gK30gd2hpbGUgKHR4X2lkICE9IHR4X2ZpcnN0KTsN Cj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKy8qDQo+ID4gPiA+ID4gKyAqIERldGVybWluZSB3aHkg cHJldmlvdXMgbG9vcCBiYWlsZWQuIElmIHRoZXJlDQo+ID4gPiA+ID4gKyAqIGlzIG5vdCBhbiBt YnVmLCBkb25lLg0KPiA+ID4gPiA+ICsgKi8NCj4gPiA+ID4gPiAraWYgKHN3X3JpbmdbdHhfaWRd Lm1idWYgPT0gTlVMTCkNCj4gPiA+ID4gPiArYnJlYWs7DQo+ID4gPiA+ID4gK30NCj4gPiA+ID4g PiArfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArcmV0dXJuIGNvdW50Ow0KPiA+ID4gPiA+ICt9 DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICBzdGF0aWMgdm9pZCBfX2F0dHJpYnV0ZV9fKChjb2xk KSkgIGl4Z2JlX3R4X2ZyZWVfc3dyaW5nKHN0cnVjdA0KPiA+ID4gPiA+IGl4Z2JlX3R4X3F1ZXVl ICp0eHEpICB7IGRpZmYgLS1naXQNCj4gPiA+ID4gPiBhL2RyaXZlcnMvbmV0L2l4Z2JlL2l4Z2Jl X3J4dHguaCBiL2RyaXZlcnMvbmV0L2l4Z2JlL2l4Z2JlX3J4dHguaA0KPiA+ID4gPiA+IGluZGV4 IDUwNWQzNDRiOS4uMmMzNzcwYWY2IDEwMDY0NA0KPiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMvbmV0 L2l4Z2JlL2l4Z2JlX3J4dHguaA0KPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvbmV0L2l4Z2JlL2l4 Z2JlX3J4dHguaA0KPiA+ID4gPiA+IEBAIC0yODUsNiArMjg1LDggQEAgaW50DQo+ID4gPiA+ID4g aXhnYmVfcnhfdmVjX2Rldl9jb25mX2NvbmRpdGlvbl9jaGVjayhzdHJ1Y3QNCj4gPiA+ID4gPiBy dGVfZXRoX2RldiAqZGV2KTsgIGludCBpeGdiZV9yeHFfdmVjX3NldHVwKHN0cnVjdCBpeGdiZV9y eF9xdWV1ZQ0KPiA+ID4gPiA+ICpyeHEpOyAgdm9pZCBpeGdiZV9yeF9xdWV1ZV9yZWxlYXNlX21i dWZzX3ZlYyhzdHJ1Y3QNCj4gPiA+ID4gPiBpeGdiZV9yeF9xdWV1ZSAqcnhxKTsNCj4gPiA+ID4g Pg0KPiA+ID4gPiA+ICtpbnQgaXhnYmVfdHhfZG9uZV9jbGVhbnVwKHZvaWQgKnR4cSwgdWludDMy X3QgZnJlZV9jbnQpOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiAgZXh0ZXJuIGNvbnN0IHVpbnQz Ml90IHB0eXBlX3RhYmxlW0lYR0JFX1BBQ0tFVF9UWVBFX01BWF07DQo+ID4gPiA+ID4gIGV4dGVy biBjb25zdCB1aW50MzJfdCBwdHlwZV90YWJsZV90bltJWEdCRV9QQUNLRVRfVFlQRV9UTl9NQVhd Ow0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gLS0NCj4gPiA+ID4gPiAyLjE3LjENCj4gPiA+ID4NCj4g PiA+DQo+ID4NCj4gDQoNCg==